JCConf 2025

如果想使用議程表的所有功能,如時區轉換或個人議程表,請啟用瀏覽器的 Javascript 並前往 這裡
09:25
09:25
10 分鐘
Opening

Opening

401
401
09:40
09:40
45 分鐘
From the JDK 21 25: Langage, API, JVM
Jose PAUMARD

The 25 version of the JDK is a version on which vendors offer Long Term Support (LTS), and thus a version that companies and projects will adopt. It probably makes sense to take a look at all the features added to the JDK between 21 and 25, in the language, the API, and the JVM. This presentation focuses on four elements. This first one is the in-memory data processing, with the Gatherer API, the last addition to the Stream API. The second one has to do with asynchronous programming with the Loom project. Loom delivered Virtual Threads as a final feature in the JDK 21, and fixed the pinning issue in the JDK 24. It is delivering Scoped Values, a replacement of ThreadLocals as a final feature in the JDK 25, and a new version of the Structured Concurrency API, still as a preview feature in the JDK 25. And at last, we will talk about immutability and null values handling, with Stable Values, a new API available as a preview feature, also in the JDK 25.

401
401
10:25
10:25
10 分鐘
Break

Break

401
10:40
10:40
45 分鐘
Java 25 LTS in 2025
Joseph Kuo

2025 年,我們躬逢 Java 平台誕生 30 週年的盛事,同時也迎來了關鍵的長期支援版本 Java 25 的發布。本次議程將帶領大家一同回顧並探討這個承先啟後版本所帶來的重大變革。內容將涵蓋今年上線的 Java 24 及 Java 25 的核心新特性,包含彈性建構式主體、類別檔案 API、串流聚集器、範圍值、模組匯入宣告、簡潔原始檔和實例主方法等等。希望能為資深的 Java 開發者提供一份清晰的藍圖,不僅理解新功能的「是什麼」與「如何用」,更洞悉其背後的「為什麼」,為下一個三十年的 Java 技術演進奠定穩固的基石。

401
401
10:40
45 分鐘
Spring Boot × QueryDSL × GraphQL:打造彈性又安全的企業級動態查詢 API
方昱傑 (Archie)
  1. 為什麼企業查詢 API 需要「動態查詢」與「欄位權限」?
    業務部門、資料分析師、IT 團隊的多元查詢需求
    常見的查詢痛點:過度依賴多組固定 API、條件組合彈性差、欄位外洩風險
    權限控管挑戰:不同角色、部門、系統間對資料存取的複雜規則

  2. 技術選型與架構設計
    為何選擇 QueryDSL?它在動態查詢、類型安全上的優勢
    GraphQL 的彈性查詢與欄位裁切 (projection) 特性
    結合 Spring Boot + QueryDSL + GraphQL 架構圖
    傳統 REST API vs. GraphQL 查詢 API:維護與擴展性的比較

  3. QueryDSL 實作動態查詢的關鍵技巧
    用 PredicateBuilder 動態組合條件 (AND/OR、IN、LIKE 等)
    支援複雜查詢語意(區間、模糊、聯集、多表 Join)
    怎麼保持查詢效能與易維護性
    與 JPA、Spring Data 的整合經驗

  4. GraphQL 實現彈性查詢與欄位權限控管
    Schema 設計:如何設計 Query/Mutation,支援動態欄位選擇
    資料回傳欄位動態組裝 (Resolver)
    權限驗證機制:自訂 Directive、Context、DataFetcher 層級的權限判斷
    欄位敏感資料遮蔽、動態過濾(如只讓特定角色看見特定欄位)

  5. 權限控管框架整合
    權限資料來源設計(OAuth claim )
    權限檢查流程:Request > GraphQL Context > Data Fetcher/Resolver > Entity 欄位
    實作細節與常見權限漏洞防範

  6. 維運與效能考量
    大量查詢下的效能優化(N+1 問題、分頁設計、批次查詢)
    監控與稽核:如何記錄 API 查詢行為,方便事後稽核及追蹤

402AB
402AB
10:40
45 分鐘
on Exception Handling
Laurence Chen

開發應用軟體總是會遇上例外。

趕時間的時候,例外往往就隨便處理一下,先把功能完成再說。另一方面,如果考慮要設計健壯的系統、容易除錯,就必須好好研究這個問題。

  • 例外處理有沒有什麼最佳實踐呢?
  • 它與系統的設計有怎麼的關聯存在?
  • 有什麼實務上的範例,值得研究呢?
402CD
402CD
11:25
11:25
10 分鐘
Break

Break

401
11:40
11:40
45 分鐘
Simplifying Java Build Tooling with Object Oriented Programming
Li Haoyi

