本週 Java 新聞與大事(2026-07-10)

🔥 頭條新聞

  • Inside Java 第 61 集:「透過 Project Detroit 整合 JavaScript 與 Python 腳本」 (Inside Java)
    OpenJDK 重新啟動 Project Detroit 專案,旨在提升 Java 與 Python 及 JavaScript 的互通性。本集播客深入探討此專案,提供開發者將多種語言的腳本整合至 Java 應用程式的策略與實作細節,有效提升跨語言程式碼的開發效率與應用彈性。
    👉 消息來源
  • Spring Cloud Contract 新家:遷移至 Stubborn.sh (Spring Blog)
    Spring Cloud Contract 專案宣佈將維護、支援與所有權轉移至 Stubborn.sh。這項變革對依賴 Spring Cloud Contract 進行消費者驅動契約測試的開發者而言,意味著未來專案的持續發展與新的合作模式,確保微服務間溝通的可靠性與工具的演進。
    👉 消息來源
  • Spring Office Hours 播客:第 5 季第 17 集-與 Phil Webb 探討 Spring Boot 4.1 (Spring Blog)
    Spring Boot 共同建立者與專案負責人 Phil Webb 蒞臨 Spring Office Hours 播客,深入解析 Spring Boot 4.1 的最新功能與亮點。本集為開發者提供了此主要版本更新的第一手資訊,包括新特性介紹與實踐建議,是掌握 Spring Boot 最新動態的絕佳資源。
    👉 消息來源
  • Java 新聞彙整:嚴格欄位初始化、GlassFish、GraalVM、JReleaser、RefactorFirst 最新動態 (InfoQ Java)
    本週 Java 新聞彙整涵蓋了多項重要更新,包括新的 JEP 候選提案「嚴格欄位初始化」,以及 GlassFish、GraalVM、JReleaser 等專案的最新版本發佈。開發者可透過此彙整,快速掌握 Java 生態圈的技術進展、工具更新與潛在的語言規範變革,有助於規劃未來的開發策略。
    👉 消息來源
  • Hardwood 專案承諾 JVM 高速 Apache Parquet 處理且無強制依賴 (InfoQ Java)
    Gunnar Morling 發起的 Hardwood 專案,旨在提升 Java 中 Parquet 檔案的處理效率,其 1.0 版本已發佈。此函式庫採用多執行緒方法並強調零強制外部依賴,為 Java 開發者處理大數據提供了更簡潔、最佳化的選擇,特別適用於需要高效能資料處理的應用程式。
    👉 消息來源
  • Java 26 的新功能探索 (Baeldung)
    本指南深入探討 Java 26 版本引入的所有關鍵新功能。文章旨在為 Java 開發者提供一個全面的概覽,包含語言更新、JVM 增強、標準函式庫改進以及對未來 Java 開發的潛在影響,幫助開發者為升級和利用最新平台特性做好準備,提升程式碼品質與執行效率。
    👉 消息來源
  • BoxLang 1.14.0 發佈:新添集合、範圍、內部類別與反應式運行時功能 (Foojay)
    BoxLang 1.14.0 版本帶來一系列重要更新,包括集合(Sets)、範圍(Ranges)、內部類別(Inner Classes)等語言新特性,並增強了運行時的互動與回饋機制。此次更新進一步確立了 BoxLang 作為現代動態 JVM 語言的地位,為開發者提供了更強大、更靈活的程式設計工具,有助於開發高效能應用程式。
    👉 消息來源
  • Decypher:為 Java 代理式程式設計與工程提供深度語義程式碼圖 (Reddit r/java)
    Decypher 專案在 Reddit 上引發討論,它旨在為 Java 程式碼提供一個深層的語義程式碼圖(Semantic Code Graph),以支援代理式程式設計(Agentic Coding)和軟體工程。這項技術能夠幫助開發者更深入地理解複雜程式碼的結構與邏輯,加速自動化程式碼分析、重構與 AI 輔助開發,提升大型專案的維護效率與品質。
    👉 消息來源
  • 一年前,社群討論 Java 是否需要新建置工具,我建了一個:認識 Curie (Reddit r/java)
    一位開發者回應社群對 Java 新建置工具的需求討論,親自開發了名為 Curie 的新工具並在 Reddit 上發佈。此專案的誕生反映了 Java 生態系統對現有建置工具的思考與改進需求。Curie 的出現為開發者提供了一個新的選擇,可能在未來的專案管理與自動化建置流程中扮演重要角色,推動工具創新。
    👉 消息來源

