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