Sun Tech Days 2007 -- Day 1
Sun Tech Days 2007(北京站)已经结束了,趁热打铁,在此把本次会议中我的所见、所闻、所思与所得记录下来。本文是关于我在Sun Tech Days第一天中的见闻思得。(2007.11.10最后更新)
如我的上一篇介绍Sun Tech Days 2007的随笔所提及的,这已是我连续第三年参加Sun科技日了。必须说,每年的体验都都有很大的不同,把这些不同的体验记下来,至少也是一种回忆。我也希望与朋友们分享的我的所见、所闻、所思与所得。
与过去两年我所参加的STD不同,Sun CEO--目前是Jonathan Schwartz,以前是Scott McNealy和Java之父--James Gosling这次都没有来中国。那两次时任Sun CEO的Scott McNealy都有讲话(2005年时是正式致辞;2006年时只作简短讲话),Gosling则都是做主题演讲(Keynote)。虽然他们肯定不是会议的全部,也不一定是会议的关键部分,但我仍然为他们没有出席而感到一点失望。
我想参加过此类活动的朋友一定都能猜到主题演讲的内容 :-) 简言之,主题演讲就是描述了Sun的关键软件技术/产品(Java,Solaris,....)当前的状态,展示了Sun作为创新的领导者为发展这些技术所做的巨大贡献,这些技术在改进人们生活的过程中所发挥的重要作用,并努力使大家相信这些技术在未来拥有非常美好的前景。
按照贯例,在每天上午的议程中都有一个Sun技术演示(Sun Technical Demo)的环节*。Sun的讲师分成两个组,每位讲师用五分钟的时间展示他们各自领域中的一个酷炫应用,然后由我们大家用掌声选出最好的那个组(当然,每个组都很棒*_*)。当天共展示了关于Swing(Joey Shen),JavaFX(Chuk-Munn Lee),AJAX/Web 2.0(Doris Chen)和嵌入式(Angela Caicedo)这四个领域的"小"应用。让我印象深刻的就是Angela的嵌入式应用演示--两个小机器人之间的交互;Joey展示的炫目Swing应用也十分吸引我,他还向大家留了一个悬念(Oh,就是Angela和Joey搭档的小组获得大家最热烈的掌声)。下面将介绍当天我所参加的各个技术专题。
Java SE 6十大特性,探讨Java SE 7以及OpenJDK。
类似于这种"昨天,今天与明天"的主题也是每年都有的。Java SE 6提高了Java桌面应用的性能,并为GUI开发提供了很多的增强型新特性:Desktop API;Splash Screent;支持Vista L&F;Tray Icon;GroupLayout;...。我最近刚开始做Swing/AWT方面的开发,所以对这一块比较关注。classpath通配符是一个很实用的新特性:可以把某个目录下的所示jar文件使用通配符(*)将它们全部加载到classpath环境变量中。Compiler API,让应用程序在运行时能够编译源代码,我还不清楚它的应用场景。Scripting API,目前在JVM上已经可以运行JavaScript(Mozzila 1.2)和JRuby这些脚本语言了。...其实讲师(Chuk-Munn Lee)并没有特别地指明Java SE 6的十大新特性,但实际上很多朋友可能早已知道Java SE 6的十大新特性了。
JDK 7可能的新特性:新的Swing跨平台Look&Fell--Nimbus L&F(Metal L&F太土了?);Consumer JRE(下面有一节专门讲它);Closure(不明白为什么要增加如此"奇怪"的语法);Swing Application Framework(Sun对Swing的支持果然是一如既往);Super Package(我也不能理解为什么需要这种语法);...
让我十分遗憾的是,讲师并没有提到OpenJDK的情况?!
关于该主题的内容还可以参见JavaOne 2007中的相关主题:Java SE Present and Future,The OpenJDK Project Report。
消费版JRE:更小巧,更强劲。
Consumer JRE与Java Kernel的出现主要是基于解决发布或运行Java程序时遇到的几个问题:
[1]不知道目标用户机器上的JRE是什么版本;
[2]Java程序的启动速度慢,特别是当冷启动时;
[3]JRE较大,不方便下载;
[4]安装Java程序的时间可能较长。
Consumer JRE(大约在一个月之前,Consumer JRE已经更名为"Java SE 6 Update N",非常有趣的名字)将会在2008年的早些时候正式发布,它会拥有:
[1]更快的启动服务。一般会认为解释运行字节码会比较慢,但实际上并非如此,因为JVM很早就引入了JIT(Just-In Time)编译器,许多常用字节码已经被编译成了二进制代码。但冷启动时,确实比较慢,主要是因为JRE还未存入内存中;而对于热启动,它的速度还不错,所以目前需要特别地解决冷启动的问题。要解决冷启动的问题可以采用如下方法:启动一个后台进程,周期性的读取文件,并把它们存储到磁盘缓存中,从磁盘缓存中读取文件就相当于是热启动了。尽可能载入较少的jar文件也有利于提高启动速度(见下一条)。
[2]Java Kernel。目前的JRE都比较大,而且核心的rt.jar也很大(JRE 6中的rt.jar就有40M左右)。Java Kernel则非常的小(2M左右),而且高度模块化。rt.jar被分割成许多小的jar文件。默认情况下,Java Kernel只能运行"Hello World"这样的程序,如果运行的程序需要更多的JRE中的jar文件,则会根据需要适时地下载。使用Java Kernel运行SwingSet2这样的程序,在下载了所需的jar文件后其大小也仅有4M左右。
[3]Java Technology Deployment Kit。这个工具集就是用于回答"用户机器是否安装了JRE?安装了何种版本的JRE?"这样的问题。
[4]改进的安装器(指图形用户界面的安装向导)。这个安装程序更方便,界面也更友好。
我个人对Consumer JRE是比较关注的,主要就是由于我目前正从事着Java桌面应用开发。桌面程序要直接运行在用户的操作系统中,这就要求尽最大努力减少对用户的影响(易用,界面友好,节约用户机器的性能,...)。目前才刚接触Applet,就已经感到安装插件是一个十分棘手的问题。...是的,安装Applet浏览器插件应该是很容易的,但不是每个人都这么认为。
关于该主题的内容还可以参见JavaOne 2007中的相关主题:Desktop Java Technology Today,Java SE Present and Future。还可以看看Chet Haase的Blog中的相关内容。
Java脚本编程:JavaFX脚本以及JRuby。
虽然我对JavaScript深恶痛绝(跨平台的梦魇 Orz),对JRuby/Ruby不屑一顾(因为我不会 ^_^),但我对JavaFX还是有几分兴趣的。JavaFX作为Java家族中的新技术,在今年JavaOne上受到了大家的热捧。
本来我对RIA(Rick Internate Application)应用也没什么兴趣的,但近期加入了一个金融门户网站的项目。目前我接手开发一个基于Applet的客户端工具,该项目中的其它部分则可能会使用RIA方面的技术(Flex?JavaFX ??)。不过,做RIA应用,程序员只是其中的一部分罢了,UI设计才是首当其冲。
这个主题的讲师就是前面提到过的演示了Java ME机器人应用的Angela Caicedo。由于我的英文听力不太好,而且本来对JavaFX知之甚少,所以近1个小时下来似乎没收获到什么 :-(
关于该主题的内容还可以参见JavaOne 2007中的相关主题:Desktop Java Technology。
如何有效地在Java平台上进行并发编程。
我对并发/多线程应用十分感兴趣,目前正在翻译Java Toturials中Concurrency一章。但不得不说,目前讨论并发编程还是超出了我的能力。而且讲师Doris Chen使用的幻灯片与今年JavaOne的一个主题"Effective Concurrency for The Java Platform"所使用幻灯片十分相似,所以大家可以参考JavaOne中的那个主题的幻灯片,就不用我废话了。另外,JavaOne中还有一个关于测试并发应用程序的主题"Testing Concurrent Software",也可一并参考。
再推荐一本书,Java Concurrency in Practice,肯定有很多朋友已经知道这本书了。该书在去年刚出版后,就在当年的JavaOne大会中就受到追捧,成为当届JavaOne的书籍销售冠军。我早前就买过一本,但很快就转卖给了另一位同事(因为她很想要),故在STD的现场又买了一本 :D
充满活力的Swing回来了。
正如我早前所说的,Swing是我最喜欢的Java"表现层"。与许多基于无状态的HTTP协议的Web应用相比,毫无疑问,作为纯Java程序的Swing可以更方便,更高效地实现各种炫目的GUI(当然,它们关注于不同的应用场景,实际上没有可比性)。
今年,Joey Shen(去年,前年也是他)为大家带来了一个展示了多种炫目GUI技术的Swing Demo。这个Demo是Sun Swing Team开发的,Oh-oh-oh,Swing核心开发者做的Java GUI果然不同凡响--华丽的界面,动画,透明,重影,半透明拖放,....,一个都不能少。
但实事求是地说,Joey演示的这些先进的GUI特效在我的工作中一时还用不上。不过,我还是对他介绍的在Swing中制作动画效果的框架--Timing Framework产生了兴趣,...另外,我在第二天(注意,是第二天)的下午会议快要结束时,趁着参加动手实验室"Java SE故障诊断大全"的机会向Joey(他主讲那个动手实验室)问了一个我在工作中遇到的使用AWT画线时出现的问题。
在今年JavaOne中关于Swing/Desktop开发的主题有很多,大家可以选择Java Desktop中的你所感兴趣的主题。
GC友好的Java编程
我并没有听这个主题,因为它与并发编程的主题在时间上冲突了(可惜!)。但我可以看今年JavaOne中的一个同名主题Garbage-Collection-Friendly Programming中的幻灯片。该幻灯片介绍了并发编程的一些基本原则。
照片
去一趟肯定要有些留念,但借的相机质量不太好,我用的也不太习惯,所以很多照片质量欠佳(Www,去年也是这样),比较遗憾。我就只帖了几张照片到我的Flickr上,有兴趣的朋友可以去看看。另外,STD中国官方网站已经帖出了不少关于STD北京站的图片(我也把这些图片copy到了我的Flickr中*_*)。
注:根据以前的经验,从大陆地区应该无法直接访问Flickr中的图片(图片都是红x,只能看到文字),所以需要通过代理服务器。使用FireFox的朋友(包括我自己)就很方便了,只要安装FireFox的插件--Acess Flickr!,就可以自由浏览Flickr了^_^ 不过,我刚才用IE测试了一下,似乎现在又可以直接访问Flickr了,但只能访问到较近一段时间内的图片。难道GFW又放过了Flickr?还好,我的图片都是老少咸宜的,身正不怕影子歪嘛。
敬请关注我的下一篇随笔:Sun Tech Days 2007 -- Day2