📚 教學與指南

  • Airbnb 分享 Kubernetes 動態組態 Sidecar Sitar-Agent 的架構設計 (InfoQ Java)
    Airbnb 工程師詳細介紹了 Sitar-agent 的架構,這是一個專為 Kubernetes 服務設計的動態組態 Sidecar,以 Java 重新設計並部署於數萬個 Pod 上,每分鐘處理多次組態更新。此文提供在大型企業環境中,如何運用 Java 與雲端服務來實現高效能、高可靠的組態管理解決方案。
    👉 消息來源
  • 在 Spring AI 中使用遞迴顧問建構「LLM 作為評審」模式 (Baeldung)
    本文深入探討如何在 Spring AI 框架中實現「LLM 作為評審」(LLM-as-a-Judge)模式,透過遞迴顧問(Recursive Advisors)來評估大型語言模型(LLM)的輸出品質。這對開發者在建構基於 LLM 的複雜應用時,提供了一種自動化且可擴展的評估機制,確保模型行為符合預期。
    👉 消息來源
  • Spring AI 的動態工具探索功能 (Baeldung)
    本文介紹如何在 Spring AI 框架中運用「工具探索(Tool Search Tool)」功能。此功能允許 LLM 應用程式在執行時動態發現並使用可用的工具,顯著提升了應用程式的靈活性與擴展性。開發者可藉此建立更智慧、更能自主回應複雜任務的 AI 系統,簡化工具整合的複雜度。
    👉 消息來源
  • 理解並避免 Kafka 中的 CommitFailedException (Baeldung)
    本文深入分析 Kafka 消費者端常見的 CommitFailedException 錯誤,解釋其發生原因以及對資料處理可靠性的影響。文章提供多種實用的策略和程式碼範例,指導開發者如何有效地避免此類異常,確保 Kafka 應用程式的訊息處理機制穩定運行,維持資料一致性。
    👉 消息來源
  • Spring 框架中的 Bean 背景初始化 (Baeldung)
    本文探討 Spring 框架中 Bean 背景初始化的機制與實踐,展示如何利用非同步方式載入 Bean,從而縮短應用程式啟動時間,提升使用者體驗。開發者將學習到如何在複雜的 Spring 應用程式中,優化資源載入與服務啟動流程,特別適用於需要大量初始化工作的場景。
    👉 消息來源
  • 將引用設為 null 無助於 Java 記憶體垃圾回收 (Foojay)
    本文揭示了 Java 記憶體垃圾回收 (Garbage Collection) 的一個常見誤解:將物件引用明確設為 null 並不會直接幫助垃圾回收器更快地釋放記憶體。文章透過深入分析 JVM 的工作原理,解釋了垃圾回收的實際機制,糾正了開發者在記憶體管理方面可能存在的錯誤認知,引導更有效的程式碼實踐。
    👉 消息來源
  • actions/setup-java 5.4 與 5.5 新功能:簽章驗證、Kona JDK 支援及更佳的 Maven 體驗 (Foojay)
    GitHub Actions 的 `actions/setup-java` 工具發佈 5.4 和 5.5 版本,帶來了數位簽章驗證、Kona JDK 支援以及多項 Maven 相關的優化。這些改進確保了 Java 建置過程的安全性、靈活性與效率,對於在 CI/CD 環境中管理 Java 專案的開發者來說,能顯著提升工作流程的穩定性與便利性。
    👉 消息來源
  • 為何我們將 Timefold Java 工作者 Pod 從 AMD 遷移至 ARM64 架構 (Foojay)
    文章分享了 Timefold Solver 團隊將其 Java 工作者 Pod 從 AMD (x86-64) 雲端實例遷移至 ARM64 架構的經驗與原因。遷移消除了 AMD 超執行緒引起的效能變異問題,並在 ARM 上實現每個 vCPU 對應一個實體核心,為 Java 應用程式的雲端部署和效能優化提供了寶貴的實踐案例與數據支援。
    👉 消息來源
  • 揭密 Exposed:Kotlin 的智慧型 SQL 函式庫完整指南 (Foojay)
    本文提供 JetBrains 出品的 Kotlin SQL 函式庫 Exposed 的完整指南。Exposed 以其高質量的程式碼和開發者友好的設計而聞名,它為 Kotlin 開發者在 JVM 上提供了強大的物件關係映射(ORM)和 SQL 建構能力。這份指南將幫助開發者深入理解 Exposed 的核心功能,並有效應用於資料庫互動。
    👉 消息來源
  • 這次依賴更新看起來就像是帳戶被盜用 (Foojay)
    文章分享了一次 Java 專案中 `javax.activation` 函式庫從 1.1-rev-1 更新至 1.1.1 版本時遇到的安全疑慮。新版本缺少 GPG 簽章,導致自動掃描工具發出警報,引發了對供應鏈攻擊的擔憂。此案例強調了在處理第三方依賴時,進行嚴格簽章驗證和安全審查的重要性,以防範潛在的安全漏洞。
    👉 消息來源
  • Java 應用程式中的 OBO SSO:安全地代表使用者呼叫下游 API (DZone Java)
    本文探討在現代企業 Java 應用程式中,如何安全地實現代表使用者(On-Behalf-Of, OBO)的單一登入(SSO)模式,以呼叫多個下游服務或微服務。文章深入解釋 OBO SSO 的工作原理,提供實作指南與最佳實踐,確保 API 呼叫的安全性與使用者身份的正確傳遞,解決複雜分散式系統的身份驗證挑戰。
    👉 消息來源
  • 第 336 期:CopyOnWriteArrayList.subList() 的並行修改異常 (The Java(tm) Specialists’ Newsletter)
    Java 的 CopyOnWriteArrayList 雖然提供了快照迭代器以實現快速讀取,但其 subList() 方法並非快照,若原始列表在操作期間被修改,則會拋出 ConcurrentModificationException。本期電子報深入探討此問題,並提供了一種基於迭代器與 AbstractList 建立安全 subList 副本的方法,幫助開發者避免並行錯誤。
    👉 消息來源
  • 第 335 期:ZGC 記憶體垃圾回收器的奧秘 (The Java(tm) Specialists’ Newsletter)
    本期延續了上一期關於 ZGC 在 ArrayList 建立過程中謎題的討論,深入探討了 ZGC (Z Garbage Collector) 的一些複雜行為和內部工作原理。文章分析了開發者社群對謎題的各種看法,並為讀者提供了關於 ZGC 記憶體管理和效能優化更深層次的見解,為期待《The Z Garbage Collector Book》的讀者帶來前瞻性的學習。
    👉 消息來源
  • 第 334 期:ArrayList 與 LinkedList 效能謎題 (The Java(tm) Specialists’ Newsletter)
    儘管普遍認為陣列結構在效能上優於鏈結結構,本期電子報卻提出一個引人深思的謎題:在 ZGC 環境下,LinkedList 在某些情況下展現出超越 ArrayList 的效能。文章鼓勵讀者深入探討背後的原因,並對 JVM 的記憶體佈局、快取行為以及 ZGC 的特殊機制進行分析,挑戰傳統的資料結構效能認知。
    👉 消息來源
  • 第 332 期:Java 25 新增的 ForkJoinPool.asyncCommonPool() 方法 (The Java(tm) Specialists’ Newsletter)
    自 Java 25 起,ForkJoinPool 引入了 `asyncCommonPool()` 方法,解決了之前 common ForkJoinPool 不告知確切並行度,導致並行框架需要複雜應變措施的問題。此改進為開發者提供了更安全的並行程式設計工具,避免了潛在的零大小執行緒池問題,提升了並行應用程式的穩定性與效能。開發者能更精確地管理任務執行。
    👉 消息來源
  • 第 331 期:深入理解虛擬執行緒的狀態 (The Java(tm) Specialists’ Newsletter)
    虛擬執行緒 (Virtual Threads) 已成為 Java 生產系統中迅速採用的重大功能。雖然傳統 Java 執行緒有六種狀態,但虛擬執行緒內部實際上多達 20 種狀態,並映射到這六種狀態。本期電子報深入探討虛擬執行緒的內部狀態機制,幫助開發者更精確地診斷和優化並行應用程式的行為,充分利用此高效能特性。
    👉 消息來源
  • 編譯後消失的面具:HotSpot JIT 如何理解位元操作 (Reddit r/java)
    本文深入探討 HotSpot JIT 編譯器如何優化位元操作,特別是「編譯後消失的面具」現象。文章解釋了 JIT 編譯器如何智慧地識別並消除不必要的位元運算,從而生成更高效的機器程式碼。這對 Java 開發者理解 JVM 內部優化機制、提升程式碼執行效率具有重要意義,有助於撰寫出更具效能潛力的程式碼。
    👉 消息來源

