在JVM平台并入Oracle产品线后,Oracle将对JVM平台进行多项改进和调整。内容包括增强平台的模块化和集成性等特征、为Java SE增加多核处理支持,在Java ME中增加多点触摸支持等。与此同时,Oracle开发部副总裁Adam Messinger在Qcon开发大会上透露,Oracle计划在提供免费版JVM基础上新增收费版本,在收费版JVM里整合HotSpot JVM与JRockit JVM,为高端用户提供功能更为强大的解决方案。
对开发者来说,无论Oracle策略如何,JVM平台依然有着巨大的吸引力。依托于JVM平台的动态语言,始终保持着蓬勃的生命力。在这些动态语言中,能够同时兼容Java虚拟机和.Net CLR通用语言运行时的Fantom,是其中极具特色的动态语言。
Fantom最初被称为Fan语言,由于定名为Fan不易检索,开发者在09年11月份将当时新发布的版本定名为Fantom语言。Fantom使用与BSD 类似的Academic Free License 3.0开源协议授权。
Fantom的开发者将其设计为一门实用且有趣的脚本语言,来解决Java和C#编程中实际存在的问题,降低开发者编码的难度。Fantom语言最大的特点是它的可移植性,Fantom代码能够无缝的在Java VM和.NET CLR平台之间进行迁移。为了保证平台间的顺利移植,Fantom代码首先被编译为fcode,即一种字节码表示法,之后转换成为Java字节码或IL解释语言,转换的过程在程序运行时完成,开发者可以以单个文件的形式在虚拟机中部署Fantom代码模块。
对于Java VM和.NET CLR平台切换时的API调用,Fantom给出了简便易用的解决办法。Fantom提供了一组与Java 和.NET API配合使用的API接口供开发者使用,来屏蔽不同平台间对于系统API调用的差异。
当然,Fantom语言的可移植特性不仅限于Java和.NET平台,Fantom支持将代码编译为JavaScript脚本供开发者在浏览器端使用。Fantom语言从一开始就为跨运行时的编程而设计,在未来的规划中,Fantom语言还将支持iPhone的Objective-C语言,以及LLVM集成编译环境或集合了Python与Perl语言优势的Parrot语言。
在Fantom编程支持方面,开发者可以使用基于NetBeans Platform的IDE环境FantomIDE进行编码和调试,IDE包含开箱即用的Fantom环境,语法和词法解析使用开源语法分析器ANTLR设计,FantomIDE还提供了Javascript、CSS、HTML、XML等脚本支持以及Subversion和Mercurial等管理工具。
JVM平台从不缺乏优秀的动态语言,Groovy、JRuby、Jython、Scala都是其中的佼佼者,不同语言的风格类型、运行速度和工具支持也各有千秋。Fantom以其跨运行时的特性和先进的设计理念,是否将来能脱颖而出得到开发者的认可,让我们拭目以待。
本文曾发表于《程序员》杂志-2011年02期”程序天下事”栏目。
Scala可不是动态语言,Clojure和Scala也都同时支持JVM和CLR的。话说Fantom又多了一个fcode啊,这个有意思……
谢兄弟指正,在文中更正了。生成fcode中间结果便于在Java和.NET运行时平台切换,同时避免借助Java Foreign Function Interface来使用Java类库时的"mixin routers"问题(这个我不太懂),参见:http://fantom.org/sidewalk/topic/215