Параметры языка, совместимые с JVM / CLR - PullRequest
8 голосов
/ 01 мая 2009

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

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

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

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 01 мая 2009

Проверьте язык программирования Fantom . Он имеет собственный Java-подобный / C # -подобный синтаксис, но может быть нацелен на Java VM или .NET CLR.

Их страница "Why Fantom" дает общий обзор их подхода к переносимости и динамическим языкам, работающим на ВМ.

1 голос
/ 01 мая 2009

Возможно, вам повезет, если использовать IKVM.NET . Я не уверен в его точном статусе, но стоит попробовать, если вы настаиваете на запуске Java-кода на .NET Framework. Он включает в себя реализацию .NET библиотеки базовых классов Java, так что она кажется достаточно полной.

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

0 голосов
/ 03 мая 2009

Если вы думаете об окончательном подходе, вы можете посмотреть на Lua.

...