我有一个开源的Java数据库迁移工具(http://www.liquibase.org)我正在考虑将其移植到.Net。

该工具的大部分(至少从复杂性方面来看)都是围绕这样的逻辑:“如果您要添加主键并且数据库是 Oracle,则使用此 SQL。如果数据库是 MySQL,则使用此 SQL。如果主键已命名并且数据库是 Postgres,则使用此 SQL”。

我可以分叉 Java 代码库并隐藏它(手动和/或自动),但随着对上述逻辑的更新和错误修复,我不想将其应用于两个版本。我想做的是将所有逻辑转移到一种可以由 Java 和 .Net 版本编译和使用的形式。

我想要转换的代码不包含任何高级库的使用(JDBC、System.out 等),这些库的使用从 Java 到 .Net 会有很大差异,所以我认为这不会是一个问题(最坏的情况下可能是围绕)设计。

所以我正在寻找的是:

  • 我可以使用一种语言对应用程序的公共部分进行编码,并将其编译成目标平台上“标准”语言可以使用的类
  • 不向系统添加任何运行时要求
  • 没有什么 所以 奇怪的是它吓跑了潜在的贡献者

我知道 Python 和 Ruby 都有 JVM 和 CLR 的实现。它们有多符合我的要求?有人成功(或不成功)地将这种技术用于跨平台应用程序吗?有什么我需要担心的问题吗?

有帮助吗?

解决方案

查看 Fantom 编程语言. 。它有自己的类 Java/类 C# 语法,但可以针对 Java VM 或 .NET CLR。

他们的 《为什么是幻影》 页面高度概述了他们的可移植性方法与在虚拟机上运行的动态语言的比较。

其他提示

你可能会幸运地使用 IKVM网络. 。我不确定它的确切状态,但如果您坚持在 .NET Framework 上运行 Java 代码,那么值得一试。它包含 Java 基类库的 .NET 实现,因此看起来相当完整。

我可能建议的唯一其他选择是将代码移植到 J# 语言,一种完整的 .NET 语言(尽管不是 C# 或 VB.NET 意义上的一流语言)。该语言的设计使得与 Java 的差异最小。

如果您正在考虑嵌入式方法,您可能会考虑 Lua。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top