Java已死?九百萬程序員說不
英文原文:Java is dead? 9 million devs disagree
Java 沒死,事實上它擁有足夠的能量讓你的應用跑起來。那些對 Java 吹毛求疵人頻繁地聚焦在一些小眾問題上,總是和其他技術或者語言做些不公平的對比,這些語言并沒有像 Java 一樣得到廣泛應用及長遠的歷史。
現在的小孩都能學 Java,它在 Web 和企業開發中廣泛被采用,特別是近些年更是有了些讓人驚訝的改善,一些新特性正在籌備中。即使拋開這些最新的特性,Java 仍然很酷,應用的廣泛性、JVM 平臺背后卓越的設計、清晰的語法、擁有豐富的工具和庫文件構成的生態系統。Oracle 說有超過9,000,000 Java 開發者(億萬的應用和設備用戶),所以為什么我會聽到諸如“Java 正在被淘汰中”,2007年開始,Java 就已經淪為“21世紀的 Cobol 語言”的言論?
Java平臺是工程師的夢想
首先就是 Java 平臺的存在,HotSpot JVM 是一項非凡的設計,CLR (公共語言運行庫)有了大量的優化,Java 應用在性能上甚至可以與C相媲美,當然還有其他可選的虛擬機供可用(如:JRockit,Zing),應你的環境有特殊的需求而定。
再者,多種基于 JVM 的語言使得這個平臺更奇妙,如:Groovy,Jython,JavaFX,Scala,當然還不局限于以上流行的語言。Java 現在包含有字節碼指令:invokedynamic 和 java.lang.invoke 包,使得 JVM 構建動態語言更簡單,現在已經有超過 50 中基于 JVM 的語言。其中最有意思的一個是 php.reboot,它的目標是保持 php 的哲學理念,但是移除了其中一些缺陷,而且它同樣能在 Android 中運行。
Java是一門成熟的語言,并不適合“老人”
Java 成為被批評,抱怨,詛咒的靶子,我說這門語言還沒死,恰恰相反當有人抱怨 Java 的時候正是推廣 Java 時機。人們總會做些奇怪的對比,好像仍然以為 Java 還是停留在1.4的版本,用記事本編寫、需要 EJB2 的支持、只能用來寫寫簡單的留言板,然后把這些用來與一個高端框架甚至是 CMS 來對比。
作為 Java程序員, 這種對比對我來說沒有任何意義。更為明智的方法對比 Java 就得理智地選擇競爭對手,看看 Java vs PHP、Python 或者 Ruby,或者用框架 Play 對比 Ruby on Rails,SpringMVC vs Zend Framework,有鑒于此,我覺得 Java 似乎根本就不適合老人。
Java 冗長嗎?當然
人們常說 Java 太啰嗦了,減緩了運行速度。批評者矛頭通常指向 Java 的強類型靜態語言特性,缺乏前沿技術在語言中,然而,我認為他們是經過深思熟慮的,而且這正是 Java 良好的特性。動態語言在啟動一個小項目時開始會覺得很受歡迎,但是可以考慮一下,在時髦框架及合適的工具(如:考慮用 IDE 代替記事本)下創建一個“Hello 留言板”類型的應用,Java 很簡單,只是 10 分鐘的事情,如果你想做個試驗的話,使用 Spring Roo 再準備一個秒表,如果有需要的話。現在就可以開始繁瑣的 CRUD 了。
想象一下,你正為移動運營商搭建一個系統,運行客戶登陸網站,你不得不在后臺調用各種子系統收集大量的數據,Cool 框架通常分解你的程序模塊而不需要匹配任何用戶模型。要更多的了解建議你看看 Joel Spolsky 發表的一篇文章。
Java是一門強類型靜態語言
強類型靜態語言有很多好處,我喜歡它簡單的視覺外觀,我可以粗略看一段代碼就知道是做什么的,它就像是可視化的用英語反饋,語言非常易讀,字母 混合成單詞仍然可讀。其它的一些好處是有強大的 IDE 支持,動態語言在這點一直是弊端,大項目中有強大的 IDE 和工具支持是無價的。
批判者的觀點在 Java 在讀文件、轉換 xml 或迭代集合的時候缺乏表達力,但是你可以總是創建一個方法去處理這些常用的事例,或者是用 FileUtils.readLines (),java 語言上表達力的缺點有很多庫對其支持。在 Java7 中能看到一些優雅的加強型功能,如自動關閉資源、siwtch 語句支持 String、數字類型支持下劃線(強烈建議讀 Coin 項目)。Java8承諾了更多的東西(最有意思的應該是閉包)。Java 是不是在任何方面都是那么的完美無缺呢?當然不是,這就是 Java8、Java9在準備階段的原因。我個人也不喜歡那些不太優雅的核心 API. 是否的確將更多的事情留給平臺而不是語言本身?java 核心包括 API 進階設計跨度長達 20 年,API 的更新會破壞向后兼容性,有些設計太抽象,但有些還不夠抽象,有些太零碎,有些根本不可思議。看看其競爭對手 .NET,核心 API 做的很好,比如統一的通信 API。Java8在 Jigsaw 項目的幫助下,會有所改變。
所以你值得擁有 Java,正確地使用它,它是一門很棒的語言。堪比 Klingon 語言,它將繼續改善并不會很快消失。不應把努力放在取代 Java 上,而是和其他 JVM 語言結合使用,這是最明智的,但是對我的下一個 Pet Clinic 還是堅持使用 Java。
原文:Arnel Pällo 編譯:伯樂在線 – 劉志軍