为什么 Java 在 25 年之后依旧如此年轻:一个架构师的看法
導讀:下個月就要過26歲生日的Java,依然與開發者保持著緊密的聯系;現在,全球開發者社區中仍有 69% 的人使用 Java 編寫代碼。
Oracle 最近發布了 Java 15,其中包含了大量的特性,比如密閉類,隱藏類,Edward-Curve 數字簽名算法(EdDSA),文本塊等等。這使得 Java 15 成為一門 25 歲的“年輕”編程語言,而不是一門 25 歲的“年邁”編程語言。
作者:Dr.Magesh Kasthuri
譯者:keepmovingljzy
來源:掘金開發者社區(ID:juejin_im)
01 Java 的歷史和演變
在 1990 年代初期,有數十種非常穩定的編程語言,像 FORTRAN, COBOL, Pascal, C++, and Visual Basic,許多平臺像 Windows, Mac, Unix, Linux 和移動端平臺需要一種在程序開發和架構設計中統一的方法。
James Gosling 和他的朋友在他的辦公室附近的一顆橡樹(Oak)下討論了這些方面的問題,他們覺得應該開發一種新的編程語言來解決這些差異。在開發一種名為 Oak 的新語言時,他們在基礎方面非常挑剔,這個語言當時被命名為 Green(因為這個團隊名字叫 Green),后來又被命名為 Java (基于他們最喜歡印尼咖啡叫做 Java 咖啡)。
James Gosling 在 1995 年引入了 Java,在那期間還有其他的語言 C,C++,VC++,Visual Basic, Python 都有自己的市場和開發人員,部署。Java 提出了 WORA(一次編寫,到處運行)的概念, 簡單性,面向對象編程,并消除了 C++ 的所有痛點。最重要的是帶有 Applet 支持的 Web 編程以及 Enrich UI 設計(抽象窗口工具包)。
由于其簡單性,它吸引了更多的開發人員,并在 1998-2001 年間成為所有開發人員在國際公司(美國,英國)工作的“通行證”。但是同時在 2001 期間 Dotcom 減少了大量工作崗位,為 Java 增加新的開發人員。
然而,在后面的階段,在 RMI 之上使用 JSP、Servlet 和中間層體系架構 EJB,在 Web 編程中引入更多的特性,會給 JAVA 的企業應用空間帶來更多的思考。為了進入移動應用領域,Java 還引入了移動編程,從而引入了J2ME。由此,Java 提出了 J2SE,J2ME 和 J2EE。
但是他們都使用 CORE-JAVA 作為基礎語言。Java 也和 IBM 合作開發了 Java Sound Library;Java Media Framework 與 Java 運行時結合在一起,未來通過 IBM 使用 Voice 進行語音合成對于媒體和教育領域的人們來說是另一個了不起的里程碑。
隨著時間的推移,Java 增加了開發人員的數量,同時引入了 JUG。Java Bug 追蹤和 Bug 報告都做的很好。
由于其簡單而強大,更多的部署,隨后幾年的增長是顯著的,并且將市場上的 C++, VC++, Visual Basic 淘汰了,在開發者社區中領先了 5-6 年,它甚至將 Python 語言擱置一旁,并帶了了諸如 JavaScript Web 編程(在 CSS+HTML 之上的動態支持)之類的功能。
Java 具有大量的變種功能,并且可以與新引入的 GO,RUBY,SCALA 等競爭,并且也能占領自己的市場。
02 Java 基石
Green 團隊在 Java 編程語言的初始化概念過程中規劃的基本面使得 Java 編程語言的基本模塊是:
構建一種簡單的,面向對象的語言,這對于 C++ 程序員來說很容易。
平臺無關并且架構無關。
高性能與許多內存特性以及通過命令行參數進行性能調優。
多線程,動態,解釋執行。
安全性和強大的功能。
▲圖:Java 的歷史和發展時間軸
https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a8d45a3385db48cb85a9c964d087bb43~tplv-k3u1fbpfcp-watermark.image
有了這些正確且強大的基本塊,Java 在采用現代編程語言中的新變化時,比如 Lambda 表達式,Switch 表達式和密閉類等仍然沒有做任何妥協。因此許多新的編程框架,包括 Hadoop 和許多大數據框架,云功能將 Java 用作原生工具。這就是為什么在 25 年后,Java 仍然在與 Scala,Go 和 Python 等新時代的編程語言斗爭。
03 從 Sun 到 Oracle 公司的轉型
Sun 公司已被 Oracle 收購,因此他們從 2010 年開始接管 Java。Oracle 已經將 Java 的版本控制從 1-2 年提高到 6 個月一次。這導致了巨大的變化和新功能的增加。Java 8 是吸引開發者并重新占領市場份額的非凡版本之一。即使 Oracle 公司引入了 Java 14,對于所有開發人員來說,仍舊使用著更加穩定的 J2SE 1.8 版本來維持他們的部署。
▲圖:Java 框架的熱圖
https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a8d45a3385db48cb85a9c964d087bb43~tplv-k3u1fbpfcp-watermark.image
在 Oracle 接管 Java 之后,人們開始考慮開源的思想過程,并從太陽公司的 J2SE(OpenJDK)和 Oracle 公司的 J2EE JAKARTA Eclipse community foundation 項目的名義開始支持 J2EE 開放。
Java 已在所有領域廣泛使用,無論是制造業,零售業,銀行業還是電信業,Java 語言都是必不可少的,每個開發人員都應了解 Java。因此,它在全球范圍內的行業中創造了更多的機會。在 2006-2013 年期間,Oracle 公司遇到了困難。
但是,在 Oracle 接管Java之后,這種速度或開發/部署已被徹底消除。Sun Microsystems 召開了Java ONE 會議,每次發布都會進行全球性的技術討論,有關 Java 的整個新生事物(新功能,未來的 JSR)將與更多的技術受眾進行討論和辯論。
正如我們所討論的,Java 在微控制器和微空間項目中也有一席之地。Java 帶來的重點和轉變之一是 Java 嵌入式系統特性,該特性處理使用網絡遠程管理裝置和設備。我覺得這是最近幾天引入物聯網(IoT)的基礎,但早在 2006-2010 年的時候,Java就已經考慮過了。
Oracle 帶來的第一個重大變化是以兩種形式發布 Java:
Java 的開發平臺稱為 OpenJDK。
企業使用的商業平臺稱為 Oracle Java。
04 基于 Java 平臺的框架
作為 Java 的簡介,您可以自由地在世界上看到更多語言,例如 GO,Python,Ruby,PERL 等,以及它們的市場空間。Java 已用于客戶端層或兩層應用程序(Applet,JavaScript),服務器層(JSP,Servlet),中間層(EJB)和 N層(EMAIL,JNDI,JDBC 等)。
它還可以幫助 Sun 公司和 Oracle 在 Java 增長期間增加他們的開發人員和貢獻者。Java 已在 Spring,Hibernate 等第三方框架中大量使用,并啟用了跨數據庫和動態/運行時依賴項注入功能。
除此之外,隨著下一代編程語言的轉變,單體世界也轉變為微服務世界,為商業和市場帶來更多的穩定性、可伸縮性和敏捷性。Java 在所有基于 SpringBoot 的微服務容器中都得到了使用,并再次獲得了一組頂級程序員、經過驗證的部署,等等。
我忘了提到另一個特性,即所謂的多語言支持,其中 Java 支持 UNICODE 以支持跨語言(國際)支持。Java 在大數據、aim 領域的應用非常廣泛,有更多的用例、解決方案和部署。Java 也將其轉變指向基于云的平臺部署,因此,通過滿足熱門市場需求,也使得更多的開發人員能夠在 Java 中貢獻和工作。
Java 被廣泛應用和集成到各個領域、技術、工具集,提高了 Java 的利用率,從空間、衛星研究到制造、教育、銀行、金融、移動、云等。Java 已經成功的與以下第三方工具和技術集成。Java 對 AI、ML、Cloud 等進行了更廣泛的集成,在性能上得到了穩定、持續的提升。
25 年來,Java 一直被 Python、C++、Scala、GO、Erlang 等各種語言所忽視。盡管如此,Java仍然是第一名,它擁有更多的社區成員和穩定的部署以及大量的用例。
Java 與其他第三方框架的集成,從 Hibernate 到 Struts,直到現在,SpringBoot 微服務框架也被全球采用和部署。與響應式編程語言相比,響應式 Java 變得更加流行,并提供了更多的選項。
這些集成將 Java 帶到了編程領域的下一個層次,性能和穩定性是 Java 成功特性的關鍵部分。Oracle 公司也在他們的版本中宣布了很多新的變化;不再是每兩年發布一次 Java,而是每 6 個月發布一次。
此外,還添加了一個新網站來查看即將到來的項目或到目前為止完成的任務的特性。伴隨著 25 年 Java 歷程的成功里程碑,還有一些重要的里程碑,比如 JDK8 獲得了巨大的部署量等等。就這個特性而言,開發人員可能希望 JVM 能有更快的速度和性能改進,以及容錯能力,以處理大量的并發用例。
05 Java 平臺最近面臨的困境
當 Sun 擁有 Java 時,還有其他 Java 運行時環境,Java 中的增強已經完成,特別是 IBM 引入了 IBM Java(它也有一些有趣的特性)。
突然之間,Sun 公司公司對微軟提起訴訟,稱微軟壟斷 IE 瀏覽器,并使用 JRE 來反對 Sun 公司的許可要求。Sun 已經贏得了與微軟的官司,最近 Oracle 也推出了谷歌套件,在他們的移動 android 平臺上使用Java。
06 快速查看最新的 Java 15 版本
Oracle Java 版本基于 JDK 企業提案(JEP)和 Java 規范請求(JSR),而 EdDSA 是 JEP 339 的一種實現。它是采用約 126 位加密算法的獨立于平臺的加密簽名。這可以用于具有更高安全性的數據傳輸處理,以傳輸加密的數據。Java 15 中引入的密閉類是 JEP 360 的實現,它限制了哪些類可以擴展或實現密閉類。例如:
public?abstract?sealed?class?Shape??????permits?Circle,?Rectangle,?Square?{...}使 Shape 成為密閉類,并且僅允許“permits”類實現/擴展。這樣可以安全地訪問類層次結構,并控制接口的可重用性。隱藏類基于 JEP 371 的實現,它通過允許在運行時使用反射 API 生成類來限制類的使用,并使該類對外部環境不可發現。因此,無法通過動態代理生成隱藏類,并且可以安全地訪問它們。
ZGC 或 Z 垃圾收集器是基于 JEP 377 的。在 Java 1.8 的早期版本中,G1 GC 是自我管理垃圾收集的突破,并極大地提高了性能。后來在 Java 11中,ZGC 引入了各種性能改進特性,現在在 Java 15 中,它得到了進一步的改進,如取消提交未使用的內存、多線程堆、并發的類卸載等等。
JEP 378 引入的文本塊特性可以創建以自動化轉義序列格式存儲的多行字符串字面量,并以一種可預測的方式格式化字符串,同時改進了字符串字面量的內存使用情況。這樣可以有效地在 Java 代碼中將 XML,JSON 和 HTML 代碼段作為字符串字面量進行存儲。
外部內存訪問 API 是一個 JEP 383 實現,它允許程序有效地訪問已分配的 Java堆之外的外部內存。它最初是作為一個預覽版本在Java 14中引入的,現在改進的版本作為 Java 15 的一部分發布了。這個 API 允許通過添加一段像MemorySegment.allocateNative(100)這樣的代碼來快速分配本機內存段。
推薦閱讀????
1
Java核心技術(原書第11版)
作者:凱·S.霍斯特曼
推薦語:《Java核心技術》,獲Jolt大獎圖書,第11版針對Java SE 9、10、11全面更新,補充了Java新版本的新特性,用更清晰明了的示例加以解釋。卷I:主要介紹Java語言的基礎知識的專業級詳解;卷II:主要介紹軟件開發需要了解的高級主題。完整講解Java開發者學習路線。本書適合全體初-中級Java編程人員閱讀。
2
Effective Java中文版(原書第3版)
作者:約書亞·布洛克(Joshua Bloch)
推薦語:“我很希望我10年前就能擁有這本書。有人可能認為我不需要任何Java方面的書籍,但是我需要這本書。”
——Java之父James Gosling
你是否正在尋找一本能夠更加深入地了解Java編程語言的書,以便編寫出更清晰、更正確、更健壯且更易于重用的代碼?本書再適合不過了!這是一本分享經驗并指引你少走彎路的經典著作,針對如何編寫高效、設計優良的程序提出了最實用、最權威的指導方針,通過90條經驗法則,探索新的設計模式和語言習慣用法,幫你更加有效地使用Java編程語言及其基本類庫。適合已經掌握Java核心技術的程序員,想更加深入地了解Java編程語言的開發者閱讀。
3
Java編程思想(第4版)
作者:Bruce Eckel
推薦語:Java學習必讀經典、殿堂級著作!《Java編程思想》贏得了全球程序員的廣泛贊譽,即使是晦澀的概念,在BruceEckel的文字親和力和小而直接的編程示例面前也會化解于無形。從Java的基礎語法到高級特性(深入的面向對象概念、多線程、自動項目構建、單元測試和調試等),本書都能逐步指導你輕松掌握。
4
Java并發編程實戰
作者:Brian Goetz 等
推薦語:Java并發編程里程碑著作!10年暢銷100000+冊。從并發編程的基本理論入手,逐步介紹了在設計Java并發程序時各種重要的設計原則、設計模式以及思維模式,使得開發人員能夠更快地領悟Java并發編程的要領,快速地構建大規模的并發應用程序。
5
深入理解Java虛擬機
JVM高級特性與最佳實踐(第3版)
作者:周志明
推薦語:大廠面試通關寶典全新升級!第三版大幅更新50%以上內容,周志明從Java技術體系、自動內存管理、虛擬機執行子系統、程序編譯與代碼優化、高效并發5個維度全面剖析虛擬機。以實戰為導向,通過大量實際案例,分享解決各種Java技術難題的方案和技巧。幾乎涵蓋大廠面試全部知識點。值得所有Java技術人員一讀再讀。
6
Java虛擬機規范(Java SE 8版)
作者:蒂姆·林霍爾姆?弗蘭克·耶林 等
推薦語:基于Java SE 8, Oracle官方發布,Java虛擬機技術創建團隊成員撰寫,國內Java技術專家翻譯,闡釋Java虛擬機與Java的關系和發展歷程,是深度了解Java虛擬機和Java語言實現細節的必讀之作。
7
深入解析Java虛擬機HotSpot
作者:楊易
推薦語:很多JVM的底層技術細節你是否只了解表面?面對JVM Crash或性能調優方面的問題時你是否會束手無策?面對上層Java應用發生的偏離預期的行為是否會不知所措?……
這本書以源碼分析為基礎,從運行時、垃圾回收器、即時編譯器3個維度全面、深入解析HotSpot VM的底層實現和工作機制,同時與上層的Java語言和庫結合,指導讀者解決JVM開發、JVM調優和JVM排錯方面遇到的各種問題。
干貨直達????
多圖詳解數據中臺建設框架(建議收藏)
中國人工智能最高獎,頒給了這些人
什么是架構?網絡架構中都有什么?終于有人講明白了
大數據平臺的3個核心功能
更多精彩????
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
PPT?|?讀書?|?書單?|?硬核?|?干貨?|?講明白?|?神操作
大數據?|?云計算?|?數據庫?|?Python?|?爬蟲?|?可視化
AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
5G?|?中臺?|?用戶畫像?|?1024?|?數學?|?算法?|?數字孿生
據統計,99%的大咖都關注了這個公眾號
????
總結
以上是生活随笔為你收集整理的为什么 Java 在 25 年之后依旧如此年轻:一个架构师的看法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 史上最贵黑客事件!中本聪用代码亲手杀死
- 下一篇: “新基建”横空出世,9本书助你把握7+2