JavaFX 是SUN公司在2007年JavaOne大会上首次对外公布的以Java为基础构建的富客户端平台,更让开发者印象比较深刻的则是其背后的JavaFX开发团队,仅仅在两年的时间就从1.0版本完善到1.3.x版本,不但增加了很多新功能,在性能方面也有了很大的提升。

当Oracle收购Sun后,就宣布停止支持JavaFX脚本语言,进一步把它的API整合到Java里面去,后面的版本当中也默认捆绑了JavaFX。在JavaOne 2011大会上,Oracle也向公众表示的开源计划也实现了。

由此可见,在移动互联网的时代,Oracle已经认识到了RIA技术的重要性,想把JavaFX打造成Flash和Sliverlight这样的顶级产品。但是对于RIA,Java还是新手,想撼动Flash占据部分的份额显然是很难的。不过凭借着Java众多开发者的力量,作为通用的开发语言,对抗FLASH的ActionScript还有有很大的优势。小编在知乎上曾看见过某位大神对Java FX的评价还是比较客观的:

(1)Java技术是开源的,从开发工具(Eclipse,netBeans),到无所不包的开源类库。Flash、Silverlight就不一样了。

(2)跨平台。如果你明白微软的策略,就不会押宝在silverlight上了。微软最终不会支持跨平台的,只会跨windows平台,提出跨平台只是为了搅局。还好大家都不再吃那一套了。

(3)Java作为一门通用的开发语言,是Flash的ActionScript无法比拟的,类库全(数据库、网络、IO等等),强大免费的开发工具,不仅仅在浏览器里跑(虽然Air也可以,但没有大型的程序用Air吧,Java典型的应用就是Eclipse netBeans)。JavaFx正在弥补图形处理方面的不足(这是Flash的强项,JavaFx已经开始支持硬件加速了),但是Java的强项Flash很难复制。

在今年3月份JavaFX伴随着甲骨文Java 8的推出以其组件形式完成了又一次更新。不过很多人对于这项技术的未来前景以及影响力提出了质疑。

Oracle公布的开源JavaFX 8拥有UI控制、嵌入式图形堆栈、现代主题、3D图形处理再加上HTML 5支持等多项功能特性。其工具集在设计思路上专注于性能与图形,且能够在嵌入式系统之上顺畅运作。

