看SUN的JavaFX战略

在Java领域,无形中形成两个体系,一个以IBM/SUN等公司为主导的厂商路线;一个是以开源中立市场为主导的路线,很多初学者总是带着微软思路看待Java领域,以为Java领域最牛逼的就是SUN,然后就拿SUN和微软做比较,现在SUN被收购了,估计他们也无从比较了,但是还是很过分关注SUN的一举一动,我觉得他们可能关注方向错误了。

就以这次JavaOne大会主题来看,主要有两个:JavaFx(客户端技术);云计算(服务器端技术)。SUN很希望通过这样一个端到端的全面解决方案来重新进军未来市场。特别是对于JavaFX过度推崇有些过度,我们不谈SUN的迟钝,在JavaScript/AJAX Ruby Flex SliverLight已经流行市场的前提下,才推出声明式脚本语言JavaFX,并且许诺将来以更小的JVM来支持JavaFX,但是其愚蠢之处在于:脱离浏览器Break free from the browser,这是一个弱者的狂言?还是一个智者的邃语呢?

这时,我们不能不把眼光从SUN身上收回,从一个高度俯视这个行业的竞争,无疑,在富客户端/云计算这样一个解决方案下,有另外两个大鳄:google和微软。单不谈微软的SliverLight,即将依靠当初浏览器操作系统绑定的策略绑定SliverLight,形成Windows + SliverLight + IE浏览器强势格局;就以现在霸主Adboe Flash 也是寄托浏览器才得以成就今天的地位。

我们再来高度关注Google,当今软件新王者的战略,Google App Enginee是最早上线运行的云平台之一,它的富客户端策略就是Google Wave。Gartner的分析师Nick Gall评估了Wave对RIA可能造成的影响 :

Google的工程副总裁Vic Gundotra在Google I/O大会上说,公司在HTML 5上下了很大的赌注。

HTML 5中引入的一些新功能、以及来自W3C和WHATWG的Web API提议有:canvas、video、geolocation和web workers。 一旦HTML5成为标准,全部浏览器都会升级执行,当然到那天到来之前,其他RIA还有市场机会。(这个最痛苦的可能是微软了,IE和SliverLight 手心手背都是肉啊。)

我们可以看出,Google的富客户端策略是建立在浏览器技术上,Google的Android移动操作系统也是基于浏览器技术,包括现在流行的上网本,将浏览器打造成一个操作系统已经不是口号。

好了,未来的客户端图形竞争也许已经清晰:Google是以云服务平台为依托;将所有终端打造成浏览器为主的富客户端;微软当然希望继续延续其操作系统美梦;而SUN投靠与Oracle门下后,试图打造以Java虚拟机为终端的新美梦,SUN是否能够在客户端终端未来完成其在如今服务器端的地位(服务器地位其实为他人做嫁衣)?实在是一个太大的赌注。

个人认为是风险大于收益,接近自不量力,理由如下:
1. 2000浏览器刚刚出来时,applet如果能够轻量化,放下你高傲的心态,就不会沦落到今天被Flash赶出桌面富客户端的地步。前车之鉴,难道上帝会幸运让人两次踏进入同一个河流?

2.JavaFX在手机 机顶盒等终端可能会有一定市场,我们分开看这两个终端,因为手机和机顶盒终端又不一样:移动手机端几乎都装载了JVM,手机一直无法常联网在线,所以,手机应用一直是自娱自乐为主,那么下载一个Java应用小程序就很流行,但是3G推广,联网在线将变成一种常态时,浏览器特性又会显示出来。

浏览器优点是简单方便,下载太多应用需要管理,很多人大型企业系统已经尝够了以前delphi客户端维护升级烦扰,浏览器则大大节约这个成本。这个切肤之痛和转变不是经历者无法体验,特别是一些没有经历过大型系统运行维护之痛的人,往往都会忽略。

所以,在3G到来之后,浏览器在手机上又会占据主导地位。

那么机顶盒之类电视应用场景呢?电视是给“傻瓜”用的,而目前浏览器技术是所有IT技术中最接近傻瓜化技术,这也是浏览器得以推动互联网革命的源泉动力。