The Java language is known to be fast, safe, and easy, but Java build tools like Maven or Gradle do not always live up to that reputation. This talk will explore what "could be" - where current Java build tools fall short of expectations in performance, IDE support, and extensibility - and why there's room to improve. We will end with a demonstration of an experimental build tool "Mill" that makes use of techniques object oriented programming to dramatically simplify the experience of using a Java build tool, proving out the idea that Java build tooling has the potential to be much faster, safer, and easier than it is today.

402CD
402CD
11:40
45 分鐘
用 Kotlin 開發即有 Java 專案的歷程三階段
Brandy Chang

Kotlin 不只是行動端開發的利器。其現代化特性和卓越的表達性亦得到許多後端開發者的採用。本次將分享個人在公司內推動用 Kotlin 開發 legacy Java 專案的心得分享。把 Java Developer 進入 Kotlin 歷程的分成三階段 1) 用 Kotlin 寫 Test Case 2) 寫的像 Java 的 Kotlin 3) 寫的像 Kotlin 的 Kotlin 。總結各階段可能遇到的挑戰與 Tips.

402AB
402AB
12:25
12:25
55 分鐘
🍴Lunch and Break

🍴Lunch and Break

401
13:25
13:25
15 分鐘
打造部門專屬的 Quarkus 開發體驗:用 Maven + Extension 建立一致化開發流程
王信凱

在部門推行 Quarkus 的過程中,我們遇到了一個熟悉且普遍的挑戰:每個專案在啟動階段都需要重複設定依賴、處理資料庫連線、引入常用的工具。這些重複性的工作不僅耗費開發者大量時間,也容易因人而異產生實作差異,進而影響整體維運品質與效率。
為了解決這個痛點,我們設計了一套基於 Maven 與 Quarkus Extension 的整合方案,並進一步打造部門專屬的開發套件,透過 Maven、Quarkus Extension、自動化配置與共用模組的整合,建立出一套「從建案、依賴管理、開發流程到資料庫連線」的標準化開發體驗,開發者只要專注在業務邏輯上,讓開發流程更有效率。

本議程將分享我們的完整實戰歷程,包括:
• 標準化建案模板:如何用 Maven + Extension 建立專屬於部門的 Quarkus 開發套件
• 共用依賴與模組管理:統一資料庫連線與設定方式的實作方式
• 提升開發效率:如何讓新人也能快速上手、資深開發者維護更輕鬆

203
203
13:25
15 分鐘
法規掰掰!Spring Authorization Server 的 OTP 整合快攻
Sam Wang

在 OIDC 的認證流程中,透過客製化 Spring Authorization Server,加入第二個認證因子 (OTP),以達成部分法規,規範登入時需要 MFA (Multi-factor Authentication) 要求的快速方案。

401
401
13:25
15 分鐘
用AI進行老舊java專案的現代化重構經驗談
許子謙

介紹運用 AI 工具(如 GitHub Copilot)協助公司內部老舊 Java 專案的現代化重構。這些專案原本採用 Java 8,未使用任何框架,功能皆由開發人員實作,模組間以函式互相呼叫,部署於 WebLogic 或 JBoss 等傳統應用伺服器上。透過 VSCode 搭配 GitHub Copilot,成功產生系統設計文件、資料庫結構文件與 OpenAPI 規格,進一步轉化為基於 Java 17 與 Spring Boot 3 的現代化架構。並整理出一套方法論,讓開發者可利用文件與 AI 協作,有系統地將舊專案重構為可維護、可擴展的現代化架構。本演講將分享轉換的經驗和遇到的挑戰,適合對AI協作有興趣的 Java 開發者參考。

402CD
402CD
13:40
13:40
5 分鐘
Break

Break

401
13:45
13:45
15 分鐘
使用 k6 打造高效能的 Java 應用負載測試
Ruei, Charles Zheng

本次分享將探討如何利用 k6 這款現代化開源負載測試工具,為 Java 應用程式設計高效能的測試策略。在微服務架構與雲原生應用盛行的當下,確保 Java 應用在高負載環境下的穩定性與效能,已成為開發團隊的關鍵挑戰。

k6 以 JavaScript 為基礎,具備輕量、易用及與現代 CI/CD 流程深度整合的優勢,特別適合測試基於 Spring Boot、Jakarta EE 等框架的 Java 應用。相較於傳統工具如 JMeter,k6 提供更直觀的腳本撰寫體驗,支援多種協議(HTTP/1.1、HTTP/2、WebSocket、gRPC),並能無縫整合至 GitHub Actions、Jenkins 等 CI/CD 平台。

