自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java 12 發(fā)布了,決定Java未來的三大主要項(xiàng)目!

新聞 前端
對于 Java 這樣一門成熟的語言來說,每一次更新似乎都無法滿足龐大的 Java 開發(fā)群體與生態(tài)圈。再加上 Oracle 對 Java 耐人尋味的態(tài)度,Java 的未來會如何?

 [[261703]]

Java 12 發(fā)布了,沒有引起很大的討論。對于 Java 這樣一門成熟的語言來說,每一次更新似乎都無法滿足龐大的 Java 開發(fā)群體與生態(tài)圈。再加上 Oracle 對 Java 耐人尋味的態(tài)度,Java 的未來會如何?

Java 的變化速度從未如此之快——如今,該語言的新版本每六個月就會發(fā)布一次。

而之所以能夠?qū)崿F(xiàn)如此重大的轉(zhuǎn)變,自然離不開一系列專注于提高其性能與添加新功能的協(xié)作性項(xiàng)目的貢獻(xiàn)。這些項(xiàng)目的目標(biāo)可謂雄心勃勃。正如 JetBrains 開發(fā)者布道師 Trisha Gee 在 QCon 倫敦 2019 大會上所言,“Java 即將迎來很多超酷的東西。”

而發(fā)展道路中的以下三大主要項(xiàng)目,將有助于確定 Java 的未來方向。

一、Loom 項(xiàng)目

嘗試改進(jìn) Java 語言的并發(fā)處理方式,或者說是在對計(jì)算機(jī)在不同指令集執(zhí)行之間切換能力的探索。

甲骨文公司 Loom 項(xiàng)目技術(shù)負(fù)責(zé)人 Ron Pressler 在 QCon 倫敦 2019 大會上向希望編寫軟件以處理并發(fā)任務(wù)的 Java 開發(fā)者們提出了兩種都不夠好的選項(xiàng):要么編寫無法通過擴(kuò)展處理大量并發(fā)任務(wù)的“簡單同步阻塞代碼”,要么編寫可擴(kuò)展但編寫難度極高且調(diào)試過程復(fù)雜的異步代碼。

為了尋求解決這個問題的方法,Loom 項(xiàng)目引入了一種將任務(wù)拆分為線程的新方法——所謂線程,即是指計(jì)算機(jī)在運(yùn)行指令時的最小可能執(zhí)行單元。在這方面,Loom 引入了被稱為 fibers 的新型輕量級用戶線程。

他在大會上指出,“利用 fibers,如果我們確保其輕量化程度高于內(nèi)核提供的線程,那么問題就得到了解決。大家將能夠盡可能多地使用這些用戶模式下的輕量級線程,且基本不會出現(xiàn)任何阻塞問題。”

利用這些新的 fibers,用戶將能夠擴(kuò)展 Java 虛擬機(jī)(JVM)以支持定界延續(xù)(delimited continuations)機(jī)制,從而使得指令集的執(zhí)行實(shí)現(xiàn)暫停以及恢復(fù)。對這些延續(xù)進(jìn)行暫停與恢復(fù)的任務(wù)將由 Java 中的 ForkJoinPool 調(diào)度程序以異步模式處理。

根據(jù)說明文檔所言,fibers 將使用與 Java 現(xiàn)有 Thread 類非常相似的 API,這意味著 Java 開發(fā)人員的學(xué)習(xí)曲線應(yīng)該不會太過陡峭。

二、Amber 項(xiàng)目

Amber 項(xiàng)目的目標(biāo),在于支持“更小、面向生產(chǎn)力的 Java 語言功能”的開發(fā),從而加快將新功能添加至 Java 語言中的速度。

這套方案非常適合自 Java 9 以來,以更快速度持續(xù)發(fā)布的各 Java 新版本。

目前,以下 JDK 增強(qiáng)提案(簡稱 JEP)正在進(jìn)行當(dāng)中,并隸屬于 Amber 項(xiàng)目之內(nèi)。

生字符串:

  1. https://openjdk.java.net/jeps/326 

生字符串使得開發(fā)人員能夠更輕松地對文本進(jìn)行適當(dāng)格式化,且無需引入由轉(zhuǎn)義字符帶來的復(fù)雜性。

舉例來說,開發(fā)人員不必使用

轉(zhuǎn)義字符來表示換行符,因此在以下字符串中:

  1. Hello 
  2. World 

可以直接編寫為:

  1. `Hello 
  2. World` 

而非原本的:

  1. "Hello 
  2. World 

該提案的說明文檔中提到,這一變更將使得各類文本客串的輸入變得更加簡單,包括文件路徑以及 SQL 語句等等。

如大家所見,生字符串應(yīng)被包含在反引號之內(nèi)。

用于 JDK API 的 Java 編譯器 Intrinsic

  1. https://openjdk.java.net/jeps/348 

此項(xiàng)提案將允許開發(fā)人員對需要定期調(diào)用的重要代碼段進(jìn)行性能優(yōu)化。

