Java近期新闻:OpenJDK JEP、Spring更新、Payara平台和Kotlin 1.6

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2021年11月15日起始周Java新闻更新:OpenJDK JEP、JDK 18、Loom项目、多个Spring单点版本、MicroProfile 5.0-RC2、Payara平台、一个新的Jakarta EE规范提议、JHipster 7.4.0、TornadoVM 0.12、Apache Camel K 1.7和Kotlin 1.6.0。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"OpenJDK"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/419?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"JEP 419"}]},{"type":"text","text":",即外部函数和内存API(第二个孵化器),从Candidate阶段进入到Proposed to Target阶段。该JEP从JEP 412(第一个孵化器,包含在JDK 17中)演化而来,根据Java社区的反馈做了改进,变化包括:支持更多的内存访问句柄,如boolean和MemoryAddress接口;更通用的MemoryAddress和MemorySegment接口解除引用API;更简单的用于获取下行调用方法句柄的API,不再需要传递MemoryType枚举;用于从内存段拷贝Java数组(以及将Java数组拷贝到内存段)的新API。JEP 419的评审将在2021年11月23号结束。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/420?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"JEP 420"}]},{"type":"text","text":",即switch模式匹配(第二个预览版),从Candidate阶段进入到Proposed to Target阶段。该JEP允许在switch表达式中使用多种模式,每一个模式对应一个特定的动作,支持复杂的面向对象查询。这是JEP 406(第一个预览版,包含在JDK 17中)之后的第二个预览版,增强的地方包括:改进了支配地位检查(Dominance Checking),要求在统一类型的防御模式之前放置一个常量case标签;switch代码块的穷尽性检查比之前更加精细。JEP 420的评审将在2021年11月23号结束。"}]},{"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语言架构师Brian Goetz在2017年10月份的一次InfoQ采访中表示模式匹配还处在概念验证阶段。instanceof的模式匹配("},{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/394?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"JEP 394"}]},{"type":"text","text":")包含在JDK 16中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/openjdk.java.net\/jeps\/422?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"JEP 422"}]},{"type":"text","text":",即Linux\/RISC-V移植,从Draft阶段进入到Candidate阶段。该JEP是关于将JDK移植到Linux\/RISC-V,一个免费开源的RISC指令集架构。移植版本将支持模板解释、C1和C2 JIT编译器,以及目前所有主流的垃圾回收器,包括ZGC和Shenandoah。该JEP的主要目标是将移植版本集成到JDK的主线代码库中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"JDK 18"}]},{"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尝鲜构建版本"},{"type":"link","attrs":{"href":"https:\/\/github.com\/openjdk\/jdk\/releases\/tag\/jdk-18%2B24?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Build 24"}]},{"type":"text","text":"可用,相比Build 23,这次的主要更新包括对各种问题的修复。更多细节可参看"},{"type":"link","attrs":{"href":"https:\/\/jdk.java.net\/18\/release-notes?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","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":"JDK 18目前的特性集合如下:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"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?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"默认字符集为UTF-8"}]},{"type":"text","text":";"}]}]},{"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?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Simple Web Server"}]},{"type":"text","text":";"}]}]},{"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?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Java API文档中加入了代码片段"}]},{"type":"text","text":";"}]}]},{"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?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"通过方法句柄重新实现代码反射"}]},{"type":"text","text":";"}]}]},{"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?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Vector API(第三个孵化器)"}]},{"type":"text","text":";"}]}]},{"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?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"网路地址解析SPI"}]},{"type":"text","text":";"}]}]},{"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?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"外部函数和内存API (第二个孵化器)"}]},{"type":"text","text":";"}]}]},{"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?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"switch模式匹配(第二个预览版)"}]},{"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:\/\/bugreport.java.com\/bugreport\/?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Java Bug Database"}]},{"type":"text","text":"提交bug。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Loom项目"}]},{"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":"Loom"},{"type":"link","attrs":{"href":"https:\/\/jdk.java.net\/loom?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"早期尝鲜"}]},{"type":"text","text":"18-loom+5-274构建版可用,该版本基于JDK 18早期尝鲜版Build 22构建。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Spring Framework"}]},{"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":"过去繁忙的一周,Spring团队的多个子项目发布了单点版本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/spring.io\/blog\/2021\/11\/19\/spring-boot-2-6-is-now-available?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Spring Boot 2.6"}]},{"type":"text","text":"发布,将依赖项Spring Data升级到2021.1、Spring HATEOAS升级到1.4、Spring AMQP升级到2.4、Spring Kafka升级到2.8、Spring Security升级到5.6、Spring Session升级到2021.1。其他新特性包括:增强的\/info端点,加入了Java运行时信息;支持使用WebTestClient接口来测试Spring MVC应用程序。"}]},{"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":"Spring Boot "},{"type":"link","attrs":{"href":"https:\/\/spring.io\/blog\/2021\/11\/18\/spring-boot-2-4-13-available-now?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"2.4.13"}]},{"type":"text","text":"和"},{"type":"link","attrs":{"href":"https:\/\/spring.io\/blog\/2021\/11\/18\/spring-boot-2-5-7-is-now-available?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"2.5.7"}]},{"type":"text","text":"发布,分别包含了26个问题修复和35个问题修复,以及文档改进和依赖项升级。"}]},{"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":"在发布了3个里程碑和一个候选版本之后,Spring Security 5.6.0正式可用,特性包括:一个新的SecurityContextChangedListener接口,可以作为Lambda表达式或方法引用的赋值目标;支持SAML 2.0单点登出;支持将TestSecurityContextHolder传播给SecurityContextHolder。更多细节可在"},{"type":"link","attrs":{"href":"https:\/\/docs.spring.io\/spring-security\/reference\/whats-new.html?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","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":"Spring Cloud Netflix发布"},{"type":"link","attrs":{"href":"https:\/\/spring.io\/blog\/2021\/11\/17\/spring-cloud-netflix-version-2-2-10-release-is-now-available?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"2.2.10.RELEASE"}]},{"type":"text","text":"版本,解决了"},{"type":"link","attrs":{"href":"https:\/\/tanzu.vmware.com\/security\/cve-2021-22053?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"CVE-2021-22053"}]},{"type":"text","text":"漏洞,该漏洞允许执行通过\/hystrix\/monitor;[user-provided data]提交的代码(在使用spring-cloud-netflix-hystrix-dashboard和spring-boot-starter-thymeleaf解析视图模板时)。"}]},{"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":"Spring Batch发布4.3.4和4.2.8版本,修复了一些问题:确保JobParameters类定义的getParameters()方法返回的是不可变的参数;修复了在调用MethodInvokingTaskletAdapter和NamedParameterJdbcTemplate类时抛出的“IllegalArgumentException: Only 1 out of 2 arguments could be assigned”异常;确保在SimpleJobExplorer中定义的getLastJobExecution()方法可以拿到单步执行任务和执行上下文。"}]},{"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":"Spring Kafka发布"},{"type":"link","attrs":{"href":"https:\/\/spring.io\/blog\/2021\/11\/18\/spring-for-apache-kafka-2-8-is-now-available?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"2.8"}]},{"type":"text","text":"版本,特性包括:支持乱序的手动提交;一系列新的常见错误处理器取代了单独的record和batch错误处理器;KafkaTemplate类现在可用于接收已知分区的记录。"}]},{"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":"Spring AMQP发布"},{"type":"link","attrs":{"href":"https:\/\/spring.io\/blog\/2021\/11\/18\/spring-amqp-spring-for-rabbitmq-2-4-is-now-available?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"2.4"}]},{"type":"text","text":"版本,初步支持RabbitMQ Stream Plugin,并宣布弃用Spring Remote Method Invocation(RMI)。更多细节可以在版本公告中找到。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"MicroProfile 5.0之路"}]},{"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":"在迈向MicroProfile 5.0的道路上,MicroProfile工作服发布了第二个候选版本,其中包含了由社区开发的8个规范:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eclipse\/microprofile-config\/releases\/tag\/3.0-RC5?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Config 3.0-RC5"}]},{"type":"text","text":";"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eclipse\/microprofile-health\/releases\/tag\/4.0-RC3?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Health 4.0-RC3"}]},{"type":"text","text":";"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eclipse\/microprofile-fault-tolerance\/releases\/tag\/4.0-RC5?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Fault Tolerance 4.0-RC5"}]},{"type":"text","text":";"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eclipse\/microprofile-metrics\/releases\/tag\/4.0-RC4?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Metrics 4.0-RC4"}]},{"type":"text","text":";"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eclipse\/microprofile-jwt-auth\/releases\/tag\/2.0-RC2?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"JWT 2.0-RC2"}]},{"type":"text","text":";"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eclipse\/microprofile-open-api\/releases\/tag\/3.0-RC5?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"OpenAPI 3.0-RC5"}]},{"type":"text","text":";"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eclipse\/microprofile-opentracing\/releases\/tag\/3.0-RC4?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"OpenTracing 3.0-RC4"}]},{"type":"text","text":";"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eclipse\/microprofile-rest-client\/releases\/tag\/3.0-RC5?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"RestClient 3.0-RC5"}]},{"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:\/\/jakarta.ee\/specifications\/platform\/9.1?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Jakarta EE 9.1"}]},{"type":"text","text":"看齐。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Payara"}]},{"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":"Payara"},{"type":"link","attrs":{"href":"https:\/\/blog.payara.fish\/whats-new-november-2021-payara-platform-release?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"发布"}]},{"type":"text","text":"了2021年11月份版本的Payara Platform。Payara Platform Community 5.2021.9包含了11项改进、6个问题修复和11项组件升级。Payara Platform Enterprise 5.33.0包含了4项改进、4个问题修复和两项组件升级。社区版已支持JDK 17,针对企业版还在做进一步的测试,以保证稳定性。两个版本都做出了一个重大变化,即移除了TLS 1.0和TLS 1.1协议,默认情况下禁用。"}]},{"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:\/\/docs.payara.fish\/community\/docs\/release-notes\/release-notes-2021-9.html?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"社区版"}]},{"type":"text","text":"和"},{"type":"link","attrs":{"href":"https:\/\/docs.payara.fish\/enterprise\/docs\/release-notes\/release-notes-33-0.html?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"企业版"}]},{"type":"text","text":"的版本公告中找到。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Jakarta EE"}]},{"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":"Jakarta EE工作组提出制定一个新的Jakarta EE规范——Jakarta Commons,用于处理常见的API、功能和开发库,确保规范的一致性。工作组正在通过这份"},{"type":"link","attrs":{"href":"https:\/\/docs.google.com\/document\/d\/19eN3pQxtoMNoiqEKasPzbuTjUcYBC4pS0TGT12lVE3Y\/edit?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"文档"}]},{"type":"text","text":"向Java社区收集反馈。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"JHipster"}]},{"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":"JHipster"},{"type":"link","attrs":{"href":"https:\/\/www.jhipster.tech\/2021\/11\/19\/jhipster-release-7.4.0.html?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"发布"}]},{"type":"text","text":"7.4.0版本,修复了User实体的关系名称,支持ECMAScript Modules(ESM)和Vue微前端架构,将React JHipster库更新成Bootstrap 5.0,在作为OAuth 2.0资源服务器时可以处理Auth0的认证信息。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"TornadoVM"}]},{"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":"TornadoVM是一家开源软件公司,发布了TornadoVM "},{"type":"link","attrs":{"href":"https:\/\/github.com\/beehive-lab\/TornadoVM\/releases\/tag\/v0.12?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"0.12"}]},{"type":"text","text":"版本,特性包括:一个新的后端,用于SPIR-V的Level Zero分配器;一个改进的基准测试框架;基准测试框架中增加了新的指标,内核时间(kernel time)和数据传输(data transfers);改进的分析器,加入了新的命令行选项--enableProfiler 和--dumpProfiler 。"}]},{"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":"曼彻斯特大学高级处理器技术研究小组研究员Juan Fumero在2020年3月伦敦QCon大会上"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/presentations\/tornadovm-java-gpu-fpga?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"介绍"}]},{"type":"text","text":"了TornadoVM,并为InfoQ的"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/articles\/tornadovm-java-gpu-fpga?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","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":"一个基于Docker的示例应用程序可以在GitHub"},{"type":"link","attrs":{"href":"https:\/\/github.com\/beehive-lab\/docker-tornado?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"代码库"}]},{"type":"text","text":"中找到。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Apache Camel K"}]},{"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":"Apache Camel K发布"},{"type":"link","attrs":{"href":"https:\/\/github.com\/apache\/camel-k\/releases\/tag\/v1.7.0?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"1.7"}]},{"type":"text","text":"版本,特性包括:支持Quarkus Native Build和Kustomize,Apache Camel Kamelet Catalog中增加了新Kamelet。"}]},{"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":"Apache Camel K是一个轻量级集成框架,基于Apache Camel K Runtime 1.10.0、Apache Camel Quarkus 2.4.0、Apache Camel 3.12.0和Apache Camel Kamelets 0.5.0。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Kotlin"}]},{"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":"JetBrains"},{"type":"link","attrs":{"href":"https:\/\/blog.jetbrains.com\/kotlin\/2021\/11\/kotlin-1-6-0-is-released?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"发布"}]},{"type":"text","text":"Kotlin 1.6.0,带来了很多新特性:封印的when语句、改进的suspend函数类型和转换、注解类的初始化、改进的递归泛型类型推断。Kotlin\/JVM、KotlinJS和KotlinNative也得到了增强。开发者可以通过JetBrains布道师开发者Anton Arhipov在YouTube发布的"},{"type":"link","attrs":{"href":"https:\/\/www.youtube.com\/watch?v=6jrmcfYdfvI&accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","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","marks":[{"type":"strong"}],"text":"查看英文原文"},{"type":"text","text":":"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.com\/news\/2021\/11\/java-news-roundup-nov15-2021?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2Mzc5MDM2NzUsImciOiJiRzNYZ1pGOEx4czhVTmhuIiwiaWF0IjoxNjM3OTAzMzc1LCJ1c2VySWQiOjYyMzI4fQ.bAqIMudR3fuqeGKZ1_T3b1Gx40OD-IajPralXdY8kxY","title":null,"type":null},"content":[{"type":"text","text":"Java News Roundup: OpenJDK JEPs for JDK 18, Spring Updates, Payara Platform, Kotlin 1.6"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章