本 15 分鐘快講分四部分:首先介紹 k6 基礎概念與快速上手方法;接著探討如何設計真實世界的測試場景;第三部分聚焦測試結果分析與 Java 應用效能優化;最後分享 CI/CD 整合與最佳實踐。透過程式碼範例與實務案例,與會者將學會撰寫高效 k6 測試腳本、模擬多樣化流量模式、分析結果並優化 Java 應用效能。本演講適合 Java 開發者、DevOps 工程師與測試工程師,旨在幫助團隊建立可靠、高效的負載測試策略,提升應用程式在生產環境的表現。

203
203
13:45
15 分鐘
從 Java 傳統寫法進化到 Apache Camel:一次搞懂整合型開發
陳仁傑

在企業應用開發中,超過 70% 的時間與資源都花在「系統整合」上。無論是處理 CSV 檔案、串接 Kafka、存取資料庫,或是呼叫 REST API,我們都習慣用 Java 寫大量的 if/else、try/catch、自訂排程與錯誤重試機制,這些雜亂的整合邏輯讓程式碼難以維護,系統耦合度升高、重複性高、測試困難。

本場分享將以開發者視角出發,從「Java 傳統整合寫法」作為切入點,帶領觀眾實際比較傳統方式與 Apache Camel 實作方式的差異。我將介紹 Apache Camel 的核心設計理念:RouteBuilder DSL,如何以簡潔語法定義資料流、實作錯誤重試與格式轉換,並展示兩個常見整合場景的實戰程式碼:

檔案處理自動上傳:CSV ➜ JSON ➜ API
訊息轉送中介服務:Kafka ➜ 欄位轉換 ➜ 寫入資料庫

透過範例對照,讓開發者快速掌握 Camel 的使用場景與價值。適合任何曾經自己手刻整合流程、想提升整合效率與可維護性的 Java 工程師。

402CD
402CD
13:45
15 分鐘
打造你專屬的 IntelliJ Plugin:從零開始的開發實戰
張品翔 Pino

IntelliJ 是許多 Java 開發者愛用的 IDE,但你是否也曾經翻遍 Plugin Marketplace,卻始終找不到真正符合需求的插件?心想:「如果有 XXX 功能就好了!」

既然如此,何不自己動手做一個?

本場演講將帶你快速掌握使用 Java 開發 IntelliJ Plugin 的基本流程,從概念入門到實際操作,並介紹如何將完成的插件發佈到 JetBrains Plugin Marketplace。讓你打造專屬工具的同時,也能將成果分享給更多開發者。

402AB
402AB
14:00
14:00
5 分鐘
Break

Break

401
14:10
14:10
45 分鐘
JVM 內部機制:AI 工作負載的 GC 調校與記憶體優化
Jiayun Zhou

隨著 AI 應用的普及,Java 系統面臨前所未有的記憶體挑戰:10GB+ 的模型載入、數十萬個向量物件、連續的大型陣列操作。與此同時,2023-2025年見證了 Java GC 的「分代革命」:Generational ZGC 完成歷史性轉型、Shenandoah 即將加入分代陣營、Compact Object Headers 開啟記憶體新紀元。

本議程將深入解析這場 GC 革命對 AI 工作負載的影響,從 Netflix 的數千微服務 ZGC 部署到 Apache Cassandra 的 4 倍效能突破,從實驗室的技術創新到生產環境的實際應用。透過最新的基準測試和企業案例,為 Java AI 應用提供 2025 年最前沿的調優策略。

401
401
14:10
45 分鐘
一卡通導入 KMP 與 CMP 的產品線策略與心得分享
林宇軒

作為台灣支付服務的領導品牌,一卡通投入 Kotlin Multiplatform (KMP) 已近三年。我們的實踐場景從廣為人知的 iPASS MONEY app,延伸至採用 Compose Multiplatform (CMP) 的商家管理後台。本次分享將深入剖析我們在不同產品線的導入策略與實戰心得。更重要的是,我們將分享未來的技術展望:如何規劃採用 Kotlin/Wasm,將商家後台擴展至網頁端,實現 iOS、Android、Web 三平台共享業務邏輯與 UI 的終極目標。我們將結合 JetBrains 與 Google 的官方藍圖進行探討,希望能為同樣走在這條路上的開發者與企業先進,帶來第一手的啟發與深入的討論。

402AB
402AB
14:10
45 分鐘
從 RBAC 到 ReBAC:打造高性能細粒度權限管理
ethan

