教你怎么從Java8升級到Java11

目前最新JDK 11,Oracle會一直維護到2026年。

成都創(chuàng)新互聯(lián)成立十多年來,這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計、空間域名、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補等服務(wù)。網(wǎng)站是否美觀、功能強大、用戶體驗好、性價比高、打開快等等,這些對于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)通過對建站技術(shù)性的掌握、對創(chuàng)意設(shè)計的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。

Java11的新特性

1、更新支持到Unicode 10編碼

Unicode 10(version 10.0 of the Unicode Standard),Unicode是一個不斷在演進的行業(yè)標準,Java一直在與它保持一致兼容。

Java8已經(jīng)更新了Unicode8.0-9.0,Java10更新后將達到16018個characters、18種blocks和10種scripts。

2、將Http Client作為JDK標準發(fā)布、

原來作為jdk補充的http類放在jdk.incubator.http包中,現(xiàn)在統(tǒng)一改到java.net.http包下,核心類有下面4個。

  • HttpClient

  • HttpRequest

  • HttpResponse

  • WebSocket

HttpClient?client?=?HttpClient.newBuilder()?
????????.version(HttpClient.Version.HTTP_1_1)?
????????.connectTimeout(Duration.ofSeconds(3))?
????????.build();?

HttpRequest?request?=?HttpRequest.newBuilder().uri(URI.create("http://www.baidu.com")).build();?
HttpResponse<String>?response?=?client.send(request,?HttpResponse.BodyHandlers.ofString());?
System.out.println(response.statusCode());????//?200System.out.println(response.body());??????????//?百度頁面的html

3、新增優(yōu)化很多方法

  • java.util.Collection增加新方法toArray(IntFunction),集合轉(zhuǎn)數(shù)組的不二之選。

  • String增加lines\stripLeading\stripTrailing等,一般項目都有StringUtils類。

  • java.io.InputStream增加構(gòu)造方法

  • java.nio包下面很大類擴展了方法Channels\XXXBuffer等

推薦一篇博客:Java 11 新增 API 初探,總結(jié)的比較細致。

4、支持動態(tài)分配 Compiler Threads

JVM啟動參數(shù)新增-XX:+UseDynamicNumberOfCompilerThreads,動態(tài)的控制編程線程的數(shù)量,原來的編譯線程默認會啟動大量造成cpu和memory浪費。

5、GC能力大幅提升

低功耗可擴展GC(ZGC)模塊是一個試驗性的并發(fā)GC,在線程執(zhí)行是ZGC會做一些重型回收工作,如string表清理等。執(zhí)行周期在10ms內(nèi),處理heaps大小從MB到TB范圍,目前只能支持linux和x64系統(tǒng),除此外還有個處理memory分配的Epsilon GZ,有興趣的可以自己研究。

6、堆分析能力提升:JVMTI

提供了一個低負載的堆分配采集分析程序:JVMTI,默認啟動方案可以持續(xù)工作且不造成服務(wù)器壓力,面向接口編程,能夠收集活著和死去的對象信息。

7、Transport Layer Security 1.3更新

簡稱TLS1.3是網(wǎng)絡(luò)傳輸層協(xié)議,需要注意的它不兼容歷史版本而且官方承認有風(fēng)險,希望后續(xù)能不斷優(yōu)化。

8、嵌套訪問控制

嵌套是一種訪問控制上下文,它允許多個class同屬一個邏輯代碼塊,但是被編譯成多個分散的class文件,它們訪問彼此的私有成員無需通過編譯器添加訪問擴展方法。

例子:

/**
?*?@author:?Owen?Jia
?*?@time:?2019/11/7
?*/public?class?NestBasedTest?{????public?static?class?Nest1?{????????private?int?varNest1;????????public?void?f()?throws?Exception?{????????????final?Nest2?nest2?=?new?Nest2();????????????//這里沒問題
????????????nest2.varNest2?=?2;????????????final?Field?f2?=?Nest2.class.getDeclaredField("varNest2");????????????//下面代碼在java?8環(huán)境下會報錯,但在java?11中是沒問題的
????????????f2.setInt(nest2,?1);
????????????System.out.println(nest2.varNest2);
????????}
????}????public?static?class?Nest2?{????????private?int?varNest2;
????}????public?static?void?main(String[]?args)?throws?Exception?{????????new?Nest1().f();
????}
}

這里要提一下Class類新增的方法:

//?獲取宿主類。非嵌套類的宿主類是它本身。public?Class<?>?getNestHost()//?判斷該類是否是某個類的嵌套類public?boolean?isNestmateOf(Class<?>?c)//?返回某個類的嵌套類數(shù)組。第?1?個固定是宿主類,之后的是該宿主類的嵌套成員,但不保證順序,同時也會包含自身public?Class<?>[]?getNestMembers()

9、新增和優(yōu)化諸多加密算法

對PKCS#1 v2.2內(nèi)提供更多算法,如RSASSA-PSS簽名算法。同時新增ChaCha20和Poly1305密碼算法,通過Cipher.getInstance?使用。還有 Curve25519和Curve448被添加。AES128和265也支持了Kerberos 5 encryption。

10、本地參數(shù)支持Lambda

簡單理解就是lambda表達式的變量申明可以用var。

	lst.forEach((var?x)?->?{
		System.out.print(x);
	});

11、單java文件加載運行

單個的*.java文件可以直接用java命令來執(zhí)行,格式:java HelloWorld.java

