Java近期新聞:Micronaut,Quarkus,JDK 18,Spring HATEOAS和JKDMon

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於Java業界動態彙編,本週(2021年11月22日版)是相對平靜的一週。關注焦點是OpenJDK JEP、JDK 18、織機項目(Project Loom)Build 18-loom+6-282、Spring HATEOAS 1.4、Micronaut 3.2、Quarkus 2.5.0、 Apache Camel Quarkus 2.5.0和JDKMon 17.0.14。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"OpenJDK"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 419,即"},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/419","title":null,"type":null},"content":[{"type":"text","text":"外部語言交互(Foreign Function)和Memory API(第二輪孵化)"}]},{"type":"text","text":",已結束審查,在JDK 18中的狀態從“"},{"type":"text","marks":[{"type":"strong"}],"text":"Proposed to Target"},{"type":"text","text":"”"},{"type":"link","attrs":{"href":"https:\/\/mail.openjdk.java.net\/pipermail\/jdk-dev\/2021-November\/006251.html","title":null,"type":null},"content":[{"type":"text","text":"提升到"}]},{"type":"text","text":"“"},{"type":"text","marks":[{"type":"strong"}],"text":"Targeted"},{"type":"text","text":"”。JEP 419是直接從JDK 17中交付的JEP 412演化而來,即"},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/412","title":null,"type":null},"content":[{"type":"text","text":"外部語言交互和Memory API(第一輪孵化)"}]},{"type":"text","text":",是對Java社區反饋的進一步改進。第二輪孵化中的改進涉及:支持更豐富的內存訪問變量句柄承載器(carrier),例如"},{"type":"codeinline","content":[{"type":"text","text":"boolean"}]},{"type":"text","text":"和"},{"type":"link","attrs":{"href":"https:\/\/docs.oracle.com\/en\/java\/javase\/14\/docs\/api\/jdk.incubator.foreign\/jdk\/incubator\/foreign\/MemoryAddress.html","title":null,"type":null},"content":[{"type":"text","text":"MemoryAddress"}]},{"type":"text","text":"接口;爲"},{"type":"codeinline","content":[{"type":"text","text":"MemoryAddress"}]},{"type":"text","text":"和"},{"type":"link","attrs":{"href":"https:\/\/docs.oracle.com\/en\/java\/javase\/14\/docs\/api\/jdk.incubator.foreign\/jdk\/incubator\/foreign\/MemorySegment.html","title":null,"type":null},"content":[{"type":"text","text":"MemorySegment"}]},{"type":"text","text":"接口提供更通用的解引用(dereference)API;簡化了獲取向下調用(downcall)方法句柄的API,無需傳遞"},{"type":"link","attrs":{"href":"https:\/\/docs.oracle.com\/javase\/7\/docs\/api\/java\/lang\/management\/MemoryType.html","title":null,"type":null},"content":[{"type":"text","text":"MemoryType"}]},{"type":"text","text":"枚舉類型;新提供了從內存段拷入拷出Java數組的API。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,JDK 18中JEP 420(即"},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/420","title":null,"type":null},"content":[{"type":"text","text":"switch中的模式匹配(第二版預覽)"}]},{"type":"text","text":")的狀態同樣從“"},{"type":"text","marks":[{"type":"strong"}],"text":"Proposed to Target"},{"type":"text","text":"”"},{"type":"link","attrs":{"href":"https:\/\/mail.openjdk.java.net\/pipermail\/jdk-dev\/2021-November\/006252.html","title":null,"type":null},"content":[{"type":"text","text":"提升到"}]},{"type":"text","text":"“"},{"type":"text","marks":[{"type":"strong"}],"text":"Targeted"},{"type":"text","text":"”。JEP 420是JDK 17交付的JEP 406("},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/406","title":null,"type":null},"content":[{"type":"text","text":"switch中的模式匹配(第一版預覽)"}]},{"type":"text","text":"的第二版預覽,支持"},{"type":"codeinline","content":[{"type":"text","text":"switch"}],"marks":[{"type":"strong"}]},{"type":"text","text":"表達式驗證多組模式,可根據數據精準地表達複雜的查詢,進而採取對應的行動。JEP 420中的改進涉及:對"},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/420#1b--Dominance-of-pattern-labels","title":null,"type":null},"content":[{"type":"text","text":"支配性檢查(dominance checking)"}]},{"type":"text","text":"的改進,強制常量標籤"},{"type":"codeinline","content":[{"type":"text","text":"case"}]},{"type":"text","text":"的出現先於同類型保護性模式(guarded pattern);使用密封(sealed)層級實現更精準的"},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/420#2--Exhaustiveness-of-switch-expressions-and-statements","title":null,"type":null},"content":[{"type":"text","text":"switch語句塊有儘性(exhaustiveness)檢查"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Oracle Java語言架構師"},{"type":"link","attrs":{"href":"https:\/\/www.linkedin.com\/in\/briangoetz","title":null,"type":null},"content":[{"type":"text","text":"Brian Goetz"}]},{"type":"text","text":"曾在2017年9月對此"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/news\/2017\/09\/pattern-matching-for-java\/","title":null,"type":null},"content":[{"type":"text","text":"接受過InfoQ專訪"}]},{"type":"text","text":",此時模式匹配尚處概念原型(PoC)階段。而操作符"},{"type":"codeinline","content":[{"type":"text","text":"instanceof"}]},{"type":"text","text":"的模式匹配功能,實現在"},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/projects\/jdk\/16\/","title":null,"type":null},"content":[{"type":"text","text":"JDK 16"}]},{"type":"text","text":"交付的"},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/394","title":null,"type":null},"content":[{"type":"text","text":"JEP 394"}]},{"type":"text","text":"中。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"JDK 18"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JDK 18"},{"type":"link","attrs":{"href":"https:\/\/jdk.java.net\/18\/","title":null,"type":null},"content":[{"type":"text","text":"先期訪問構建版(early-access builds)"}]},{"type":"text","text":"針對Build 24中的"},{"type":"link","attrs":{"href":"https:\/\/bugs.openjdk.java.net\/issues\/?jql=project%20%3D%20JDK%20AND%20fixversion%20%3D%2018%20and%20%22resolved%20in%20build%22%20%3D%20b25%20order%20by%20component%2C%20subcomponent","title":null,"type":null},"content":[{"type":"text","text":"多個問題"}]},{"type":"text","text":"做了關鍵更新,並於上週公開提供"},{"type":"link","attrs":{"href":"https:\/\/github.com\/openjdk\/jdk\/releases\/tag\/jdk-18%2B25","title":null,"type":null},"content":[{"type":"text","text":"Build 25"}]},{"type":"text","text":"。具體細節,可參見“"},{"type":"link","attrs":{"href":"https:\/\/jdk.java.net\/18\/release-notes","title":null,"type":null},"content":[{"type":"text","text":"發行說明"}]},{"type":"text","text":"”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下面列出了"},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/projects\/jdk\/18\/","title":null,"type":null},"content":[{"type":"text","text":"JDK 18"}]},{"type":"text","text":"當前的特性集:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 400: "},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/400","title":null,"type":null},"content":[{"type":"text","text":"缺省UTF-8"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 408: "},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/408","title":null,"type":null},"content":[{"type":"text","text":"簡化版Web服務器"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 413: "},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/413","title":null,"type":null},"content":[{"type":"text","text":"Java API文檔中的代碼片段"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 416: "},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/416","title":null,"type":null},"content":[{"type":"text","text":"使用方法句柄(Method Handle)重新實現Core Reflection機制"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 417: "},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/417","title":null,"type":null},"content":[{"type":"text","text":"Vector API(第三輪孵化)"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 418: "},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/418","title":null,"type":null},"content":[{"type":"text","text":"因特網地址解析SPI協議"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 419: "},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/419","title":null,"type":null},"content":[{"type":"text","text":"外部語言交互(Foreign Function)和Memory API(第二輪孵化)"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"JEP 420: "},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/420","title":null,"type":null},"content":[{"type":"text","text":"switch語句的模式匹配(第二版預覽)"}]}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"鼓勵開發人員通過"},{"type":"link","attrs":{"href":"https:\/\/bugreport.java.com\/bugreport\/","title":null,"type":null},"content":[{"type":"text","text":"Java Bug Database"}]},{"type":"text","text":"上報軟件缺陷。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"織機項目(Project Loom)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"織機項目"},{"type":"link","attrs":{"href":"https:\/\/jdk.java.net\/loom\/","title":null,"type":null},"content":[{"type":"text","text":"先期訪問構建版"}]},{"type":"text","text":"已向Java社區公開提供了Build 18-loom+6-282,該版本基於JDK 18先期訪問構建版的"},{"type":"link","attrs":{"href":"https:\/\/github.com\/openjdk\/jdk\/releases\/tag\/jdk-18%2B24","title":null,"type":null},"content":[{"type":"text","text":"Build 24"}]},{"type":"text","text":"。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"Spring框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/spring.io\/projects\/spring-hateoas","title":null,"type":null},"content":[{"type":"text","text":"Spring HATEOAS"}]},{"type":"text","text":" 1.4於上週"},{"type":"link","attrs":{"href":"https:\/\/spring.io\/blog\/2021\/11\/22\/spring-hateoas-1-4-released","title":null,"type":null},"content":[{"type":"text","text":"發佈"}]},{"type":"text","text":",這是Spring團隊過去數週持續努力中可圈可點的工作。其中的新特性包括:支持level 4 URI模板;支持非組合請求參數(RequestParameter)渲染;改進了對"},{"type":"link","attrs":{"href":"https:\/\/rwcbook.github.io\/hal-forms\/","title":null,"type":null},"content":[{"type":"text","text":"HAL-FORMS"}]},{"type":"text","text":"媒體類型的支持;支持更豐富的HTML輸入類型;對Spring Framework 5.3.13和Jackson 2.13.9的依賴升級。更多細節,參見“"},{"type":"link","attrs":{"href":"https:\/\/docs.spring.io\/spring-hateoas\/docs\/1.4.0\/changelog.txt","title":null,"type":null},"content":[{"type":"text","text":"變更日誌"}]},{"type":"text","text":"”。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"Micronaut"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/micronaut.io\/foundation\/","title":null,"type":null},"content":[{"type":"text","text":"Micronaut基金會"}]},{"type":"text","text":"已發佈Micronaut 3.2,主要特性包括對GraalVM 21.3.0、Gradle Plugin 3.0.0、Kotlin 1.6.0和一衆HTTP特性的支持,以及對"},{"type":"link","attrs":{"href":"https:\/\/micronaut-projects.github.io\/micronaut-data\/latest\/guide\/","title":null,"type":null},"content":[{"type":"text","text":"Micronaut Data"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/micronaut-projects.github.io\/micronaut-security\/latest\/guide\/","title":null,"type":null},"content":[{"type":"text","text":"Micronaut Security"}]},{"type":"text","text":", "},{"type":"link","attrs":{"href":"https:\/\/micronaut-projects.github.io\/micronaut-kubernetes\/latest\/guide\/","title":null,"type":null},"content":[{"type":"text","text":"Micronaut Kubernetes"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/micronaut-projects.github.io\/micronaut-elasticsearch\/latest\/guide\/","title":null,"type":null},"content":[{"type":"text","text":"Micronaut Elasticsearch"}]},{"type":"text","text":"等部分自身模塊等升級。更多細節,參見"},{"type":"link","attrs":{"href":"https:\/\/docs.micronaut.io\/3.2.0\/guide\/","title":null,"type":null},"content":[{"type":"text","text":"官方文檔"}]},{"type":"text","text":"。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"Quarkus"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Red Hat已"},{"type":"link","attrs":{"href":"https:\/\/quarkus.io\/blog\/quarkus-2-5-0-final-released\/","title":null,"type":null},"content":[{"type":"text","text":"發佈"}]},{"type":"text","text":" Quarkus 2.5.0.Final,其中特性包括:對"},{"type":"link","attrs":{"href":"https:\/\/github.com\/graalvm\/mandrel\/blob\/default\/README.md","title":null,"type":null},"content":[{"type":"text","text":"Mandrel 21.3"}]},{"type":"text","text":"依賴的升級;"},{"type":"link","attrs":{"href":"https:\/\/www.graalvm.org\/","title":null,"type":null},"content":[{"type":"text","text":"GraalVM"}]},{"type":"text","text":"社區版的下游衍生版;支持原生模式的JPA EntityListeners for "},{"type":"link","attrs":{"href":"https:\/\/hibernate.org\/orm\/","title":null,"type":null},"content":[{"type":"text","text":"Hibernate ORM"}]},{"type":"text","text":";使用"},{"type":"codeinline","content":[{"type":"text","text":"quarkus.http.header"}]},{"type":"text","text":"屬性將"},{"type":"link","attrs":{"href":"http:\/\/quarkus.io\/guides\/http-reference#additional-http-headers","title":null,"type":null},"content":[{"type":"text","text":"HTTP頭部添加到"}]},{"type":"text","text":"服務器響應中;對Quarkus"},{"type":"link","attrs":{"href":"https:\/\/quarkus.pro\/extensions\/","title":null,"type":null},"content":[{"type":"text","text":"擴展"}]},{"type":"text","text":"、開發模式和測試框架在可用性上的改進。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"Apache Camel"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲與"},{"type":"link","attrs":{"href":"https:\/\/quarkus.io\/","title":null,"type":null},"content":[{"type":"text","text":"Quarkus"}]},{"type":"text","text":"保持一致,"},{"type":"link","attrs":{"href":"https:\/\/quarkus.io\/guides\/camel","title":null,"type":null},"content":[{"type":"text","text":"Camel Quarkus"}]},{"type":"text","text":" 2.5.0版"},{"type":"link","attrs":{"href":"https:\/\/camel.apache.org\/blog\/2021\/11\/camel-quarkus-release-2.5.0\/","title":null,"type":null},"content":[{"type":"text","text":"發佈"}]},{"type":"text","text":"了Quarkus 2.5.0.Final版的Apache Camel 3.13.0平臺,在測試覆蓋和文檔上做了一定改進。更多細節,參見“"},{"type":"link","attrs":{"href":"https:\/\/github.com\/apache\/camel-quarkus\/milestone\/21?closed=1","title":null,"type":null},"content":[{"type":"text","text":"問題列表"}]},{"type":"text","text":"”。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"JDKMon"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/HanSolo\/JDKMon","title":null,"type":null},"content":[{"type":"text","text":"JDKMon"}]},{"type":"text","text":"的"},{"type":"link","attrs":{"href":"https:\/\/github.com\/HanSolo\/JDKMon\/releases\/tag\/17.0.14","title":null,"type":null},"content":[{"type":"text","text":"最新版17.0.14"}]},{"type":"text","text":"已向Java社區公開提供。JDKMon是一款對已安裝JDK進行監控和更新的新工具,由Azul首席工程師"},{"type":"link","attrs":{"href":"https:\/\/de.linkedin.com\/in\/gerritgrunwald","title":null,"type":null},"content":[{"type":"text","text":"Gerrit Grunwald"}]},{"type":"text","text":"創建。新版交付的特性包括:在搜索路徑中自動添加由SDKMAN!代理的"},{"type":"link","attrs":{"href":"https:\/\/sdkman.io\/jdks","title":null,"type":null},"content":[{"type":"text","text":"JDK發行版"}]},{"type":"text","text":"以及所有相關Java目錄;對任何可用更新給出說明發行細節的鏈接。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/news\/2021\/11\/java-news-roundup-nov22-2021\/","title":null,"type":null},"content":[{"type":"text","text":"Java News Roundup: Micronaut 3.2, Quarkus 2.5, JDK 18, Spring HATEOAS 1.4, JKDMon 17.0.14"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章