💬 社群討論

  • 《Java 故事》:一部關於我們所有人的紀錄片 (Foojay)
    CultRepo 製作的紀錄片《Java 故事》即將於 7 月 17 日全球首映。這部電影講述了 Java 社群的歷史、演進與其對全球技術世界的深遠影響,展現了 Java 不僅是一種程式語言,更是一個龐大且充滿活力的開發者社群。它為所有 Java 愛好者提供了一次重溫經典、展望未來的機會。
    👉 消息來源
  • Java 21 虛擬執行緒讓簡單的阻塞式程式碼再次具備可擴展性 (Reddit r/java)
    Reddit 討論熱烈指出,Java 21 引入的虛擬執行緒(Virtual Threads)大幅簡化了處理高並行阻塞式 I/O 應用程式的複雜性。開發者現在可以使用傳統的阻塞式程式設計模型,卻能獲得近乎非同步程式設計的擴展能力,降低了複雜度,讓更多開發者能建構高效能的現代化應用程式,改變了並行開發範式。
    👉 消息來源
  • 從 .NET 轉向 Java 開發的心路歷程 (Reddit r/java)
    Reddit 社群討論了一位開發者從 .NET 生態系統轉向 Java 開發的經驗分享。討論內容涵蓋了兩者在語言特性、框架、工具鏈以及社群文化上的異同,為有跨平台或跨語言學習需求的開發者提供了寶貴的參考。對於計畫轉換技術棧或考慮學習新語言的開發者來說,這是一個很好的啟發。
    👉 消息來源
  • 在非 Java 團隊中導入 Java 微服務的挑戰與策略 (Reddit r/java)
    Reddit 社群討論了在一個主要使用其他程式語言的團隊中,導入 Java 微服務的實務挑戰與應對策略。討論內容包括技術棧的整合、人員培訓、文化適應以及微服務架構的選擇。這對於正在考慮技術多元化或進行團隊轉型的專案經理與開發者提供了具啟發性的視角,有助於預見潛在問題並尋找解決方案。
    👉 消息來源
  • 我使用 Spring Boot 與 AWS 建置了一個即時 1 對 1 程式設計對戰平台(超過 2,000 名使用者) (Reddit r/java)
    一位開發者在 Reddit 上分享了利用 Spring Boot 和 AWS 技術棧,成功建置並運行一個支援超過 2,000 名使用者的即時 1 對 1 程式設計對戰平台。這展示了 Spring Boot 在建構高擴展性網路應用程式方面的強大能力,為有志於開發類似實時互動平台的開發者提供了寶貴的架構參考與實踐經驗,激勵社群創新。
    👉 消息來源

