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