# 01-Javaå¼åçæ2024年度æ»ç»æ¥å ## 1 å ³é®è¦ç¹  - å°½ç®¡æ°æ®æ¾ç¤º Java 17 æ¯æå¸¸ç¨ JDKï¼ä½å ¶ç¨æ·å æ¯å¹¶æªè¶ è¿åæ°ãæ ¹æ® [New Relic 2024 Java çæç³»ç»ç¶ææ¥å](https://newrelic.com/resources/report/2024-state-of-the-java-ecosystem)ï¼Java 17ã11 å 8 çç¨æ·æ¯ä¾åå«ä¸º 35%ã33% å 29% - New Relic æ°æ®ä¸æè°âå¿«ééç¨âæ Java 21 çéç¨çä» ä¸º 1.4%ãè½ç¸è¾ Java 8 以æ¥çææ LTSï¼å¢é¿é度æ´å¿«ï¼ä½è¿æ¯ä¾ä»è¾ä½ - Java å·²è¶ è¶äºå ¶âç¼æ ¢âåâè¿æ¶âçä¼ ç»å½¢è±¡ï¼å½åæ£æ¾ç°åºææ¾åæ°å¨å - 2024 å¹´åå ³äº AI çâççæ¢ç´¢æâç°è±¡ææå¹³æ¯ï¼ä½ AI ä»ç¶æ¯çç¹è¯é¢ãç°å¨æåº¦æ´å·éï¼è®¤ä¸º AI å¹¶éâä¸è½é¤âï¼èæ¯éæ ¹æ®å ·ä½é®é¢åçåºç¨ - ä¸ä¸ªå为 Commonhaus Foundation çæ°éè¥å©ç»ç»è´åäºå¼æºåºåæ¡æ¶ç坿ç»åå±ï¼ä¸ºèªä¸»ç®¡çç弿ºé¡¹ç®æä¾ç»§ä»»è§ååè´¢æ¿æ¯æ - WebAssembly å¨ Java é¢åç»äºå¼å§è·å¾å ³æ³¨ï¼éæ¸èµ¶ä¸ Go å Rust çè¯è¨ççæç³»ç» æ¬æ¥åæ»ç»äº InfoQ Java ç¼è¾å¢é对 Java è¯è¨åå ¶ç¸å ³çæçè§å¯ï¼å æ¬ Java æ ¸å¿ææ¯çè¿æ¥ãæ°çæ¬çé纳æ åµï¼ä»¥å [Spring Framework](https://spring.io/projects/spring-framework)ã[Jakarta EE](https://jakarta.ee/)çæ¡æ¶çæ¼è¿ã è¿å¯æ¶å¬ç± Karakun é«çº§å¼åè [Ixchel Ruiz](https://www.linkedin.com/in/ixchelruiz/) å Decodable 软件工ç¨å¸ [Gunnar Morling](https://www.linkedin.com/in/gunnar-morling/) 主æç[æå®¢è®¨è®º](http://www.infoq.com/podcasts/insights-java-trends-report-2024)ï¼è·åå ³äº 2024 Java è¶å¿çæ´å¤è§è§£ã æ¬æ¥åæä¸¤ä¸ªä¸»è¦ç®æ ï¼ - 叮婿æ¯é¢å¯¼è ååºä¸é¿æææ¯æèµå³çã - 帮å©ä¸ªäººå¼åè éæ©å¦ä¹ åæè½åå±çéç¹é¢åï¼åçåé å®è´µçæ¶é´åèµæºã è¿æ¯ç¬¬å 份 Java è¶å¿æ¥åãèª 2006 年以æ¥ï¼æä»¬å·²å¼å§å é¨è¿½è¸ª Java å JVM çè¶å¿ï¼å¹¶å¯¹æ¤è¿è¡äºå¹¿æ³æ°é»æ¥éã 为帮å©è¯»è æ´å¥½çè§£å½ååæªæ¥ææ¯è¶å¿ï¼éç¨äº Geoffrey Moore å¨å ¶[åå书ç±](https://www.amazon.com/Crossing-Chasm-3rd-Disruptive-Mainstream/dp/0062292986)䏿åºçâè·¨è¶é¸¿æ²â模åãè¯å¾è¯å«åºç¬¦å Moore æå®ä¹çâæ©æå¸åºâçåæ°ï¼*âè¿ä¸å¸åºä¸»è¦ç±ææ¯ç±å¥½è åæ¿æ¯è ç»æï¼ä»ä»¬å¸ææ¢å å æºä»¥æä½æºä¼æåºå¯¹ç´§è¿«é®é¢ãâ* æ£å¦ [2023](https://www.infoq.com/articles/java-trends-report-2023/)ã[2022](https://www.infoq.com/articles/java-jvm-trends-2022/)ã[2021](https://www.infoq.com/articles/java-jvm-trends-2021/)ã[2020](https://www.infoq.com/articles/java-jvm-trends-2020/)ãå [2019](https://www.infoq.com/articles/java-jvm-trends-2019/) ç Java è¶å¿æ¥å䏿åç䏿 ·ï¼ä¸º 2024 å¹´æä¾äºä»¥ä¸å é¨ä¸»é¢å¾ï¼  以䏿¯ 2023 å¹´çåè主é¢å¾ï¼  - 计åäº 2024 å¹´ 11 ææ£å¼åå¸ç *Jakarta EE 11* è¿å ¥ **åæ°è **ç±»å«ï¼å ä¸ºå ¶ 16 项è§èç®åæ£å¨ç§¯æå¼åï¼å¹¶å·²å¨ä»å¹´éè¿äºå®¡æ¥ãèª 2024 å¹´ 6 æåå¸ *Jakarta EE 11-M4* çæ¬ä»¥æ¥ï¼å¼åè å·²ç»å¯ä»¥å°è¯ [Jakarta Security 4.0](https://jakarta.ee/specifications/security/4.0/)ã[Jakarta Validation 3.1](https://jakarta.ee/specifications/bean-validation/3.1/)ã以å [Jakarta Data 1.0](https://jakarta.ee/specifications/data/1.0/) çæ°ç¹æ§ã - å æ¤ï¼2022 å¹´ 9 æåå¸ç *Jakarta EE 10*ã2020 å¹´ 12 æåå¸ç *Jakarta EE 9* å 2019 å¹´ 9 æåå¸ç *Jakarta EE 8* åå«ç§»å¨è³ **æ©æéç¨è **ã**æ©æå¤æ°** å **ææå¤æ°**ç±»å«ã - *GraalPy* å *GraalWasm* è¿å ¥ **åæ°è **ç±»å«ãè¿ä¸¤ä¸ªé¡¹ç®å¨ [GraalVM for JDK 23](https://medium.com/graalvm/welcome-graalvm-for-jdk-23-203928491b2b) åå¸åï¼å·²è¢«è§ä¸ºç¨³å®ä¸éåç产使ç¨ã - éçæ´å¤æ¡æ¶ï¼å¦ SpringãJakarta EE å Helidonï¼ä»¥ Java 21 为åºç¡ï¼*Java 21* è½¬è³ **æ©æéç¨è **ç±»å«ï¼åæ¶ *Java 17* è¿å ¥ **æ©æå¤æ°**ç±»å«ã - Helidon å Vert.x æ¡æ¶å¨ææ°çæ¬ä¸å®ç°äºèæçº¿ç¨æå¡å¨ï¼*èæçº¿ç¨æ¡æ¶ï¼Helidon Nima å Vert.xï¼* è¢«è½¬ç§»è³ **æ©æéç¨è **ç±»å«ã - ç±äº Helidon æ¯æèæçº¿ç¨å¹¶åå¸äº [Helidon 4.0](https://medium.com/helidon/helidon-4-is-released-a06756e1562a)ï¼*Helidon* ç§»è³ **æ©æå¤æ°**ç±»å«ï¼è Helidon 3.0 å 2.0 仿¯æååºå¼æå¡å¨ã - ç±äº Scala 3 å¼åè¿å±ç¼æ ¢ï¼2021 å¹´ 5 æåå¸ç *Scala 3* ç§»è³ **ææå¤æ°**ç±»å«ã - Azul å BellSoft å®ç°äº CRaC ææ¯ï¼*å¿«é JVM å¯å¨ï¼CRaCï¼* è½¬è³ **æ©æéç¨è **ç±»å«ï¼åæ¶ *å¿«é JVM å¯å¨ï¼GraalVMï¼* è¢«è½¬è³ **æ©æå¤æ°**ç±»å«ã ## 2 AI ä¸ Java AI å¨è¿å»ä¸å¹´åçäºé大ååï¼ä»ç¶æ¯ä¸ä¸ªçé¨è¯é¢ãè¶æ¥è¶å¤çå·¥å ·åéææ£å¨å¸®å© Java å¼åè æ´é«æå°å®æä»£ç å¼åã è½ç¶ 2024 å¹´åç AI çæ½®ææç¼è§£ï¼ä½ç¸å ³è®¨è®ºä¾ç¶ççãå¼åè å·²ä»âå¿ é¡»åæ¢å° Pythonâ转å为âä»ç¶å¯ä»¥ç¨ Java è¿è¡ AI å¼åâãå LangChain4j è¿æ ·çåºå¤§å¤§æåäº Java å¨ AI å¼åä¸çå¯ç¨æ§ã ## 3 Commonhausåºéä¼ [Commonhausåºéä¼](https://www.commonhaus.org/)ï¼ä¸ä¸ªä¸æ³¨äºå¼æºåºåæ¡æ¶å¯æç»åå±çæ°éè¥å©ç»ç»ï¼äº 2024 å¹´ Devnexus 大ä¼ä¸é¦æ¬¡å Java 社åºäº®ç¸ï¼æ¨å¨ä¸ºèªä¸»ç®¡çç弿ºé¡¹ç®æä¾ç»§ä»»è§ååè´¢æ¿æ¯æã å ¶ä½¿å½æ¯ï¼ > éè¿å ±å管çå社åºåä½ï¼èµè½å¤å åçå¼åè ãè´¡ç®è åç¨æ·ç¾¤ä½ï¼å ±åå建ãç»´æ¤ååå±å¼æºåºåæ¡æ¶ï¼ç¡®ä¿å ¶é¿æå¢é¿å稳å®ã åå§äºº [Erin Schnabel](https://www.linkedin.com/in/erinschnabel/)ã[Ken Finnigan](https://www.linkedin.com/in/kenfinnigan/) å [Cesar Saavedra](https://www.linkedin.com/in/saavedracesar/) å嫿 任主å¸ãç§ä¹¦åè´¢å¡ä¸»ç®¡ã Java 弿ºé¡¹ç®æ£ç»å卿ååãä¸äºç¥å项ç®è½¬åå䏿ºä»£ç 许å¯ï¼BLSï¼ï¼ä½ä¸æ¤åæ¶ï¼Commonhaus Foundation åå±ç¤ºäºæ´å¼æ¾çæ°è¶å¿ã å¾é«å ´å Hibernate å JBang ç项ç®å¾å°äºåºéä¼çæ¯æï¼è¿å°ç¡®ä¿å®ä»¬é¿æåå±ï¼ä¸ºå¼åè æä¾æ´å¤ä¿¡å¿ã Commonhaus æä¾äºäºæ¶ä»£ç弿ºæ¨¡å¼ï¼å¸®å©è§£å³å ³é®é¡¹ç®çèµéé®é¢ã ## 4 Spring Framework 6 å Spring Boot Spring 6 å Spring Boot 3+ çéç¨çæ¾èæé«ãå¨æä»¬å ¬å¸ä¸ï¼å 乿æåºç¨é½å·²ç»è¿ç§»å°äº Spring Boot 3+ãSpring Boot å Quarkus 似乿£å¨æä¸ºäºåçåºç¨å¼åçé¦éæ¡æ¶ã Quarkus çå´èµ·å¿ä¸å¯æ¡ï¼å ¶å¸åºä»½é¢éæ¸ä» Spring Boot æä¸å¤ºè¿ï¼å¹¶å·©åºäºå¾®æå¡æ¡æ¶ä¸ç第äºåå°ä½ã ## 5 Java 17 åæ´é«çæ¬ è¿å»ä¸å¹´ä¸ï¼Java çæ¹è¿æ´å å ³æ³¨ç°ä»£åºç¨éæ±ï¼å æ¬æåäºç¯å¢ä¸çæ§è½åå 强å®å ¨æ§ãå´ç»å¯å¨æ¶é´æ¹è¿çææ¯ï¼å¦ Liberty ç [InstantOn](https://openliberty.io/docs/latest/instanton.html)ã[CRIU](https://criu.org/Main_Page) å [CRaC](https://openjdk.org/projects/crac/)ï¼å°¤å ¶ä»¤äººç©ç®ï¼ä½¿ Java åºç¨æ´å éåäºç«¯åæ æå¡å¨è®¡ç®ã èæçº¿ç¨çå¼å ¥ä¸º Java å¹¶åç¼ç¨å¸¦æ¥äºéè¦çªç ´ï¼å°½ç®¡è¯¥ææ¯ä»å¨æç»æ¹è¿ä¸ï¼å¹¶ä¸å¨æäºåºæ¯ä¸åå¨ [æ§è½ææ](https://www.infoq.com/articles/java-virtual-threads-a-case-study/)ãå¨å®å ¨æ§æ¹é¢ï¼æ¯æææ° [FIPS 140-3](https://csrc.nist.gov/pubs/fips/140-3/final) æ åçå 坿¨¡åçæ®åï¼ä½¿ Java å¨åç管è¡ä¸ä¸çåºç¨æ´å 广æ³ã é Oracle JDK 17 çå è´¹åä¸ä½¿ç¨ææå¨ä»å¹´ 9 æç»æï¼ç¨æ·éè¿ç§»è³ Oracle Java SE Universal 订é 以继ç»ä½¿ç¨ï¼è¿å¯¹ç¨æ·ææ¬äº§çäºä¸å®å½±åã许å¤ç¨æ·å æ¤è½¬ååºäº OpenJDK ç Java æ¿ä»£åï¼å¦ [IBM Semeru Runtimes](https://developer.ibm.com/articles/awb-where-do-you-get-your-java/)ï¼å ¶æè¿å·²æ¯æææ°ç FIPS 140-3 æ åãæ® Azul æ¥åï¼[70%以ä¸](https://www.azul.com/report/2023-state-of-java/) çåè®¿è æ£å¨èèé Oracle Java æ¿ä»£åãè§å¯è¿äºææååå¦ä½å½±å弿º Java çåå±ååæ°å°æ¯é常æè¶£çã Java å·²ç»è¶ è¶äºâç¼æ ¢âåâè¿æ¶âç廿¿å°è±¡ãJava ç°å¨æ¾ç°åºæç¡®çåæ°å¨åï¼åæ¶ä¿æäºå¼ºå¤§çååå ¼å®¹æ§åä¿®å¤è½åãä¹å对âç ´åæ§åæ´âçææ§å·²è¢«ä¸ç§å¹³è¡¡çåæ°æ¹å¼å代ï¼è¿ç§æ¹å¼æ¢æ¨å¨è¿æ¥ï¼åä¸çºç²ç¨³å®æ§ãæ¤å¤ï¼Java æ£å¨å¢å¼ºä¸å ¶ä»çæç³»ç»çå ¼å®¹æ§ï¼ä½¿å ¶ä¸ä¸åè¯è¨åææ¯çäº¤äºæ´å è½»æ¾ï¼ä»èæåäºçµæ´»æ§åå¸å¼åã Java 21 çå¿«ééç¨ä»¤äººç©ç®ï¼å°½ç®¡å¤æ°å ¬å¸ä»å¨ä½¿ç¨ Java 17ãç¶èï¼ä¸å¾å¹´ç¸æ¯ï¼ç°å¨ææ´å¤å ¬å¸å¼å§ä»æ§çæ¬ç JDK è¿ç§»å°æ°çæ¬ã Java 17 æ£å¨æä¸ºæ°çåºçº¿ï¼å ¶æµè¡åº¦æç»å¢é¿ãè¿å»ï¼é¡¹ç®å¯è½ä»¥ Java 8 为æä½å ¼å®¹çæ¬ï¼å¦ä»ï¼è¿ä¸è§è²æ£è¶æ¥è¶å¤å°è¢« Java 17 å代ãèæçº¿ç¨ãæ°æ¨¡å¼ååç»ç¹æ§æ£å¨éæ¥æ¨åºï¼å°½ç®¡ç®å仿¯é¢è§çï¼ã ## 6 Jakarta EE å¨ Jakarta EE é¢åï¼æå¤§éåªåè´åäº JDK 21 çé纳ãå æ¤ï¼äººä»¬å¯¹ Jakarta EE 11 çæå¾ é常é«ã 为å³å°åå¸ç Jakarta EE 11 æåçæ´æ°å·¥ä½æå ¶åºå¤§ï¼å ±æ¶å 16 项 Jakarta EE è§èã卿¤æ¬¡å级ä¸ï¼ç§»é¤äºå¯¹å·²å¼ç¨ `SecurityManager` ç±»çå¼ç¨ï¼å¹¶å¼å ¥äºå¯¹ Java Records çæ¯æã ææå¾ 以 [Garden State Java ç¨æ·ç»](https://gsjug.org/) ç代表身份åä¸ 2024 å¹´ 7 ææç«ç [Jakarta EE Future Directions](https://projects.eclipse.org/interest-groups/jakarta-ee-future-directions) å ´è¶£å°ç»ã该å°ç»çç®æ æ¯å¼å±ç ç©¶å¹¶å¶å®ä¼å 建议ï¼è¿äºå»ºè®®å°åæ¶æäº¤ç» Jakarta EE å MicroProfile å·¥ä½ç»ï¼ä»¥æä½å¸åºæ¹å带æ¥çæºä¼ã ## 7 Java 社åºçå£°é³ AI å¨ Java 社åºä¸ä¸»å¯¼äºè®¸å¤è®¨è®ºãæä»¬åºè¯¥å¦ä½å¨ Java ä¸å©ç¨ AIï¼AI è½ä¸ºæä»¬ç¼åå¤å°ä»£ç ï¼å¦å¤ï¼å ³äº Project Leyden ç讨论ä¹é常ççï¼è¿æ¯ä¸ä¸ªå ·ææ½å¨é大æ§è½æåçæè¶£æ¶æã å ³äº AI ç讨论ä»ç¶é常活è·ï¼æ¢æ¶åææ¯å±é¢ï¼ä¹æ¢è®¨äºå®å¯¹å¼åè çå½±åãç®åï¼æ´å¤ç讨论éä¸å¨å¦ä½ä½¿ç¨è¿äºæ°å·¥å ·ï¼è䏿¯åå¹´å飿 ·æ å¿§ AI ä¼å代å¼åè çå·¥ä½ã Java 社åºåææ¯è¡ä¸ä¸æ ·ï¼å¯¹ AI ççæ é«æ¶¨ãJava æ£å¨ä¸æéåºå¹¶å¨ AI é¢ååç°æ°æºéãæ°çå·¥å ·æ£å¨æ¶ç°ï¼ä½¿å¾ AI å¨ Java åºç¨ä¸çéææ´å æ¹ä¾¿ãååå¤å¹´çææ¯ç§¯ç´¯ï¼Java æè½åè¿æ¥æªæ¥çææï¼å¹¶å¨å¤ç§åºæ¯ä¸ä¿æä»·å¼ã å ³äºèæçº¿ç¨ç讨论é常活è·ï¼è®¸å¤å ¬å¸å¼å§éç¨ JDK 21 å¹¶å享äºåç§ç¨ä¾ã尽管åé¦å¤§å¤æ¯æ£é¢çï¼ä½ä¹åå¨ä¸äºé®é¢ï¼ä¾å¦ Netflix æ¾éå°è¿ç±»ä¼¼æ»éçæ åµã å ³äº OpenTelemetry çè®¨è®ºè¶æ¥è¶å¤ï¼å®ä¸æå£®å¤§ï¼å¹¶å·©åºäºèªå·±ä½ä¸º Java é¢åé¢å å¯è§æµæ§ææ¯çå°ä½ã Java 社åºä¸æè®¸å¤ä»¤äººå ´å¥çè¶å¿ï¼ä½æç¹å«å欢 [Gunnar Morling](https://www.linkedin.com/in/gunnar-morling/) åèµ·ç [åäº¿è¡ææ](https://www.morling.dev/blog/one-billion-row-challenge/)ãè¿é¡¹ææè¦æ±ç¨ Java ç¼åç¨åºï¼ä»å ¨çæ°è±¡ç«è·åæ¸©åº¦æ°æ®å¹¶è®¡ç®æ¯ç«ç¹çæä½ãæé«å平忏©åº¦ãå¨ [164 个åèµä½å](https://github.com/gunnarmorling/1brc#results) ä¸ï¼ç± [Thomas Wuerthinger](https://www.linkedin.com/in/thomaswue/) å¢éå®æçæ¶é´ä» 为 1.5 ç§å¤ä¸ç¹ï¼è·å¾æå¿«æç»©ã ## 8 æ°çä»¤äººå ´å¥çåå± LangChain4j æ¯ä¸ä¸ªä»¤äººæ¿å¨çæ°å·¥å ·ï¼å®æå³çå¼åè ä¸éè¦å¦ä¹ Python å°±è½å©ç¨ AIï¼å¹¶å¤§å¹ åå°ä¸ä¸å AI æä¾åç䏿 API éææéçå·¥ä½éã å¹³å°å·¥ç¨çå´èµ·ä¸º Java å¼åè å¼å ¥äºæ°çå·¥å ·ï¼å¦ [Backstage](https://backstage.io/) å [Red Hat Developer Hub](https://developers.redhat.com/rhdh/overview)ï¼è¿äºå·¥å ·å¸®å©ç®ååºç¨äº¤ä»å¹¶åè½»å¼åè ç认ç¥è´è·ãæäºé¡¹ç®è¿ä¸æ¥æ¨åºäºé对ç¹å®è¿è¡æ¶åæ¡æ¶ç SaaS æå¡ï¼ææéè¿åè½»å¼åå¢éçå忥åºå¯¹ä¸ææ©å±çå¼åçå½å¨æä»»å¡ã AI çè¿ éå´èµ·è¶ åºäºé¢æãå°½ç®¡å¹´åæ¶ä¼¼ä¹æ²¡æä»ä¹æ¯ AI æ´éè¦çäºæ ï¼ä½å°ä¸åå¹´ï¼è¿ç§çæ½®ææé温ã å 个æç Java åå¸å¨æå·²æå稳åºï¼è¿æç ´äºå¯¹ååçææ§ï¼å¹¶æ¿åäºæ´ä¸ªçæç³»ç»çåæ°æµªæ½®ãåºåæ¡æ¶ç»´æ¤è åæ¤æ¨¡å¼æ´å 积æå°éç¨æ°ç¹æ§åæ¹è¿ï¼åæ¶å¨éè¦æ¶ä¿æç¨³å®æ§ã JDK 21 åèæçº¿ç¨çé纳æ£å¨æ¨å¨ Jakarta EE 社åºå å¿«æ¥æ± JDK 21 çæ¥ä¼ã JSpecify 1.0.0 çåå¸å Java è¯è¨å±çº§å³å°å¼å ¥ç©ºæéæ è®°æ¯å¼åè çé¿ææ¿æãOpenTelemetry Profiling è¾¾å°å®éªé¶æ®µä¹ä»¤äººå ³æ³¨ã JEP 465ï¼å符串模æ¿ï¼çæ¤å令人æå¤ï¼ä½å ¶æ¤åèåçåå 表æäºå¢é对å¼åè éæ±çè°¨æ èéã ## 9 Java ç¤¾åº Java ç¤¾åºæ£å¨éè¿æ´å¤åä½ä¸æå£®å¤§ï¼ä¾å¦ OpenTelemetry æ åçæ©å±å MicroProfile å Jakarta EE çå ±å项ç®ãè¿ç§å使åäºå¼åæçï¼å¹¶æ¨å¨äºç¤¾åºçåå±ã ## 10 ç»è®º æ¬æ¥ååºè¢«è§ä¸º Java çæç³»ç»æ¹å讨论çèµ·ç¹ï¼æå¾ æ¨çåä¸ååé¦ï¼å ±åå¡é Java çæªæ¥ã