OpenFGA 是一個開源的細粒度授權系統,靈感來自 Google Zanzibar,基於關係型訪問控制(ReBAC)。透過直觀的建模語言定義物件間關係(如「用戶 A 是文件 B 的擁有者」),實現靈活、高效的權限管理,超越傳統 RBAC 和 ABAC。OpenFGA 支援多語言 SDK(Java、Python、Go 等),提供 Check 和 ListObjects 等 API,適用於協作平台、文件共享及 API 安全等場景。與 Spring Security 無縫整合,透過 OpenFGA Spring Boot Starter 簡化 Java 應用授權實現,支援快速權限檢查和測試。作為 CNCF Sandbox 項目,OpenFGA 擁有活躍社群,支援 PostgreSQL、MySQL 等資料庫,確保高性能。Playground 工具讓開發者可視覺化測試授權邏輯,加速開發流程。

402CD
402CD
14:10
45 分鐘
混然天成的,支援整個MySQL Java應用系統生命週期的IDE – MySQL for VS Code
杜修文

MySQL VS Code 是一個整合MySQL 和Visual Studio Code 的工具,它讓使用者能在VS Code 環境中直接操作MySQL 資料庫。 其主要功能包括:瀏覽和管理MySQL 資料庫系統,提供notebook介面進行互動式資料庫操作,以及直接在VS Code 中使用MySQL Shell 的GUI 控制台。
在這次的演講中,我將為大家介紹:
• 如何 將資料庫操作整合到VS Code,方便Java應用系統開發者在同一個環境中完成Java編寫和資料庫操作.
• MySQL for VS Code能提供那些比傳統MySQL 用戶端更多的功能和便利性,例如筆記本介面、GUI 控制台等.
• 如何擴展的介面設計友好,方便使用者快速上手.
• 以及VS Code如如何整合MySQL Connector/J,讓Java開發者能輕鬆的掌握MySQL JDBC driver的參數和特性.

203
203
14:55
14:55
5 分鐘
Break

Break

401
15:05
15:05
45 分鐘
Building a Community for Developers to Connect: The Challenge of the Japan Java User Group
Takaaki Sugiyama

For developers to continue growing, acquiring knowledge alone is not enough. Interaction with other engineers, hands-on learning opportunities, and continuous stimulation are essential.

The Japan Java User Group (JJUG) has been fostering such an environment for over 20 years, now boasting a membership of more than 13,000. Through large conferences held twice a year (JJUG CCC), monthly night seminars, even an unconference held at hot spring resorts (JOnsen), JJUG has established itself as a vibrant and active community.

This talk will review how JJUG has provided a forum for engineers to learn and interact with each other, and provide insight into measures to maintain ongoing activities and to strengthen international ties. Additionally, we will explore the challenges JJUG currently faces and its vision for the future.

203
203
15:05
45 分鐘
當 Kotlin 遇上 AI:打造新聞摘要自動化的實作實錄
Andy Lu, 范聖佑

在資訊爆炸的時代,新聞取得不再困難,困難的是從大量資料中快速掌握重點。近年來 AI 的興起,各行各業都嘗試導入 AI,迅速發展的當下,雖帶來 AI 焦慮,但也同時迎來效率提升及參與更多產品設計的新契機。本場分享將介紹如何以 Kotlin 搭配 Spring Boot 與 Spring AI,打造一個自動化生成 Kotlin 技術新聞摘要的平台。從定時任務啟動、新聞內容擷取、AI 生成摘要、靜態網頁與訂閱推送,從中拆解整個自動化流程的設計與實作細節。此外,我們也會分享開發過程中運用 Vibe Coding 的開發經驗,加速實現 MVP 產品,讓開發者聚焦在最重要的業務邏輯與用戶體驗。

402AB
402AB
15:50
15:50
30 分鐘
☕ Tea Time

☕ Tea Time

401
16:20
16:20
45 分鐘
AI Driven Development with Java & Kotlin
Vincent Huang

Reviewing the development of AI over the past few years, AI has now transitioned from a consultant to an agent. In this agenda, we will demonstrate how to rapidly develop Spring Boot CRUD APIs for Java and Kotlin through pre-defined prompts and instruction files.

402AB
402AB
16:20
45 分鐘
Let's Guava it up! Google Core Libraries for Java
不想加班的工程師 Justin

帶你進去 Google 為 Java 專案所開發的Libraries的世界!分享工作上使用Guava最實用的超多技巧,讓開發者們站在Google巨人的肩膀上開發。

其中包含新型集合類型(如多重映射和多重集合)、不可變集合、圖形庫,以及用於並發、I/O、哈希、基本類型、字符串等的實用工具。它在 Google 內部的大多數 Java 項目中廣泛使用,也被許多其他公司廣泛採用。

