У меня есть инструмент миграции базы данных 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. Насколько они соответствуют моим требованиям? Кто-нибудь успешно (или безуспешно) использовал эту технику для кроссплатформенных приложений? Есть ли какие-то проблемы, о которых мне нужно беспокоиться?