天天看點

不管你愛與不愛,Java都在變得更好

不管你愛與不愛,Java都在變得更好

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.​​