JavaFX Script™ (下文中成为JavaFX)语言是一种声明式的静态类型编程语言。它具有第一级函数(first-class functions)、声明式的语法、列表推导(list-comprehensions)及基于依赖关系的增量式求值(incremental dependency-based evaluation)等特征。JavaFX 脚本式语言特别适用于Java2D swing GUI组件,它允许简单地创建图形界面。
译者注:第一级函数指函数被当作对象对待,可以在运行时赋值、传递和返回。详见wikipedia上的解释。
译者注:列表推导指一种在函数语言中的表达式,它表示了在一个或者多个列表的成员(被选择的)进行某种操作的结果。它被称为“syntactic sugar”,即为开发者提供了便捷的多种函数的应用组合。详见FOLDC对list comprehension的解释。
本文档给出了JavaFX 脚本式编程语言的非正式描述。
就语言方面来说,出现了Java FX script 项目。Java FX是很灵巧的,它提供了一个高级的脚本接口,运行在Java 2D的API上。从用户的角度来看,他们不需要编写Java代码,不需要深入理解复杂的线程,Java 2D,Swing类的层次结构,定时框架结构(timing framework)等等。相反,他们只是编写脚本语言和描绘出所需要的GUI,包括活波的音响效果,图形效果,比如说梯度或者音乐,和数据绑定等等,这些都建立在一个基础API上。
这里有许多的工具帮助你学习syntax语言,相关资源这个从这个网站获得;Java FX研发小组的目标就是提供syntax语言,和一些关于Java FX的用户体验,这些用户包括美术设计员和那些对应用程序可视界面美观感兴趣的民众。当前,Java FX某种程度上作为第四步产生的语言在运行,因为首先是解释器将FX脚本创建成为Java代码,然后再调用适当的Java 2D API。该小组长期的目标是将FX脚本直接编译成字节码。
Java FX添加到桌面Java是一件非常好的事情,但是,这得取决于是否有这样的一种JRE的存在,它能运行Java FX生成的代码。有些人认为FX已经进军到RIA(rich Internet application)领域,和Adobe公司的 Flex一较高下。但是,目前还是有一些难题需要解决,举个例子,如何才能让桌面Java的安装体验和运行时间性能比得上其它的RIA框架。还好,这种问题正在被其他的项目解决,这个项目名称就是Java kernel。
Java kernel主动承认这么一个事情,即大多数的Java应用程序都是只有JRE的部分大小,如Limewire(一个文件共享的桌面应用程序),它只有JRE的三分之一大小。Kernel将会对JRE重新打包,使得只下载应用程序所需要的部分JRE。每个程序所需要的基本部分将会被下载,作为JRE启动所需要的最小部分,其他的部分根据需要下载,或者根据ClassNotFound异常信息,下载缺失的类。这将是一个巨大的好消息帮助桌面Java应用程序瘦身,同时还能使得桌面Java应用程序执行的更为有效。除了解决如何下载的问题外,kernel还非常关注Java程序的启动性能。
在先前的kernel几个版本,热启动时间(warm start times)减少了很多,但是,在应用程序调用main(String[])前,冷启动JRE仍然需要延误许多秒的时间。Java kernel正在尝试有效的处理冷启动,将冷启动转变为热启动,通过一些相关的技术,如预加载(pre-loading)JRE,从硬盘读入到内存,还有一个操作系统服务,这个服务的功能就是监视可分配的内存来加载JRE,使得用户获得最佳的性能。出了这些,kernel还提供了一个新的浏览器插件,提供给Web 开发者更多的关于桌面运行信息,可获得的JRE水平等等。
对于桌面Java来说,Java kernel 和Java FX两大好消息。说Kernel是一个非常好的技术,是因为它承认了Swing已经到了一个非常成熟的阶段,并且帮助开发这如何将他们的Java应用程序更为快速,更为有效的搬到用户桌面上。说FX是两外一个非常好的消息,是因为它为Java开发者打开了新篇章,特别是那些愿意使用脚本语言和做一些高级的,活波的,图形效果的开发者,他们只需要写简单几行代码就可以完成。我相信这两项技术将会使得更多的应用程序用Java语言编写,运行在用户的机器上,同时,对于用户和开发者来说,应用程序变得更快,更简单。
相关学习资料
https://openjfx.dev.java.net/JavaFX_Programming_Language_CN.html
https://openjfx.dev.java.net/JavaFX_Programming_Language.html
https://openjfx.dev.java.net/Getting_Started_With_JavaFX.html
https://openjfx.dev.java.net/
文章来源:
http://x-spirit.spaces.live.com/Blog/cns!CC0B04AE126337C0!266.entry