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"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章