目前最新JDK 11,Oracle會一直維護(hù)到2026年。
成都創(chuàng)新互聯(lián)成立十多年來,這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計、空間域名、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗好、性價比高、打開快等等,這些對于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)通過對建站技術(shù)性的掌握、對創(chuàng)意設(shè)計的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
Unicode 10(version 10.0 of the Unicode Standard),Unicode是一個不斷在演進(jìn)的行業(yè)標(biāo)準(zhǔn),Java一直在與它保持一致兼容。
Java8已經(jīng)更新了Unicode8.0-9.0,Java10更新后將達(dá)到16018個characters、18種blocks和10種scripts。
原來作為jdk補(bǔ)充的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
java.util.Collection增加新方法toArray(IntFunction),集合轉(zhuǎn)數(shù)組的不二之選。
String增加lines\stripLeading\stripTrailing等,一般項目都有StringUtils類。
java.io.InputStream增加構(gòu)造方法
java.nio包下面很大類擴(kuò)展了方法Channels\XXXBuffer等
推薦一篇博客:Java 11 新增 API 初探,總結(jié)的比較細(xì)致。
JVM啟動參數(shù)新增-XX:+UseDynamicNumberOfCompilerThreads
,動態(tài)的控制編程線程的數(shù)量,原來的編譯線程默認(rèn)會啟動大量造成cpu和memory浪費。
低功耗可擴(kuò)展GC(ZGC)模塊是一個試驗性的并發(fā)GC,在線程執(zhí)行是ZGC會做一些重型回收工作,如string表清理等。執(zhí)行周期在10ms內(nèi),處理heaps大小從MB到TB范圍,目前只能支持linux和x64系統(tǒng),除此外還有個處理memory分配的Epsilon GZ,有興趣的可以自己研究。
提供了一個低負(fù)載的堆分配采集分析程序:JVMTI,默認(rèn)啟動方案可以持續(xù)工作且不造成服務(wù)器壓力,面向接口編程,能夠收集活著和死去的對象信息。
簡稱TLS1.3是網(wǎng)絡(luò)傳輸層協(xié)議,需要注意的它不兼容歷史版本而且官方承認(rèn)有風(fēng)險,希望后續(xù)能不斷優(yōu)化。
嵌套是一種訪問控制上下文,它允許多個class同屬一個邏輯代碼塊,但是被編譯成多個分散的class文件,它們訪問彼此的私有成員無需通過編譯器添加訪問擴(kuò)展方法。
例子:
/** ?*?@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()
對PKCS#1 v2.2內(nèi)提供更多算法,如RSASSA-PSS簽名算法。同時新增ChaCha20和Poly1305密碼算法,通過Cipher.getInstance?
使用。還有 Curve25519和Curve448被添加。AES128和265也支持了Kerberos 5 encryption。
簡單理解就是lambda表達(dá)式的變量申明可以用var。
lst.forEach((var?x)?->?{ System.out.print(x); });
單個的*.java文件可以直接用java命令來執(zhí)行,格式:java HelloWorld.java
。
Jvm啟動參數(shù):-XX:StartFlightRecording
Java11中將這款原來商用的工具集成到j(luò)dk標(biāo)準(zhǔn)中了,它是一種低開銷的事件信息收集框架,用來對應(yīng)用程序和JVM 進(jìn)行故障檢查、分析,收集應(yīng)用程序、JVM 和 OS的數(shù)據(jù)并保存在單獨的事件記錄文件中,故障發(fā)生后,能夠從事件記錄文件中提取出有用信息對故障進(jìn)行分析。
還有很多其他更新就不一一介紹了,這些都是JDK標(biāo)準(zhǔn)包支持的基礎(chǔ)能力,得感謝Oracle持續(xù)對JDK發(fā)布的支持。完整的jdk11變化清單可以去官網(wǎng)查看;
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)支持的版本。
新啟的Java項目建議直接從Oracle JDK 11開始搭建,千萬不要猶豫,因為技術(shù)都是越新越強(qiáng)的。Java8就像晚期的大眾,而Java11卻是新興的特斯拉。
歷史的項目如果只是維護(hù)的話,干脆就放著運行不要動好了,等哪天決定重構(gòu)了再考慮升級到Java11。因為最大的問題不是自己公司開發(fā)的Code不能遷移到高版本,而是項目中引入的第三方Jar,這個東西搞起來十分頭疼。焦作國醫(yī)堂胃腸醫(yī)院怎么樣:http://jz.lieju.com/zhuankeyiyuan/37174739.htm
升級最擔(dān)心的就是被刪除的模塊!
推薦IBM公司Liberty團(tuán)隊提供了一個十分好用的檢測Toolkit程序,可以掃描應(yīng)用程序二進(jìn)制文件(.war),發(fā)現(xiàn)的任何潛在的Java 11問題并生成Html報告。絕對的大利器,詳細(xì)內(nèi)容直接查看IBM官方介紹:Scanner Kit。
直接運行java -jar binaryAppScannerInstaller.jar
,按步驟安裝有個lisence聲明和目錄指定,默認(rèn)目錄名wamt
。
參考文檔中會有使用詳細(xì)介紹,也可以參考下面測試?yán)樱⊕呙韬苈?,要些耐心等)?/p>
java -jar binaryAppScanner.jar Root.war --analyzeJavaSE --sourceJava=oracle8 --targetJava=java11 --output=./java11/RootReport.html
查看幫助命令:
java -jar binaryAppScanner.jar Root.war --help --all
報告結(jié)果如下:
推薦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ù)二進(jìn)制代碼許可協(xié)議獲得許可,而OpenJDK根據(jù)GPL v2許可獲得許可。Oracle公司很善于打官司,所以這點很重要。https://www.jianshu.com/p/77c2ae79d38b
名稱欄目:教你怎么從Java8升級到Java11
URL分享:http://jinyejixie.com/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)