具體來說,它允許開發(fā)人員將特定于 JDK 的方法指定為編譯時內(nèi)部化候選項(xiàng),從而指示編譯器對其性能進(jìn)行優(yōu)化。

考慮到在 Java 當(dāng)中的重要意義,此提案的說明文檔將 String::format 與 Objects::hash 作為編譯時內(nèi)部化方法示例。這些方法可以使用 @IntrinsicCandidate 進(jìn)行注釋,以指示編譯器將其視為編譯時內(nèi)部化候選項(xiàng)。如此一來,JDK 的 javac 編譯器即可通過修改創(chuàng)建出內(nèi)部化進(jìn)程的處理機(jī)制。

Pattern Matching

  1. https://openjdk.java.net/jeps/305 

Pattern Matching 能夠簡化利用 Java 中 instanceof 運(yùn)算符檢查對象是否屬于特定類的過程,而后提取該對象的組件以進(jìn)行進(jìn)一步處理。

如此一來,以下操作語法:

  1. if (obj instanceof Integer) { 
  2. int intValue = ((Integer) obj).intValue(); 
  3. // use intValue 

將可被簡化為:

  1. if (x instanceof Integer i) { 
  2. // can use i here, of type Integer 

Switch Expressions

  1. https://openjdk.java.net/jeps/325 

Switch expressions 已經(jīng)在 Java 12 當(dāng)中以預(yù)覽版形式推出,允許開發(fā)人員利用更簡單的語法通過 switch 語句為輸入內(nèi)容指定不同的響應(yīng)方式。

舉例來說,現(xiàn)在我們不再需要始終在以下語法當(dāng)中使用 switch 語句:

  1. switch (port) { 
  2. case 20
  3. type = PortType.FTP; 
  4. break

而可以采取以下更為簡潔的表達(dá)方式:

  1. Switch (port) { 
  2. case 20 -> PortType.FTP; 

三、Valhalla 項(xiàng)目

Valhalla 項(xiàng)目專注于支持“高級”JVM 與語言功能的開發(fā)。

目前 Valhalla 項(xiàng)目的候選提案還比較有限,具體包括:

Value Types

  1. https://openjdk.java.net/jeps/169 

此項(xiàng)提案旨在允許 JVM 處理一種新的類型,即 Value Types。

這些新的不可變類型將擁有與 int 等基元類似的內(nèi)存效率,但同時又與普通類一樣能夠保存一整套基元集合。提案說明文檔中指出,其目標(biāo)在于“為 JVM 基礎(chǔ)設(shè)施提供處理不可變與無引用對象的能力,從而實(shí)現(xiàn)使用非基元類型進(jìn)行高效按值計(jì)算的目標(biāo)。”

Generic Specialization

  1. https://openjdk.java.net/jeps/218 

此項(xiàng)提案擴(kuò)展了適用于泛型的具體類型,其中包括基元以及即將推出的 Value Types。

英文原文

https://www.techrepublic.com/article/future-of-java-programming-language-three-major-projects-on-the-horizon/

四、來自 Oracle 的警告

Java 8 是目前使用率最高的一個 Java 版本,發(fā)布于 2014 年,而 Oracle 對 Java 8 的官方支持時間持續(xù)到 2020 年 12 月,之后將不再為個人桌面用戶提供 Oracle JDK 8 的修復(fù)更新;在 2019 年 1 月之后,不再提供免費(fèi)的商業(yè)版本更新,屆時想要繼續(xù)獲得 Oracle 的商業(yè)支持和維護(hù),需付費(fèi)訂閱。

近日,Oracle 的銷售代表發(fā)出的一封郵件引起了熱議,該郵件稱“Java 8 的非公開可用的關(guān)鍵補(bǔ)丁更新”將于 2019 年 4 月 16 日發(fā)布,擁有有效許可證的客戶才可以享用。郵件繼續(xù)稱,如果沒有安裝這些更新,可能導(dǎo)致“你的服務(wù)器和桌面環(huán)境暴露且易受攻擊。”

但在許多 Java 用戶看來,這封郵件像是一種敲詐勒索或恐嚇策略。

五、Oracle 撒手,OpenJDK 繼續(xù)向前

雖然 Oracle 官方選擇了不再支持,但 Java 社區(qū)卻把擔(dān)子接了下來。紅帽 Java 平臺團(tuán)隊(duì)的首席工程師 Andrew Haley 曾表示,紅帽計(jì)劃在 2023 年之前繼續(xù)提供對 OpenJDK 8 的支持:

在我看來,這算比較正常的。幾年前,OpenJDK 6 更新(jdk6u)項(xiàng)目被 Oracle 放棄,我接管了它,然后 OpenJDK 7 也發(fā)生了同樣的事情。最后,Azul 的 Andrew Brygin 接管了 OpenJDK 6。由來自多個組織成員組成的 OpenJDK Vulnerability Group 就重要的安全問題進(jìn)行協(xié)作。在廣大的 OpenJDK 社區(qū)和我的團(tuán)隊(duì)(Red Hat)的幫助下,我們定期為關(guān)鍵 bug 和安全漏洞提供更新。我覺得這樣的過程同樣適用于 OpenJDK 8 和下一個長期支持版本,即 OpenJDK 11。

如果可以得到社區(qū)的支持,我很高興能夠領(lǐng)導(dǎo) JDK 8 更新項(xiàng)目和 JDK 11 更新項(xiàng)目。

除了紅帽以外,AWS 推出了 OpenJDK 長期支持版本 Amazon Corretto。阿里巴巴也開源了 OpenJDK 長期支持版本 Alibaba Dragonwell。

延展閱讀:獨(dú)家!阿里開源自用OpenJDK版本,Java社區(qū)迎來中國力量

六、Java 老矣,尚能飯否?

Java 是最好的語言么?不是,因?yàn)樵诿總€領(lǐng)域都有更合適的編程語言。

C 語言無疑是現(xiàn)代計(jì)算機(jī)軟件編程語言的王者,幾乎所有的操作系統(tǒng)都是 C 語言寫成的。C++ 是面向?qū)ο蟮?C 語言,一直在不斷的改進(jìn)。

JavaScript 是能運(yùn)行在瀏覽器中的語言,豐富的前端界面離不開 Javascript 的功勞。近年來的 Node.js 又在后端占有一席之地。Python 用于系統(tǒng)管理,并通過高性能預(yù)編譯的庫,提供 API 來進(jìn)行科學(xué)計(jì)算,文本處理等,是 Linux 必選的解釋性語言。

Ruby 強(qiáng)于 DSL(領(lǐng)域特定語言),程序員可以定義豐富的語義來充分表達(dá)自己的思想。Erlang 就是為分布式計(jì)算設(shè)計(jì)的,能保證在大規(guī)模并發(fā)訪問的情況下,保持強(qiáng)壯和穩(wěn)定性。Go 語言內(nèi)置了并發(fā)能力,可以編譯成本地代碼。當(dāng)前新的網(wǎng)絡(luò)相關(guān)項(xiàng)目,很大比例是由 Go 語言編寫的,如 Docker、Kubernetes 等。

編寫網(wǎng)頁用 PHP,函數(shù)式編程有 Lisp,編寫 iOS 程序有 Swift/ObjectiveC。

一句話概括,能留在排行榜之上的語言,都是好的語言,在其所在的領(lǐng)域能做到最好。

那么,Java 語言到底有什么優(yōu)勢可以占據(jù)排行榜第一的位置呢?

其一,語法比較簡單,學(xué)過計(jì)算機(jī)編程的開發(fā)者都能快速上手。

其二,在若干了領(lǐng)域都有很強(qiáng)的競爭力,比如服務(wù)端編程,高性能網(wǎng)絡(luò)程序,企業(yè)軟件事務(wù)處理,分布式計(jì)算,Android 移動終端應(yīng)用開發(fā)等等。

最重要的一點(diǎn)是符合工程學(xué)的需求,我們知道現(xiàn)代軟件都是協(xié)同開發(fā),那么代碼可維護(hù)性,編譯時檢查,較為高效的運(yùn)行效率,跨平臺能力,豐富的 IDE,測試,項(xiàng)目管理工具配合。都使得 Java 成為企業(yè)軟件公司的首選,也得到很多互聯(lián)網(wǎng)公司的青睞。

沒有短板,容易從市場上找到 Java 軟件工程師,軟件公司選擇 Java 作為主要開發(fā)語言,再在特定的領(lǐng)域使用其他語言協(xié)作編程,這樣的組合選擇,肯定是不會有大的問題。

所以綜合而言,Java 語言全能方面是最好的。

隨著 Java 每半年更新一次的腳步,Java 的新版本中也出現(xiàn)了越來越多與其他語言相似的特性,博采眾長的 Java,還能繼續(xù)保持生機(jī),你覺得呢?

 

責(zé)任編輯:張燕妮 來源: 頭條科技
相關(guān)推薦

2010-03-31 11:06:07

Oracle 基礎(chǔ)知識

2010-03-31 11:26:14

Oracle 基礎(chǔ)知識

2025-02-27 09:13:03

2019-09-08 22:26:05

2022-01-26 11:09:46

人工智能量子數(shù)字世界

2011-12-07 10:36:03

2009-06-29 14:13:32

Java甲骨文Sun

2022-04-02 06:32:20

數(shù)據(jù)和分析Gartner領(lǐng)導(dǎo)者

2023-09-26 09:48:05

人工智能AI

2009-06-29 10:04:47

DB2 9.7

2021-10-15 14:10:41

手機(jī)電腦技術(shù)

2023-05-17 08:20:34

Java 17編程語言

2010-03-10 15:19:06

Python源代碼

2023-07-07 09:08:21

2024-12-24 11:10:40

2020-11-30 11:21:21

物聯(lián)網(wǎng)大數(shù)據(jù)安全

2021-05-08 10:33:07

運(yùn)營商中國移動中國電信

2011-08-10 09:47:47

系統(tǒng)市場

2010-03-12 10:21:48

Python函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號