浏览器这个野生的孩子,凭着它的平民和亲和,奠定了今天互联网王者地位,微软曾经眷顾它,但是没有推动它,因为不符合它的商业利益,没钱可赚,现在Google又重新来推动这个平民英雄,作为软件股价最高者,商业软件王者和平民王者的结合,没有理由不看好他们的未来。

而SUN则躲在Oracle后面,这时喊出JavaFX,脱离浏览器Break free from the browser!你们应该感觉是怎样的效果?

未来富客户端技术到底谁为王者,谁也不知道,用户说了算是肯定的,那么,全世界用户是能够被几个厂商忽悠得了吗?

未来可能的趋势是:三分天下,SUN的JavaFX在嵌入式终端占主导;Silverlight与Flash Flex争夺同一个市场,Html5标准执行后,PC终端天下太平。

[该贴被admin于2009-06-09 17:17修改过]

Break free from the browser这未必就是bang所想那样。。。。
它的意思是javafx应用也可以独立于浏览器执行(也可以像applet那样作为浏览器插件)。在cldc平台上跟今天的j2me一样的运行方式。毕竟javafx是开源的,flash和微软的玩意都不开源,javafx构建在设计优良的swing基础上,可以跟java无缝衔接,对广大java程序员来说确实无比爽快!你能想象有一天我们能仅仅在java平台下(javafx也是java技术),以一种更加简洁的手段同时开发出多平台(桌面应用、浏览器端、cldc设备上)应用程序吗?所以仍然觉得javafx大有前途,而非bang那么悲观.

newthinker 说得有道理。

我对未来是有些担心,CLDC硬件设备不断提高,手机 机顶盒 PDA这些高端CLDC的PC化已经成为现实,浏览器也在不断向低端扩展,上网本 Android等。

JavaFX实际是延续Swing J2ME Applet生命,是一次重生,JavaFx在层面上非常类似Android,但开发应用没有XML,是DSL脚本语言,但目前为止,好像没有看到javaFX全部开源,compiler runtime二进制是免费下载的。

我另外有一种经验感觉:SUN虽然互联网早期就提出网络就是计算机,实际它的隐含意思是让Java来完成网络就是计算机的目标,10年下来,面向Web的架构(WAO)已经占据主流,Java也被迫从当初向微软挑战的终端操作系统退向服务器端,这是一种不以SUN自己预料的意外转移,IBM Weblogic和开源社区在这方面起很大作用。

如何适应WOA,包括SOA都已经被Google抛弃,SOA不断被REST等各个领域分技术蚕食已经是现实,为什么SUN对这些变化视而不见,自己被收购了还执意十年前的思路?

09年必须关注的10大软件架构主题:
http://www.jdon.com/article/36197.html
[该贴被banq于2009-06-10 10:02修改过]

我相信如果将来java陨落那么一定是因为java太java了,既一切java。如果一个协议一种语言只能依赖于一种语言的底层,其结果一定是越来越封闭,会走向死胡同。

sun被oracle收购,未来已经布满了阴霾,IBM与oracle的分裂将显而易见,如果java本身再封闭在java里面,那么除了吃老本实在想不出未来会有什么太大发展。

是的,其实在我们企业技术战略方面,一直存在两个方向:跟着草根标准走,比如浏览器 Spring等的;一个是跟着厂商走,如SUN 微软 IBM

前者风险是你对草根的未来判断和信心,最大风险是来自盈利模式;后者虽然盈利模式没有问题,但是跟错老大,后果很严重啊。

以浏览器为客户端的模式,绝大多数是将代码全部放在应用服务器里。这样,代码部署的工作量就大大减轻。应用管理员只需在应用服务器上做部署,不必去每个客户机上操作。但是,也有缺点,一是客户机的庞大资源空置没有利用;二是作为交互界面,表现能力太差,远不及以前的C/S客户端。
也有的把部分代码放在客户端,也就是在浏览器里解释运行,譬如Applet等,但有很大的限制。
今后肯定会有兼备C/S与B/S优点的新客户端出现。
至于客户端代码的部署,这个好解决。我过去也做过一个试验,可以实现“后台”自动升级。

