【Java二十週年】我的JAVA小時代

我是一名80後碼農,而且生在80後的尾巴。在我這個年齡說20年,是相當沒有底氣的一種狀態。假如我活了100歲,那麼我來說20年,就像抽一根香菸般輕鬆。即便如此,對於Java,80後是相當適逢其會的一代人。

 

混亂之治:Java是一個很好玩的語言,能放進書包

對80後而言,Win神是不可避免的。記得最開始接觸Win神就是因爲Microsoft Word。中學的計算機老師以傳播它爲生,而教學大綱認真地把Word寫進了必考內容,因此造成的後果是,很多人對於電腦的想象力,大概就止於這貨。真正難以避免的,是Win神對於年輕人探知未知世界的一種冷漠和貴氣。

對於成長中的少年,樂趣永遠是第一位的,於是就註定了要和遊戲機結緣,也就註定要認識Java這個單詞。在西西果和聖鬥士版畫橫行的年代,Windows不能帶上街,Java卻可以塞進書包。即使再喜歡星際爭霸,這也是一個很好的抗拒理由。

 

石器時代:Java是一個非常重的語言,討厭XML

經過高中的奮戰,進了不那麼夢寐以求的大學。我依然雄心勃勃地要“學會編程”。那時候Java1.6很火,更火的各大編程論壇對於JSP的討論。總是有人實現了一個功能,然後急切地發表到論壇中。我們做的事情就是把這些代碼搬運下來,運行一遍,開心半天。你說編程?那時覺得就是IDE和度娘之間的事。

當時炒得最火的一個概念是SSH框架。有人會說,不會SSH框架你就會失去Java的就業資格。戲劇性的是,直到今天,我依然沒有掌握SSH框架。終於,在那一天準備學SSH框架的時候,百度到了ssh的另一個意思(S-SHell),自此,開始與Linux結緣。

當一個編程愛好者遇上Linux,是一種命中註定。在把Linux的幾個發行版重裝了數十次以後,宣佈Java實際上存在的一個問題是:服務應封裝,框架是惡魔。它很重,不如C,只比C++好;對於Web的工作更傾向於PHP,因爲它的語法和Shell很像,而Shell腳本是Linux用戶的第三隻手。專心於Linux代表一種分道揚鑣:對微軟說再見、對JSP說再見。

 

黃金時代:Java是一個OOP編程語言,還相當純

2011年左右,安卓的概念在圈內已經很火了。當時已經適應了一年左右的C#,剛好面臨擇業問題,果斷轉了APK。有人會告訴你,C#有點像C++。其實C#從設計之初就旨在替代Java。

2011再用Java,有了比較紮實的面向對象編程的基礎。至少類,對象,接口,繼承,可訪問性這些基本概念能用起來了。那時候意識到編程的概念很廣,對於應用程序的目標部署、分析規劃和調試封裝都要有一定的理解。這些理解是在實踐中言傳身教,這種默許的流程論壇給不了,書籍給不了,因爲文字本身能承載的東西有限。不僅需要一個徹底理解了編程的人做老師,而且還需要不斷地獨立完成許多應用程序並總結。

設計模式是優秀的實踐。對於這類同行意見,不應該存在“吸收還是不吸收”的問題,只能允許“如何吸收”的問題。

在對“編程是在做什麼”有了一定的認識以後,重新啓用了Java。因此用起來有一種恰如其分的感覺。同時發現有一些對Java代碼的處理違背了一些比較好的原則。比如說書籍上的HelloWorld示例,它在Main方法所在的類文件引入了java.io。對這樣的“可能性污染”的細節也有了點追求。

即便是C也有CRT。Java比C#古董,然而古董並不代表功能缺失,相反,總是能以恰當的方式去實現。Java更好的是保留了用基本的OOP概念組裝複雜邏輯的自由,而不是不斷地給一些五彩斑斕的語法糖。

在語法糖和好封裝之間,傾向於好封裝。Java是一種魔法,有效地克服了C++的繁雜,把複雜問題有條不紊地降解、映射到OOP的基本概念。

 

白銀時代:Java是一個爲碎片而生的語言,短小精悍

2011-2014是APK爆炸式產生的年代。當然很少有人會告訴你的是,這同時也是JSP業務爆炸式增長的年代。VM或許比原生可靠,包括JVM。最關鍵的是VM維持長期可靠性所需要的成本比原生低。經歷了風風雨雨之後,Java終於成了資本主義的代言人。

這一階段,Java嚴重依賴xml的問題逐漸暴露出來。Ant不再勝任項目管理,海量的Java類需要簽入、簽出。當需要依靠一種語言來勝任整個業務的時候,僅僅依靠Java也有點力不從心。當然你可以高高興興地純手工項目運維,這是一種選擇,還有自動化運維的選擇。

Java以難得的語言單一性維持着一朵雲帝國。在這朵雲中,全部是小水珠一樣的Java類。

 

玄鐵時代:Java不是一個人性化的編程語言,WTF

前期對於應用構建的理解是,應用構建是一個機械的過程。當UX成爲一個分工出現後,對稱地,人們開始考慮編程的人性化問題。

曾經的文學編程不僅屬於文藝青,而且只屬於文藝青當中的技術狂。隨着越來越多可定製的選擇出現,Java不人性化的一面被揭露了出來。

首先是沒有一個完美的IDE(私以爲最好的Java IDE是slickedit,,,)。Eclipse界面的醜陋性和偶爾在協作上出現的龜速,對於人性化編程是地獄。然後Eclipse快捷鍵是混亂的,最起碼不如Vim或者Emacs這樣有規律,前者的語法着色和字體渲染很醜。

真正的原因在於Java語言本身。語法糖是人性化編程大力吹捧的東西,而Java缺乏銀彈。好封裝比語法糖重要的觀點需要修正:從來沒有好封裝,應該多用語法糖。

 

後Java時代:Java並不唯一,圈子只是亞文化,善建重行

在編程語言聖戰中,力挺Java的人在改變。不僅僅是他們有可能不再力挺Java,更重要的原因是他們在變老。世界既是年輕人的,也是老年人的,歸根結底是現在的年輕人的。一門編程語言的價值,更多地依賴於產業鏈來得到體現。

現在來討論SSH框架,就像討論STL。它重要嗎?它曾經很重要,它曾經見證了一些人的神聖,和另一些人的冒失。它重要嗎?它或許不再那麼重要,重要而非必要

很顯然,面向money編程(Money-Oriented Programming)更爲世故,也更爲明智。可能會因爲換一份工作的原因,而換一門編程語言。自己應該有一個喜歡的語言,力挺自己的項目/fork。更重要的是以應用爲單位攢齊構建技術,而不是抱着一個詞彙,亂射批評之箭。

Java即將經受的一個大沖擊或許不會是Ruby,而是來自終於開源了的微軟。即便微軟的開源還是那麼扣扣索索。

 

總結

或許從來就不是個技術問題,只是個單一的圈子問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章