💡 心得總結

本週 Java 與 Spring 社群新知主要圍繞著語言生態的演進與框架的實用性。在 Java 核心方面,Project Detroit 的重啟預示著 Java 在多語言互通性上的新進展,而 Java 26 的新功能預覽則指明了平台未來的發展方向。針對 JVM 效能議題,從 ZGC 記憶體回收器的奧秘探討、ArrayList 與 LinkedList 的效能比較,到 HotSpot JIT 編譯器對位元操作的優化,都提供了深入的技術洞察。Spring 框架則迎來了 Spring Boot 4.1 的重大發佈,並在 Spring AI 領域持續創新,推出如「LLM 作為評審」及動態工具探索等前沿功能,展現其在人工智慧整合方面的領先地位。此外,GitHub Actions 的 `setup-java` 工具更新、從 AMD 遷移至 ARM64 的效能最佳化案例,以及對依賴安全漏洞的警示,都突顯了 CI/CD、雲端部署與軟體供應鏈安全的重要性。

對於台灣的 Java 開發者社群而言,這些更新提供了豐富的學習與實踐機會。我們應密切關注 Spring Boot 4.1 帶來的開發效率提升與新特性,並積極探索 Spring AI 在實際專案中的應用潛力。同時,深入理解 JVM 內部機制,如虛擬執行緒的狀態、垃圾回收與 JIT 編譯原理,對於建構高效能、高可靠的應用程式至關重要。考量到雲端服務的普及,學習如何在 ARM64 架構上優化 Java 應用程式效能,以及強化軟體供應鏈安全意識,將有助於提升台灣開發者在國際市場上的競爭力。社群討論中關於微服務架構與跨語言團隊協作的經驗分享,也為本土企業提供了寶貴的實踐參考。

本篇文章的內容為老喬原創、二創或翻譯而來。雖已善盡校對、順稿與查核義務,但人非聖賢,多少仍會有疏漏之處難以避免。如果大家有任何問題、建議或指教,都歡迎在底下留言與老喬討論!

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

eight + 14 =

返回頂端