Языковые параметры, совместимые с исходным кодом JVM/CLR

StackOverflow https://stackoverflow.com/questions/812474

Вопрос

У меня есть инструмент миграции базы данных Java с открытым исходным кодом (http://www.liquibase.org), который я рассматриваю для портирования на .Net.

Большая часть инструмента (по крайней мере, с точки зрения сложности) основана на логике типа «если вы добавляете первичный ключ, а база данных — Oracle, используйте этот SQL».Если база данных MySQL, используйте этот SQL.Если первичный ключ имеет имя и база данных Postgres, используйте этот SQL».

Я мог бы разветвить кодовую базу Java и скрыть ее (вручную и/или автоматически), но по мере поступления обновлений и исправлений ошибок в вышеуказанной логике я не хочу применять ее к обеим версиям.Что я хотел бы сделать, так это переместить всю эту логику в форму, которую можно было бы скомпилировать и использовать как в версиях Java, так и в .Net.

Код, который я хочу преобразовать, не содержит каких-либо расширенных библиотек (JDBC, System.out и т. д.), которые значительно различаются от Java к .Net, поэтому я не думаю, что это будет проблемой (в худшем случае это может быть спроектирован вокруг).

Итак, что я ищу:

  • Язык, на котором я могу кодировать общие части моего приложения и компилировать его в классы, используемые «стандартными» языками на целевой платформе.
  • Не добавляет никаких требований к системе во время выполнения.
  • Ничего так странно, что это отпугивает потенциальных участников

Я знаю, что в Python и Ruby есть реализации для JVM и CLR.Насколько они соответствуют моим требованиям?Кто-нибудь успешно (или безуспешно) использовал эту технику для кроссплатформенных приложений?Есть ли какие-то проблемы, о которых мне стоит беспокоиться?

Это было полезно?

Решение

Проверьте Язык программирования Фантом.Он имеет собственный синтаксис, подобный Java/C#, но может быть ориентирован как на виртуальную машину Java, так и на .NET CLR.

Их «Почему Фантом» страница дает общий обзор их подхода к переносимости по сравнению с динамическими языками, работающими на виртуальной машине.

Другие советы

Возможно, вам повезет, используя ИКВМ.НЕТ.Я не уверен в его точном статусе, но стоит попробовать, если вы настаиваете на запуске кода Java в .NET Framework.Он включает в себя .NET-реализацию библиотеки базовых классов Java, поэтому кажется достаточно завершенным.

Единственный вариант, который я мог бы предложить, — это портировать код на Дж# язык, полноценный язык .NET (хотя и не первоклассный в том смысле, что C# или VB.NET).Язык был спроектирован так, чтобы различия с Java были минимальными.

Если вы думаете о встроенном подходе, вы можете взглянуть на Lua.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top