12、飛行記錄器分析工具

Jvm啟動參數(shù):-XX:StartFlightRecording

Java11中將這款原來商用的工具集成到j(luò)dk標準中了,它是一種低開銷的事件信息收集框架,用來對應(yīng)用程序和JVM 進行故障檢查、分析,收集應(yīng)用程序、JVM 和 OS的數(shù)據(jù)并保存在單獨的事件記錄文件中,故障發(fā)生后,能夠從事件記錄文件中提取出有用信息對故障進行分析。

更多其他能力

還有很多其他更新就不一一介紹了,這些都是JDK標準包支持的基礎(chǔ)能力,得感謝Oracle持續(xù)對JDK發(fā)布的支持。完整的jdk11變化清單可以去官網(wǎng)查看;

從11開始移除的模塊清單

  • Removal of com.sun.awt.AWTUtilities Class

  • Removal of Lucida Fonts from Oracle JDK

  • Removal of appletviewer Launcher

  • Oracle JDK's javax.imageio JPEG Plugin No Longer Supports Images with alpha

  • Removal of sun.misc.Unsafe.defineClass

  • Removal of Thread.destroy() and Thread.stop(Throwable) Methods

  • Removal of sun.nio.ch.disableSystemWideOverlappingFileLockCheck Property

  • Removal of sun.locale.formatasdefault Property

  • Removal of JVM-MANAGEMENT-MIB.mib

  • Removal of SNMP Agent

  • Remove the Java EE and CORBA Modules

  • Removal of JavaFX from the Oracle JDK

  • Removal of JMC from the Oracle JDK

  • Removal of Java Deployment Technologies

  • 更多請查看官網(wǎng)

升級建議(重要)

從Java 11后Oracle不再單獨發(fā)布JRE和Server JRE了,并統(tǒng)一JDK名稱為:Oracle JDK?。

另外Java 11及之后的版本,將不會再發(fā)布對32位操作系統(tǒng)支持的版本。

教你怎么從Java8升級到Java11

新舊項目不同策略

新啟的Java項目建議直接從Oracle JDK 11開始搭建,千萬不要猶豫,因為技術(shù)都是越新越強的。Java8就像晚期的大眾,而Java11卻是新興的特斯拉。

歷史的項目如果只是維護的話,干脆就放著運行不要動好了,等哪天決定重構(gòu)了再考慮升級到Java11。因為最大的問題不是自己公司開發(fā)的Code不能遷移到高版本,而是項目中引入的第三方Jar,這個東西搞起來十分頭疼。焦作國醫(yī)堂胃腸醫(yī)院怎么樣:http://jz.lieju.com/zhuankeyiyuan/37174739.htm

JDK升級分析工具

升級最擔(dān)心的就是被刪除的模塊!

推薦IBM公司Liberty團隊提供了一個十分好用的檢測Toolkit程序,可以掃描應(yīng)用程序二進制文件(.war),發(fā)現(xiàn)的任何潛在的Java 11問題并生成Html報告。絕對的大利器,詳細內(nèi)容直接查看IBM官方介紹:Scanner Kit。

直接運行java -jar binaryAppScannerInstaller.jar,按步驟安裝有個lisence聲明和目錄指定,默認目錄名wamt。

教你怎么從Java8升級到Java11

參考文檔中會有使用詳細介紹,也可以參考下面測試例子(掃描很慢,要些耐心等):

java -jar binaryAppScanner.jar Root.war --analyzeJavaSE --sourceJava=oracle8 --targetJava=java11 --output=./java11/RootReport.html

查看幫助命令:

java -jar binaryAppScanner.jar Root.war --help --all

教你怎么從Java8升級到Java11

報告結(jié)果如下:

教你怎么從Java8升級到Java11

教你怎么從Java8升級到Java11

教你怎么從Java8升級到Java11

教你怎么從Java8升級到Java11

教你怎么從Java8升級到Java11

JDK不同于OpenJDK

推薦Oracle JDK,因為更加穩(wěn)定可靠。

  • 只有Oracle JDK支持Solaris系統(tǒng);

  • 只有Oracle JDK才支持msi這樣的安裝程序;

  • Oracle JDK版本將每三年發(fā)布一次,而OpenJDK版本每三個月發(fā)布一次;

  • OpenJDK 是一個參考模型并且是完全開源的,而Oracle JDK是 OpenJDK的一個實現(xiàn),并不是完全開源的;

  • Oracle JDK 比 OpenJDK 更穩(wěn)定。OpenJDK和Oracle JDK的代碼幾乎相同,但建議您選擇Oracle JDK,因為它經(jīng)過了徹底的測試和穩(wěn)定修復(fù);

  • 在響應(yīng)性和JVM性能方面,Oracle JDK與OpenJDK相比提供了更好的性能;

  • Oracle JDK不會為即將發(fā)布的版本提供長期支持,用戶每次都必須通過更新到最新版本獲得支持來獲取最新版本;

  • Oracle JDK根據(jù)二進制代碼許可協(xié)議獲得許可,而OpenJDK根據(jù)GPL v2許可獲得許可。Oracle公司很善于打官司,所以這點很重要。https://www.jianshu.com/p/77c2ae79d38b

教你怎么從Java8升級到Java11

名稱欄目:教你怎么從Java8升級到Java11
URL分享:http://muchs.cn/article10/pppego.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版小程序開發(fā)、ChatGPT、搜索引擎優(yōu)化、面包屑導(dǎo)航、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)