日期:2014-05-20  浏览次数:20872 次

有人用过javafx吗
这东西会被oracle发展下去吗?作为java程序员,不知道是选择flex还是javafx

------解决方案--------------------
貌似都可以

不过现在好像flex还……
------解决方案--------------------
javafx 2.0 b40 目前还是 windows only,啥时候才能支持全平台。

http://www.infoq.com/cn/news/2011/08/java-novelty
引用JavaFX 2.0

现在做Web应用开发,提得最多的概念就是RIA,即所谓的富互联网应用程序。在RIA开发的技术选择中,基本上是两大派别:一个是不依赖插件的开放标准派,依靠Ajax和最近非常火热的HTML5,其思想是把浏览器作为唯一的运行平台;另外一个派别则是插件派,依靠的是浏览器上的插件来支撑RIA应用的运行。插件派里面比较重要的参与者是Adobe的Flex、微软的 Silverlight和Oracle的JavaFX。两种派别的做法各有利弊:在HTML5没有被广泛支持之前,浏览器本身的能力始终有限;而依赖插件的做法无疑会带来部署相关的问题,普通用户可能会被插件的安装过程折磨得放弃使用这个应用了。从部署的角度来说,Adobe和微软的处境要好得多:Flash现在基本上是浏览器的标准插件,很少有浏览器不装的,除了iPhone和iPad上之外。微软有操作系统平台和浏览器的优势。而Oracle的JavaFX则比较尴尬,受限于JRE的部署状况。

JavaFX从它2007年发布以来,表现一直差强人意。Oracle收购了Sun之后,在JavaFX中投入了大量的精力进行推广和更新。JavaFX最近比较出名的应用应该是在2010年温哥华冬奥会上。在调整了JavaFX中的很多概念,以及重新设计和实现了很多重要组件之后,得到的就是现在的JavaFX 2.0。JavaFX 2.0的beta版已经发布,正式版则定于今年第3季度发布。在最早的时候,笔者也研究过JavaFX。不过在当时来说,JavaFX可用的地方并不多。JavaFX 2.0的新特性使得开发人员应该需要重新审视它在RIA开发领域中的位置。在很多情况下,JavaFX 2.0也会是不错的选择。

JavaFX 2.0的一个最重要的改进是放弃了JavaFX Script。JavaFX Script本来的目的是为开发人员提供一种简洁的脚本语言,用于创建RIA应用。但是,JavaFX Script并没有达到它的预期目的。其原因在于JVM之上已经有很多不错的脚本语言可供使用,JavaFX Script本身的吸引力不大。开发人员也不愿意学习新的脚本语言。放弃JavaFX Script之后,JavaFX的功能全部通过Java语言来访问。这是一种很明智的做法,可以利用广大的 Java开发者群体和社区优势,也有利于复用已有的资产。

JavaFX 2.0实现了自己的一套图形用户界面库,不同于Java平台上已有的AWT和Swing。从适用性上来说,AWT和Swing比较适合传统的以内容为主的交互性较弱的桌面应用。这点从AWT和Swing中包含的组件就可以看得出来,只是一些常见的内容驱动组件,甚至没有图表的支持,只能依靠JFreeChart这样的第三方库。如果需要创建内容丰富的界面,则需要利用Java 2D和Java 3D API来自行绘制。对多媒体的支持也不够有限。JavaFX 2.0新的图形用户界面库把基本图形元素和用户界面组件两类元素统一在一起。不管是矩形、椭圆、按钮还是表格,都是用户界面上的节点,可以用相似的方式来处理。JavaFX 2.0在JVM之上,实现了新的类似AWT的窗口工具箱Glass Windowing Toolkit,可以直接利用操作系统的原生事件队列。从此再也不需要小心注意AWT和Swing中事件分发线程的使用问题了。 JavaFX 2.0中的图形渲染引擎Prism可以借助底层操作系统上的DirectX和OpenGL提供的硬件加速支持,因此性能优于传统的使用Java 2D进行软件渲染的做法。在用户界面组件方面,除了基本的常用组件之外,还提供了图表绘制的支持。在多媒体支持方面,除了基本的图片之外,JavaFX 2.0的媒体引擎支持MP3、AIFF和WAV等音频格式和FLV视频格式。

在组件的外观方面,JavaFX 2.0也采用了更加流行的做法,即用CSS来定义应用的外观。另外,JavaFX 2.0也引入了界面描述语言FXML。FXML在功能上类似微软的XAML,是一种用户界面描述语言。FXML+CSS+Java这样的组合,颇有些Web应用开发中HTML+CSS+JavaScript组合的味道。

值得重点介绍的是JavaFX 2.0中的Web引擎组件。这是一个基于Webkit内核的内嵌浏览器。在JavaFX应用中可以访问内嵌浏览器中网页的DOM结构和执行 JavaScript代码。基于Webkit意味着这个内嵌浏览器支持HTML5的新特性。这个内嵌浏览器可以在很多场景下都得到应用,比如Web应用的自动化测试。另外一种用法是把内嵌浏览器作为Web应用运行时刻的环境,以一种Java+HTML的方式来呈现。

JavaFX 2.0至少把Java平台变成了一个开发富客户端应用(RCP)的良好平台。在以后的开发中,AWT和Swing应该会逐渐淡出桌面应用开发的视野。 JavaFX将成为Java平台上主流的图形用户界面开发库。而在RIA方面,JavaFX的前景仍无法预料。毕竟,依赖插件的RIA开发方式都受到来自 HTML5的巨大冲击,JavaFX自然也不例外。JavaFX能发挥作用的一个地方应该是在企业内部系统中。对于企业内部的系统,部署上的问题比较好解决,同时也有利于复用内部的Java相关的资产。