Ada Li
JavaOne 2009 - Day 4
每天都有general session, 最后一天的重要性仅次于第一天.James Golsling今年在这一天介绍了Java Award的项目,并颁发奖品.最大的奖项是和汽车有关.开发者把一辆1959年的林肯老爷车改装成绿色环保的节能车,其中采用了Java技术.虽然在美的这几天,刚好听到通用汽车公司申请破产保护的消息,但汽车仍旧是个巨大的产业,这方面的技术创新进步并没有停止.可以注意到,不管是政府,还是公司,都在谈环保,谈如何通过技术改进,减少碳排放.想起前一段时间,读了Sun Cloud部门总裁和Sun CTO等几人合作的一本书"Citizen Engineer",书中大部分章节也是在讲工程师应该承担起责任,研发和设计出更环保的技术和产品.
会议现场,采用了Java技术,进行节能环保改造的林肯老爷车
这一段时间,看到国内在热议封网的事情,被封的网站也包括Microsystems刚宣布的Bing. 而Microsystems也是有历史以来第一次出现在JavaOne的General Session上,主题是"Software + Services",有人预测说,Bing的宣布,很大程度上也表明Microsystems放弃了收购Yahoo,而决定自己来做,进军互联网.
从每场参会人数可以看出那些技术应用更广泛,以及更能引起大家的关注.参加人数比较多的技术话题大概有这么几类:
1.传统的Java技术,包括Effective Java, Performance tuning, Concurrency,这些在Java开发中经常遇到的.
2.互联网相关的,比如Restful Web Services
3. 技术选型,技术之间的比较:例如Light Framework比较(Spring…),AJAX vs JavaFX等等
4. 侧重未来应用的:比如JavaFX, Cloud
最后一天,该和JavaOne 2009说再见了.不知道参会的具体人数,但是乘坐酒店到会场的班车时,有两次都是车上只有我一个人,至少说明住酒店的参会人员大大少于去年.大厅里有一个巨大的标语,"Thanks for join us". 我记得,去年最后一天的标语牌是:"See you next year, 并且标上了具体的日期 “June 2 – June 5, 2009”. JavaOne的会场所在地Moscone Center很抢手,通常提前一年就需要预定.下一周Apple的WWD大会也在这里召开,在硅谷,有各种各样的会议,全年无休.
大厅里的留言板,形式很新颖,把纸片夹在了气球绳上.我想过写些什么,但最终还是没写.
晚上是一年一度的部门聚会,Technology Outreach也是一个国际化的团队,同事们也就在JavaOne上能聚得这么齐.我们这个部门有三大部分,讲师团,巡回在各个技术大会上,进行技术演讲;社区和活动的策划组织,以及网站的内容编辑和管理.其中知名度最高的就是讲师团,也称TE(Tehcnology Envangelist, 技术传道士).上午,来自英国的TE, Simon和从澳大利亚赶来的Angela在James Gosling的讲演之间做了Demo. 当时James Gosling介绍说:"Tehcnology Envangelists are engineers with social skills, which is usually an empty set in our world.”.
我从公司内部网站和Facebook上把同事们的照片收集了一下,做了下面的一张照片,可能不少参加过各种Sun技术活动的开发者,会觉得许多面孔非常熟悉.
明天回北京.虽然不确定未来如何,但对我的同事们,对Java, 对JavaOne, 难说再见.
Posted at 01:02上午 六月 08, 2009 by ada in General | 评论[0]
JavaOne 2009 - Day 3
JavaOne上的Session太多了, 同时有十多个Session进行. 会议手册是必备物品, 而且需要提前圈好自己想听的内容, 更方便的就是之前提到的”Schedule Builder”. 肯定会有Session冲突的问题, 不过JavaOne的讲座资料, 都可以在会后从SDN(Sun Developer Network)网站上下载.(http://developers.sun.com/learning/javaoneonline/index.jsp), 现场没听到的, 或者没去参会的, 可以会后下载研究.
其它一些资料地址:
- General Session是可以通过网络看直播的. http://java.sun.com/javaone/2009/general_sessions.jsp
- 现场照片, 每日更新 (是专业摄影师拍的, 比我用傻瓜机拍, 强得不是一星半点): https://photos.sun.com/page/3370
- 视频汇集. (http://channelsun.sun.com/video/)
技术讲座分为两类, 一种是传统的那种有演讲稿, 一个或几个演讲者, 听众通常只在演讲结束后, 有机会提问题. 另一类是BOF Session(Birds-of-a-Feather), 我的翻译是"物以类聚".通常是数个专家,齐刷刷坐在台上,没有那种精心准备的演讲稿,顶多是有个提纲和范围,专家做完自我介绍后,听众就可以提问,交互性很好.BOF Session都在晚上,似乎晚上大家比较放松,才能畅所欲言.
会后听众与讲师交流
Session换场中间,大家涌出找吃的和喝的.每天最后一个讲座是晚上九点半结束,听一天下来的话,很耗体力,需要随时补充能量.
和Duke合影的展台在JavaOne上年年见,不过今天不同的是拍完照片后,直接用程序做处理,然后读参会人员的Java Card, 把合成照片发到参会者的邮箱里.而参会者也可以使用专门网站(http://dukephotobooth.com/,目前只给参会人员开放),给照片修改背景,添加一些其它东西.不同的地方还在于,这套程序是用JavaFX开发的.
晚上又是两个聚会,SLS(Sun Learning Service)部门的Stacy真是天生做教师的,有问必答,非常耐心,他自己也说他非常喜欢做老师,之前他在高校教课,但在Sun培训部门工作,有很多出差的机会,更合他心意.摇滚乐队演出是JavaOne的一个传统,Stacy说这些摇滚曲都是七八十年代流行的,他那个时候在上高中,很熟悉。果然是这样,台下的很多听众跟着乐队一起唱,一起扭。演奏这些曲子,可能就是因为参加JavaOne的人年龄普遍偏大,我还遇到了不少奶奶爷爷级别的人物。如果这样的演出是在中国的技术大会上办,估计只能是唱周杰伦的歌了。当时有些困惑,为什么是摇滚(Rock),而不是pop, jazz, 或者classic的演出呢。JavaOne上的明星讲师也是”Rock Star” 的头衔.
和前几天相比,今天的情绪不太高,因为遇到了几个硅谷的同事,聊起来起都面色沉重,也不像我这样傻乐傻乐的。因为现在美国的就业形势确实紧张,而且,美国人普遍没存款,一旦失业,仅仅是医疗保险,就是很沉重的负担。
希望大家都好.
Posted at 10:59上午 六月 06, 2009 by ada in General | 评论[0]
JavaOne 2009 - Day 2
今天有两个(Bring your own laptop, BYOL)Hands-on-lab要帮忙, 这种动手实验室有两类, 一种是大会提供电脑的, 一种是参加者需要自己带笔记本的. 象参加这种动手实验室的, 一般需要提前用Schedule Builder预定, 然后会收到邮件, 告诉在实验前预先安装一些软件. 没有预定的, 要看运气是不是有空位置了. 上午的实验是练习如何用Zembly快速开发Facebook的程序, 很热门, 结果很多人没进来. 我发现, 有大约一半的人都是用Mac笔记本.
| 自己带电脑的 |
大会提供电脑的 |
今天也是CommunityOne的最后一天, 去JavaOne旁边的酒店去转了转, 刚好看到OSUG在开会(Open Solaris User Group), 有北京去的几个同事, 各国的User Group Leader聚在一起分享经验. 恩, 我觉得, 北京OSUG的展览板, 美工部分需要提高, 不过, 不能对我们那些可爱的Solaris工程师要求太高哈. 何况, 我的美工也很滥的.
之后就去拍些照片给大家看啦.
排排队, 进会场
上网区的电脑都是Sun Ray, 提供了三种操作系统, OpenSolaris, Windows 7, 以及Ubuntu.
休息娱乐区, 有大屏幕游戏机, 大屏幕电影等.
纪念品店, 以及书店. 有个没来参会的同事让帮忙给带个Duke纪念品, 6美圆一个. 我们在国内做活动, 这种Duke可是免费送的. 我也打算买个有Java Logo的外套.
| 书店 |
纪念品商店 |
晚上做完最后一个实验, 已经是八点四十五了. 和几个做实验的同事一起去Google User Group的Party. 上周, Google刚在JavaOne会场同样的地方开了AI大会, 而这次, 他们通过社区的一些人在JavaOne上散发一些邀请函, 按照社区积极分子Kevin的话说, Goolge很聪明, 省去了在JavaOne上租用Booth的钱.
与社区的人聊天很有意思, Kevin是在JavaOne上认识的, 很活跃的一个人, 他带我参加了James Gosling与社区负责人的小型座谈会, Google的聚会也是他给的邀请函. 他做社区的事情, 完全是兴趣, 我问他一个困惑我的问题, 没有经费, 怎么能请来知名演讲者和付场地的费用. 他的策略是双赢, 场地通常由公司提供, 而公司的知名度,与硅谷的特殊位置, 能让一个人自费从欧洲飞过来给社区的人做演讲.
James Gosling与社区负责人的小型座谈会
Google User Group Party的照片. (照片中最胖的那个就是Kevin, 而一起做hands-on-lab的同事真是来自五湖四海, 美国, 墨西哥, 波兰, 希腊和中国, 但有意思的是, 出生在美国, 墨西哥, 波兰的三个人, 目前都在布拉格的Sun工程院工作).
JavaOne还有两天时间结束, 我得好好去听听讲座了.
Posted at 11:03上午 六月 05, 2009 by ada in General | 评论[0]
JavaOne 2009 - Day 1
第一天早上的开场general session通常是参会人数最多的, 这次介绍主要有两方面: Java Application Store以及Oracel CEO Larry Ellison和前任Sun CEO Scott McNealy的登场.
Application store已经有不少公司在做, Sun宣布的Java Application Store, 除了是针对Java的, 另外, 由于JVM中新增加的Plugin拖拽技术, 下载和部署这些Java Application要简单和容易得多, 目的是让JAVA开发者通过这样的平台能出售自己的软件而直接赚到钱. 而Scott登台后, 气氛稍稍有些伤感, 他说和Larry是二十多年的老朋友了. Scott问了Larry一些问题, 比如对研发经费的投入, 其中一个很直接:"很多人都在说,这是最后一次JavaOne大会, Oracle怎么想?”. Larry讲了一大堆赞扬Java赞扬的话, 肯定他会继续对JavaOne的支持. 而对众人关心的各类技术命运, 比如JavaFX, Larry的回答也很正面, 他说JavaFX对Oracle的业务很重要, 还提到了Google的Android.
现场没拍到照片, 找到一张以前Scott和Larry的合影.
技术主题还是这么几类:
1. Rich Media Applications and Interactive content: 覆盖RIA, JavaFX, TV, blu-ray Disc等技术
2. Mobility: JavaME和Device
3. Services: SOA, Web2.0, Cloud
4. Core Tehnology: JavaEE, JavaSE, Embedded/Real-time/JavaCard
这次的JavaOne提供了很多免费门票给学生,通常JavaOne四天的参会费是1500美圆左右.教育要从娃娃抓起,Sun对教育界的投入一直是不遗余力的,只是这么长时间的种树,自己没摘到果实.刚好拍到一群学生在和James Gosling合影.
下午我在Hands-on-lab帮忙,是一个开源的游戏服务器Darkstar的动手实验,大厅坐满了,很意外地看到一个爸爸带着儿子来做实验,儿子做,爸爸看.这个小男孩很有意思,即使遇到操作上的问题,也不许我动他的鼠标,我只能动嘴告诉他.最后小男孩还拿到了奖品,一件T-Shirt.
下午看到java.net 在做直播,扮木偶的人最辛苦,都是工程师.
晚上最开心,因为JavaOne也是聚会的好时光,今天赶了两个场子,一个是校园大使的聚会,一个是市场部的鸡尾酒会.回到酒店已经快凌晨两点了.这会儿回忆,在Sun呆将近四年的时间,和同事之间的聊天也没有象这两个聚会中的杂而广,因为遇到了来自各个国家的人,挪威,捷克,德国,英国,巴西,智利,俄罗斯,韩国,菲律宾,印度尼西亚,新加坡,新西兰等等等等.
I love JavaOne.
Posted at 12:18上午 六月 04, 2009 by ada in General | 评论[0]
JavaOne 2009 - Day 0
JavaOne Day 0实际上是Community One的第一天, 这个活动去年办了首届, 是在JavaOne的前一天, 宗旨是 “An Open Developer Conference”, 会议内容比JavaOne更广泛, 比如包括Linux, OpenSolaris, MySQL, GlassFish, Android, NetBeans, Eclipse等等.另外,和JavaOne很大不同的是,讲座可以免费听,只是需要提前网上注册.
今年CommunityOne的重要话题是Cloud, 本来Sun计划在这次大会上宣布推出基于Sun Cloud的存储服务,另外,StarOffice 9也可以直接将文档存储在Sun Cloud上.不过,这个宣布要延期了.结果,CommunityOne上最吸引观众的还是Java部分的技术讲座,很多听众本来就是要参加JavaOne的.
我总觉得这种技术会议,学习的意义并不大,更多是感受一种气氛,开阔一下思路.去年是我第一次参加JavaOne, 首日的”General Session”,听众达到了一万两千人,当时被乌央乌央的人群给震住了,在全球人口最多的中国,我也从来没有见过这样规模的技术大会.不过听参加过几届的Joey说,最盛时的JavaOne,一个会场就坐了两万人.不过今年,经济危机,流感,收购等等这些事情加在一起,不知道明天首日会是什么情形.
我转得还是挺开心的,主要气氛还是挺好,贴些图片吧.
“Sun Cloud” 展台旁,是个棉花糖摊子,棉花寓意"Cloud", 随便取,似乎也有寓意.
免费饮料常见,免费啤酒不常见,所以大家排长队.
大奖:保时捷跑车,需要参加JavaFX的扑克大赛.
扮中世纪战士的人是来自俄罗斯Sun工程院的Misha, 和一群这样装扮的人在散发OpenSolaris传单.这个点子不错.
一天快结束时的热舞.
全球Java User Group(JUG)组织者的会后聚餐,大约有六十多人来参加了这次的JavaOne.我真遗憾中国为什么没有选几个人去,仅仅是巴西就来了四个.来自菲律宾的Java Champion的大照片,还上了JavaOne的宣传墙.
Posted at 12:00上午 六月 03, 2009 by ada in General | 评论[0]
技术人员的晋升路线
曾经面试过一些开发人员,发现他们不少人的想法是以后成为一个经理,即使现在申请的是开发者的职位。而网络,报刊上也不乏这样的言辞,软件开发者,超过三十岁,如果升不了官,就应该转行了。我想,每个人都会针对现实,而选择让自己利益最大化的路线。所以,如果有那么多的技术人员把成为管理人员作为职业规划的目标,一定是有着现实上的原因,很多就是公司体制上的原因。我的一个朋友在从开发者升为经理后,私下里说,公司里虽然总是宣传如何重视技术,如何重视技术人员,但在薪水,升职,福利方面,根本看不到这一点,公司里员工的共识就是只有当上经理,才有出路。
大家可能早听说过很多公司都有两套晋升路线,一个喜欢技术的人可以一直做技术做到退休,而福利,地位方面并没有什么损失。我把自己了解到的一些信息,与大家分享一下。仅代表个人观点。两条晋升路线,一条是“People Managment”,另外一条是“Individual Contributor”。而“Individual Contributor”包括的范围很广,既有研发工程师,售前售后工程师,也有销售人员,客服,也包括项目经理(项目经理,Tech lead仍然属于Indibvidual Contributor). 我这里只是谈谈研发工程师的职业路线。
通常刚毕业的人进入公司,是从MTS 1开始做起,当然也有例外,有从MTS 2做起的,按照平均三年升一级的晋升速度,大约在工作九年后,就要面临一个职业路线选择的问题,是继续做“Individual Contributor”, 还是转向“People Managment”。发现很多同行困惑也都发现在这个年龄阶段,我也一样困惑,不然就不会去研究公司的HR网站了。:-)
选择什么样的路线,最关键的还是要问自己,对什么最感兴趣?这些别人都帮不到。当然还有机会的问题,但我觉得这不是最大的障碍,机会也是人创造出来的。
好吧,假设已经决定“Individual Contributor”一条路走到底了,那么按部就班的,就是沿着Staff Engineer –> Senior Staff Engineer –> Distinguished Engineer (DE), Principal Engineer (PE) –> Fellow 这么个顺序来了。 而薪水,福利等,和对应级别的“People Managment” 是一样的。
下表两条晋升路线的对应表,左边是“People Managment”的晋升路线表,右边是“Individual Contributor”的晋升路线表。
| People Managment | Individual Contributor (Professional) |
| Member Technical Staff 1,2,3,4 (MTS 1, 2, 3, 4) | |
| Engineering Manager 1 | Staff Engineer |
| Engineering Manager 2 | Senior Staff Engineer |
| Director (1,2,3) | Distinguished Engineer (1,2,3) ,Principal Engineer(1, 2, 3) |
| Vice President (1,2) | Fellow (1,2) |
中国的情况特别地方在于,我们的IT历史太短,从业人员年龄普遍偏低。以Sun中国工程院来说,2007年底的时候,才出现了第一个本土的Staff Engineer,Colin Zou。他博士毕业后进入公司,用了七年的时间升到Staff Engineer, 速度已经算很快的了。当时的工程院长王星耀还特地发信祝贺。
一些工程师在Staff Engineer的位置上能呆10年,最后可能就以Senior Staff Engineer的Title退休了,奔往DE, PE的路很艰难,而Fellow更是万里选一的大PK。
之前介绍过的Liang Chen是DE (Distinguished Engineer ): http://blog.csdn.net/Adali/archive/2009/01/20/3839673.aspx
之前介绍过的Shan Shin是PE (Principal Engineer): http://blog.csdn.net/Adali/archive/2009/01/13/3769359.aspx
之前介绍过的James Golsing是Fellow: http://blog.csdn.net/Adali/archive/2008/12/29/3638408.aspx
大家可以揣摩揣摩这些Title的要求。我曾把公司里几个Fellow的简介看过一遍,发现一个共同点,他们都拥有博士学位,所以,如果你不是博士毕业,基本上就不用想着去当“Fellow” 了,Fellow,更像是科学家,而不是工程师。
而对MTS 1,2,3,4职位的要求,在白剑波的BLOG《如何做一名成功的IT工程师》有详细的说明。
注:这里介绍的职业体系在公司里历史悠久,但最近有一些变动,以后有机会去弄明白新体系后,我会再做更新的。
Posted at 03:24下午 三月 26, 2009 by ada in General | 评论[0]
2009年的Java技术趋势
(这是为<<程序员>>杂志写的稿件)
已经有14岁的Java在日新月异的IT技术领域内不算年轻,但它一直没有停下变革,创新的脚步。Java已经不单单是一种计算机语言,很多情况下,我们称它是一个平台,一个社区,以及一个生态系统。下面从Java SE, Java EE, Java ME, JavaFX几个方面,简要介绍一下Java技术在2009年的变化和趋势。
JavaSE
目前JDK的正式版本是JDK 6 Update 12。JDK 6 Update 10以来的版本, 关键功能包括:
Java内核大大缩小了,由原来的大约十几兆缩小到4兆,这样提高了启动Java程序的速度。而其它的Java库在需要的时候可以后台下载,这样也缩短了等待和安装的时间。
下一代的Plug-in架构。Applet运行在自己的进程中,而不再依赖浏览器,提高了性能和可伸缩性。在2008 JavaOne 有一段很酷的演示,就是将Applet直接从浏览器中拖拽到桌面上,或者从桌面上拖到浏览器中。这个功能的实现有赖于JDK 6中重写了连接 Java运行环境和浏览器的代码。这个新的Plug-in架构还提供一个有意思的功能,可以在Web页面通过JavaScript调用Web页面上任何的 Applet, 不管这个Applet是用哪种语言写的,比如JavaFX Script, JRuby, Jython。
这里要提到JDK 6中Java虚拟机(JVM)对动态语言的支持(JSR 223)。这个框架可以使Java应用程序中支持脚本引擎,这样各种脚本语言就可以运行在JVM上。JVM发展的一个重要方向就是去掉“J”,让JVM成为能支持各种语言的,全能的“VM(虚拟机)”。目前JVM支持的脚本语言包括:JavaFX Script, Groovy, JRuby, Jython, JavaScript, Scala, Clojure。可以预计到的是,将来会有更多的脚本语言运行在Java虚拟机上。
还在草案阶段的JDK7,一些新特性也值得期待:
一个是实现JDK 7模块化(JSR 294, JSR 277), 将与OSGi联盟更紧密的配合,以便JSR 294模块可以被OSGi所使用。
另外一个是并行包。这个包致力于通过充分利用底层硬件来达到真正的并发。随着硬件多核系统的广泛应用,并行计算的需求对Java的性能提出了更高要求。
Java EE
Java EE 6 (JSR 316)的公众审议将在2009年2月23号结束。Java EE 6继承了Java EE 5改进的目标,就是简化开发,另外,还增加了一个目标,更好地满足开发人员的需求。关于Java EE 6的讨论持续了很长时间,而争议最大的就是Java EE 6引入的Profile。
Java EE十年来的发展结果,是这个平台变得越来越庞大,但对很多用户和开发者来说,也许他只需要使用众多功能中的很小一部分,却不得不安装整个平台。 Profile就是为解决这个问题而定义的。Profile实际上是Java EE API的子集。讨论最热烈的Web Profile就集中在,哪些API应该被放在标准Profile中?
Jave EE 6包括了一系列的新技术和升级,篇幅所限制,仅罗列一些名词:WebBean 1.0, JSF 2.0, EJB 3.1, JPA 2.0, Servlet 3.0, JAX-RS 1.1。
Java ME
Mobile Service Architecture 2 (MSA 2) 目前已经到了公众审议的尾声 (JSR 249)。预计2009年,MSA 2将进入实用阶段。MSA 2是下一代Java ME平台技术,提供了更多移动开发的新特性,比如可以访问手持设备上的各种传感器,如加速计传感器,电池容量(JSR256);可以在手机上看电视(JSR 272); 如同信用卡支付功能的手机钱包(JSR 257); 使用XML,脚本,与Java一同构造GUI (JSR 290); 通过手机使用VOIP服务(JSR 281)。
JavaFX
Java在企业应用程序的开发中一直占主导地位,但现在面向消费者的富互联网应用(Rich Internet Application, RIA)软件数量在急剧增加,这种情形下,JavaFX应运而生。和Java语言相比,JavaFX Script更适合开发高效,快速地开发集合各种媒体,交互性强,界面吸引用户的RIA应用程序。2009年2月,JavaFX SDK 1.1 与 JavaFX Mobile都正式发布了,下一个要期待的是JavaFX TV。借助Java这个强大的平台,JavaFX目标是提供给开发者更好的RIA平台与技术,除了继续要在传统的PC桌面保持优势外,更是面向未来的终端设备,手机和电视。
做为一个开发者,我依旧看好Java的未来。
Posted at 10:48上午 三月 16, 2009 by ada in General | 评论[0]
JavaFX 常见问题
JavaFX的问题以及解答,大部分都可以在 官方的中文JavaFX FAQ 找到,这里从其它地方收集和翻译了一些问题与解答,问答问题的人包括JavaFX开发组的工程师,架构师,执行总裁,以及Sun的CEO。这篇文章的问题与回答收集截止到 20009.2.28.
官方的中文JavaFX 常见问题列表 (http://developer.sun.com.cn/javafx/faq/)
- 1.1 什么是 JavaFX 1.0?
- 1.2 Sun 通过 JavaFX 1.0 发布了什么?
- 1.3 JavaFX 1.0 提供了哪些高级功能?
- 1.4 何时发布 JavaFX 1.0?
- 1.5 使用 JavaFX 1.0 能构建什么类型的应用程序?
- 1.6 JavaFX 应用程序在何处运行?
- 1.7 JavaFX 正在替代 Swing 成为 Java 的客户端 UI 库吗?
- 1.8 构建 JavaFX 应用程序需要哪些软件?
- 1.9 需要安装 JavaFX 运行时或插件来运行 JavaFX 应用程序吗?
- 1.10 JavaFX 与 Java 有何不同?
- 1.11 Linux 和 Solaris 上将支持 JavaFX 吗?
- 1.12 应该如何开始学习 JavaFX?
- 1.13 如何获取 JavaFX 1.0 SDK?
- 1.14 如何获取 JavaFX 1.0 运行时?
- 1.15 如何验证已经安装了 JavaFX ?
- 1.16 JavaFX 1.0 与 JavaFX Preview 有何不同?
- 5.1 什么是 JavaFX Script?
- 5.2 为什么 Sun Microsystems 要创建一种全新的语言?Sun 为何不在 Java 中构建这些功能?
- 5.3 我现在使用 Java 构建应用程序。我可以在 JavaFX Script 中重用 Java 库吗?
- 5.4 我使用 JavaScript 和 ActionScript 进行编程。但是对 Java 一无所知。我仍然可以学习 JavaFX Script 吗?
- 5.5 与 JavaScript 和 ActionScript 相比,JavaFX Script 有哪些优点?
- 5.6 我的 applet 可以从 JavaFX Script 中调用 JavaScript 吗?反之也是这样吗?
- 6.1 JavaFX 1.0 提供了哪些可用的工具?
- 6.2 我已经安装了 NetBeans IDE 6.5。应该如何获取 JavaFX 插件?
- 6.3 NetBeans IDE 6.5 能创建什么类型的应用程序?
- 6.4 解释 JavaFX 设计人员-开发人员工作流
- 6.5 JavaFX 1.0 Production Suite 支持 Adobe Photoshop CS4 和 Adobe Illustrator CS4 吗?
更新版本的官方英文JavaFX 常见问题见: http://www.javafx.com/faq/
收集和翻译了一些问题与解答
1. 问题: JavaFX 正在替代 Swing 成为 Java 的客户端 UI 库吗? (参考1,2,7)
回答:不可以替代。JavaFX 是构建丰富的多场景(例如桌面、浏览器、手机和电视) RIA 的富客户端平台。然而,Swing 是一组可扩展的 GUI 组件,通过此组件,开发人员能为基于桌面的商业应用程序快速开发功能强大的 Java 前端。基于桌面环境而设计的 JavaFX 应用程序可以利用功能强大的 Swing 小部件工具包构建适宜于桌面的 RIA。
2. 问题:Applet可以嵌入在网页中,可以使用Swing,也可以实现Rich Internet Applications (RIA). 看起来JavaFX实现的功能和Applet类似,它们之间有什么区别吗?(参考2)
回答:"Applet"是一种部署模式.Applet可以用任何JVM支持的语言编写, 比如Java, JavaFX Script, Ruby, Groovy等.JavaFX 编写交互式的Applet更容易些,开发RIA应用程序比Java效率更高.
3. 问题:能否比较一下JavaFX 和Flex? (参考3)
回答:(这是一个曾在Sun JavaFX工作,现在Adobe Flex做开发的工程师的比较)
- 成熟度: Flex问世早, 知名度比JavaFX高
- 语言: JavaFX借助JavaFX Script开发程序.JavaFX Script也是一种脚本语言,只是底层的很多功能依赖Java平台.而Flex这种脚本语言用MXML做声明,而用ActionScript来编程.JavaFX把声明和编程放在了一起.
- GUI: JavaFX和Flex都提供GUI部件,图象,动画,数据绑定.
- 工具:JavaFX目前所发布的工具更多的是针对开发者.而Flex为设计者考虑的更多,因而在设计者/开发者的工作流的工具也多.
- 运行环境:JavaFX需要Java平台,而Flex, 需要Flash平台.
4. 问题:JavaFX 部署有几种方式 (参考4)
回答:目前可以体验的有四种
- 浏览器中的Applet
- 桌面上的Applet
- Web Start启动的Stand alone应用程序
- Java Mobile上的JavaFX应用程序
将来JavaFX TV发布后, 会多出一种针对TV的部署方式.
5. 问题:设计者如何使用JavaFX? (参考4)
回答:我们在Adobe Max的大会上介绍了JavaFX, 很多人对JavaFX很感兴趣, 也很激动, 原因有两个.
- 习惯使用Photoshop和Illustrator的设计者, 可以继续在JavaFX中使用
- JavaFX可以让设计者做他们用Flex或者其他技术无法实现的功能, 比如, 把Applet从浏览器中拖拽到桌面, 比如在3D 立方体中放视频. 比如访问现有的Java代码... 对很多游戏开发者来说, 这点很重要, 因为有很多开源的Java游戏库.
6. 问题:JavaFX 会开源吗? (参考2, 5)
回答:JavaFX有一些代码不属于Sun拥有, 所以没有办法开源. 我们正在致力与解决这部分关联, 为以后开源做准备. 目前 JavaFX compiler, Netbeans JavaFX plugin 和 Eclipse JavaFX plugin 是开源的.
7. 问题:怎么给JavaFX 发bug, 以及跟踪Bug的信息? (参考5)
回答:开发者可以登陆http://javafx-jira.kenai.com/secure/Dashboard.jspa. 来发bug, 并且跟踪Bug的解决情况.
8. 问题:JavaFX Mobiile 与JavaME, MSA的关系?(参考5)
回答:我们打算在JavaFX 支持CLDC和CDC. 理想情况下, 我们希望人们能在MSA的子集中创建JavaFX Mobile应用程序, 但对JSR135来说, JavaFX的运行环境有些苛刻. 在这一点上, 我们没有为OS创建full stack的计划, 未来也许会做. 我们打算在现在的JavaME stack中支持一部分, 这样合作伙伴可以在OS 上部署JavaFX, 比如Windows Mobile.
9. 问题:为什么为JavaFX创建新的图象格式, FXZ, FXD (参考5)
回答:设计者可以在Photoshop 或者 Illustrator中创建图象后, 转换为FXZ格式. 而FXD文件可以为FXZ文件更多功能, 比如保留层, 另外FXZ也可以处理矢量(vector)和光栅(raster). 这样可以让开发者灵活处理转换出的图象格式, 并且创建让人惊叹的视觉效果.
10. 问题:如果我创建了一个JavaFX Applet和Server进行通信, 如果我把这个JavaFX Applet拖拽到桌面, 那么Applet和Server之间的通讯会中断吗? (参考2)
回答: 拖拽到桌面的Applet依然是Applet, 仍旧在Sandbox中运行, 依然缓存在Applet Chche中. 因此, Applet和Server间的通讯仍然工作. 只是, 你可以为拖拽动作增加一些代码, 来完成一些特殊的功能.
11. 问题:JavaFX是在JRE中, 还是需要单独下载? (参考2)
回答:我们没有任何计划要把JavaFX加到JRE中. JavaFX会在需要的时候下载, 然后缓存在本地.
12. 问题:JavaFX最终会采用本地以及跨平台的音频视频播放器. 而目前的跨平台部分是由ON2发行的,是否这部分将来都会用纯Java写? (参考2)
回答: 在目前的JavaFX框架中, 音频视频的解码是由ON2提供的优化后的本地库, 用Java 2D做润色, 并且库作为JavaFX运行环境的一部分发行. 将来如果Java的效率允许,我们会转到用Java写解码器.
13. 问题:音频视频的跨平台是否意味着JavaFX只支持标准的格式,比如MP3, AVI, Flash, 以及需要访问本地库的WMV? (参考2,5)
回答: 跨平台需要本地支持. 例如, 在Windows中, 你可以播放任何Directshow支持的音频视频格式. 在Mac上, 你可以播放任何Quicktime支持的. 但跨平台, 我们是指在所有的平台上支持可以工作在JavaFX的媒体文件。目前JavaFX只支持On2的TrueMotion Codecs. 我们会继续研究其它跨平台的媒体格式, 另外也会参考OMS (开放的媒体编码解码项目 http://blogs.sun.com/openmediacommons/entry/oms_video_a_project_of)
14. 问题:如何将现有的Java企业应用程序移植到JavaFX上?(参考1)
回答:JavaFX适合开发客户端GUI, 你可以把原有的Web界面改为JavaFX开发的RIA, 而Server端的仍采用Java.这样也可以保护你原来的投资.
参考:
1. http://www.pushing-pixels.org/?p=312
2. http://java.sun.com/developer/community/askxprt/sessions/2008/jl0818.jsp
3. http://tech.groups.yahoo.com/group/flexcoders/message/130608
4. http://javafx10-launch-dec08.eventbrite.com/
5. http://blogs.sun.com/meetjeet/entry/javafx_the_road_ahead
7. http://developer.sun.com.cn/javafx/faq/
8. http://blogs.sun.com/javafx/entry/a_word_on_linux_and
9. http://blogs.sun.com/jonathan_zh/entry/javafx_下载量突破一亿
Posted at 03:48下午 三月 05, 2009 by ada in General | 评论[0]
NetBeans创建可拖拽到桌面的Applet
JDK 6 update 10以上的版本中有个很新颖的特性,运行在浏览器中的Applet可以直接用鼠标托拽到桌面上,关闭浏览器器后,这个Applet依旧可以运行。下面介绍可托拽Applet的运行环境,用NetBeans 6.5 开发可托拽Applet的步骤,以及如何用Web Start调用Applet。
一.运行开发环境
可托拽Applet需要的运行环境:
1。安装JDK 6 update 10及以上的版本。(下载地址:http://java.sun.com/javase/downloads/?intcmp=1281)
2。浏览器支持。目前只有IE6,IE7和Firefox 3。
安装NetBeans 6.5。(下载地址:http://www.netbeans.org/)
二。NetBeans 6.5 开发可托拽Applet的步骤。
1. 创建项目,NetBeans中,File -> New Project, 打开“New Project”窗口,"Categories"选择“Java”, "Projects" 选择“ Java Class Library”, 点击“Next”。如下图 。
在下一个“Name and Location”窗口中,“Project Name”栏目中输入项目名,比如“DraggableApplet”, 点击“Finish”。如下图。
2. 创建Applet。NetBeans中,选中刚创建的项目,打开菜单“File -> New File...”, 出现“New File”窗口,“Categories”中选择“Java”, “File Type”中选择“Applet”, 点击“Next”。如下图。
在自动生成的NewApplet.java中添加显示“Hello World”字符串的代码。如下图。
| public void paint(Graphics g) { |
3. 选中“NewApplet.java”文件,鼠标右击,在弹出菜单中选择“Run File ”。如下图
4.运行Applet的结果是在“小程序查看器“中看到刚刚创建的"Hello World"Applet, 如下图。
通常,Applet是运行在浏览器中的。NetBeans运行Applet的同时, 还在项目的"Build"目录下自动创建了html文档。注意在"Files" Tab(不是"Projects"Tab)找到"Build"目录, 和"NewApplet.html"文件. 在NewApplet.html中增加一个关键参数 Draggable, 如下代码和图.
| <PARAM name="draggable" value="true"> |
5. 可以直接从NetBeans中打开浏览器. 鼠标右键点击"NewApplet.html",选择“View”, 如下图。
运行结果如下:
6. 下面开始激动人心的托拽了。按住“Alt” 键,鼠标点击并按住Applet, 可以把Applet 拖出浏览器,放到桌面上。
上图中,“Hello World”Applet已经被拖到了桌面上,原有在浏览器中的位置现显示一个Java Logo。如果关闭“Hello World”Applet, 那么这个Applet又会回到浏览器中。缺省设置下,按住Alt键,鼠标可以在桌面上移动Applet。关闭浏览器器后,这个“Hello World”Applet仍然运行。
脱离了浏览器的“Hello World”Applet运行在内存中,如果希望Applet类库能保存在本地,并且从本地启动的话,可以采用Web Start技术。JavaTM Web Start 是基于 Java 技术的应用程序的一种部署解决方案。它是连接计算机和 Internet 的便捷通道,允许用户在完全脱离 Web 的情况下运行和管理应用程序。Java Web Start 提供一次单击激活应用程序的简易方法,并保证始终运行应用程序的最新版本,从而可避免复杂的安装或升级过程。
三。为Applet设置Web Start
1. 为Applet设置Web Start启动,鼠标右键点击项目,选择“Project Properties”, 出现窗口。“Categories”选择“Application -> Web Start”,选中检查项“Enable Web Start”,点击“OK”。
2. Web Start 启动应用程序,需要有Main Class。现在为NewApplet.java增加一个“public void static main(String args[])”方法,创建一个Frame, 并把Applet加入到Frame中。代码如下(Note: 以下代码为演示而写,不具有普遍参考性)。
| public static void main(String args[]){ NewApplet dragApplet = new NewApplet(); dragApplet.init(); |
还需要在“Project Properties” 窗口中,为“Run" 设置“Main Class”。如下图。
3. 鼠标右键点击“DraggableApplet”项目,选择“build”。NetBean会自动在“”目录下生成三个文件。DraggableApplet.jar, luanch.html, launch.jnlp. 如下图。
JNLP(Java Network Launching Protocol, Java网络加载协议,JSR 56 )经常与"Web Start"一起被提及。JNLP协议通过XML, 定义了怎么加载Web Start应用程序。JNLP文件包括一些信息,比如Jar包的位置,应用程序的main class, 以及一些参数设置。
4. 在文件浏览器中双击“launch.jnlp”, 就可以运行Web Start启动的Applet了,如下图。
四。进阶
这个演示程序仅使用了AWT组件, 而如果希望Applet的界面更美观, 开发更方便快捷, 可以使用NetBeans中的"Swing GUI Form", 能够可视化地在Applet中加入Swing(JFC)组件。下面这个链接演示了一个界面更丰富的可拖拽到桌面的Applet,使用了JFreeChart and JXLayer。
http://www.jroller.com/dgilbert/entry/jfreechart_and_jxlayer
Applet也可以集成到Web应用程序中,下面这个链接介绍了如何在NetBeans中实现这个功能。http://www.netbeans.org/kb/61/web/applets.html
Applet技术出现于1985年,而Web Start技术出现于2001年。在Java技术领域,目前这两样技术都不算流行,现在重新把它们拿出来介绍,是因为JavaFX的诞生。JavaFX依赖Applet和Web Start,某种程度上可以说,JDK 6 update 10版本的发布,就是为了配合JavaFX的推出,更多JavaFX的介绍,可以参考JavaFX 网站http://www.javafx.com, 中文JavaFX网站(http://developer.sun.com.cn/javafx/index.jsp)。
五。参考
http://java.sun.com/javase/technologies/desktop/javawebstart/index.jsp
http://en.wikipedia.org/wiki/Java_Web_Start
http://java.sun.com/javase/6/webnotes/6u10/plugin2/index.html#EXPERIMENTAL_FUNCTIONALITY
http://java.sun.com/developer/technicalArticles/javase/6u10_applets/index.html
https://jdk6.dev.java.net/plugin2/
http://java.sun.com/developer/technicalArticles/javase/newapplets/
Posted at 04:08下午 二月 24, 2009 by ada in General | 评论[0]
NetBeans中设置@author
卡耐基在《人性的弱点》中说,对大多数人来说,“自己的名字,是所有语言中最甜蜜、最重要的声音”。开发者在自己写的代码中署上自己的名字是惯例。 JavaDoc中的"@author"可以让开发者的姓名出现在代码与文档中,而NetBeans 也提供这一功能,让开发者的姓名自动出现在代码中。
不过,缺省状态下NetBeans是自动从系统文件中提取用户名。这样会带来一些不便,系统的用户名通常是缩写,不能很好地标示作者,另外,如果想在作者信息中加入更多内容,比如邮件,个人网站等等,缺省设置就帮不上忙了。
下面介绍一个小技巧,如何在NetBeans中设置作者信息(@author)。
1。NetBeans中,菜单 tools-->template, 打开 "template manager" 窗口,选择“user.properties”, 点击"Open in Editor"按钮。
2。在“User.properties”窗口中,把“#user=Your Name <your.name at your.org>”修改为开发者的信息,如下图。完成后,保存User.properties文件。
3。在NetBeans中新建Java文件,可以看到设置的开发者信息已经自动出现在代码中。
4。有可能“@author”没有自动出现在代码窗口中,那就需要在“Projects”窗口中,鼠标右键点击项目,选择“Propeties”,打开“Project Properties”窗口,如下图。确认“@author”的检查项目已经选中。
Posted at 04:06下午 二月 24, 2009 by ada in General | 评论[0]
Linux与Solaris
我们推广介绍Solaris时,大家最喜欢问到的问题是“Linux与Solaris的区别?”。这个几乎已经成为标准问题,而Alex每次听到这个问题,我都去想看看这时候他是什么表情,会不会因为重复再重复地回答而疯掉?大家催促他尽快写个他的回答放在网上,以后谁再问这个问题,就让他们自己搜索去。
有时候这个问题会演化:已经有开源的Linux, 为什么还要OpenSolaris呢?
这个问题不涉及到技术,我倒觉得可以说说我的看法:
这大概是为了应和常见的二元现象,很多领域,都是被两个领头者把持,比如可口可乐和百事可乐,耐克和阿迪达丝,浏览器中的IE和Firefox, 芯片中的Intel和AMD. 商业, 技术领域如此,政界也是,全球国家中,两党制更流行些。
在开源的操作系统领域内,OpenSolaris的加入,正好可以造成一个新的二元现象。这对Solaris自己,对Linux都有好处,竞争会促进双方更快提升和发展。而对用户来说,好处更多,他们可以得到更好的产品。
Posted at 09:39下午 七月 21, 2008 by ada in General | 评论[0]
VirtualBox 虚拟化应用 (二)
(二)Windows 宿主机访问OpenSolaris 虚拟机的实现
虚拟机的网络连接方式是NAT时,对于宿主机来说,虚拟机是不可见的。如果希望NAT方式下,宿主机可以访问虚拟机,需要使用“port forwarding”方式。但是对于某应用来说,比如GlassFish, 需要使用多个端口,“port forwarding”需要的配置信息很多。接下来介绍用“Host Interface Networking”方式来实现Windows 宿主机访问OpenSolaris 虚拟机的方法。
[Read More]Posted at 03:19上午 六月 04, 2008 by ada in Solaris | 评论[0]
VirtualBox 虚拟化应用 (一)
这篇文章介绍了使用VirtualBox在Windows上安装和使用OpenSolaris的例子, 包括以下几部分内容:
-
VirtualBox的介绍以及安装
-
在Windows上安装OpenSolaris
-
Windows 宿主机访问OpenSolaris 虚拟机的实现
-
Windows宿主机中复制虚拟机
-
问题及解决
Posted at 03:15上午 六月 04, 2008 by ada in Solaris | 评论[0]
你想得到什么样的纪念品?
希望以后Sun发出的纪念品能更别致实用一些,能被更多的开发者喜欢,那么请告诉我们你们希望得到什么样的纪念礼品?[Read More]
Posted at 05:30下午 二月 14, 2008 by ada in General | 评论[0]
NetBeans Collaboration:MSN, Gtalk, Yahoo的All in One客户端
NetBeans Collaboration更有趣的应用是可以用它把自己所有的IM帐号都集中在一起, 作成一个All in One的客户端. 这篇介绍里只实验了MSN, Gtalk 和Yahoo的帐号. [Read More]
Posted at 01:08上午 一月 17, 2008 by ada in General | 评论[0]