Java 已死?聽聽這些重量級大咖是怎麼說的 Java 已死?聽聽這些重量級大咖是怎麼說的
Java 已死?聽聽這些重量級大咖是怎麼說的
在 Java 的世界發生了什麼事?事實上,很多。Java 9 在 9 月將會來臨,Jigsaw 終於獲批,而 Java 大咖正在給我們提供關於這一程式語言的未來的有價值的洞察。在這分為 3 部分的訪談系列中,我們闡明瞭 Java 的發展趨勢以及什麼語言才是值得尊敬的對手。
Java 哪都沒去
在其釋出之後的二十年,Java 依然是開發人員的最愛。如果說這門程式語言正在死去
迄今 Java 已經存在很長一段時間,有足夠的時間為其建立優越的編寫、維護和除錯程式碼的工具。例如,各種開發環境像是 Eclipse 或 NetBeans 已經使得編寫 Java 容易許多。它們甚至能夠被用來編寫基於 Java 的新興語言的程式碼。
為什麼我們會一次又一次看到文章宣佈 Java 即將來臨的死亡? 就像 Mark Twain 所說的,Java 之死被誇大其詞了。
Wayne Citrin 博士, JNBrideg 有限責任公司的 CTO 和 聯合創始人
大咖列表
誰在 Twitter 上影響力最大?JAX 團隊翻查了數千個技術賬號並從中找出 20 個 Twitter 大號,這些大號被每個 Java 開發人員的 Twitter 所關注。如果你想聽聽他們對 Java 9 有什麼想說的,他們希望在 Java 10 裡看到什麼, 以及他們怎麼看待 Java 的對手,你是幸運的!
請看這裡的清單。
在這分為 3 部分的訪談系列中,10 位 Java 大咖將評論 Java 的人氣、談論其模組化生態系統,並展示他們對 Java 10 的願望清單。
在這個訪談系列的第 1 部分,我們邀請了 Java 大咖來談論 Node.js 超越 Java 的可能性,以及評論關於斯坦福大學決定以 JavaScript 取代 Java 來教授其
問題一:有些人似乎相信,Node.js 可能在不久的將來有取代 Java 的機會 。Java 真地可能被廢黜嗎?
Markus Eisele( Lightbend 公司 Developer Advocacy 的負責人,Java 擁護者):
JavaScript 革命清晰地表明瞭我們的世界將是多元化和多樣化的。展望未來,我們將不再擁有隻需學習單一語言的特權,而是依賴於在開發應用時平臺和行業標準預設的(語言規範)。
Java 這門語言仍然被廣泛學習和傳授。但某些部分也在快速變遷:集中的基礎設施正在消亡,服務端渲染的全棧的 Java 應用在快速地步其後塵。現在首屈一指的前端語言是 JavaScript。在雲環境和容器領域佔據優勢還有 Go 。在 Java 保持其主導地位再久一會兒的同時,這份清單還將會繼續擴大。
Mario Fusco(在 Red Hat 從事 JBoss 規則引擎 Drools 開發的高階軟體工程師,Java 擁護者):
Node.js 會吸引那麼多人真是超出我的理解。我們正處於多核 CPU 時代,連我的智慧手機都有 8 核,而我們真的想在我們的伺服器上執行一個單執行緒框架嗎?在一個典型的 Node.js 應用運行於 8 核機器上時,經常發生的是,一個核始終是利用率 100% ,而其他核實際上閒置著。
如果開發人員喜歡 Node.js 實現的事件迴圈模式,有許多別的 Java 框架能以更加強壯和穩健的方式提供同樣的模式。我認為一些公司之所以採用 Node.js ,唯一可以理解的原因是,現在有更多的 JavaScript 開發人員,他們通常也更廉價。
十年前,我看到了類似反向的趨勢。那時有許多 Java 程式設計師被要求進行網頁端的開發而他們不喜歡使用(或學習)Javascript。為此,有很少的類似 GWT 可以使用 Java 開發 web 系統的框架。 GWT 沒那麼不堪,但伸縮性不好,無法建立數百萬併發使用者的網站。Node.js 是 GWT 的伺服器端的對標技術,也會存在類似的問題。
我的意見是我們應該總是使用合適的工具來完成手頭的工作。Javascript 對於 Web 開發是可以的(即使不是很理想),但是對於後端,我可以想到很多更好的替代方案。
Marcus Biel(軟體工匠、JCP 成員和 《整潔程式碼之道》 的傳道者):
對我來說,這個比較真的不重要,這是蘋果和梨的比較。 Java 最適合複雜的(多執行緒)業務系統, Node.js 很適合實時 Web 應用程式。
問一個 Java 開發人員,他或她當然將擁護 Java ;問一個 Node.js 開發人員,他們自然會擁護 Node.js 。各有各的領域。
Lukas Eder( jOOQ 背後的公司 Data Geekery GmbH 的創始人及研發部負責人,Java 擁護者):
說這些話的唯一人群就是 Node.js 背後的供應商。關於 Java 的長期未來(下一個 20 年)我們不能過於多說。但如果“不久的將來”意味著 2-3 年,那 Java 覺得是不會被任何人廢黜的。
Java 在 Valhalla、Graal 和 Truffle,以及許多其他專案中還很受歡迎,即將到來的改進也將確保 Java 會跟上形勢。
Trisha Gee( JetBrains 的 DA、倫敦 Java 社群的核心成員, Java 擁護者)
我想我們是在這裡比較桔子和蘋果。 Java 是極好的伺服器端語言,出於很多理由被企業重度使用,包括穩固的向後相容性、跨平臺支援(在作業系統層面)、以及非常龐大的 Java 開發人才池(從初級到極為有經驗的)可供聘請。
Node.js 也被用在企業環境,但不是給相同型別的應用程式,我們更多地在初創公司中看到它,用於快速原型和敏捷應用開發(在各種規模的組織裡)。我個人認為,考慮到可以用技術解決的大量問題,這兩門語言以及許多其他語言和框架都有足夠的應用空間。
Vlad Mihalcea( Hypersistence 的 CEO , 《高效能 Java 持久化》的作者)
我想不會。Node.js 對於建立快速原型是很好,但缺乏像 Java 擁有的經受戰鬥考驗的許多成熟的框架。
Jake Wharton( Square 公司的安卓工程師)
JavaScript 社群一直支援其進攻 Java 真正主導的許多事情:靜態型別、更強大的工具,以及具備廣度和深度的庫的生態系統。我認為這是朝正確方向邁出的一步,但從長遠觀點來看還有很多工作要做,才能在所有的三個領域真正取代 Java 。
Thorsten Heller(綠鳥整合技術公司 CEO , 該公司提供網格智慧平臺 Metercloud )
可能會,也可能不會。我相信在不久的將來 Java 可能會被廢黜或至少受到挑戰,但我不會賭 Node.js 。如果要賭,我會押注在 Kotlin 上。它的簡單性、精益語法、函式式方法 - 僅僅是它的部分特徵 - 將提高它的流行性。好像還可以提高程式碼的整潔度?總的來說,我相信不久的未來將會更加異構:指定任務最合適的程式語言。
對我來說,Java 更多地是一個平臺而不是一門語言。
Baruch Sadogursky( JFrog 的 DA )
Java 對 JavaScript 正如 ham(火腿) 對 hamster(倉鼠)。程式語言有許多,而它們不一定相互競爭。JavaScript 是一門驚人的前端語言和真正的瀏覽器之王,但總的 來說,在伺服器端,JavaScript(尤其是 Node.js )是一個有趣的嘗試,而不會取代一門合適的面向後端的語言,比如 Java 。
Quentin Adam(智慧雲 CEO)
我認為這不會發生。Node.js 和 Java 是用途各異的不同工具。Node.js 及其工具套件正在憑藉強大的構建工具,和一些小型伺服器部件,促使 Web 前端成為一個真正的生態系統。
然而 Java 有一個非常強大的生態系統和龐大的程式碼庫,以 Node.js 完全取代 Java 的可能性渺茫。在某些領域,像大資料(Hadoop 生態系統或 Kafka ),JVM 是平臺質量本身的首選,而 Node.js 在將來絕無可能驅動 Hadoop 。我們將會看到越來越多的專案同時使用 Node.js 和 Java 。Node.js 將經常在前端面向用戶,但它不會處處取代 Java 。
問題二:今年, 斯坦福大學著名的程式設計入門課程 棄 Java 而取 JavaScript。對於 Java 的相關性和流行度,該如何評價?
Markus Eisele:
Java 是企業中的頭號程式語言,它帶來了一個充滿活力的工具、標準和方法學的生態系統。 它不是最簡潔或最漂亮的語言,但它可以擴充套件到大型團隊,讓我們學會了確保體面的質量。前端開發大多已經轉向 JavaScript ,而我認為應用程式的視覺化部分一直是程式設計的切入點。
對我來說,這會是一個自然的過程,卻並不一定要講述一個 Java 的相關性或流行度的故事。更多地是關於它的可用性和學習曲線。
Mario Fusco:
我看了這則新聞感到驚訝,不是因為他們放棄了 Java 而是因為他們選擇了 JavaScript 。從教學的角度來看,Java 也許不是一門好語言,但在這方面 JavaScript 無疑還要糟糕得多,因為它會引誘(有時強求)一種不好的程式碼技巧,而不是促使開發人員以一種清晰的方式去思考。
我認為一所大學不應該選擇一門程式語言,只因為它在業界流行而且被廣泛採用。Alan Perils 曾說過:“一門不影響你的程式設計的思維方式的語言是不值得了解的。” 不幸的是,我認為 Java 和 Javascript 都可以歸於此類。我們學習它們更多是出於商業原因,而不是因為我們喜歡使用它們。在我看來,一門面向物件程式設計的語言如 Smalltalk,一門涵蓋函式式方法的語言如 Haskell ,更不用說像 Clojure 這樣的現代 Lisp 語言,都是更好的選擇。
Marcus Biel:
對我來說,首要問題是:關於此事斯坦福大學是怎麼說的?斯坦福認為作為第一程式語言學習 Java 並不好。這就如他們所說的,如果他們這樣認為,那也沒關係。
Lukas Eder:
絕對不會。當我在 EPFL ( Scala 語言在此被創造)學習電腦科學時,我的程式設計課程包括當時時髦的語言如 Ada、 VSDL、 PL/SQL、 SQL、 Java、 XSLT、Scala、 Prolog、C++。假設我現在才開始學習,我敢肯定 JavaScript 也會成為課程的一部分。
我確實希望,作為一個行業,包括大學教師,需要意識到個別語言在大環境中並不重要。每一門語言都有其存在的空間和理由,而 Java 由於各種各樣的原因一直是最流行的語言。個別大學並不會去改變這一點,他們為什麼要這樣做呢?
Trisha Gee:
同樣,這是使用正確工具進行工作的情況。 JavaScript 按理說是比較容易教給初學者。它輕儀式、樣板程式碼少,而且你可以使用如 REPL(REPL是互動式直譯器環境,R 指 Read,E 指 Evaluate,P 指 Print,L 指 Loop,因為互動式直譯器會讀取輸入內容並對其求值,再返回結果,並重復此過程)這樣的工具快速獲得反饋。雖然 Java 9 將擁有 REPL,但整體而言 Java 有相當多的儀式(設定你的環境、類路徑、一個整合開發環境或編輯器),外加更多的樣板程式碼,所有這些都是學習程式設計之路上的絆腳石。任何教編碼的人都想要輕量級的、易於上手的語言,這是可以理解的。
Java 在斯坦福的更高階的課程中仍然被教授,這表明學習 Java 仍然是相應的和重要的。特別是,有些東西起初看起來礙事,如靜態型別、更嚴格的結構(在類等方面),一旦他們掌握了基本編碼的工作原理,似乎對開發人員來說更有用。
Vlad Mihalcea:
雖然出於教學原因 JavaScript 可能幫到他們,因為你不需要編譯程式碼就能從瀏覽器執行所有的示例,但是我不認為這一舉動會影響 Java 的人氣。
Jake Wharton:
我不認為這會對 Java 造成消極影響而對 JavaScript 帶來正面效果。JavaScript 是一種動態型別和原始型別比 Java 寬容得多的語言,也不要求一個編譯步驟就可執行。程式設計入門應該關注於基本面,如批判性思考和問題解決技巧,而為此你並不需要 Java 所具備的益處。
Thorsten Heller:
起步階段採用 JavaScript 也許容易些,所以我認為這是斯坦福放棄 Java 的動機。讓人們更快速地起步,迅速地給他們一些成功的信心。然而,Java 作為不同程式語言的平臺(比如 Java 本身、 Kotlin、 Scala 等等),在相關性和人氣上將不會落後。 Java 平臺是現在的企業平臺,並且也將是未來的企業平臺。
Baruch Sadogursky:
大學在採用教學程式語言上通常落後於行業趨勢數年。在斯坦福,Java 被採用於 2002 年,那是在 Java 被引入 5 年之後,在 Java 已經變得極度流行 2-3 年之後。所以,斯坦福只是趕上 JavaScript 在年輕開發人員中的流行趨勢,正如我們已經好幾年在 StackOverflow 和 GitHub 統計調查中看到的那樣。
Quentin Adam:
這更多地是反映了 JavaScript 的人氣。對於初學者來說, JavaScript 會是簡單快速獲得UI(User Interface,使用者介面)反饋的好選擇。 如有必要,人們接下來會去學習 Java 。