不过Forrester研究公司分析师John Rymer对于JavaFX的生命力并不看好。“我们并未看到市场对于JavaFX所抱有的深厚兴趣,”他指出。“Java 8——很好,但JavaFX完全是另外一回事。在我看来,JavaFX恐怕太孱弱也太迟钝。JavaFX当初就没能完成Sun公司为其制定的预期发展目标,而这也使得Java成为Web客户端以及移动开发领域的顶级环境。(出自:infoworld

事实上,HTML 5、谷歌Android(本身就基于Java)以及苹果iOS等平台已经成为移动开发领域最为显赫的名号。类似于Adobe Flash与微软Silverlight,JavaFX已经被逐出核心舞台、被迫充当新时代下的龙套角色。不过它也拥有自己的支持者群体。在咨询与软件开发企业Welland公司中,技术人员一直利用JavaFX对负责数据库间数据迁移工作的桌面应用程序进行更新。JavaFX能为应用程序带来更具现代特色的外观,Welland公司高级软件工程师Cole Markham指出。“就个人经历来说,我所交流过的技术工作者中有很多都对JavaFX抱有兴趣,但这仅限于Java社区之内。”Markham还将JavaFX视为Swing GUI技术的继任者。

不过451研究公司分析师Michael Cote认为,JavaFX是一种已经衰落的丰富互联网应用(简称RIA)技术。“我觉得RIA的时代早就已经过去,现在已经是所谓智能手机与平板设备的时代了。HTML 5、Android以及最不能忽略的iOS才是真正的赢家。”他把JavaFX视为与Flash及Silverlight相近的即将过气平台,并指出indeed.com网站上的一幅图片显示、JavaFX程序员自2013年一月起就普遍处于无事可做的状态:

图片来自 indeed.com

甲骨文已经验证了JavaFX在Android与iOS平台上的可行性,尽管Java运行时本身在iOS设备上不受支持。不过Rymer认为甲骨文也已经感受到了JavaFX所受到的冷遇。虽然Java被广泛应用于移动及多通道应用程序的服务器端,但其在客户端上的普及程度还相当低下。甲骨文目前正努力在这方面推动JavaFX与Java ME(即Micro版本)的表现,Rymer指出。“虽然取得广泛成功的可能性确实不主,但软件行业的事确实很难说得准。”

最后小编认为,虽然说现在大部分主流厂商都在极力推广HTML5,但是新技术总是要花一段时间来完善的。就目前趋势来看,JavaFX或许无法跟FLASH和HTML5相比,但是JavaFX依然还是很年轻,未来的路还是很长,在不断的优化和改进的过程中,也许会在Java开发者心中占有一定的位置。

java系列: 对不起,JavaFX——Java 8目前还不能救你(zz)的更多相关文章

  1. 【转载】Java系列笔记(1) - Java 类加载与初始化

    Java系列笔记(1) - Java 类加载与初始化 原文地址:http://www.cnblogs.com/zhguang/p/3154584.html 目录 类加载器 动态加载 链接 初始化 示例 ...

  2. 【转载】Java系列笔记(3) - Java 内存区域和GC机制

    Java系列笔记(3) - Java 内存区域和GC机制 转载:原文地址http://www.cnblogs.com/zhguang/p/3257367.html 目录 Java垃圾回收概况 Java ...

  3. Java系列笔记(2) - Java RTTI和反射机制

    目录 前言 传统的RTTI 反射 反射的实现方式 反射的性能 反射与设计模式 前言 并不是所有的Class都能在编译时明确,因此在某些情况下需要在运行时再发现和确定类型信息(比如:基于构建编程,),这 ...

  4. Java系列笔记(3) - Java 内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  5. Java系列笔记(1) - Java 类加载与初始化

    目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个 ...

  6. Java系列,《Java核心技术 卷1》,chapter 13,集合

    13.1.2 Java类库中的集合接口和迭代器接口     删除元素,对于next和remove的调用是互相依赖的,如果调用remove之前没有调用next,则会跑出IllegalStateExcep ...

  7. java系列:《java核心技术 卷1》学习笔记,chapter 11 调试技巧

    11. 6 调试技巧 1)一个不太为人所知却非常有效的技巧是在每个类中放一个main方法,这样就可以对每个类进行单元测试.这个方法可以保留,因为在java虚拟机只调用启动类的main方法. 2)   ...

  8. Java系列:关于Java中的桥接方法

    这两天在看<Java核心技术 卷1>的泛型相关章节,其中说到了在泛型子类中override父类的泛型方法时,编译器会自动生成一个桥接方法,这块有点看不明白. 书上的例子代码如下: publ ...

  9. Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志

    11.5 日志记录 可以通过Loger.getGlobal().info(xxxx);的方式来记录log. 11.5.2 高级日志 1)通过一个包名来 创建一个新的日志记录器. private sta ...

随机推荐

  1. Android 之 json数据的解析(jsonReader)

    json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...

  2. mysql高可用之LVS + KEEPALIVE + MYSQL

    1.架构图 注意 (一)   Mysql需要把bind-address的配置去掉,否则无法实现虚拟ip访问 (二)   关闭所有linux防火墙:/sbin/iptables –F(可能没用) (三) ...

  3. Python基本数据结构-字典-创建/访问/基本操作/格式化输出

  4. 微信开发(03)之新建按钮时报错 errcode 40054

    在微信开发新建公众号的按钮时,报错如下: {errcode:40054,errmsg:"invalid sub button url domain"} 经过仔细排查,发现是url地 ...

  5. Nginx的安装与使用

    在 CentOS 7 系统上: $ sudo rpm --import http://nginx.org/keys/nginx_signing.key $ sudo rpm -ivh http://n ...

  6. oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题

    一个数据表基本上很难满足我们的查询要求,同时,将所有的数据都保存在一个表格中显然也不是一种好的数据库设计,为了避免数据的冗余,删除.更新异常,我们通常需要建立一张外键表,通过表连接,来获取我们自己想要 ...

  7. java poi read write xlsx

    package myjava; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...

  8. PHP中的include和require

    1.include语句 使用include语句可以告诉PHP提取特定的文件,并载入它的全部内容 <?php inlude "fileinfo.php"; //此处添加其他代码 ...

  9. Remote Displayer for Android

    应用截图: 作者:sunrain_hjb      QQ:2157825357                 Email:sunrain_hjb@aliyun.com 版本:1.0.188     ...

  10. JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)

    在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...