Sun Tech Days 2007 -- Day 2
Sun Tech Days 2007(北京站)已經結束了,趁熱打鐵,在此把本次會議中我的所見、所聞、所思與所得記錄下來。本文是關于我在Sun Tech Days第二天中的相關見聞思得以及總結。(2007.11.10最后更新)
第二天的流程與第一天的基本相同,只是在上午多了一個贏取Java茄克的活動。走上舞臺,以自己的才藝(編程不算才藝 :D)表演打動臺下的觀眾,誰得到的掌聲最熱烈,誰就能得到那兩件(分成了兩個組,每個組有一件)茄克。這個表演算是當天上午最有趣的活動了。十分佩服那些勇于走上臺的朋友,嘿嘿,就算Jonathan請我上臺,我也"懶"得去(Oh, oh, oh ... come on, please show yourself!)。
關于當天的Sun技術演示就不描述了,想說說當天的主題演講,是由Oracle Fusion Middleware的一位副總裁做的,題目是"SCA/SOA Service Component Architecture"。哦哦哦,這個題目真夠高深的,我可不想對它品頭論足,只想提一下JDeveloper。相信很多朋友都知道甚至用過JDeveloper,我早前也下載過JDeveloper10,但并沒有真正地使用過,主要是由于當時自己的機器只有512M內存,運行JDeveloper有些勉強。每年的STD,Oracle都會有相關主題展示使用JDeveloper開發Web/JSF應用。從Oracle的演示來看,使用JDeveloper+ADF(Application Development Framework,Oracle的Java EE開發框架)進行Web開發確實不錯。依稀記得在2005年的JavaPolis,比利時Java用戶會議(規模很大,并不僅限于比利時),大會中有一個RAD(Rapid Application Development)編程比賽,結果排在前三名的團隊竟然全部都是使用JDeveloper。看來JDeveloper在RAD方面確有自己的獨到之處。但必須注意的是,使用JDeveloper是完全免費的,但使用ADF需要支付費用。這可能也影響到了JDeveloper的普及,畢竟免費的工具/框架足夠多了。至于Fusion,我應該是第一次聽到它,有興趣的朋友可以去看看。相比較第一天而言,第二天中我所關注的主題較少,下面將介紹當天我所參加的各個技術專題。
Java DB:多個層次的數據庫。
Java DB是我最為關注的主題之一,今年仍然是由Sun的數據庫產品經理Manyi Lu主講。相信很多人都已經認識了Java DB,可能更多的人在更早的時候就知道了Apache Derby,而又可能有更更多的人在更更早的時候就知曉了Cloudscape。那么現在肯定也已經有不少朋友知道Java DB,Apache Derby和Cloudscape就是同一個數據庫。實際上,Sun和IBM都各自出一部分開發員一同在Apache社區中進行Java DB/Apache Derby/Cloudspace的開發。而Sun/IBM又會為它們的產品Java DB/Cloudscape提供商業的技術服務。
作為一款關系型數據庫,對于已經習慣于RDBMS的開發者而言,使用起來肯定不是難事(當然,凡事想做好,也不是易事)。完備的SQL引擎--視圖,存儲過程(Java存儲過程),函數,觸發器,外鍵約束;ACID性;支持標準的SQL;...這些基本的RDBMS特性似乎都不需要特別地提及。我想大家最關心的肯定是它的性能(是的,我們都關心數據庫的性能,更何況它是用Java寫的#_#)。Manyi每次都特別地強調,與同等層次的數據庫(MySQL,PostgreSQL)相比,Java DB的性能毫不遜色,在某些情況下甚至更高。一般地只能認為Java DB,MySQL和PostgreSQL各有所長。Java DB長于磁盤I/O;MySQL優在單表查詢;PostgreSQL擅長多表查詢(用它作數據分析比較好)。另外,Manyi還介紹了一些提高Java DB性能簡便方法。這些方法確實既簡單又實用,任何人都可以掌握它們。這些小技巧以及Manyi想但沒時間為大家演示的例子,大家都可以在Java One 2007的主題" Java DB Performance"和"Enabling Offline Web Applications with Java DB"中找到出處。
不得不說,今年的Java DB Session新意不多,當然這只是針對那些聽過去年的這個Session的朋友而言。不過更正了我記憶錯誤的一個數據:聽了去年的Java DB,我一直以為Sun內部測試時使用的數據量已經達到了300T;但今年再看,那個數據量應該是300G,目前已經達到了700G,他們的目標是1T。失之毫厘,謬以千里。不過,去年是聽的,幻燈片中沒有寫,而T與G的讀音相近,所以弄錯了。而今年是在幻燈片中寫著的,才得以糾正這個錯誤。
動手實驗室:Java SE 故障診斷工具大全。
要動手,才能把知識學牢固。每屆的JavaOne和STD中都有不少的動手實驗室,這對大家的幫助肯定很大。在2005年的STD中,我參加了一個使用NetBeans的Matisse構建Swing GUI的動手實驗室。雖然在那之前,以及在那兒之后的很長一段時間內,我都沒有經常地使用NetBeans。但一直認為Matisse構建GUI確實很方便,將困難的部局管理器參數的設置幾乎完全可視化。不說Matisse了,還是談談JDK 6中帶的一些工具吧。這個動手實驗室介紹了jconsole,jinfo,jmap,jhat,jstat,jps,jstack,...,這些工具看起來雖小,但功能卻很實用。用它們可以查看當前系統中的Java進程,查找對象,分析內存泄漏,找到可能的線程缺陷(如死鎖),...雖然分析應用程序的工具很多,如NetBeans的Profiler也可以做相同的工作,而且能夠做得更多更好,但有時候手邊一時沒有那些大玩意兒,或者只能使用命令行界面,那么這些小玩意兒就能派上大用場了。
關于這個動手實驗室,大家還可以參見JavaOne 2007中的一個動手實驗室"Monitoring and Troubleshooting using JMX and JConsole Lab"。
通過這個動手實驗室,我的收獲確實不少。這時也想到,要把一件事情做好需要做很多的工作,也就需要花很多的時間。在開發的過程可能需要做單元測試、靜態分析、代碼檢查、性能測試與優化、...,但在實際的工作中恐怕沒有那么多的時間與精力去做這么多的事情,而且這里的每件事情都需要細心與耐心。這樣到了項目的結束時,我想很多人心中都會有很多遺憾。為什么我們不認認真真地做完一件事情呢?至少讓自己少遺憾一次吧。
開放的Sun SPOTs,Ericsson技術專題,In-Time Java。
這是我當天聽的另外三個Session。說實話,我對它們都沒什么興趣,也沒認真聽,所以就放在一起混說吧。前兩個主題都是關于Java ME的。正如前面我所說的,Java ME不是我關心的領域,但看著講師們在那兒玩弄著各種器件(機器人,掌中設備,...),像變魔術似,也不禁有些心動。純Java似乎虛了些,Java+粗笨的服務器也不好玩,Java+手機之類的器件才有趣嘛。對Java ME有興趣的朋友可以參考Java One中關于ME的Session。
再談談In-Time Java,No,no,no,我可不懂什么In-Time Java,但我知道講師提到的Mars Pathfinder(火星探路者)飛行器。著名的JPL(美國噴氣動力推進實驗室,誕生過多位諾貝爾獎獲得者)的著名的火星探路者當然是飛到了火星上,還在火星上工作了很長的時間。但這與Java有什么關系嗎?當然有關系了,而且關系大著呢。這個飛行器的軟件系統就是用Java寫的!Oh,a cup of Java, cheers!哈哈,Java在火星上都能運行良好,更何況在地球上呢。Mars Pathfinder是Java發展歷程中的一件大事,我想每位Java人都應該知道它。
隨便提一句,我本人也"有幸"與JPL"沾"上點兒關系。在猴年馬月的寅時卯分,我這個超級無敵菜鳥級兼職系統管理員手下的兩臺公網服務器不知被哪位貪吃的黑客相中,成為他/她/它盤中的"肉雞",然后被利用去攻擊JPL的服務器,還因此收到了FBI的警告信!吾在中國,豈能受你山姆大叔的恐嚇!!!但從中美兩國人民友誼的大局出發,我還是請來了一位高手,問題很快就解決了。現今吾已經專責于Java程序開發,恐日后再難遇到類似事件了 @_@
小結
上周四、周五開完會之后,確實有些累,每天奔波于南五環外與北四環之間,算是體會到了公司里很多同仁們每天都要遭受的煎熬(本人的住所與公司離得很近)。不過,心情很愉悅。趁著這股興奮勁兒,利用上周末的兩天,以及最近三天的晚上(每天都是凌晨1點左右才睡覺)完成了這兩篇關于STD的隨筆,相信看到本篇隨筆的朋友已經看過我的上一篇隨筆了。
今年參會人數(約1500人)比去年多,為此會務組特意安排了兩個主會場。熟話說,人上一百,形形色色。參加STD的朋友們各自的"特性"肯定不盡相同,甚至相差很大。但我想說,只要大家懷著學習的心態就都會認為在STD中定有所收獲。不論,你的Java技術水平高或低,喜歡/從事Java Web或桌面或嵌入式應用開發,我想大家都會各有所需,各有所得。毫無疑問,STD的講師們(基本上都是Sun的Technology Evangelist)不可能在如此短的時間內把一個主題完全講清楚。比如Concurrency,這就是一個十分復雜的主題,恐怕與會的朋友們中的大多數都不能清晰地描述它(反正我是不太懂,但我正在研究并發編程)。因此,就算講師是Brian Goetz/Doug Lea/Joshua Bloch,也不可能講得很深。但我們不能因此而說,參加此類技術活動還不如自己在家里看書。記得在上小學時,教師就告誡過我們:你聽老師講,比你自己看書效率要高很多。
但同樣要說,如果只是聽別人講,也是遠遠不夠的。STD不是技術培訓班,這本來就是大家的一個交流與溝通的平臺。與會者和講師之間,與會者和與會者之間都應該有交流和互動。很慚愧,我在這一點上做的很不好。不過,我會改進的。實際上我已經有改進了,這回我就多次"舉手",只是運氣不好,講師沒有點到我(當然,這些也只是小的進步罷了)。
說到交流,就不能不說到英語。相信這是很多技術朋友們的一塊心病,me too!雖然自己平時看英文技術文章比較多,也翻譯過若干篇文章,但聽/說仍然是一大難題。不過,長期的努力還是會有一些進步的。記得今年4月26日在北京第一次參加db4o的用戶會議時,db4o的CEO Christof很熱情地與每一位參會者進行一對一的交談。可惜我的英語聽/說都很差,結果基本上都是Christof在說,而我只說了不到十句話,并且我也聽不懂他所說的大部分內容(How shame I am!!!)。不過,到了9月30日去武漢第二次參加db4o用戶會議時,我就能和Christof聊上一會兒了。當然,這種進步并不算大,但一次小小的進步就是一次大大的鼓勵。
最后祝我自己每天都有新的進步,每年都有大的進步!
最最后祝大家都有大大地進步!!!
同是Java愛好者,相逢何必曾相識! -- 江莎
a cup of Java, cheers!-- Sha Jiang
jiangshachina