有一种静态类型语言可以在JVM和CLR上运行吗?

3
我正在编写代码,希望最终在PC、Xbox和Android平台上执行。如果可能,还想支持Mac和Linux。为了避免为每个平台重复编写代码,我想使用一种能够在所有平台上运行的语言进行编写。我考虑过Fantom,但它似乎无法在Android上运行,并且对于静态类型和泛型的支持有限。我听说Scala将要在CLR上运行,但它目前不支持CLR泛型,这使得它无法与XNA一起使用。我不想使用动态类型语言,因为动态类型运行速度较慢(在智能手机上特别重要),而且更难调试。
2个回答

2
为什么你需要针对JVM进行开发?如果这个需求仅仅是为了处理Android,那么可能可以看一下MonoTouch。这是由Xamarin开发的.NET堆栈,适用于流行的移动平台。当年在Novell开发Mono时,这些人就曾经参与其中。Mono本身是一种针对Mac和其他POSIX平台的开发方式,使用X Window System进行图形交互(您所说的“Linux”)。
你应该意识到,你可能仍然需要为不同的平台重新编写GUI部分:首先,在触摸屏设备上使用的界面方法与“桌面”设备上的方法有很大不同;其次,尽管MonoTouch可能会在它所针对的平台(Android,iOS,WinPhone)上提供统一的UI,但桌面Windows、Mac和基于X的平台都有自己的.NET或Mono可用的首选GUI堆栈——在Windows上是WPF或Winforms,在Mac OS X上是MonoMac(使用Cocoa),在使用X的POSIX平台上是Gtk#。Mono似乎为所有这些桌面平台提供了统一的GUI堆栈,因为它支持Winforms,但总体外观和感觉在除Windows以外的其他平台上可能不太理想,所以你需要进行查找。

但至少核心程序逻辑不需要被移植到每个平台。

附言: 还要注意的是,我在各种场合看到的大多数现代基于JVM的软件堆栈都支持CLR,通过IKVM将CLR“包装”起来,让Java代码以为它是JVM。

0

是的,Scala通常用于JVM,但也支持一些CLR。Clojure没有静态类型,但我相信它也支持(或曾经支持)JVM和CLR。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接