Java JVM/CLR源代码兼容语言选项

Java JVM/CLR源代码兼容语言选项,java,.net,programming-languages,Java,.net,Programming Languages,我有一个开源Java数据库迁移工具(),我正在考虑将其移植到.Net 该工具的大部分(至少从复杂性的角度来看)都是围绕这样的逻辑展开的:“如果要添加主键且数据库为Oracle,则使用此SQL。如果数据库为MySQL,则使用此SQL。如果主键已命名且数据库为Postgres,则使用此SQL” 我可以分叉Java代码库并对其进行转换(手动和/或自动),但随着对上述逻辑的更新和错误修复的到来,我不想将其应用于这两个版本。我想做的是将所有这些逻辑转换成一种可以被Java和.Net版本编译和使用的形式 我

我有一个开源Java数据库迁移工具(),我正在考虑将其移植到.Net

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

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

我希望转换的代码不包含任何高级库用法(JDBC、System.out等),这些用法在Java和.Net之间会有很大差异,因此我认为这不会是一个问题(最坏的情况下,它可以被设计出来)

所以我要找的是:

  • 一种语言,我可以用它编写应用程序的公共部分,并将其编译成目标平台上“标准”语言可用的类
  • 不向系统添加任何运行时要求
  • 没有什么奇怪的事情会吓跑潜在的贡献者
我知道Python和Ruby都有针对JVM和CLR的实现。它们在多大程度上符合我的要求?是否有人成功(或失败)将此技术用于跨平台应用程序?有什么我需要担心的问题吗

查看下面的链接。它有自己类似Java/C的语法,但可以针对Java VM或.NET CLR


他们的页面从较高的层次概述了他们的可移植性方法和在VM上运行的动态语言。

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


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

如果你想采用一种简化的方法,你可以看看Lua。

我确实想到了这两种选择,但我对IKVM的担心是增加了依赖性,而我对J#的担心受到了.net开发人员的嘲笑…@Nathan:完全可以理解。。。尽管我不认为你能在主流技术中找到你想要的“理想”解决方案。大多数项目维护人员会将整个代码库移植到另一种语言(可能会在其他人的帮助下),并在所有端口上并行地对代码进行任何更改/修复。我个人认为,在尝试为JVM/CLR版本使用相同的代码库时,您将遇到更多的问题——维护一个单独的端口需要更多的努力,但在我看来是值得的。我认为风扇似乎是最好的选择。Java上的Jython看起来已经有一段时间没有开发了,而IronRuby上的CLR版本才刚刚达到0.3。我必须了解更多的粉丝,才能知道这是我真正想要做的,还是仅仅做fork更容易。Jython的最新版本是在11月发布的,看起来相当活跃,尽管我同意Fantom更适合这种情况。