203
203
16:20
45 分鐘
結合 Temporal 與熟悉的程式語言,實現工作流即程式碼,打造高韌性系統
姜政宏 (Jiang)

Building Resilient Systems with Temporal, Workflow as Code in Your Favorite Languages

在現代分散式系統中,傳統依賴手動撰寫程式與狀態管理的方式,常面臨錯誤處理與系統恢復的複雜挑戰,導致開發與維運成本持續攀升。

本次簡報將介紹 Temporal 工作流引擎,重點說明其核心架構與 API 使用,了解如何透過「Workflow as Code」的設計理念,讓開發者可以運用熟悉的程式語言,打造高韌性且具擴展性的流程系統,協助提升流程自動化的可靠度與開發效率,並有效降低系統複雜度與維護風險。

402CD
402CD
17:05
17:05
10 分鐘
Break

Break

401
17:15
17:15
45 分鐘
Spring Boot 雲原生實戰:GCP 關鍵服務整合、成本優化與高效維運
蔡承諭 Frank Tsai

隨著雲原生時代的普及,Java 應用的開發與部署方式亦隨之持續演進。本議程將深入探討如何利用 Spring Boot 3 和 JDK 21,在 Google Cloud Platform (GCP) 上打造現代化、高效能且易於維運的應用程式,並分享在真實情境中如何克服整合挑戰與優化成本。

此議程將從一個實際的 Spring Boot 專案出發,逐步展示如何圍繞一個核心業務場景,串聯並高效運用 GKE、Cloud SQL、Cloud Run 等關鍵 GCP 服務,實現從開發到維運的完整流程。
1. 容器化與 GKE 部署: 將 Spring Boot 應用程式容器化,並部署到 Google Kubernetes Engine (GKE),實現彈性擴展與高可用性。
2. GCP 資料服務整合:
* Cloud SQL (PostgreSQL): 如何整合關聯式資料庫,並探討連線管理與效能調校策略。
* Cloud Memorystore (Redis): 整合快取服務,提升應用程式回應速度。
* Cloud Storage Bucket: 儲存與管理靜態資源與大型檔案。
3. 安全性實踐: 利用 Secret Manager 安全地管理應用程式密鑰與配置。
4. 無伺服器探索: 如何將服務以 Cloud Run 部署,實現按需付費與快速迭代。
5. 自動化任務: 透過 Cloud Scheduler 安排定時任務,觸發大資料運算流程、同步資料等任務,並探討如何設計更具彈性與容錯性的排程機制。
6. 可觀測性與維運: 結合 GCP 的監控與日誌服務,確保服務穩定運行。

適合希望將 Spring Boot 應用程式遷移上雲,或想在 GCP 上構建全新雲原生應用的 Java 開發者與團隊領導者。您將學習到最新的技術棧組合以及在 GCP 上的最佳實踐,並能將這些經驗直接應用於您的專案中,提升開發效率與系統穩定性。

203
203
17:15
45 分鐘
以為用 Ktor 就 non-blocking 了?但你寫的可能不是:從踩坑到解法的實戰分享
Recca Chao

Ktor 天生支援 non-blocking、基於 coroutine 的架構,很適合打造高效能的後端服務。

但實際上,即使框架是非阻塞的,你寫的程式碼也可能默默的藏著阻塞的部分。

這場演講將從 coroutine 的執行模型切入,深入解析:

  • 為什麼 non-blocking 架構中,還會有 blocking code 的出現?
  • 常見的 blocking code 來源有哪些?
  • 怎麼正確處理 blocking,避免影響程式效能
  • 如何設計乾淨的架構,讓 blocking code 被控管、可預測

如果你正在使用 Ktor 或 coroutine 架構開發後端,這場分享能幫助你更有意識地寫出真正非阻塞、穩定、具彈性的程式碼。

402AB
402AB
17:15
45 分鐘
當測試成為開發瓶頸:深入 Spring Boot Test 調教實戰
Abi Chang

在產品開發過程中,我們的後端功能越來越豐富,單元測試也越寫越多,但伴隨而來的是兩個痛點:

  1. 測試粒度太細,每次重構、架構調整都變得寸步難行
  2. 2000+ 個測試需要跑 10+ 分鐘,CI/CD 流程變成了漫長的等待

測試本該是開發的助力,為何卻成為最大的阻礙?
這是一個在困境中突破重圍的實戰故事,分享我們如何重新思考測試策略,讓測試架構脫胎換骨,並深入 Spring Boot Test 原理,找到效能優化的關鍵。

401
401