JVM / CLR源兼容语言选项

时间:2009-05-01 17:59:53

标签: java .net programming-languages

我有一个开源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 个答案:

答案 0 :(得分:5)

查看Fantom programming language。它有自己的类Java / C#语法,但可以定位Java VM或.NET CLR。​​

他们的"Why Fantom"页面概述了他们的可移植性方法与在VM上运行的动态语言的对比。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

如果您正在考虑使用嵌入式方法,可以查看Lua。