基于浏览器AJAX作为交互界面和表现能力都很棒,我看了一下Google手机版Android的APPDEMO,我认为大部分其演示的View界面效果AJAX/Widget等都可以。

现在富客户端开发,对于界面设计人员要求高了,都是photoshop coreldraw都要会,还要会点脚本Javascript或XML,将这些效果表现出来,制作Flash也要会Flex脚本吧,JavaFX就是瞄准这个趋势,所以是DSL语言,面向业务人员的语言:就是面向UI设计人员的语言。

象Swing/applet那种使用Eclipse专用程序员开发工具开发界面的时代早已淘汰落后,这个开发界面方式和Delphi没有什么区别。这其实是B/S彻底淘汰C/S的革命过程。

建议到国内“经典网页制作论坛”看看,网页制作人员都在学习JS Flex,这是趋势,单靠图形制作混饭吃难了:
http://bbs.blueidea.com/forum-1-1.html
不过这个论坛名气大了,也开始闭塞,注册用户竟然要用手机注册,s响应号召实名制了啊,很强大哦,我看他们在讨论"xml是不是未来网页设计的发展趋势?"(http://bbs.blueidea.com/thread-2932660-1-1.html),我想回复说,XML已经是主要趋势,下面是JavaFX这样的DSL了,结果没回复成,本想好意告诉这些网页制作人员方向,不告诉他们,他们有的人方向就错了,南辕北辙,白花几年学习一些浪费精力的知识,所以,你们看Open和闭塞,哪个好就能够看出来了,因为没人可以界定哪些人是高手,越是高手的人越不愿意显露出来,偶尔发个言,顶用几年。

[该贴被banq于2009-06-10 16:35修改过]

富客户端是不可能取代c/s的,我们设备盘点用手持扫描仪进行扫码,然后跟远端数据进行核对,但是设备存放的地方根本无信号,所以程序必须保留在手持设备里面,当信号恢复时进行核对,同时手持设备要不断接受服务器的校验码,这些应用都是B/S模式无法解决的。

我在别的帖子里面说过,B/s模式具备一些天生的局限性,对网络依赖性太高,并且只能是请求与应答的方式,这样必然导致应用的特定模式。

CLDC设备是需要一些特别客户端的,这个是事实,主要讨论高端CLDC设备。

JavaFX 1.2 eclipse plugin 安装几天都没成功,一开始我用的是Eclipse 3.3,看看它说明,见下网址,应该用Eclipse 3.4,我就立即下载Eclipse 3.4.2, 然后键入网址中下载地址:http://javafx.com/downloads/eclipse-plugin/,我是严格按照这个安装说明来搞的,结果最后出现错误:
An error occurred while collecting items to be installed
No repository found containing: com.sun.javafx.eclipse.core/osgi.bundle/1.2.0.200905280115
No repository found containing: com.sun.javafx.eclipse.editor/osgi.bundle/1.2.0.200905280115
No repository found containing: com.sun.javafx.eclipse.editor.lib/osgi.bundle/1.2.0.200905280115
No repository found containing: com.sun.javafx.eclipse.feature/org.eclipse.update.feature/1.2.0.200905280115
No repository found containing: com.sun.javafx.eclipse.templates/osgi.bundle/1.2.0.200905280115

我核对版本都是2009月5月28日,今天是6月10日,没差几天,就不能安装了?SUN的伙计们都去开JavaOne大会欢庆去了?这样公司真的只是研究院,能提供什么稳定服务?

http://javafx.com/docs/gettingstarted/eclipse-plugin/index.jspinstallplugin

JavaFX 1.2 eclipse plugin我是装过的,用的也是Eclipse 3.4.2,当时1.2刚出来,至少当时安装是没什么问题的。不过挺有意思的是,即便是一个可以运行成功的程序也会报语法错误,让人确实很不舒服。除此之外,此插件还有很多小的问题,总之一点都不成熟,真不知道SUN那些人到底测试过没有。
于是还是改用了NB,在NB上此插件稍微好一些,但不可能否认,还是有些小的问题,只是不像ECLIPSE那样严重而已
JAVA FX本身其实是很不错的,用过SWING就会知道,其实FX大大简化了开发的代码量,就算是现在流行的FLEX,论代码量还说也会超出FX许多,FX让程序员把主要精力都集中在与业务相当的代码上,这的确是一个可喜的消息,而且其官方的教程也及时的汉化了,见SUN中国官方网站,所以学习起来也不会有太大的难度,JAVAFX的语法也是相当灵活的,总之,是值得期待的

桌面客户端将向两极分化:一是向胖客户端进化,整个应用框架放入客户机,专用型功能模块在客户机内,通用型功能模块以松耦合形式向网络(譬如云)索取;二是瘦到底,连硬盘也没有,采用集中存储器,譬如IBM正在逐步替换全球CDL的开发电脑。更瘦的是手机、网本、嵌入式设备。

呵呵,看来eclips用户多啊,javafx开发还是netbeans最好。
netbeans下安装javafx插件太简单了。。也没有什么bang在ec下遇到的问题。我所有类型的应用程序全部构建在netbeans下,国内netbeans用户少啊。。呵呵。。。

>更瘦的是手机
手机我看不是在走瘦客户端模式,而是胖,操作系统,Android开发平台,IPhone的APP Store和SUN的Java AppStore都是为这种极胖客户端服务的。

所以,对于高端CLDC/CDC设备,有两个方向选择,走手机的极胖客户端;一个走上网本瘦到底的浏览器模式。

我认为这两个模式取决于这个终端设备后面是否常态联网,如果常态是联网的,走极瘦模式;如果按需联网,那么就走极胖客户端。

关于JavaFX这个DSL语言,有很多人存在误解,以为是Swing替代品,其实错了,Swing是程序员干界面设计师的活,而现在界面设计师已经有专门的职业。

差点界面设计师会html frontpage/dreamweave;好的界面设计师不但懂美工设计,还会Flex,制作漂亮有内容的Flash;一般界面设计师都会CSS/Javascript,设计出很炫动感的界面,包括流行的网页游戏WebGame。

JavaFX很显然定位于会这些会美工设计又会Javascript脚本的界面设计师服务的,这才符合DSL这个面向领域语言的称号,作为声明性设计,你只要告诉语言你要做什么就可以,而不必纠缠于如何做。

但是,我们知道,这个世界上不能光有“要做什么”的人,也就是业务分析师/系统分析师,这些职业都是各个业务领域专家,他们可以在不懂软件的情况下使用DSL可以命令电脑“要做什么”。关键问题是:软件还没有智能发达到接近人脑程度,当你命令它做什么时,它不一定都知道应该怎么做。

所以,应该怎么做这个问题还必须交给Java这样大型语言来完成,比如云计算,伸缩性都是Java怎么做的一个考量,我看到国内一个追寻Ruby网站论坛中,有人喊出Ruby是未来,Java已经成为遗留系统,这是相当可笑的,为什么呢?因为当你从“怎么做”这个复杂繁琐细致的层面,跳到“做什么”这个层面,当然觉得轻松,就象你从小程序员一步到位跨越到老板,多好啊,只要天天发出指令“做什么”就可以,多轻松啊,这是Java程序员接触到Ruby这样DSL语言的普遍感受。

那么,这样肤浅的程序员,我问你:所有程序员都去做老板了?谁来实现“怎么做”问题吗?电脑现在可以完全给我们打工吗?

当然,Google App Enginee这样云服务平台正在完成“怎么做”这个细节目标,你只要告诉它,你要做什么,你就不必关心怎么做的细节问题,都由云服务来替你完成,但这条路很长。

声明设计
http://www.jdon.com/jivejdon/thread/36035.html

1)手机一直在做大,但是,目前其资源再大,也大不过网本,更大不过桌面机。手机平台都是微核型的。但是,这个发展会很快。
2)我估计,目前形势,最受威胁的,可能是应用服务器,它的应用范围会急剧变小。基于应用服务器的模式将在很多领域逐步退出。