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