
TechRepublic 網站最近釋出了一篇文章,讨論了開發者喜愛和讨厭的程式設計語言。結果很有意思,Java 既是第三大最受程式員喜愛的語言,也是第二大最受程式員讨厭的語言。很顯然,作為一門程式設計語言,Java 出現了兩極分化。我就這個問題發了一條推文,有人引用了 C++ 之父 Bjarne Stroustrup 的經典名言作為評論:“世界上隻有兩種語言,一種飽受诟病,一種沒有人用”。我覺得這位使用者借這句話恰如其分地表達了他的觀點。
第二篇文章來自 Packt Publishing 出版公司,這是一份開發調查報告。報告把 Java 放在一個相對負面的位置上。從報告的結果來看,Java 成了開發者最後悔學習的一門程式設計語言。但有必要說明一下,即使 Java 在報告中名列第一位,但隻有不到 5% 的受調者給出了的回報。這 5% 代表什麼意思呢?是指受調總人數的 5%(那麼總共是 226 人)呢,還是指感到後悔的人(總共 102 人),抑或是把 Java 作為主要開發語言的人(總共是 38 人)?不管怎樣,我不認為這是一種可供開發者參考的趨勢。他們感到後悔的大部分原因都是老調重彈,比如“Java 似乎正在被淘汰”、“Java 就是現代程式設計語言的 COBOL”、“Java 代碼又臭又長,太難學了”。
報告作者強調:“Oracle 把重心轉向了企業 Java,并放棄了對 OpenJDK 的支援,導緻 Java 不确定性驟增。盡管 Red Hat 的挺身而出給了 Java 一個未來,但那些長期依賴 Java 的人仍然十分擔心”。
但其實上面這句話說的并不對。Oracle 絕對沒有不再為 Java 提供支援。Oracle 确實改變了 Oracle JDK 的傳遞方式,但仍然可以免費下載下傳使用。一些提供商(比如 Azul)仍然在提供舊版本 JDK 的更新,既有免費的,也有商業付費的。Red Hat 是 OpenJDK 的極力支援者,來自 Red Hat 的 Andrew Haley 現在是 OpenJDK 7、8 和 11 項目的負責人。Oracle 仍然在主導 OpenJDK 目前版本的釋出事宜。
24 歲的 Java 在各大最受歡迎語言調查(比如 TIOBE、RedMonk,等等)中仍然名列前茅。在過去幾年中,我們也看到了其他一些程式設計語言快速崛起,它們都聲稱要取代 Java。最顯著的例子要數 Ruby on Rails、Scala 和 Kotlin 了。
為此,我最近在思考一個問題,那些肩負 Java 平台發展重任的人,比如 Mark Reinhold、Brian Goetz 和 John Rose,他們的處境究竟有多難?在這裡,我要引用 14 世紀詩人 John Lydgate 的一句話:“你可以一直取悅某些人,也可以在某些時候取悅所有人,但你不能一直取悅所有人”。
Java 之父 James Gosling 把 Java 說成是藍領的程式設計語言,意思是說,Java 是幫助開發者完成任務的一個利器。在這方面,Java 無疑是成功的。
難就難在如何演化這個平台。該如何在不讓另一部分人感到不爽的情況下對 Java 做出一些修改呢?修改是為了取悅一部分人,但另一些人可能更喜歡原來的東西。
現在讓我們回過頭來看看“Java 代碼又臭又長,太難學了”這句話。這确實是 Java 代碼飽受诟病的地方,因為 Java 有太多的模闆代碼,太啰嗦了。
在過去二十年中,Java 在這方面做出了很多改變來緩解(如果說還算不上解決的話)這個問題。Java 5 引入的注解極大簡化了企業開發,因為可以使用依賴注入了。我相信現在開發 Web 服務的人沒有不使用注解的。Java 8 引入的 lambda 表達式和 Stream API 讓集合的處理變得更簡潔。Coin 項目也帶來了一些小的幫助,比如多個 catch 和 try-with-resources。
但與 Kotlin 相比,Java 仍顯啰嗦。Kotlin 開發者的優勢在于他們不需要考慮已有代碼的相容性問題,但 Java 開發者卻不可以。
個人而言,我認為 Java 作為一門程式設計語言最強大的地方在于它的可讀性。人們閱讀代碼的時間顯然比寫代碼的時間要長得多,相信大部分開發者都會同意這個觀點。所有的開發者在某些時候都要去維護别人寫的代碼。代碼越容易讀懂,修複 bug 或改進功能就越容易。有一次,我收到了一個修改一個 Perl 應用程式的任務。這個程式并不算大,列印出來隻有 8 頁,但因為 Perl 文法密度太大,我一下子覺得它隻是一門适合用來寫代碼的語言,但寫出來的代碼并不容易讀懂。是以,有時候啰嗦一點也不見得是壞事。
最重要的是,Java 還在不停地演化。在新的釋出周期之下,Java 前進的步伐似乎慢了一些。但我們确實也看到 Java 不斷推出新特性,即使很多都是小改進,卻都讓開發者的生活變得更美好。
向 Java 中添加大的特性需要更長的時間,因為這種事不能掉以輕心。Java 13 中将帶來 switch 表達式在 Java 12 中已經作為一個預覽特性提供。預覽版讓開發者可以體驗一下新特性,并提供回報,以便後續加以改進。
Amber 項目繼續給 Java 文法錦上添花,在未來的版本中,Amber 會有更多的東西被加入到 Java 中。
不管你喜愛還是讨厭 Java,Java 都會在 OpenJDK 大神們的努力呵護下變得更好,成為這個星球上最受歡迎的開發平台。
作者丨Simon Ritter
譯者丨無明
原文連結丨 Love it or Hate it, Java Continues to Evolve - Azul Systems, Inc.