是否存在可在JVM和CLR上运行的静态类型语言?

时间:2012-03-16 15:55:21

标签: programming-languages jvm clr static-typing

我正在编写我想最终在PC,Xbox和Android平台上执行的代码,如果可能的话还有Mac和Linux。我想用一种适用于所有这些平台的语言编写一次,而不是为每个平台重写它。我考虑过Fantom,但显然它在Android上不起作用,并且它对静态类型和泛型的支持有限,我听说Scala将在CLR上工作,但它目前不支持CLR泛型,它可以防止它与XNA一起使用。我不想使用动态类型语言,因为动态类型运行速度较慢(在智能手机上尤为重要)并且难以调试。

2 个答案:

答案 0 :(得分:2)

为什么需要定位JVM?如果这个需求仅仅是为了处理Android,那么可能需要看看MonoTouch这是一个由Xamarin开发的流行移动平台的.NET堆栈(当时在Novell开发时,那些支持Mono的人)。 Mono本身是一种使用X Window System进行图形交互(你称之为“Linux”)的Mac和其他POSIX平台的方法。

您应该知道,无论如何您仍然可能需要为各种平台重新编写GUI部件:首先,触摸屏设备上使用的接口方法与“桌面”设备上的接口方式有很大差异,而且,在MonoTouch中可能会在其目标平台上提供统一的用户界面(Android,iOS,WinPhone)桌面Windows,Mac和基于X的平台都有自己的首选 GUI堆栈,可通过.NET或Mono-WPF或Winforms获得在Windows上,MonoMac在Mac OS X上(使用Cocoa)和Gtk#在POSIX平台上使用X.Mono似乎为所有这些桌面平台提供了统一的GUI堆栈,因为它does support Winforms但整体外观可能在Windows以外的平台上不是最理想的,所以你必须要看。

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

P.S。 另请注意,我在不同场合设法查看的大多数现代基于JVM的软件堆栈通过IKVM支持CLR,这种“包装”CLR假装它是Java代码中的JVM。

答案 1 :(得分:0)

是的,Scala,虽然通常在JVM上使用。还有一些CLR support。 Clojure不是静态类型的,但我相信它也支持(或者确实)支持JVM和CLR。