Java的表示層,到底該怎麼辦?

Java做老大很久了,而Java的表示層難用也已經很久了。

經過數年的折騰,Java已經證明了自己在服務器端的巨大優勢,“強”而“穩”,高擴展、高安全、高維護。實在是面對複雜應用的架構師之首選。
此外,Java起家時一直所追求的平臺無關,也瓜熟蒂落。有跨平臺需求的各大產商們,紛紛用平臺無關的Swing構造自己的基礎軟件產品。各類智能設備,也都大量應用Java技術。
不論如何,Java確實已經成功地證明了自己。這種虛擬機層面的技術亦將長久地生存發展下去。

然而再偉大的技術也有缺憾,正如偉大的C語言始終難做GUI。而Java最大的遺憾,也是在表示層。

表示層變化太快了,以至於多高深的理論也總是在這裏碰釘子。反倒是缺乏“技術含量”的入門技術不斷地在現實領域獲得成功。VB、PB、Delphi、ASP(包括ASP.NET)、PHP、JavaScript、Flash,正是這些不夠OOP的東西,這些不需要奢談“模式”的東西,總在刺激着理論家的神經。或許這一塊,本就是人民羣衆充分發揮想像力和創造性的領域,正如一切高深的社會經濟理論,在現實世界的發展面前總是那麼蒼白無力。

表示層的工作還是太大了,循規蹈矩的好學生Swing,總是搞不贏WinForm這類時常開點小差的差生,更是遠遠不如他的前輩VB、PB這些小流氓。而高傲的Java Web層,凝聚了各種“模式”的精華,還是難以承受ASP、PHP這類無法無天的混混之衝擊。畢竟在表示層,計劃不如變化快,什麼繼承、封裝、重用,在現實中其實並不重要。因爲很快就地震了,一切都要重蓋了。說實在的,這個領域,只要少出點Bug,多設計不如少設計,因爲後者來得更快,而且更容易找人來做。

這個結論可能很多要引起公憤了。不過別急,大家回頭想一想,以前大家做這行的時候,不是流行說35歲就Game Over了嗎?可堅持到這把歲數的老同志其實現在很值錢。他們在做什麼?在做服務端、在做底層、在做設計。這些高級的活兒,不幹夠年歲,不見多識廣是做不了的。
即使是做表示層的,那是在做研究(如dlee),而非拖拉控件這種事情。

至此,筆者斗膽做一結論:表示層要成功,拼的是易用性。類似的功能條件下,誰簡單誰贏。


Java的表示至今爲何不成功,根本原因在於大師及牛人們沿襲了一貫的高技術路線,一個個拼思想、拼設計、拼架構,最後苦了開發者。
這個事有前史可供借鑑:當初大家最終發現實際工作中基本上用不上EJB,於是Johnson振臂一呼,來了個倒EJB運動,終於甩了一大包袱,讓Java在服務器端來了個大勝利。不是說EJB一無是處,而是大家基本上用不着。

以前ASP、PHP、JSP爭霸的時候,很多同道其實是選了JSP,爲了一點高技術含量的滿足感和高薪水的誘惑。後來才發覺JSP用起來複雜多了,於是很多同道就不斷製造Framework,以圖用規範化解決複雜性,可惜事以願違。現在回過頭來看,Java Framework在數據層的成功(Hibernate),在服務層及全構架的成功(Spring),實際上是突破了所謂的“J2EE規範”,極力簡化的結果。而Web Framework的不成功,則是在重蹈經典J2EE的“規範化”不歸路。

以前史爲鑑,我們所需要的,應當是簡單的表示層。換言之,至少不能比JSP更復雜。現在大家都已經養成了好習慣,數據層和服務層的代碼都放到應在的位置了。說句不中聽的,只要數據層和服務層質量高,表示層亂一點沒關係,重要的是足夠Easy。看着不順眼沒關係,重寫一個就行,費不了多少工夫。當年VB、PB、Delphi就是這麼幹的,他們不過是敗在業務邏輯和表示在糾纏在一起,難改,一動百搖。


有了基本的思路,那該如何做?思路如下:

1、用純JSP調服務層。主要是考慮JSP的廣大羣衆基礎。如果有條件的團隊可以用velocity、freemarker,這樣可以像ASP、PHP那樣改起來查看快。
2、用Swing或swt調服務層導出的遠程接口。像Spring的遠程調用,方便之極,不過是在服務層的xml中寫點東西,copy一下改一改很快。Hessian、Burlap和RMI都很快。缺點在於都要裝JRE,對機器要求高一點,老掉牙的機器有點難跑。此方案適用於對客戶端要求高的企業內部應用。
3、用Ajax,就像dlee這陣子提的Java REST,我是不會啦。感覺還是比較複雜,不太適合人民羣衆。
4、等JavaFX...
5、等Java界下一個即簡單又規範的Web Framework...
6、發動VB、Delphi、PB高手,解決調用Java服務的問題(只是千萬不要用Web Service,又複雜又慢),這其實是一個最瘋狂最厲害的方法。如果真能解決,以VB、Delphi、PB的高用戶羣、超強羣衆基礎、快速而低配置要求,配之以強大穩定的Java服務端,服務端與客戶端都得到充分的利用,必定能打造最強企業應用。而各位老鳥也可專心做高級的服務端,新手樂之於低級的客戶端,各得其所。這事情其實最理想,只是難做:1、各大產商是以新而複雜的技術爲生存基礎的,這種對客戶有利的方案勢必被其打擊和歪曲;2、國內的高人們其實都是唯洋大師馬首是瞻,生怕脫離潮流影響生計。

第6條,有心有志的同道們可與我聯繫,大家一起嘗試一下。
此文在JavaEye和Jdon也發了,希望可以多找到知音,大家一起來解決Java的表示層問題。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章