總體上,從技術(shù)角度來說,我認(rèn)為今年應(yīng)該會(huì)非常平靜溶耘,這一點(diǎn)我會(huì)在下面每一節(jié)中解釋。但是茂翔,從非技術(shù)的角度來說,我認(rèn)為開發(fā)者和用戶們需要在部署 Java 應(yīng)用程序方面做出一些抉擇履腋。接下來珊燎,我們就來一起探討一下。
嵌入式 Java
我并沒有看到這個(gè)領(lǐng)域有什么變化遵湖。Oracle 完全放棄了在該領(lǐng)域的開發(fā)悔政,已經(jīng)不再提供支持非常流行的 ARM 架構(gòu)的嵌入式應(yīng)用程序的二進(jìn)制文件了。
但是延旧,我預(yù)測(cè)今年嵌入式應(yīng)用程序中的 Java 應(yīng)用將會(huì)增長(zhǎng)谋国。主要原因有三個(gè):
許多其他公司依然在為嵌入式應(yīng)用程序提供 JDK 的二進(jìn)制文件。顯然迁沫,我所在的 Azul 就是這些公司之一芦瘾,我們能夠?yàn)?ARM 處理器提供 Java(因此你可以繼續(xù)在樹莓派上使用 Java),也提供 PowerPC 和 MIPS 的 Java集畅。目前的版本是 JDK 8旅急,但很快就會(huì)發(fā)布 JDK 11。
摩爾定律的現(xiàn)實(shí)意味著牡整,JVM 的內(nèi)存需求(需要幾個(gè)Mb的內(nèi)存)已經(jīng)不再被認(rèn)為是額外的開銷。
Java Platform Module System 提供了一種方式溺拱,為應(yīng)用程序構(gòu)建自定義 Java 運(yùn)行時(shí)逃贝,從而只包含應(yīng)用程序需要的那些模塊,而不是包含所有核心類庫迫摔。這可以很容易地將 Java 的空間需求從幾百兆降低至幾十兆沐扳。這解決了在嵌入式環(huán)境中使用 JavaSE 的一個(gè)主要顧慮。
”我自己是一名從事了十余年的后端的老程序員句占,辭職后目前在做講師沪摄,近期我花了一個(gè)月整理了一份最適合2018年學(xué)習(xí)的JAVA干貨(里面有高可用、高并發(fā)、高性能及分布式杨拐、Jvm性能調(diào)優(yōu)祈餐、Spring源碼,MyBatis哄陶,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)從事后端的小伙伴們都可以來了解一下的帆阳,這里是程序員秘密聚集地,各位還在架構(gòu)師的道路上掙扎的小伙伴們速來屋吨⊙寻“
加QQ群:611481448(名額有限哦!)
Java ME
我覺得已經(jīng)可以說至扰,Java ME 已經(jīng)死了鳍徽。雖然去年 Java ME 工作組還做過一些工作將其移植到 JCP 下,但這項(xiàng)工作會(huì)在三月份停止敢课。似乎 V2COM 是唯一一家對(duì)這個(gè)方向有興趣的公司阶祭,他們應(yīng)該是在與 Eclipse 基金會(huì)合作這個(gè)項(xiàng)目。
我對(duì)于今年的預(yù)測(cè)是翎猛,Java ME 不會(huì)再有任何開發(fā)胖翰,也不會(huì)有任何真正的應(yīng)用再使用它。我都懷疑我在 2020 年的預(yù)測(cè)中是否還會(huì)提及它了.
Java EE(現(xiàn)在是 Jakarta EE)
2018 年是企業(yè)級(jí) Java 統(tǒng)合的一年切厘,必要的知識(shí)產(chǎn)權(quán)萨咳、代碼和測(cè)試都從 Oracle 移交給了 Eclipse 基金會(huì)。
Eclipse 基金會(huì)現(xiàn)在在努力制定標(biāo)準(zhǔn)流程的細(xì)節(jié)方面疫稿,從而替代一直使用至今的 JCP 的流程培他。因此,這個(gè)領(lǐng)域我認(rèn)為不會(huì)有任何重要的開發(fā)遗座。一個(gè)可能的例外就是微服務(wù)和 MicroProfile舀凛。考慮到這種架構(gòu)方式的流行途蒋,我認(rèn)為 Java 在這個(gè)領(lǐng)域會(huì)出現(xiàn)很多進(jìn)展猛遍。
Java SE(Core Java)
我認(rèn)為,去年年初我們本應(yīng)有兩個(gè) Java 的主要版本号坡“每荆考慮到 OpenJDK 項(xiàng)目的發(fā)布預(yù)定版,我甚至都不需要水晶球就能預(yù)測(cè)宽堆!好消息是腌紧,這個(gè)流程非常順利。Java SE 10 和 11 都如期發(fā)布了畜隶,必要的 JSR 也同時(shí)被創(chuàng)建壁肋、審查并得到了通過号胚。伴隨這一點(diǎn),JCP 已經(jīng)完成了 JSR 過程(通過 JSR 387)浸遗,因此整個(gè)流程變得更簡(jiǎn)單猫胁。
今年,我預(yù)言會(huì)有至少兩個(gè)主要版本乙帮,JDK 12 和 JDK 13杜漠。同樣,這并不意味著我有諾斯特拉達(dá)姆士(法國預(yù)言家)那種能力察净。JDK 12 已經(jīng)蓄勢(shì)待發(fā)驾茴,我也被邀請(qǐng)加入 Java SE 13 的專家小組,其他方面的工作也都在進(jìn)行氢卡。
從技術(shù)的角度來看锈至,我認(rèn)為兩個(gè)發(fā)布都是發(fā)展性的,而不是革命性的译秦。JDK 12 帶有一個(gè)全新的語言預(yù)覽功能峡捡,即 switch 表達(dá)式。Raw string literals 也被計(jì)劃加到 JDK 12 中筑悴,但由于最佳實(shí)現(xiàn)方式還需要進(jìn)一步討論们拙,因此被撤下了。同樣阁吝,這也證明了新的發(fā)布流程很有效砚婆。這個(gè)流程不會(huì)加入尚未完成的功能,而是將其延后到下一個(gè)版本突勇。我的預(yù)測(cè)是装盯,這個(gè)功能即使在 JDK 13 中也無法做好。JDK 13 中我能看到的大多數(shù)改變都是幕后工作甲馋,因?yàn)樵摪姹居?jì)劃了更流行的功能埂奈,如 Valhalla 和 Loom。
Java Community Process(Java 社區(qū)過程定躏,JCP)
我認(rèn)為今年應(yīng)該是 JCP 確立的一年账磺。我代表 Azul 參加了大部分的 JCP 執(zhí)行委員會(huì)(EC),所以我覺得我在這方面很有發(fā)言權(quán)∪叮現(xiàn)在 Java ME 已經(jīng)不存在绑谣,企業(yè)級(jí) Java 已經(jīng)移動(dòng)到了 Eclipse 基金會(huì),因此 JCP 中剩下的唯一重要的就是 Java SE 了拗引。還有幾個(gè)其他的 JSR 過程,但從 Java 平臺(tái)整體來說這些過程并不重要幌衣。而且矾削,在 Java SE 中壤玫,大部分本來由專家小組負(fù)責(zé)但工作都以 JDK 增強(qiáng)提案(JDK Enhancement Proposal,JEP)的形式移交給了 OpenJDK 社區(qū)哼凯。
不幸的是欲间,這并沒有留給 JCP 多少工作。執(zhí)行委員會(huì)已經(jīng)將面對(duì)面會(huì)議的次數(shù)從每年三次減少到了兩次断部。我認(rèn)為猎贴,在 JavaOne(或Oracle Code One或其他任何名字)開始之前,會(huì)議的次數(shù)會(huì)減少為一次蝴光。
JCP 對(duì)于 Java SE 依然至關(guān)重要她渴,因?yàn)樗峁┝撕诵?Java 平臺(tái)的正式規(guī)則——TCK,從而人們能夠驗(yàn)證 Java 二進(jìn)制文件是否遵循標(biāo)準(zhǔn)蔑祟,而且更為重要的是趁耗,能給予那些提供替代版 Java 二進(jìn)制發(fā)布的公司(如 Azul)以合適的知識(shí)產(chǎn)權(quán)。
我認(rèn)為疆虚,我們會(huì)在 JCP 中看到更多變化苛败,更多的公司會(huì)直接參與進(jìn)來。
JDK 二進(jìn)制
說完 Java 的技術(shù)方面径簿,接下來討論今年最大的變動(dòng)——Java 的分發(fā)方式罢屈,以及更為重要的更新方式。本月晚些時(shí)候我們將發(fā)布 JDK 8 和 JDK 11 的最后一個(gè)公開更新篇亭。盡管 JDK 11 是個(gè)長(zhǎng)期支持發(fā)布(LTS)缠捌,但這只是你使用 Oracle JDK 的情況,因?yàn)樗呀?jīng)采用了不同的授權(quán)方式暗赶。這意味著鄙币,你依然可以在開發(fā)和測(cè)試中免費(fèi)使用 Oracle JDK,但無法在產(chǎn)品中免費(fèi)試用蹂随。如果你想從 Oracle 獲得免費(fèi)的十嘿、能用于產(chǎn)品的二進(jìn)制,就要獲得 Oracle OpenJDK 二進(jìn)制(從 jdk.java.net)岳锁。所有這些發(fā)布都不提供長(zhǎng)期支持绩衷。
我的預(yù)測(cè)是,到今年年底激率,絕大部分 Java 用戶都會(huì)放棄使用 Oracle JDK咳燕。一些組織(顯然,Azul 也在其中)會(huì)提供 OpenJDK 的構(gòu)建乒躺,同時(shí)提供多種形式的支持招盲,包括從當(dāng)前發(fā)布移植布丁等。
如果你還沒有考慮今年該用哪個(gè) Java 版本嘉冒,那現(xiàn)在就該下決定了曹货。從下個(gè)月開始咆繁,如果安全布丁對(duì)你來說很重要(它們的確很重要),你就得決定怎樣獲取它們了顶籽。
結(jié)論
總的來說玩般,我的預(yù)測(cè)為:在技術(shù)方面,2019 年將是寂靜的一年礼饱,但也是重要的一年坏为,因?yàn)槿藗冃枰x擇使用哪個(gè)版本的 JDK。
你做好準(zhǔn)備迎接 2019 年的 Java 了嗎镊绪?
這里是程序員秘密聚集地匀伏,各位還在架構(gòu)師的道路上掙扎的小伙伴們速來
加QQ群:611481448