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

Java 12 發(fā)布了憔儿,沒有引起很大的討論劫樟。對(duì)于 Java 這樣一門成熟的語言來說,每一次更新似乎都無法滿足龐大的 Java 開發(fā)群體與生態(tài)圈潦俺。再加上 Oracle 對(duì) Java 耐人尋味的態(tài)度卢鹦,Java 的未來會(huì)如何冀自?
Java 的變化速度從未如此之快——如今葛超,該語言的新版本每六個(gè)月就會(huì)發(fā)布一次侥涵。

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

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

一虱岂、Loom 項(xiàng)目

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

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

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

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

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

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

二、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)硫麻。

生字符串:

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

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

舉例來說拿愧,開發(fā)人員不必使用
轉(zhuǎn)義字符來表示換行符杠河,因此在以下字符串中:

Hello

World

可以直接編寫為:

`Hello

World`

而非原本的:

"Hello
World
"

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

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

用于 JDK API 的 Java 編譯器 Intrinsic

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

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

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

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

Pattern Matching

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

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

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

if (obj instanceof Integer) {
int intValue = ((Integer) obj).intValue();
// use intValue
}

將可被簡化為:

if (x instanceof Integer i) {
// can use i here, of type Integer
}

Switch Expressions

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 語句:

switch (port) {
case 20:
type = PortType.FTP;
break;
}

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

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

三种远、Valhalla 項(xiàng)目

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

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

Value Types

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

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

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

Generic Specialization

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 是目前使用率最高的一個(gè) Java 版本赠群,發(fā)布于 2014 年羊始,而 Oracle 對(duì) Java 8 的官方支持時(shí)間持續(xù)到 2020 年 12 月,之后將不再為個(gè)人桌面用戶提供 Oracle JDK 8 的修復(fù)更新查描;在 2019 年 1 月之后突委,不再提供免費(fèi)的商業(yè)版本更新,屆時(shí)想要繼續(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 平臺(tái)團(tuán)隊(duì)的首席工程師 Andrew Haley 曾表示叮阅,紅帽計(jì)劃在 2023 年之前繼續(xù)提供對(duì) OpenJDK 8 的支持:

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

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

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

六、Java 老矣仇奶,尚能飯否貌嫡?

Java 是最好的語言么?不是该溯,因?yàn)樵诿總€(gè)領(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)勢(shì)可以占據(jù)排行榜第一的位置呢?

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

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

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

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

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

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

讀者福利:

分享免費(fèi)學(xué)習(xí)資料

針對(duì)于Java程序員驮配,我這邊準(zhǔn)備免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用娘扩、高并發(fā)、高性能及分布式壮锻、Jvm性能調(diào)優(yōu)琐旁、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)

為什么某些人會(huì)一直比你優(yōu)秀猜绣,是因?yàn)樗旧砭秃軆?yōu)秀還一直在持續(xù)努力變得更優(yōu)秀旋膳,而你是不是還在滿足于現(xiàn)狀內(nèi)心在竊喜!希望讀到這的您能點(diǎn)個(gè)小贊和關(guān)注下我途事,以后還會(huì)更新技術(shù)干貨,謝謝您的支持擅羞!

資料領(lǐng)取方式:加入Java技術(shù)交流群963944895尸变,私信管理員即可免費(fèi)領(lǐng)取

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市减俏,隨后出現(xiàn)的幾起案子召烂,更是在濱河造成了極大的恐慌,老刑警劉巖娃承,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奏夫,死亡現(xiàn)場離奇詭異,居然都是意外死亡历筝,警方通過查閱死者的電腦和手機(jī)酗昼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梳猪,“玉大人麻削,你說我怎么就攤上這事。” “怎么了呛哟?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵叠荠,是天一觀的道長。 經(jīng)常有香客問我扫责,道長榛鼎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任鳖孤,我火速辦了婚禮者娱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淌铐。我一直安慰自己肺然,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布腿准。 她就那樣靜靜地躺著际起,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吐葱。 梳的紋絲不亂的頭發(fā)上街望,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音弟跑,去河邊找鬼灾前。 笑死,一個(gè)胖子當(dāng)著我的面吹牛孟辑,可吹牛的內(nèi)容都是我干的哎甲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼饲嗽,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼炭玫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起貌虾,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤吞加,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后尽狠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衔憨,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年袄膏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了践图。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沉馆,死狀恐怖平项,靈堂內(nèi)的尸體忽然破棺而出赫舒,到底是詐尸還是另有隱情,我是刑警寧澤闽瓢,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布接癌,位于F島的核電站,受9級(jí)特大地震影響扣讼,放射性物質(zhì)發(fā)生泄漏缺猛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一椭符、第九天 我趴在偏房一處隱蔽的房頂上張望荔燎。 院中可真熱鬧,春花似錦销钝、人聲如沸有咨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽座享。三九已至,卻和暖如春似忧,著一層夾襖步出監(jiān)牢的瞬間渣叛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工盯捌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淳衙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓饺著,卻偏偏與公主長得像箫攀,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幼衰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 這幾天靴跛,學(xué)長的分享都跟擴(kuò)大中小學(xué)生的閱讀量有關(guān)。我把學(xué)長的分享轉(zhuǎn)發(fā)到群里的時(shí)候塑顺,引起了一些家長的討論:學(xué)生本身課業(yè)...
    姝穎的世界閱讀 1,590評(píng)論 0 2
  • 朱會(huì)利 焦點(diǎn)講師班五期 洛陽 堅(jiān)持分享第634天《來訪者才是主角》2018.08.02 今天的中級(jí)班課堂上...
    天天_27d6閱讀 291評(píng)論 0 0
  • 用成交易量捕捉強(qiáng)勢(shì)股只需要堅(jiān)持二點(diǎn): 1 只選換手率巨大的股票 很多人買股不注意看換手率。換手率是成交量方面最重要...
    無涯看市閱讀 476評(píng)論 0 0
  • 我要 看窗外的奇形怪狀大片大片的綠 一直看到它們變成了黃 又變?yōu)榧t 我要 我要 媽媽抱著我 一天24小時(shí)抱著 她要...
    醉眠芳草澗閱讀 226評(píng)論 0 2