{"$schema": "https://c3voc.de/schedule/schema.json", "generator": {"name": "pretalx", "version": "2026.3.0.dev0", "url": "https://pretalx.com"}, "schedule": {"url": "https://pretalx.com/jcconf-2026/schedule/", "version": "0.11", "base_url": "https://pretalx.com", "conference": {"acronym": "jcconf-2026", "title": "JCConf 2026", "start": "2026-09-11", "end": "2026-09-11", "daysCount": 1, "timeslot_duration": "00:05", "time_zone_name": "Asia/Taipei", "colors": {"primary": "#0e8faf"}, "rooms": [{"name": "401", "slug": "5737-401", "guid": "509a76de-ca09-5a7b-a6bb-2d69dce72124", "description": null, "capacity": null}, {"name": "402AB", "slug": "5738-402ab", "guid": "5e58c945-cd27-590a-94c1-2ab3c5399653", "description": null, "capacity": null}, {"name": "402CD", "slug": "5739-402cd", "guid": "fd68a3d4-70ed-5689-9187-8602e1d2154d", "description": null, "capacity": null}, {"name": "203", "slug": "5740-203", "guid": "b8703fb9-81ef-5801-b430-27af3d0da532", "description": null, "capacity": null}, {"name": "403", "slug": "5741-403", "guid": "1521be3d-37b6-5afd-984c-a3019c5bf561", "description": null, "capacity": null}], "tracks": [{"name": "Promotion", "slug": "7146-promotion", "color": "#C19D0C"}, {"name": "402AB", "slug": "7147-402ab", "color": "#268785"}, {"name": "401", "slug": "7148-401", "color": "#D0104C"}, {"name": "402CD", "slug": "7149-402cd", "color": "#1B813E"}, {"name": "203", "slug": "7150-203", "color": "#954A45"}, {"name": "403", "slug": "7151-403", "color": "#574C57"}], "days": [{"index": 1, "date": "2026-09-11", "day_start": "2026-09-11T04:00:00+08:00", "day_end": "2026-09-12T03:59:00+08:00", "rooms": {"401": [{"guid": "af1216b9-7e7f-5dbb-93e7-2b3349cf0996", "code": "CRFQF9", "id": 103156, "logo": null, "date": "2026-09-11T09:40:00+08:00", "start": "09:40", "end": "2026-09-11T10:25:00+08:00", "duration": "00:45", "room": "401", "slug": "jcconf-2026-103156-valhalla-now", "url": "https://pretalx.com/jcconf-2026/talk/CRFQF9/", "title": "Valhalla, Now!", "subtitle": "", "track": null, "type": "Session", "language": "en", "abstract": "No OpenJDK project has excited Java developers as much as Valhalla. And no other has strung us along for that long.But now the wait is over!\n\nValue types are the first step to mending the rift in Java's type system and allow us the creation of more primitive-like classes. They will (likely) preview for the first time in JDK 28, so it's time to take a close look at:\n\n- syntax and semantics of value types\n- limitations and capabilities\n- performance characteristics\n- the next steps Valhalla is planning to take\n\nAfter this talk, you'll know what value types can do in JDK 28 - and what they can't. And the latter is just as important because the trek to Valhalla is still long and value types are neither intended nor capable to fulfill all expectations we may have for the project at large.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "RDGJM9", "name": "Nicolai Parlog", "avatar": "https://pretalx.com/media/avatars/SP3XCM_vcucusd.webp", "biography": "Nicolai (aka nipafx) is a Java enthusiast focused on language features, core APIs, and runtime evolution with a passion for learning and sharing. He does that mostly at conferences and in his biweekly Inside Java Newscast, but also occasionally in podcasts, live streams, articles, and books - more on all that on nipafx.dev. He's a Java Developer Advocate at Oracle and otherwise best known for his haircut.", "public_name": "Nicolai Parlog", "guid": "93114fcd-50b0-58a6-b163-0dbc9eabbef5", "url": "https://pretalx.com/jcconf-2026/speaker/RDGJM9/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/CRFQF9/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/CRFQF9/", "attachments": []}, {"guid": "854f392d-6022-5f38-b5bc-a386d9c7c2e3", "code": "CZKUGQ", "id": 103476, "logo": null, "date": "2026-09-11T10:45:00+08:00", "start": "10:45", "end": "2026-09-11T11:30:00+08:00", "duration": "00:45", "room": "401", "slug": "jcconf-2026-103476-bootiful-spring-ai-2-0", "url": "https://pretalx.com/jcconf-2026/talk/CZKUGQ/", "title": "Bootiful Spring AI 2.0", "subtitle": "", "track": "401", "type": "Session", "language": "en", "abstract": "The age of artificial intelligence (because the search for regular intelligence hasn't gone well..) is nearly at hand, and it's everywhere! But is it in your application? It should be. AI is about integration, and here the Java and Spring communities come second to nobody. In this talk, we'll demystify the concepts of modern day Artificial Intelligence and look at its integration with the white hot new Spring AI project, a framework that builds on the richness of Spring Boot to extend them to the wide world of AI engineering.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YJGXN8", "name": "Josh Long", "avatar": "https://pretalx.com/media/avatars/NXUAA8_CJrxJXQ.webp", "biography": "A Spring Developer Advocate, Java Champion, Kotlin Google Developer Expert, author of numerous books, best-selling video trainer, open-source contributor, podcaster and YouTuber.", "public_name": "Josh Long", "guid": "14bab302-d1fe-56dc-8671-477aa59d55e6", "url": "https://pretalx.com/jcconf-2026/speaker/YJGXN8/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/CZKUGQ/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/CZKUGQ/", "attachments": []}, {"guid": "a996a082-2550-5daf-8676-be81a87eaa2f", "code": "K9PBPB", "id": 101229, "logo": null, "date": "2026-09-11T11:45:00+08:00", "start": "11:45", "end": "2026-09-11T12:30:00+08:00", "duration": "00:45", "room": "401", "slug": "jcconf-2026-101229-2026-java-new-feature-introduction", "url": "https://pretalx.com/jcconf-2026/talk/K9PBPB/", "title": "2026 Java New Feature Introduction", "subtitle": "", "track": "401", "type": "Session", "language": "en", "abstract": "2026 \u5e74\u91cb\u51fa\u7684 Java \u7248\u672c\u70ba 26 \u548c 27\uff0c\u5404\u81ea\u5305\u62ec\u4e86 10 \u548c 9 \u9805\u529f\u80fd\uff0c\u5176\u4e2d\u6709 10 \u9805\u9810\u89bd\u529f\u80fd\uff08\u7e3d\u5171\u70ba 5 \u9805\uff09\u30016 \u9805\u5e95\u5c64\uff0f\u6548\u80fd\u6539\u5584\u30011 \u9805\u5b89\u5168\u6027\u30011 \u9805\u79fb\u9664\uff0c\u548c 1 \u9805\u51fd\u5f0f\u5eab\u66f4\u65b0\u3002\u76f8\u8f03\u65bc\u524d\u5e7e\u7248\u4f86\u8aaa\uff0825 \u6709 18 \u9805\u300124 \u6709 24 \u9805\u300123 \u548c 22 \u5404\u6709 12 \u9805\u300121 \u6709 15 \u9805\uff0c\u4e14\u591a\u6578\u70ba\u91cd\u5927\u66f4\u65b0\uff09\uff0c\u4eca\u5e74\u7684 Java \u6eab\u548c\u5b89\u975c\u8a31\u591a\u3002\u672c\u8b70\u7a0b\u5c07\u4ecb\u7d39\u5e7e\u9805 2026 \u5e74 Java \u91cb\u51fa\u7684\u91cd\u8981\u529f\u80fd\uff0c\u4ee5\u53ca\u5982\u4f55\u904b\u7528\u5b83\u5011\u4ee5\u5efa\u7acb\u66f4\u7a69\u5065\u7684\u7a0b\u5f0f\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "SSJBAW", "name": "Joseph Kuo", "avatar": "https://pretalx.com/media/avatars/G9HLDU_IjdNFmr.webp", "biography": "\u5341\u4e94\u6b72\u7372\u8d08\u820a\u7684 386 \u96fb\u8166\uff0c\u6c92\u6709\u786c\u789f\u548c\u5149\u789f\u6a5f\u7121\u6cd5\u73a9\u5927\u88dc\u5e16\uff0c\u53ea\u80fd\u8d70\u4e0a\u5beb\u7a0b\u5f0f\u9019\u689d\u4e0d\u6b78\u8def\u3002\u9ad8\u4e2d\u6642\u958b\u767c\u4e86\u884c\u4e8b\u66c6\u8edf\u9ad4\u548c\u5c0f\u904a\u6232\uff0c\u5927\u5b78\u5538\u6578\u5b78\u526f\u4fee\u8cc7\u5de5\u73a9 C / C++ / Java\u3002\u67b6\u904e BBS \u548c\u90e8\u843d\u683c\uff0c\u6253\u5de5\u5916\u5305\u505a\u5f62\u8c61\u7db2\u7ad9\u3001\u96fb\u5546\u5e73\u53f0\u548c\u9032\u92b7\u5b58\u7cfb\u7d71\uff0c\u4e5f\u9806\u624b\u5beb\u904e MUD \u6587\u5b57\u904a\u6232\u3002\u66fe\u5728\u9023\u9396\u8cc7\u8a0a\u6559\u80b2\u6a5f\u69cb\u3001\u52a0\u503c\u7c21\u8a0a\u670d\u52d9\u5546\u3001\u5206\u6563\u5f0f\u96f2\u7aef\u5f71\u97f3\u5e73\u53f0\u3001\u5168\u7403\u96fb\u5b50\u5546\u52d9\u5e73\u53f0\u3001\u8cc7\u5b89\u9632\u8b77\u3001\u7528\u6236\u884c\u70ba\u5ee3\u544a\u7ba1\u7406\u3001\u667a\u6167\u7269\u806f\u7db2\u7b49\u516c\u53f8\u5de5\u4f5c\uff0c\u8ca0\u8cac\u5404\u5f0f\u5927\u578b\u5c08\u6848\u7684\u5546\u696d\u9700\u6c42\u3001\u7b56\u7565\u898f\u5283\u3001\u898f\u683c\u5206\u6790\u3001\u67b6\u69cb\u8a2d\u8a08\u3001\u958b\u767c\u5be6\u4f5c\u3001\u6e2c\u8a66\u8abf\u6821\u3001\u90e8\u7f72\u7dad\u904b\u3001\u9810\u6e2c\u5b78\u7fd2\uff0c\u4ee5\u53ca\u6280\u8853\u6307\u5c0e\u3002\u5c08\u9577\u662f Java\u3001\u8edf\u9ad4\u5de5\u7a0b\u3001\u7cfb\u7d71\u67b6\u69cb\u3001\u8a2d\u8a08\u6a21\u5f0f\u3001\u96f2\u7aef\u904b\u7b97\u3001\u908a\u7de3\u904b\u7b97\u3001\u7269\u806f\u7db2\u53ca\u5404\u5f0f\u76f8\u95dc\u6280\u8853\u3002\u72c2\u71b1\u5730\u559c\u611b\u628a\u73a9\u5404\u7a2e\u65b0\u77e5\u6280\u8853\uff0c\u9858\u671b\u662f\u80fd\u4e00\u8f29\u5b50\u5beb\u7a0b\u5f0f\u5beb\u5230\u8001\u3002", "public_name": "Joseph Kuo", "guid": "2c2dea2e-dc37-5673-8c63-51bc1db138b0", "url": "https://pretalx.com/jcconf-2026/speaker/SSJBAW/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/K9PBPB/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/K9PBPB/", "attachments": []}, {"guid": "8fa77388-52cb-50ba-83ce-b52aeef341e4", "code": "RBF9UL", "id": 103295, "logo": null, "date": "2026-09-11T12:30:00+08:00", "start": "12:30", "end": "2026-09-11T13:30:00+08:00", "duration": "01:00", "room": "401", "slug": "jcconf-2026-103295-lunch-and-break", "url": "https://pretalx.com/jcconf-2026/talk/RBF9UL/", "title": "\ud83c\udf74Lunch and Break", "subtitle": "", "track": null, "type": "Session", "language": "en", "abstract": "\ud83c\udf74Lunch and Break", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/RBF9UL/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/RBF9UL/", "attachments": []}, {"guid": "91569254-2ca6-5b95-b293-e2aa7f20c386", "code": "8TCNVN", "id": 101245, "logo": null, "date": "2026-09-11T13:30:00+08:00", "start": "13:30", "end": "2026-09-11T13:45:00+08:00", "duration": "00:15", "room": "401", "slug": "jcconf-2026-101245-big5---jdk", "url": "https://pretalx.com/jcconf-2026/talk/8TCNVN/", "title": "\u7576\u4e00\u7a2e Big5 \u4e0d\u5920\u7528\uff1a\u5982\u4f55\u512a\u96c5\u5730\u91cd\u69cb JDK \u5e95\u5c64\u652f\u63f4\u52d5\u614b\u96e3\u5b57\u96c6", "subtitle": "", "track": "401", "type": "Quickie", "language": "en", "abstract": "\u5728\u81fa\u7063\u7684\u4f01\u696d\u8207\u653f\u5e9c\u5927\u578b\u820a\u7cfb\u7d71\u4e2d\uff0c\u8655\u7406 Big5 \u64f4\u5145\u96e3\u5b57\u8207\u81ea\u9020\u5b57\u4e00\u76f4\u662f\u63ee\u4e4b\u4e0d\u53bb\u7684 IT \u5669\u5922\u3002\u7576\u7cfb\u7d71\u9700\u8981\u540c\u6642\u4ecb\u63a5\u591a\u500b\u5916\u90e8\u696d\u52d9\u4e2d\u5fc3\uff0c\u4e14\u6bcf\u500b\u4e2d\u5fc3\u90fd\u7dad\u8b77\u8457\u5404\u81ea\u5c08\u5c6c\u3001\u751a\u81f3\u76f8\u4e92\u885d\u7a81\u7684\u96e3\u5b57\u5b9a\u7fa9\u6642\uff0c\u50b3\u7d71\u7684\u5b57\u5143\u8655\u7406\u6a5f\u5236\u4fbf\u9762\u81e8\u675f\u7e1b\u3002\u7531\u65bc\u5e95\u5c64\u6846\u67b6\u5728\u8a2d\u8a08\u4e0a\u5c6c\u65bc\u5168\u57df\u5171\u4eab\u7684\u975c\u614b\u898f\u683c\uff0c\u5c0e\u81f4\u591a\u5957\u96e3\u5b57\u5c0d\u6620\u7121\u6cd5\u5728\u540c\u4e00\u500b\u57f7\u884c\u74b0\u5883\u4e2d\u4e26\u5b58\u3002\n\u70ba\u4e86\u89e3\u6c7a\u9019\u500b\u56f0\u5883\uff0c\u8a31\u591a\u5c08\u6848\u88ab\u8feb\u63a1\u53d6\u4e0d\u512a\u96c5\u7684\u5ba2\u88fd\u5316\u624b\u6bb5\uff1a\u5728\u7cfb\u7d71\u7684 I/O \u908a\u754c\u64b0\u5beb\u5927\u91cf\u7e41\u7463\u7684\u4f4e\u968e\u7a0b\u5f0f\u78bc\uff0c\u624b\u52d5\u5f9e\u4e32\u6d41\u4e2d\u8b80\u53d6\u539f\u59cb\u4f4d\u5143\u7d44\uff0c\u518d\u900f\u904e\u5bc6\u5bc6\u9ebb\u9ebb\u7684\u689d\u4ef6\u5f0f\u786c\u7de8\u78bc\u53bb\u5224\u65b7\u9ad8\u4f4e\u4f4d\u5143\u7d44\u7684\u6578\u503c\u7bc4\u570d\uff0c\u7b26\u5408\u7279\u5b9a\u7bc4\u570d\u5f8c\u624d\u9032\u884c\u66b4\u529b\u67e5\u8868\u6216\u5b57\u4e32\u4ee3\u63db\u3002\u9019\u7a2e\u904d\u5e03\u65bc\u7a0b\u5f0f\u908f\u8f2f\u7684\u4f4e\u968e\u4f4d\u5143\u7d44\u8655\u7406\uff0c\u4e0d\u50c5\u8b93\u7a0b\u5f0f\u78bc\u7834\u788e\u3001\u6280\u8853\u50b5\u9ad8\u6602\uff0c\u7dad\u8b77\u6210\u672c\u66f4\u662f\u707d\u96e3\u6027\u7684\u3002\n\u672c\u5834\u77ed\u8b1b\u5c07\u5206\u4eab\u4e00\u5957\u512a\u96c5\u7684\u67b6\u69cb\u91cd\u69cb\u65b9\u6848\u2014\u2014\u52d5\u614b\u5b57\u5143\u96c6\u6a5f\u5236\u3002\u9019\u5957\u6a5f\u5236\u5c07\u76ee\u5149\u6295\u5411 Java \u6838\u5fc3\uff0c\u76f4\u63a5\u91cd\u69cb\u8207\u7ffb\u8f49\u5e95\u5c64\u7684\u5b57\u5143\u7de8\u89e3\u78bc\u5f15\u64ce\uff0c\u5c07\u539f\u672c\u786c\u7de8\u78bc\u5728\u5404\u8655\u7684\u4f4d\u5143\u7d44\u5224\u65b7\uff0c\u5168\u9762\u6536\u650f\u4e26\u63d0\u5347\u81f3\u6a19\u6e96\u5b57\u5143\u8655\u7406\u5c64\u3002\n\u9019\u5957\u6a5f\u5236\u7684\u5275\u65b0\u5728\u65bc\u5c07\u539f\u672c\u5b98\u65b9\u786c\u7de8\u78bc\u3001\u5168\u57df\u5171\u4eab\u7684\u975c\u614b\u7d50\u69cb\uff0c\u5927\u5200\u95ca\u65a7\u6539\u70ba\u300c\u52d5\u614b\u5be6\u4f8b\u5316\u300d\u67b6\u69cb\uff0c\u8b93\u4e0d\u540c\u7684\u696d\u52d9\u4e2d\u5fc3\u5728\u57f7\u884c\u671f\u5404\u81ea\u64c1\u6709\u5b8c\u5168\u7368\u7acb\u7684\u5b57\u5143\u96c6\u5be6\u4f8b\uff0c\u5b8c\u7f8e\u9054\u6210\u591a\u5ba2\u6236\u9694\u96e2\u3002\u540c\u6642\uff0c\u5b57\u5143\u96c6\u5728\u521d\u59cb\u5316\u6642\u6703\u52d5\u614b\u8b80\u53d6\u5916\u90e8\u7684 Excel \u96e3\u5b57\u5c0d\u6620\u8868\uff0c\u5c07\u5176\u8207\u6a19\u6e96\u57fa\u790e\u5b57\u96c6\u878d\u5408\u6210\u4e00\u9ad4\u5316\u7684\u5c0d\u7167\u898f\u683c\uff0c\u5c08\u6848\u5f9e\u6b64\u53ea\u9700\u547c\u53eb\u6a19\u6e96 API \u5373\u53ef\u81ea\u52d5\u5b8c\u6210\u67e5\u8868\u3002\u6700\u5f8c\uff0c\u6a5f\u5236\u66f4\u8a2d\u8a08\u4e86\u7279\u88fd\u7684\u6df7\u8840\u64f4\u5145\u5340\u584a\uff0c\u7576\u9047\u5230\u8d85\u51fa\u5e38\u898f\u7bc4\u570d\u7684\u8d85\u5927 Unicode \u7f55\u898b\u5b57\u6642\uff0c\u6703\u81ea\u52d5\u5206\u6d41\u81f3\u7368\u7acb\u7684\u8f14\u52a9\u5c0d\u6620\u4e2d\uff0c\u517c\u9867\u4e86\u7d55\u5927\u591a\u6578\u5e38\u7528\u5b57\u7684\u539f\u751f\u9ad8\u901f\u67e5\u8868\u6548\u80fd\uff0c\u53c8\u8ce6\u4e88\u4e86\u7cfb\u7d71\u8655\u7406\u8d85\u5927\u96e3\u5b57\u7684\u7121\u9650\u64f4\u5145\u5f48\u6027\u3002\n\u900f\u904e\u9019\u5834 15 \u5206\u9418\u7684\u6280\u8853\u5206\u4eab\uff0c\u807d\u773e\u5c07\u80fd\u638c\u63e1\u5982\u4f55\u5c07\u4e00\u500b\u50f5\u5316\u7684\u5e95\u5c64\u5143\u4ef6\uff0c\u91cd\u69cb\u70ba\u5177\u5099\u9ad8\u5ea6\u5f48\u6027\u7684\u52d5\u614b\u8cc7\u6599\u9a45\u52d5\u67b6\u69cb\uff0c\u5fb9\u5e95\u544a\u5225\u624b\u52d5\u89e3\u6790\u4f4d\u5143\u7d44\u8207\u7dad\u8b77\u6df7\u4e82\u7de8\u78bc\u908f\u8f2f\u7684\u75db\u82e6\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "NRPBU8", "name": "Junli Xiao", "avatar": "https://pretalx.com/media/avatars/E33A8H_ipinKuu.webp", "biography": "\u91d1\u878d\u7cfb\u7d71\u8edf\u9ad4\u5de5\u7a0b\u5e2b\uff0c\u8457\u91cd\u65bc\u5927\u91cf\u8cc7\u6599\u8655\u7406\uff0c\u95dc\u6ce8\u64f4\u5145\u6027\u548c\u6548\u80fd\u3002", "public_name": "Junli Xiao", "guid": "09ea1b38-d6fa-5608-961e-3356812945f0", "url": "https://pretalx.com/jcconf-2026/speaker/NRPBU8/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/8TCNVN/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/8TCNVN/", "attachments": []}, {"guid": "c847addf-1d33-5223-a177-43e8e536fabe", "code": "WZFEQB", "id": 99745, "logo": null, "date": "2026-09-11T14:00:00+08:00", "start": "14:00", "end": "2026-09-11T14:45:00+08:00", "duration": "00:45", "room": "401", "slug": "jcconf-2026-99745-java-agent-stack-2026-spring-ai-koog-embabel--mcp-a2a", "url": "https://pretalx.com/jcconf-2026/talk/WZFEQB/", "title": "Java Agent Stack 2026\uff1aSpring AI\u3001Koog\u3001Embabel \u8207 MCP / A2A \u7684\u4f01\u696d\u843d\u5730\u8def\u7dda\u5716", "subtitle": "", "track": "401", "type": "Session", "language": "en", "abstract": "AI Agent \u5f9e prompt demo \u9032\u5165\u4f01\u696d\u843d\u5730\u5f8c\uff0c\u771f\u6b63\u56f0\u96e3\u7684\u554f\u984c\u4e0d\u518d\u53ea\u662f\u5982\u4f55\u5beb prompt\uff0c\u800c\u662f\u5982\u4f55\u628a\u6a21\u578b\u3001\u5de5\u5177\u3001\u8cc7\u6599\u3001\u5de5\u4f5c\u6d41\u3001\u89c0\u6e2c\u6027\u3001\u6b0a\u9650\u8207\u90e8\u7f72\u6cbb\u7406\u6574\u5408\u9032\u65e2\u6709\u7cfb\u7d71\u3002\u5c0d\u8a31\u591a Java / Kotlin \u5718\u968a\u4f86\u8aaa\uff0c\u7b54\u6848\u4e0d\u4e00\u5b9a\u662f\u628a\u5546\u696d\u908f\u8f2f\u642c\u5230 Python\uff0c\u800c\u662f\u5728\u539f\u672c\u627f\u8f09\u6838\u5fc3\u670d\u52d9\u7684 JVM stack \u4e0a\u5efa\u7acb\u53ef\u7dad\u904b\u7684 Agent \u5de5\u5177\u93c8\u3002\n\n\u672c\u5834\u5206\u4eab\u5c07\u4ee5 production agent \u7684\u4e09\u5c64\u67b6\u69cb\u5207\u5165\uff1a\u7b2c\u4e00\u5c64\u662f integration layer\uff0c\u4f7f\u7528 Spring AI \u5c07 ChatClient\u3001tool calling\u3001RAG\u3001memory\u3001observability\u3001evaluation \u8207 MCP client / server \u6574\u5408\u9032 Spring Boot \u7684 dependency injection \u8207 auto-configuration \u6a21\u578b\uff1b\u7b2c\u4e8c\u5c64\u662f orchestration layer\uff0c\u6bd4\u8f03 Embabel \u8207 Koog \u5982\u4f55\u5c07\u591a\u6b65\u9a5f\u4efb\u52d9\u7d44\u7e54\u6210 goal\u3001action\u3001planner\u3001graph \u6216 workflow\uff0c\u800c\u4e0d\u662f\u505c\u7559\u5728\u55ae\u6b21 prompt \u547c\u53eb\uff1b\u7b2c\u4e09\u5c64\u662f interop layer\uff0c\u8aaa\u660e MCP \u5982\u4f55\u6210\u70ba\u5de5\u5177\u8207\u8cc7\u6599\u7684\u6a19\u6e96\u63a5\u6cd5\uff0c\u4ee5\u53ca A2A \u5982\u4f55\u5728\u9700\u8981\u6642\u628a\u5916\u90e8 agent \u4f5c\u70ba remote capability \u7d0d\u5165 JVM \u5e73\u53f0\u3002\n\n\u9019\u5834\u6f14\u8b1b\u4e0d\u6703\u4e3b\u5f35 Java \u53d6\u4ee3 Python\uff0c\u800c\u662f\u56de\u7b54\u4e00\u500b\u66f4\u5be6\u52d9\u7684\u554f\u984c\uff1a\u7576\u4f60\u7684\u8cc7\u6599\u3001\u4ea4\u6613\u6d41\u7a0b\u3001\u6b0a\u9650\u63a7\u7ba1\u8207\u90e8\u7f72\u5e73\u53f0\u672c\u4f86\u5c31\u5728 JVM \u751f\u614b\u88e1\uff0c\u5982\u4f55\u5728\u4e0d\u91cd\u5beb\u65e2\u6709\u7cfb\u7d71\u7684\u524d\u63d0\u4e0b\uff0c\u628a Agent \u8b8a\u6210\u53ef\u4ee5\u6e2c\u8a66\u3001\u53ef\u4ee5\u89c0\u6e2c\u3001\u53ef\u4ee5\u90e8\u7f72\u3001\u53ef\u4ee5\u6cbb\u7406\u7684 production component\u3002\n\n\u807d\u773e\u5c07\u6703\u770b\u5230\u4e00\u500b\u4ee5 Spring Boot / Spring AI \u70ba\u4e3b\u7684 agent orchestrator \u7bc4\u4f8b\uff0c\u642d\u914d MCP tool integration\uff0c\u4e26\u900f\u904e Koog \u6216 Embabel \u7684 code walkthrough \u6bd4\u8f03\u4e0d\u540c orchestration \u98a8\u683c\u3002\u6700\u5f8c\u6703\u4ee5 A2A remote agent \u4f5c\u70ba\u8de8 runtime \u4e92\u901a\u7684\u6536\u5c3e\u6848\u4f8b\uff0c\u8aaa\u660e\u4f01\u696d\u74b0\u5883\u5982\u4f55\u540c\u6642\u5bb9\u7d0d JVM agent\u3001\u5916\u90e8 agent \u8207\u96f2\u7aef\u90e8\u7f72\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WYDZSR", "name": "Jiayun Zhou", "avatar": null, "biography": ".", "public_name": "Jiayun Zhou", "guid": "4e5cbb7d-8f69-5c99-9e8f-6238869e04b7", "url": "https://pretalx.com/jcconf-2026/speaker/WYDZSR/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/WZFEQB/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/WZFEQB/", "attachments": []}, {"guid": "5ee5617b-5ce9-5733-afe8-cf588a77b820", "code": "DR9WXE", "id": 98449, "logo": null, "date": "2026-09-11T15:00:00+08:00", "start": "15:00", "end": "2026-09-11T15:45:00+08:00", "duration": "00:45", "room": "401", "slug": "jcconf-2026-98449-coding-agent--tdd-edd--context-efficiency", "url": "https://pretalx.com/jcconf-2026/talk/DR9WXE/", "title": "\u5f8c Coding Agent \u6642\u4ee3\u7684\u8edf\u9ad4\u5de5\u7a0b\uff1aTDD\u3001EDD \u8207 Context Efficiency", "subtitle": "", "track": "401", "type": "Session", "language": "en", "abstract": "Coding Agent \u5df2\u7d93\u6210\u70ba\u8a31\u591a\u5de5\u7a0b\u5e2b\u7684\u65e5\u5e38\u5de5\u5177\uff0c\u4f46\u8a31\u591a\u5de5\u7a0b\u5e2b\u6703\u53cd\u554f\u81ea\u5df1\uff1a\u300c\u90a3\u9084\u9700\u8981\u5b78\u7fd2\u8edf\u9ad4\u5de5\u7a0b\u55ce\uff1f\u600e\u6a23\u5b50\u7684\u9032\u6b65\u5728\u5f8c Coding Agent \u6642\u4ee3\u9084\u7b97\u662f\u9032\u6b65\u5462\uff1f\u300d\n\n\u672c talk \u63d0\u51fa\u4e00\u689d\u5de5\u7a0b\u5e2b\u5728\u5f8c Coding Agent \u6642\u4ee3\u7684\u5347\u7d1a\u8def\u5f91\uff0c\u5206\u70ba\u56db\u500b\u95dc\u5361\uff1a\n- Level 1\uff1a**IDE for agent** \u2014 \u5148\u8a2d\u7f6e\u500b LSP\uff0c\u8b93 agent \u6709 IDE \u53ef\u4ee5\u7528\u5427\u3002\n- Level 2\uff1a**Integration Test-Driven Development** \u2014 \u5f9e unit test \u5347\u7d1a\u5230 integration test\uff0c\u8b93 agent \u5728\u66f4\u65e9\u7684\u968e\u6bb5\u9a57\u8b49\u66f4\u6df1\u5c64\u7684\u884c\u70ba\u3002\n- Level 3\uff1a**EDD\uff08Eval-Driven Development\uff09** \u2014 \u50b3\u7d71\u6e2c\u8a66\u9a57\u8b49\u300c\u529f\u80fd\u5c0d\u4e0d\u5c0d\u300d\uff0cEDD \u9a57\u8b49\u300cagent \u7684\u884c\u70ba\u5c0d\u4e0d\u5c0d\u300d\u3002\u4ee5\u5be6\u969b\u958b\u767c\u7d93\u9a57\u70ba\u4f8b\uff1acljfmt \u683c\u5f0f\u5316\u5de5\u5177\u5728\u8abf\u6574\u7e2e\u6392\u5f8c\uff0cagent \u7684 str_replace \u64cd\u4f5c\u6703\u56e0\u70ba\u7a7a\u767d\u5b57\u5143\u4e0d\u7b26\u800c\u53cd\u8986\u5931\u6557\uff0c\u6700\u7d42\u6574\u500b\u6a94\u6848\u91cd\u5beb\u2014\u2014\u5927\u91cf token \u6d6a\u8cbb\u5728\u4e00\u500b\u53ef\u4ee5\u88ab\u89e3\u6c7a\u7684\u7d50\u69cb\u6027\u554f\u984c\u4e0a\u3002\u4e00\u500b\u6709\u6548\u7684 skill\uff0c\u80fd\u8b93 agent \u6539\u7528 S-expression \u7d50\u69cb\u6bd4\u5c0d\u4f86\u53d6\u4ee3\u6587\u5b57\u6bd4\u5c0d\uff0c\u771f\u6b63\u6d88\u9664\u9019\u500b behavioral gap\uff0c\u800c\u4e0d\u53ea\u662f\u544a\u8a34 agent \u61c9\u8a72\u5c0f\u5fc3\u683c\u5f0f\u3002\n- Level 4\uff1a**Context Efficiency** \u2014 AI \u8981\u5b8c\u6210\u4e00\u500b\u4efb\u52d9\uff0c\u4e0d\u9700\u8981\u8b80\u6574\u500b codebase\uff0c\u53ea\u9700\u8981\u8b80\u300c\u4efb\u52d9\u76f8\u95dc\u7684\u90a3\u5e7e\u500b\u6a94\u6848\u300d\u2014\u2014\u6211\u5011\u53ef\u4ee5\u7a31\u4e4b\u70ba\u5c40\u90e8\u5b50\u5716\uff08task-relevant subgraph\uff09\u3002\u9019\u500b\u5b50\u5716\u7684\u5927\u5c0f\uff0c\u76f4\u63a5\u6c7a\u5b9a\u4e86 context \u7684\u6d88\u8017\u91cf\u3002\u7136\u800c\uff0c\u5c40\u90e8\u5b50\u5716\uff08task-relevant subgraph\uff09\u7684\u5927\u5c0f\uff0c\u7531\u8edf\u9ad4\u67b6\u69cb\u6c7a\u5b9a\uff0c\u4e0d\u7531\u6a21\u578b\u6c7a\u5b9a\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "SPYL8W", "name": "Laurence Chen", "avatar": "https://pretalx.com/media/avatars/DX3GH7_8dSiyIm.webp", "biography": "IT \u9867\u554f\u3001\u5c08\u6ce8\u65bc\u5354\u52a9\u4f01\u696d\u5c0e\u5165 Modern Data Stack\u3002\n\n\u73fe\u8077\uff1a\n- REPLWARE ( https://replware.dev ) CEO\n- \u53f0\u7063 Clojure \u793e\u7fa4 ( https://clojure.tw/ ) \u7dda\u4e0b\u6d3b\u52d5\u4e3b\u8fa6\u4eba\n- Taipei dbt Meetup \u793e\u7fa4 ( https://medium.com/dbt-local-taiwan ) \u7dda\u4e0b\u6d3b\u52d5\u4e3b\u8fa6\u4eba\n\n\u8457\u4f5c\uff1a\n- \u5f9e\u8a66\u7b97\u8868\u5230\u8cc7\u6599\u5e73\u53f0\uff1a\u91cd\u69cb\u8cc7\u6599\u5de5\u7a0b\u7684\u6280\u8853\u8207\u5718\u968a ( https://replware.dev/mds )", "public_name": "Laurence Chen", "guid": "0068a84c-6b26-5407-bd93-3cadfed80acf", "url": "https://pretalx.com/jcconf-2026/speaker/SPYL8W/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/DR9WXE/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/DR9WXE/", "attachments": []}, {"guid": "c8ce5e7c-e613-546c-8a90-dd68b0a1ddf4", "code": "3YEHYW", "id": 103292, "logo": null, "date": "2026-09-11T15:45:00+08:00", "start": "15:45", "end": "2026-09-11T16:15:00+08:00", "duration": "00:30", "room": "401", "slug": "jcconf-2026-103292-tea-time", "url": "https://pretalx.com/jcconf-2026/talk/3YEHYW/", "title": "\u2615 Tea Time", "subtitle": "", "track": null, "type": "Session", "language": "en", "abstract": "\u2615 Tea Time", "description": null, "recording_license": "", "do_not_record": false, "persons": [], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/3YEHYW/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/3YEHYW/", "attachments": []}, {"guid": "9853aa82-c238-5517-8909-fe3043cc8517", "code": "NNXDNM", "id": 99751, "logo": null, "date": "2026-09-11T16:15:00+08:00", "start": "16:15", "end": "2026-09-11T17:00:00+08:00", "duration": "00:45", "room": "401", "slug": "jcconf-2026-99751-is-internal-quality-still-relevant-for-ai-agents", "url": "https://pretalx.com/jcconf-2026/talk/NNXDNM/", "title": "Is Internal Quality Still Relevant for AI agents?", "subtitle": "", "track": "401", "type": "Session", "language": "en", "abstract": "\"With AI, Code doesn't matter anymore.\" It's a seductive idea, and it's gaining believers: if specs and tests are the real source of truth and code is just a disposable artifact the model regenerates on demand, then technical debt stops being a problem. If the code has become impossible to change, just let AI rewrite it all from scratch. Clean architecture, naming, and separation of concerns have become yesterday's rituals \u2014 like punch cards.\nThis talk argues the opposite: internal quality matters more in an AI-driven workflow, not less. There are technical reasons why LLMs are more sensitive to well-structured code than humans are, and we'll look at examples drawn from real experience, alongside research papers that shed some light on the matter.\nIt's also a question of economics. If technical debt can be measured in the tokens \u2014 that is dollars \u2014 needed to work around it, then keeping it low directly saves money.\nBut there's a catch: \"code quality\" for an LLM is not exactly the same thing as what computing literature has traditionally called code quality. Modularization and good naming matter even more than before, but some classic \"clean code\" advice can actually worsen a model's performance. We'll look at where the two notions diverge, and how to improve your productivity scientifically \u2014 by measuring the effect of good structure and good instructions rather than assuming it.\nMain Takeways:\nWhy LLMs are technically more sensitive to code structure than human readers\nWhich conventional \"clean code\" practices can backfire on a model, and why\nHow to measure and improve assistant productivity scientifically, rather than by gut feel", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "LNMNYM", "name": "Uberto Barbini", "avatar": "https://pretalx.com/media/avatars/TDD8KH_oZcc24J.webp", "biography": "Uberto is a passionate programmer with more than 20 years of experience designing and building successful software products in many industries.\nThese days he also works with large organizations, helping them adopt AI in their development process effectively and safely.\nWhen not coding, Uberto loves public speaking, writing and teaching programming. He published a book in 2023 about a pragmatic approach to FP (and DDD) in Kotlin (https://pragprog.com/titles/uboop/from-objects-to-functions/), and a 2026 book on getting real value out of AI coding assistants, Process Over Magic: Beyond Vibe Coding (https://pragprog.com/titles/ubaidev/process-over-magic-beyond-vibe-coding/).\nYou can read his blog here: https://medium.com/@ramtop\nhttps://bsky.app/profile/ramtop.bsky.social\nhttps://x.com/ramtop", "public_name": "Uberto Barbini", "guid": "6c7f4c5b-16e2-55d1-8a39-c26c652cb949", "url": "https://pretalx.com/jcconf-2026/speaker/LNMNYM/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/NNXDNM/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/NNXDNM/", "attachments": []}], "402AB": [{"guid": "ea768e27-b447-5c49-800b-6e128149d54c", "code": "JTUQJX", "id": 103153, "logo": null, "date": "2026-09-11T10:45:00+08:00", "start": "10:45", "end": "2026-09-11T11:30:00+08:00", "duration": "00:45", "room": "402AB", "slug": "jcconf-2026-103153-java--kotlin--sdd", "url": "https://pretalx.com/jcconf-2026/talk/JTUQJX/", "title": "\u5f9e\u6e2c\u8a66\u5230\u898f\u683c\uff1aJava \u8207 Kotlin \u958b\u767c\u8005\u7684 SDD \u5be6\u6230\u6307\u5357", "subtitle": "", "track": "402AB", "type": "Session", "language": "en", "abstract": "\u7576 AI \u52a0\u5165\u8edf\u9ad4\u958b\u767c\u6d41\u7a0b\u5f8c\uff0c\u96d6\u7136\u7522\u51fa\u8b8a\u591a\u4e86\uff0c\u4f46\u82e5\u662f\u9700\u6c42\u4e0d\u6e05\u695a\u3001\u908a\u754c\u6c92\u5b9a\u7fa9\u3001\u9a57\u6536\u689d\u4ef6\u4e0d\u660e\u78ba\u6642\uff0c\u5373\u4fbf\u6a21\u578b\u8070\u660e\u4e5f\u53ef\u80fd\u7522\u751f\u770b\u4f3c\u5408\u7406\u3001\u5be6\u969b\u537b\u4e0d\u7b26\u5408\u671f\u5f85\u7684\u5be6\u4f5c\u3002\u800c\u770b\u4f3c\u8001\u6d3e\u7684\u6e2c\u8a66\u65b9\u6cd5\u8ad6\uff0c\u5728\u9019\u6a23\u7684\u6d41\u7a0b\u88e1\u53cd\u800c\u767c\u63ee\u95dc\u9375\u7684\u4f5c\u7528\u3002\n\n\u9019\u5834\u5206\u4eab\u5c07\u5f9e\u958b\u767c\u8005\u719f\u6089\u7684 TDD \u7d93\u9a57\u51fa\u767c\uff0c\u91cd\u65b0\u7406\u89e3 Spec-Driven Development\uff08SDD\uff09\u5728 AI \u6642\u4ee3\u7684\u50f9\u503c\u3002SDD \u5c07\u898f\u683c\u3001\u8a2d\u8a08\u3001\u4efb\u52d9\u62c6\u89e3\u3001\u6e2c\u8a66\u8207\u5be6\u4f5c\u4e32\u6210\u5b8c\u6574\u7684\u958b\u767c\u6d41\u7a0b\uff0c\u4e26\u900f\u904e TDD \u9a57\u8b49\u7d50\u679c\u662f\u5426\u7b26\u5408\u9810\u671f\u3002\u6211\u5011\u5c07\u4ee5 Java/Kotlin \u5c08\u6848\u4e2d\u5e38\u898b\u7684\u958b\u767c\u60c5\u5883\u70ba\u4f8b\uff0c\u793a\u7bc4\u5982\u4f55\u5148\u5b9a\u7fa9\u529f\u80fd\u898f\u683c\u3001\u9650\u5236\u689d\u4ef6\u8207\u9a57\u6536\u6a19\u6e96\uff0c\u518d\u5f15\u5c0e AI Agent \u7522\u751f\u6e2c\u8a66\u8207\u5be6\u4f5c\uff0c\u4e26\u7528\u6e2c\u8a66\u56de\u994b\u6aa2\u67e5\u7522\u51fa\u662f\u5426\u771f\u7684\u5c0d\u9f4a\u898f\u683c\u3002\n\n\u9664\u4e86\u57fa\u790e\u6d41\u7a0b\u5916\uff0c\u4e5f\u6703\u8a0e\u8ad6\u5982\u4f55\u900f\u904e\u589e\u52a0 Context\u3001Skill \u7b49\u65b9\u5f0f\uff0c\u8b93 AI Agent \u80fd\u66f4\u7a69\u5b9a\u5730\u7406\u89e3\u958b\u767c\u6163\u4f8b\u8207\u5718\u968a\u5de5\u4f5c\u6d41\u7a0b\u3002\u807d\u5b8c\u9019\u5834\u6f14\u8b1b\u5f8c\uff0c\u807d\u773e\u5c07\u5c0d SDD \u5982\u4f55\u63d0\u5347 AI \u751f\u6210\u54c1\u8cea\u3001\u5354\u52a9\u5718\u968a\u53d6\u5f97\u66f4\u7a69\u5b9a\u7684\u958b\u767c\u6210\u679c\u6709\u66f4\u9032\u4e00\u6b65\u7684\u8a8d\u8b58\uff0c\u4e26\u91cd\u65b0\u601d\u8003\u5728 AI Agent \u6642\u4ee3\uff0c\u958b\u767c\u8005\u61c9\u8a72\u5982\u4f55\u5b88\u4f4f\u898f\u683c\u3001\u6e2c\u8a66\u8207\u54c1\u8cea\u8cac\u4efb\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "M3UNQJ", "name": "\u8303\u8056\u4f51", "avatar": "https://pretalx.com/media/avatars/JL9ME8_D9NU8WS.webp", "biography": "JetBrains \u6280\u8853\u50b3\u6559\u58eb\uff0c\u8ca0\u8cac\u63a8\u5ee3 Kotlin\u3001JetBrains IDE \u53ca\u76f8\u95dc\u6280\u8853\u3002\u5e73\u6642\u9189\u5fc3\u65bc\u6280\u8853\u7814\u7a76\uff0c\u5c08\u6ce8\u65bc Web\u3001\u5f8c\u7aef\u6280\u8853\u53ca\u80fd\u63d0\u5347\u751f\u7522\u529b\u7684\u6280\u5de7\uff0c\u81f4\u529b\u65bc\u5c07\u8907\u96dc\u7684\u6280\u8853\u540d\u8a5e\u7528\u901a\u4fd7\u6613\u61c2\u7684\u65b9\u5f0f\u8b93\u65b0\u624b\u4e5f\u80fd\u5438\u6536\u3002\u5de5\u4f5c\u4e4b\u9918\u4e5f\u662f\u591a\u5e74\u6280\u8853\u793e\u7fa4\u5fd7\u5de5\uff0c\u7a4d\u6975\u53c3\u8207\u958b\u6e90\u793e\u7fa4\u904b\u4f5c\u3002", "public_name": "\u8303\u8056\u4f51", "guid": "b371ad3e-b8cd-5f3e-840d-7d234620bfe3", "url": "https://pretalx.com/jcconf-2026/speaker/M3UNQJ/"}, {"code": "3CGM3N", "name": "\u9ad8\u898b\u9f8d", "avatar": "https://pretalx.com/media/avatars/N8MTD9_jAOw6MJ.webp", "biography": "\u7db2\u7ad9\u7a0b\u5f0f\u958b\u767c\u8005 / \u8b1b\u5e2b / \u904a\u6232\u5b85 / \u6f2b\u756b\u5b85\uff0c\u559c\u611b\u975e\u4e3b\u6d41\u7684\u65b0\u73a9\u5177\uff0c\u8457\u6709\u300a\u70ba\u4f60\u81ea\u5df1\u5b78 Git\u300b\u4ee5\u53ca\u300a\u70ba\u4f60\u81ea\u5df1\u5b78 Ruby on Rails\u300b\u7b49\u66a2\u92b7\u66f8\u7c4d\uff0c\u6700\u8fd1\u5728\u5fd9\u8457\u5beb\u300a\u70ba\u4f60\u81ea\u5df1\u5b78 Python\u300b\u3002", "public_name": "\u9ad8\u898b\u9f8d", "guid": "625a2a41-4279-5592-95b3-5155e5487759", "url": "https://pretalx.com/jcconf-2026/speaker/3CGM3N/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/JTUQJX/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/JTUQJX/", "attachments": []}, {"guid": "54b69ff8-e54b-50c9-b7d7-ec89d8565739", "code": "AUFDC8", "id": 100209, "logo": null, "date": "2026-09-11T11:45:00+08:00", "start": "11:45", "end": "2026-09-11T12:30:00+08:00", "duration": "00:45", "room": "402AB", "slug": "jcconf-2026-100209-why-spring-boot-feels-smaller-in-kotlin", "url": "https://pretalx.com/jcconf-2026/talk/AUFDC8/", "title": "Why Spring Boot Feels Smaller in Kotlin", "subtitle": "", "track": "402AB", "type": "Session", "language": "en", "abstract": "Spring Boot applications often grow into layers of builders, null checks, utility classes, and repetitive mapping code. Kotlin removes much of that weight without replacing it with \u201cmagic.\u201d\n\nJoin me for a practical introduction to Kotlin from the perspective of a Spring Boot developer. I will show how features like strict nullability, smart casts, extension functions, reified generics, and Kotlin DSLs make backend code safer, smaller, and easier to reason about while still working seamlessly with existing Java codebases.\n\nAlong the way, we will look under the hood at what actually happens when Kotlin meets Spring. Why does Spring need the allOpen plugin? What changes when classes become final by default? How does Java interoperability really work? And why do some Kotlin features feel so natural in Spring applications while others can quietly work against you?\n\nI will also share lessons from introducing Kotlin into large production systems, including common mistakes Java developers make early on, how Kotlin\u2019s type system changes everyday coding habits, and how libraries like Mappie, MockK, Kotest, and Exposed fit naturally into the ecosystem.\n\nBy the end of the talk, you will understand not just how to write Kotlin in Spring Boot, but why Kotlin changes the way Spring applications feel to build and maintain.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WSTVBX", "name": "Frederik Pietzko", "avatar": "https://pretalx.com/media/avatars/BC7BHX_w2008in.webp", "biography": "Frederik is a Developer Advocate at JetBrains, passionate about building the best possible products, and regularly presents at international conferences and writes the occasional blog post. \nIn his free time, he likes to explore programming languages and frameworks, meet and chat with other software enthusiasts, and play with his cats.", "public_name": "Frederik Pietzko", "guid": "4fdbdb62-07af-57ea-b9d6-3cfe34e625d7", "url": "https://pretalx.com/jcconf-2026/speaker/WSTVBX/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/AUFDC8/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/AUFDC8/", "attachments": []}, {"guid": "638e924e-a37b-5aa7-ac16-659bfeb21a46", "code": "9UQNVE", "id": 99421, "logo": null, "date": "2026-09-11T13:30:00+08:00", "start": "13:30", "end": "2026-09-11T13:45:00+08:00", "duration": "00:15", "room": "402AB", "slug": "jcconf-2026-99421-compose-hot-reload--ui", "url": "https://pretalx.com/jcconf-2026/talk/9UQNVE/", "title": "\u5373\u5beb\u5373\u66f4\u65b0\uff1a\u7528 Compose Hot Reload \u63d0\u5347 UI \u958b\u767c\u9ad4\u9a57", "subtitle": "", "track": "402AB", "type": "Quickie", "language": "en", "abstract": "\u5beb UI \u5f88\u6709\u8da3\uff0c\u4f46\u6bcf\u6b21\u4fee\u6539\u4e00\u9ede\u5c31\u8981\u7b49\u7de8\u8b6f\uff0c\u5c31\u4e00\u9ede\u90fd\u4e0d\u6709\u8da3\u4e86\uff01\u96a8\u8457 Compose Multiplatform \u7684\u51fa\u73fe\uff0cKotlin \u958b\u767c\u8005\u5df2\u7d93\u80fd\u7528\u5ba3\u544a\u5f0f\u8a9e\u6cd5\u6253\u9020\u8de8\u5e73\u53f0 UI\u3002\u4f46\u958b\u767c\u8005\u5c0d UI \u958b\u767c\u7684\u671f\u5f85\uff0c\u9664\u4e86\u8a9e\u6cd5\u8a2d\u8a08\u5916\uff0c\u4e5f\u5e0c\u671b\u80fd\u5728\u958b\u767c\u904e\u7a0b\u4e2d\u5feb\u901f\u770b\u898b\u4fee\u6539\u7d50\u679c\u3002\u96d6\u7136 Jetpack Compose \u900f\u904e @Preview Annotation \u6539\u5584\u4e86\u90e8\u5206\u9810\u89bd\u9ad4\u9a57\uff0c\u4f46\u9047\u5230\u771f\u5be6 App \u72c0\u614b\u3001Navigation\u3001ViewModel \u6216\u8de8\u5e73\u53f0 UI \u6642\uff0c\u4ecd\u5f88\u96e3\u5b8c\u5168\u53d6\u4ee3\u5be6\u969b\u8dd1\u8d77\u4f86\u7684\u61c9\u7528\u7a0b\u5f0f\u3002\n\n\u73fe\u5728\uff0cJetBrains \u5718\u968a\u63a8\u51fa Compose Hot Reload\uff0c\u8b93\u958b\u767c\u8005\u80fd\u5728\u904b\u4f5c\u4e2d\u7684 Compose Multiplatform \u61c9\u7528\u88e1\u4fee\u6539 UI \u7a0b\u5f0f\u78bc\uff0c\u5132\u5b58\u5f8c\u5feb\u901f\u770b\u5230\u8b8a\u5316\uff0c\u4e26\u76e1\u53ef\u80fd\u4fdd\u7559\u7576\u524d\u756b\u9762\u8207\u72c0\u614b\u3002\u9019\u5834\u77ed\u8b1b\u6703\u5feb\u901f\u4ecb\u7d39 Compose Hot Reload \u7684\u6838\u5fc3\u539f\u7406\u3001\u5b89\u88dd\u65b9\u5f0f\u8207\u5de5\u4f5c\u6d41\u7a0b\uff0c\u5305\u542b\u5b83\u5982\u4f55\u900f\u904e JetBrains Runtime \u8207 DCEVM\uff0c\u628a\u4fee\u6539\u5f8c\u7684\u7a0b\u5f0f\u78bc\u8f09\u5165\u65e2\u6709\u61c9\u7528\u7a0b\u5f0f\u3002\u4e5f\u6703\u73fe\u5834\u793a\u7bc4\u5982\u4f55\u900f\u904e Hot Reload \u5feb\u901f\u7522\u88fd UI\uff0c\u4e26\u8aaa\u660e\u7576\u524d\u9069\u5408\u4f7f\u7528\u7684\u60c5\u5883\u8207\u9650\u5236\u3002\u807d\u5b8c\u5f8c\uff0c\u807d\u773e\u5c07\u80fd\u7406\u89e3 Compose Hot Reload \u7684\u512a\u52e2\uff0c\u4ee5\u53ca\u5982\u4f55\u628a\u5b83\u5e36\u9032\u73fe\u6709\u5c08\u6848\u7684 UI \u958b\u767c\u6d41\u7a0b\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "M3UNQJ", "name": "\u8303\u8056\u4f51", "avatar": "https://pretalx.com/media/avatars/JL9ME8_D9NU8WS.webp", "biography": "JetBrains \u6280\u8853\u50b3\u6559\u58eb\uff0c\u8ca0\u8cac\u63a8\u5ee3 Kotlin\u3001JetBrains IDE \u53ca\u76f8\u95dc\u6280\u8853\u3002\u5e73\u6642\u9189\u5fc3\u65bc\u6280\u8853\u7814\u7a76\uff0c\u5c08\u6ce8\u65bc Web\u3001\u5f8c\u7aef\u6280\u8853\u53ca\u80fd\u63d0\u5347\u751f\u7522\u529b\u7684\u6280\u5de7\uff0c\u81f4\u529b\u65bc\u5c07\u8907\u96dc\u7684\u6280\u8853\u540d\u8a5e\u7528\u901a\u4fd7\u6613\u61c2\u7684\u65b9\u5f0f\u8b93\u65b0\u624b\u4e5f\u80fd\u5438\u6536\u3002\u5de5\u4f5c\u4e4b\u9918\u4e5f\u662f\u591a\u5e74\u6280\u8853\u793e\u7fa4\u5fd7\u5de5\uff0c\u7a4d\u6975\u53c3\u8207\u958b\u6e90\u793e\u7fa4\u904b\u4f5c\u3002", "public_name": "\u8303\u8056\u4f51", "guid": "b371ad3e-b8cd-5f3e-840d-7d234620bfe3", "url": "https://pretalx.com/jcconf-2026/speaker/M3UNQJ/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/9UQNVE/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/9UQNVE/", "attachments": []}, {"guid": "0a7cd8e6-d1ed-5a97-b85e-b450aef90c8f", "code": "NYHCXE", "id": 98843, "logo": null, "date": "2026-09-11T14:00:00+08:00", "start": "14:00", "end": "2026-09-11T14:45:00+08:00", "duration": "00:45", "room": "402AB", "slug": "jcconf-2026-98843-kotlin--spring-boot-quarkus--ktor", "url": "https://pretalx.com/jcconf-2026/talk/NYHCXE/", "title": "\u7576 Kotlin \u9047\u4e0a\u4e09\u5927\u5f8c\u7aef\u6846\u67b6\uff1aSpring Boot\u3001Quarkus \u8207 Ktor \u7684\u751f\u614b\u7cfb\u6c7a\u6230\u8207\u67b6\u69cb\u5be6\u8e10", "subtitle": "", "track": "402AB", "type": "Session", "language": "en", "abstract": "\u5728 JVM \u7684\u5f8c\u7aef\u4e16\u754c\u4e2d\uff0cKotlin \u6191\u85c9\u8457\u7c21\u6f54\u7684\u8a9e\u6cd5\u8207\u5f37\u5927\u7684\u5354\u7a0b\uff08Coroutines\uff09\u6a5f\u5236\uff0c\u5df2\u7d93\u6210\u70ba\u8a31\u591a\u5718\u968a\u958b\u767c\u65b0\u670d\u52d9\u7684\u9996\u9078\u3002\n\n\u7136\u800c\uff0c\u9762\u5c0d\u5f8c\u7aef\u6846\u67b6\u7684\u9078\u64c7\uff0c\u6211\u5011\u5e38\u5e38\u9677\u5165\u7cfe\u7d50\uff1a\u8a72\u9078\u64c7\u6b77\u53f2\u60a0\u4e45\u3001\u751f\u614b\u7cfb\u6700\u5b8c\u6574\u7684 Spring Boot\uff1f\u9084\u662f\u4e3b\u6253\u96f2\u539f\u751f\u3001\u8d85\u5feb\u555f\u52d5\u901f\u5ea6\u8207\u4f4e\u8a18\u61b6\u9ad4\u4f54\u7528\u7684 Quarkus\uff1f\u6291\u6216\u662f JetBrains \u89aa\u751f\u3001\u7d14 Kotlin \u57fa\u56e0\u7684\u8f15\u91cf\u7d1a Ktor\uff1f\n\n\u672c\u8b70\u7a0b\u5c07\u5f9e Kotlin \u958b\u767c\u8005\u7684\u8996\u89d2\u51fa\u767c\uff0c\u6df1\u5165\u63a2\u8a0e\u9019\u4e09\u500b\u6846\u67b6\u4f7f\u7528 Kotlin \u958b\u767c\u6642\u7684\u5404\u7a2e\u5dee\u7570\u3002\n\n\u7121\u8ad6\u4f60\u662f\u6b63\u5728\u8003\u616e\u5c07 Java \u5c08\u6848\u8f49\u79fb\u5230 Kotlin\uff0c\u9084\u662f\u6b63\u5728\u70ba\u5fae\u670d\u52d9\u5c0b\u627e\u6700\u4f73\u7684\u5f8c\u7aef\u67b6\u69cb\uff0c\u9019\u5834\u6f14\u8b1b\u90fd\u5c07\u70ba\u4f60\u63d0\u4f9b\u6e05\u6670\u3001\u5ba2\u89c0\u4e14\u57fa\u65bc\u5be6\u6230\u7684\u6280\u8853\u9078\u578b\u6307\u5357\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "YUPHN3", "name": "Recca Chao", "avatar": "https://pretalx.com/media/avatars/VKYCZB_qTFRozH.webp", "biography": "\u7814\u7a76 Kotlin \u548c Laravel\u3002\u5065\u5fd8\u61f6\u60f0\uff0c\u6240\u4ee5\u559c\u6b61\u7528\u7c21\u6f54\u7684\u65b9\u6cd5\u505a\u4e8b\uff0cTaiwan Kotlin User Group \u7ba1\u7406\u54e1\u3002", "public_name": "Recca Chao", "guid": "5ba70ca6-0568-5ba4-a03b-9b60c23d3281", "url": "https://pretalx.com/jcconf-2026/speaker/YUPHN3/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/NYHCXE/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/NYHCXE/", "attachments": []}, {"guid": "0631cfd3-cdda-5513-bf30-e8becdfd1371", "code": "FNNJXV", "id": 100232, "logo": null, "date": "2026-09-11T15:00:00+08:00", "start": "15:00", "end": "2026-09-11T15:45:00+08:00", "duration": "00:45", "room": "402AB", "slug": "jcconf-2026-100232-ai-tooling-for-java-development", "url": "https://pretalx.com/jcconf-2026/talk/FNNJXV/", "title": "AI Tooling for Java Development", "subtitle": "", "track": "402AB", "type": "Session", "language": "en", "abstract": "AI coding assistants can generate Java code in seconds, but code generation is the easy part. The harder questions remain: What should we build? Why should we build it? Which functional and technical requirements must the implementation satisfy? How do we review the result, and what evidence tells us it is ready?\n\nThis talk examines how AI tools are changing the software development life cycle for Java enterprise teams.\n\nThe talk emphasizes the importance of expressing both functional requirements\u2014the behavior and outcomes the software must deliver\u2014and technical requirements such as architecture, security, performance, compatibility, observability, and regulatory constraints. Without this context, faster code generation can simply produce the wrong system more quickly.\n\nAttendees will also learn the main concepts behind modern AI development tools:\n\n- **Commands** express repeatable engineering actions.\n- **Skills** provide reusable domain and technical knowledge.\n- **Agents** perform bounded tasks with a defined role and context.\n- **MCP Servers** connect AI tools to trusted systems and project information.\n\nExamples using tools such as Cursor AI, Claude Code, Codex, and GitHub Copilot will make these concepts concrete without prescribing a single workflow or product. The central theme is engineering discipline: treat generated code and agent instructions with a Zero Trust mindset, keep software engineers in the loop, and require traceable evidence before accepting a change.\n\nAttendees will leave with a clearer understanding of how the Java SDLC is evolving, why well-defined requirements become even more important when working with AI, and how these tools can support engineers without replacing architectural judgment, review, or accountability.\n\nThe talk will be delivered in English.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "KLB9TZ", "name": "Juan Antonio Brena Moral", "avatar": null, "biography": "From programming microservices to leading engineering teams: this is how I've spent my last 20 years in technology as a Java/Spring ecosystem specialist. My career has evolved from designing cloud-native architectures and migrating legacy systems to leading engineering teams focused on high-quality results and efficient processes.\n\nWhat I'm most passionate about is combining technology with a healthy team culture. I've learned that true success isn't measured solely by technical achievements, but by fostering clear and collaborative work practices that drive long-term performance.", "public_name": "Juan Antonio Brena Moral", "guid": "712de367-687e-5609-bb03-0b30abf4d159", "url": "https://pretalx.com/jcconf-2026/speaker/KLB9TZ/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/FNNJXV/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/FNNJXV/", "attachments": []}, {"guid": "7531101e-161d-54a6-8211-a717c86b4d2b", "code": "YN9MKZ", "id": 100402, "logo": null, "date": "2026-09-11T16:15:00+08:00", "start": "16:15", "end": "2026-09-11T17:00:00+08:00", "duration": "00:45", "room": "402AB", "slug": "jcconf-2026-100402-kotlin-2-x--ai", "url": "https://pretalx.com/jcconf-2026/talk/YN9MKZ/", "title": "Kotlin 2.x\uff1a\u5f9e\u8a9e\u8a00\u5347\u7d1a\u5230 AI \u65b0\u6642\u4ee3", "subtitle": "", "track": "402AB", "type": "Session", "language": "en", "abstract": "Kotlin 2.x \u4e0d\u53ea\u662f\u4e00\u6b21\u7248\u672c\u66f4\u65b0\uff0c\u66f4\u4ee3\u8868 Kotlin \u751f\u614b\u7cfb\u9081\u5165\u65b0\u7684\u767c\u5c55\u968e\u6bb5\u3002\u5f9e\u5168\u65b0\u7684 K2 Compiler\u3001Context Parameters \u5230 Collection Literals\uff0cKotlin \u6301\u7e8c\u63d0\u5347\u8a9e\u8a00\u8868\u9054\u80fd\u529b\u3001\u958b\u767c\u6548\u7387\u8207\u672a\u4f86\u6f14\u9032\u7684\u53ef\u80fd\u6027\u3002\u9019\u4e9b\u6539\u8b8a\u4e0d\u50c5\u6539\u5584\u65e5\u5e38\u958b\u767c\u9ad4\u9a57\uff0c\u4e5f\u70ba\u8de8\u5e73\u53f0\u8207\u65b0\u4e16\u4ee3\u61c9\u7528\u5960\u5b9a\u91cd\u8981\u57fa\u790e\u3002\n\n\u672c\u6b21\u5206\u4eab\u5c07\u5f9e Kotlin 2.x \u6700\u503c\u5f97\u95dc\u6ce8\u7684\u8a9e\u8a00\u9769\u65b0\u958b\u59cb\uff0c\u4ecb\u7d39 K2 Compiler \u5e36\u4f86\u7684\u67b6\u69cb\u8f49\u8b8a\uff0c\u4ee5\u53ca Context Parameters \u8207 Collection Literals \u5982\u4f55\u8b93\u7a0b\u5f0f\u78bc\u66f4\u5177\u53ef\u8b80\u6027\u8207\u8868\u9054\u529b\u3002\n\n\u9664\u4e86\u8a9e\u8a00\u672c\u8eab\u7684\u9032\u5316\uff0c\u6211\u5011\u4e5f\u5c07\u9032\u4e00\u6b65\u63a2\u8a0e Kotlin \u5728 AI \u9818\u57df\u7684\u6700\u65b0\u5e03\u5c40\uff0c\u5305\u62ec Koog\u3001MCP SDK \u8207 Agent Skills \u7b49\u65b0\u8208\u6280\u8853\uff0c\u4e86\u89e3 Kotlin \u5982\u4f55\u5f9e\u4e00\u9580\u73fe\u4ee3\u5316\u7a0b\u5f0f\u8a9e\u8a00\uff0c\u9010\u6b65\u767c\u5c55\u6210\u652f\u63f4 AI Agent \u8207\u667a\u6167\u61c9\u7528\u958b\u767c\u7684\u5e73\u53f0\u3002\n\n\u900f\u904e\u672c\u6b21\u5206\u4eab\uff0c\u8207\u6703\u8005\u5c07\u80fd\u638c\u63e1 Kotlin 2.x \u7684\u6838\u5fc3\u8b8a\u9769\u3001\u7406\u89e3 Kotlin \u8207 AI \u751f\u614b\u7684\u7d50\u5408\u65b9\u5411\uff0c\u4e26\u5f9e\u4e2d\u770b\u898b Kotlin \u7684\u767c\u5c55\u65b9\u5411\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "QKRCHD", "name": "Andy Lu", "avatar": "https://pretalx.com/media/avatars/JWDK8N_rScLq4v.webp", "biography": "Hi \u6211\u662f Andy, \u662f\u4e00\u540d App \u958b\u767c\u8005\uff0c\u71b1\u611b Kotlin \uff0c\u73fe\u5728\u642d\u4e0a AI \u706b\u7bad\u524d\u5f80\u65b0\u4e16\u754c\u3002", "public_name": "Andy Lu", "guid": "fa631d1a-ba3d-583d-a8ec-7e7009637bea", "url": "https://pretalx.com/jcconf-2026/speaker/QKRCHD/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/YN9MKZ/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/YN9MKZ/", "attachments": []}], "402CD": [{"guid": "7e7886eb-5929-55f6-bb6e-f2d3facdb575", "code": "AEFSS9", "id": 100275, "logo": null, "date": "2026-09-11T10:45:00+08:00", "start": "10:45", "end": "2026-09-11T11:30:00+08:00", "duration": "00:45", "room": "402CD", "slug": "jcconf-2026-100275-java---1tb-ram--eda", "url": "https://pretalx.com/jcconf-2026/talk/AEFSS9/", "title": "\u6311\u6230 Java \u7684\u7269\u7406\u6975\u9650\uff1a\u5982\u4f55\u6253\u9020\u5f81\u670d 1TB RAM \u8207\u5104\u7d1a\u8cc7\u6599\u7684 EDA \u6548\u80fd\u5f15\u64ce", "subtitle": "", "track": "402CD", "type": "Session", "language": "en", "abstract": "\u5728\u534a\u5c0e\u9ad4\u96fb\u8def\u8a2d\u8a08\uff08EDA\uff09\u9818\u57df\uff0cC/C++ \u7d71\u6cbb\u4e86\u8d85\u904e\u4e09\u5341\u5e74\uff0c\u4f7f\u7528 Java \u958b\u767c\u5e38\u88ab\u8996\u70ba\u300c\u4e0d\u53ef\u80fd\u7684\u4efb\u52d9\u300d\u3002\u7136\u800c\u904e\u53bb\u5341\u5e74\uff0c\u6211\u5011\u5718\u968a\u5f9e JDK 8 \u4e00\u8def\u63a8\u9032\u5230 JDK 25\uff0c\u6b63\u9762\u6311\u6230 Java \u5728\u6975\u81f4\u6548\u80fd\u8207\u8d85\u5927\u5bb9\u91cf\u7684\u7269\u7406\u4e0a\u9650\u3002\u6211\u5011\u7d93\u6b77\u4e86\u65e9\u671f\u6548\u80fd\u8207\u8a18\u61b6\u9ad4\u8db3\u8de1\u843d\u5f8c C/C++ \u9ad8\u9054\u5341\u500d\u7684\u56f0\u5883\uff0c\u4e00\u8def\u512a\u5316\u5230\u5982\u4eca\uff0c\u9019\u662f\u4e00\u6bb5 Java \u5728\u534a\u5c0e\u9ad4\u9802\u5c16\u6230\u5834\u7684\u9006\u8972\u5fc3\u8def\u6b77\u7a0b\u3002\n\n\u672c\u5834\u6f14\u8b1b\u5c07\u6df1\u5ea6\u89e3\u5bc6\u6211\u5011\u5982\u4f55\u7a81\u7834 Java \u539f\u751f\u6975\u9650\uff0c\u89e3\u6c7a\u56db\u5927\u6838\u5fc3\u786c\u6838\u6311\u6230\uff1a\n\n* \u64fa\u812b\u5305\u88b1\uff1a \u70ba\u4ec0\u9ebc Java Stream\u3001Eclipse Collections \u8207 Guava \u5728\u6975\u7aef\u5834\u666f\u4e0d\u518d\u6577\u4f7f\uff1f\u6211\u5011\u5982\u4f55\u6539\u8b8a\u4f7f\u7528\u601d\u7dad\u8207\u512a\u5316\u5c0e\u5411\u3002\n* \u5168\u624b\u523b EDA \u8cc7\u6599\u5eab\uff1a \u9762\u5c0d 1TB RAM \u4f3a\u670d\u5668\u3001100M\uff08\u5104\u7d1a\uff09\u8cc7\u6599\u91cf\uff0c\u539f\u751f HashMap \u5982\u4f55\u5d29\u6f70\uff1f\u89e3\u5bc6\u9ad8\u4f4e\u5bc6\u5ea6\u6b04\u4f4d\u8a2d\u8a08\u7684\u8a18\u61b6\u9ad4\u4f48\u5c40\u3002\n* \u99b4\u670d 1TB \u7684 GC \u5de8\u7378\uff1a \u7d93\u6b77\u904e GC \u505c\u9813\u9ad8\u9054\u6578\u5206\u9418\u7684\u9ed1\u6697\u671f\uff0c\u6211\u5011\u5982\u4f55\u900f\u904e Zero-allocation\uff08\u96f6\u914d\u7f6e\uff09\u8207 GC Invisibility\uff08GC \u96b1\u5f62\uff09\u6280\u8853\u5be6\u73fe\u6d41\u66a2\u904b\u884c\uff0c\u4e26\u91cd\u65b0\u8a2d\u8a08\u9ad8\u6548\u7387\u7684\u751f\u547d\u9031\u671f\u7ba1\u7406\u3002\n* \u6253\u7834 OOP \u7246\u58c1\uff1a \u6df1\u5165\u7dca\u6e4a\u8207\u58d3\u7e2e\u7269\u4ef6\u7684\u5e95\u5c64\u5be6\u8e10\uff0c\u5982\u4f55\u7121\u60c5\u6d88\u9664\u7269\u4ef6\u982d\uff08Object Header\uff09\u6d6a\u8cbb\uff0c\u4e0d\u8b93\u7269\u4ef6\u5c0e\u5411\u6210\u70ba\u6548\u80fd\u7d46\u8173\u77f3\u3002\n\n\u807d\u773e\u6536\u7a6b\uff1a\u9019\u8d9f\u65c5\u7a0b\u9084\u5728\u7e7c\u7e8c\u3002\u900f\u904e\u672c\u5834\u5206\u4eab\uff0c\u60a8\u5c07\u5e36\u8d70\u4e00\u5957\u5c07 Java \u63a8\u5411\u786c\u9ad4\u6975\u9650\u7684\u5e95\u5c64\u512a\u5316\u601d\u7dad\uff0c\u985b\u8986\u4f60\u5c0d Java \u6548\u80fd\u4e0a\u9650\u7684\u65e2\u5b9a\u8a8d\u77e5\u3002", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "9YNQAG", "name": "Morris Yang", "avatar": null, "biography": "\u73fe\u70ba\u534a\u5c0e\u9ad4 EDA \u9818\u57df\u7684\u8cc7\u6df1\u9ad8\u6027\u80fd\u67b6\u69cb\u5e2b\u3002\u5728\u904e\u53bb\u5341\u5e74\u7684\u5de5\u7a0b\u5be6\u8e10\u4e2d\uff0c\u7d93\u6b77\u4e86 Java \u5f9e JDK 8 \u5230 JDK 25 \u7684\u6f14\u9032\uff0c\u4e26\u5c07\u5176\u61c9\u7528\u65bc\u5c0d\u5ef6\u9072\u8207\u8a18\u61b6\u9ad4\u6975\u5ea6\u82db\u6c42\u7684\u6676\u7247\u8a2d\u8a08\u81ea\u52d5\u5316\u8edf\u9ad4\u4e2d\u3002\u4ed6\u71b1\u8877\u65bc\u89e3\u6c7a\u300c\u4e0d\u53ef\u80fd\u7684\u512a\u5316\u96e3\u984c\u300d\uff0c\u66fe\u5c07\u65e9\u671f\u6548\u80fd\u843d\u5f8c C/C++ \u5341\u500d\u7684 Java \u7cfb\u7d71\uff0c\u4e00\u8def\u512a\u5316\u81f3\u4e26\u99d5\u9f4a\u9a45\uff0c\u4e26\u5be6\u969b\u843d\u5730\u65bc\u696d\u754c\u6307\u6a19\u6027\u7684\u5148\u9032\u5c01\u88dd\u88fd\u7a0b\u8edf\u9ad4\u3002\u9664\u4e86\u5728\u5de5\u696d\u754c\u96b1\u5f62\u5e55\u5f8c\u63a8\u52d5\u6280\u8853\u9769\u65b0\uff0c\u60f3\u70ba Java \u793e\u7fa4\u5e36\u4f86\u5168\u65b0\u7684\u9ad8\u6548\u80fd\u67b6\u69cb\u601d\u7dad\u3002", "public_name": "Morris Yang", "guid": "768f6282-342d-5e51-aeb7-5c0d5f18a4dc", "url": "https://pretalx.com/jcconf-2026/speaker/9YNQAG/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/AEFSS9/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/AEFSS9/", "attachments": []}, {"guid": "041f7c27-607b-5794-aa88-ca355996bd92", "code": "3RLNLK", "id": 100301, "logo": null, "date": "2026-09-11T11:45:00+08:00", "start": "11:45", "end": "2026-09-11T12:30:00+08:00", "duration": "00:45", "room": "402CD", "slug": "jcconf-2026-100301-1-1--2-llm", "url": "https://pretalx.com/jcconf-2026/talk/3RLNLK/", "title": "\u7576 1+1 \u4e0d\u518d\u6c38\u9060\u7b49\u65bc 2\uff1aLLM \u5728\u9818\u57df\u6a21\u578b\u4e2d\u7684\u80fd\u529b\u8207\u908a\u754c", "subtitle": "", "track": "402CD", "type": "Session", "language": "en", "abstract": "LM \u6b63\u5feb\u901f\u6ef2\u900f\u5404\u7a2e\u61c9\u7528\u5834\u666f\uff0c\u4f46\u7576\u5b83\u9032\u5165\u8907\u96dc\u696d\u52d9\u9818\u57df\u6642\uff0c\u6211\u5011\u4e5f\u958b\u59cb\u770b\u898b\u5b83\u5728\u7406\u89e3\u8207\u63a8\u7406\u4e0a\u7684\u9650\u5236 \ud83e\udd14\n\n\u900f\u904e\u5be6\u969b\u6539\u9020\u53e4\u8001\u7cfb\u7d71\u7684\u6848\u4f8b\uff0c\u5e36\u4f60\u91cd\u65b0\u8a8d\u8b58 LLM \u5728\u9818\u57df\u6a21\u578b\u4e2d\u7684\u89d2\u8272\uff0c\u4e26\u601d\u8003\u5728\u4eba\u6a5f\u5354\u4f5c\u8207\u5718\u968a\u5354\u4f5c\u4e2d\uff0c\u5982\u4f55\u66f4\u597d\u7684\u8b58\u5225\u7cfb\u7d71\u61c9\u7576\u8a2d\u8a08\u5230\u4ec0\u9ebc\u6a23\u7684\u7522\u51fa\u6c34\u6e96\uff0c\u624d\u9069\u5408\u582a\u7a31\u70ba\u53ef\u4ea4\u4ed8\u7684\u72c0\u614b\u3002\n\n\u5728\u9019\u500b\u6f14\u8b1b\u5167\u5bb9\u4e2d\uff0c\u6d89\u53ca\u4f46\u4e0d\u50c5\u9650\u65bc\u4ee5\u4e0b\u4e3b\u984c : \u5718\u968a\u5354\u4f5c\u3001 mainframe\u3001\u9818\u57df\u9a45\u52d5\u8a2d\u8a08\u3001\u5f15\u5c0e\u5de5\u4f5c\u574a\u3001 Example Mapping \u3001 Wardley Mapping\u3001Context engineering\u3001  Harness engineering\u3001Ontology\u3001SSOT (Single Source of Truth)\u3002", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "WSGXCC", "name": "Kim Kao", "avatar": "https://pretalx.com/media/avatars/JBCJ7Z_rWcQnjZ.webp", "biography": "\u4eba\u751f\u5df2\u7d93\u88ab\u826f\u597d\u67b6\u69cb\u7684\u4e09\u5bf6\u7238\uff0c\u73fe\u4efb\u8077\u65bc AWS \u64d4\u4efb\u89e3\u6c7a\u65b9\u6848\u67b6\u69cb\u5e2b\u90e8\u9580\u7d93\u7406\uff0c\u5354\u52a9\u91d1\u878d\u3001\u96f6\u552e\uff0c\u4ee5\u53ca\u516c\u90e8\u9580\u5ba2\u6236\u63a8\u9032\u696d\u52d9\u767c\u5c55\u8207\u5efa\u69cb\u97cc\u6027\u61c9\u7528\u67b6\u69cb\uff0c\u540c\u6642\u4e5f\u662f\u53f0\u7063\u9818\u57df\u9a45\u52d5\u8a2d\u8a08\u793e\u7fa4 (DDD Taiwan Community) \u767c\u8d77\u4eba\u4e4b\u4e00\u3002\u81f4\u529b\u65bc\u6295\u5165\u5927\u773e\u5c0d\u65bc Sociotechnical \u7684\u5171\u9cf4\uff0c\u63a8\u52d5\u4f01\u696d\u900f\u904e DDD \u8207\u4fbf\u6377\u7684\u96f2\u7aef\u670d\u52d9\uff0c\u6253\u9020\u66f4\u9069\u5207\u7684\u7cfb\u7d71\u65b9\u6848\uff0c\u89e3\u6c7a\u771f\u5207\u7684\u5546\u52d9\u554f\u984c\u3002", "public_name": "Kim Kao", "guid": "9f0f972b-c22b-519d-97e0-5ec982fc48ba", "url": "https://pretalx.com/jcconf-2026/speaker/WSGXCC/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/3RLNLK/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/3RLNLK/", "attachments": []}, {"guid": "b034244f-f4d1-5d9e-8f13-b43eab996db0", "code": "WESL3X", "id": 103168, "logo": null, "date": "2026-09-11T13:30:00+08:00", "start": "13:30", "end": "2026-09-11T13:45:00+08:00", "duration": "00:15", "room": "402CD", "slug": "jcconf-2026-103168-jspecify-bringing-standard-nullability-to-java", "url": "https://pretalx.com/jcconf-2026/talk/WESL3X/", "title": "JSpecify: Bringing Standard Nullability to Java", "subtitle": "", "track": "402CD", "type": "Quickie", "language": "en", "abstract": "Nullability annotations have been part of the Java ecosystem for years, but every library seems to have its own flavor\u2014javax.annotation, JetBrains, Eclipse, Spring, and more. This fragmentation makes it difficult to share nullness information consistently across tools and libraries.\n\nJSpecify aims to solve this by defining a standard, tool-agnostic way to express nullness in Java. As support from Java tooling continues to grow, many teams are beginning to consider migrating to JSpecify.\n\nIn this session, I'll introduce the motivation behind JSpecify, explain how it differs from legacy nullability annotations, and share practical lessons from migrating an existing Java application. We'll cover migration strategies, the tooling that can help automate the process, and a few surprising framework compatibility issues we encountered.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "8ZXHJL", "name": "LEE HAO CHENG", "avatar": null, "biography": "Senior Engineer at LY corp, interested in Java, JVM, Continuous Integration and Test-Driven Development, also organizer of JCConf and TWJUG", "public_name": "LEE HAO CHENG", "guid": "48995865-495c-5608-ad60-c511edc214d4", "url": "https://pretalx.com/jcconf-2026/speaker/8ZXHJL/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/WESL3X/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/WESL3X/", "attachments": []}, {"guid": "4cf78f52-5424-5440-b94a-2a2363027272", "code": "WPYY9W", "id": 98500, "logo": null, "date": "2026-09-11T14:00:00+08:00", "start": "14:00", "end": "2026-09-11T14:45:00+08:00", "duration": "00:45", "room": "402CD", "slug": "jcconf-2026-98500-java-goes-outside-ffm-api-vector-api-and-beyond", "url": "https://pretalx.com/jcconf-2026/talk/WPYY9W/", "title": "Java Goes Outside: FFM API, Vector API, and Beyond", "subtitle": "", "track": "402CD", "type": "Session", "language": "en", "abstract": "Java runs on the JVM, which brings great benefits: memory safety, type safety, and platform independence. However, Java has long been considered weak when it comes to the \"outside world\" \u2014 calling native libraries, controlling hardware, and optimizing at the CPU instruction level have all been pain points for Java developers.\n\nProject Panama changes that. The FFM API (Foreign Function & Memory API), released as a standard feature in Java 22, introduces new abstractions such as MemorySegment and Linker, allowing native functions and off-heap memory to be accessed in a way that feels natural within the Java world. In this session, I will walk through a simple electronics demo to explain the advantages of the FFM API compared to the traditional JNI approach.\n\nThis session will also cover the Vector API, another output of Project Panama. By explicitly leveraging CPU SIMD instructions from Java, this API delivers significant performance gains in areas such as image processing and numerical computation. This session will also introduce Project Babylon, an OpenJDK project that aims to run Java on accelerators such as GPUs and FPGAs. \n\nJava is now stepping out beyond the JVM. To boldly go where Java has never gone before.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "WVPAR3", "name": "Takaaki Sugiyama", "avatar": "https://pretalx.com/media/avatars/7FJ8PC_Mn0FNfT.webp", "biography": "Takaaki has long time experience of system development with Java, ShellScript, Linux, FreeBSD, etc. He also works as a technical writer and a trainer in engineering education. He has written some Java books and has some serial publication in technical media. He is a board member of Japan Java User Group.", "public_name": "Takaaki Sugiyama", "guid": "b415ae5d-55ec-534f-8a7b-f5af5d86e22c", "url": "https://pretalx.com/jcconf-2026/speaker/WVPAR3/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/WPYY9W/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/WPYY9W/", "attachments": []}, {"guid": "8012cb12-c6d9-5d6b-bf22-9f76c3fd9edc", "code": "EPKX8E", "id": 98890, "logo": null, "date": "2026-09-11T15:00:00+08:00", "start": "15:00", "end": "2026-09-11T15:45:00+08:00", "duration": "00:45", "room": "402CD", "slug": "jcconf-2026-98890-ai---codex-skills--multi-agent--java", "url": "https://pretalx.com/jcconf-2026/talk/EPKX8E/", "title": "\u628a AI \u7d0d\u5165\u8edf\u9ad4\u5de5\u85dd\uff1a\u7528 Codex Skills \u8207 Multi-Agent \u8ce6\u80fd Java \u5718\u968a\u5354\u4f5c\u8207\u4ea4\u4ed8", "subtitle": "", "track": "402CD", "type": "Session", "language": "en", "abstract": "\u91d1\u878d\u8edf\u9ad4\u958b\u767c\u4ee5\u56b4\u8b39\u3001\u6d41\u7a0b\u56fa\u5b9a\uff08SA\u3001SD\u3001\u5be6\u4f5c\u3001\u6574\u5408\u6e2c\u8a66\u3001\u56de\u6b78\u6e2c\u8a66\uff09\u8457\u7a31\uff0c\u6587\u4ef6\u66f4\u662f\u4e0d\u53ef\u6216\u7f3a\u7684\u57fa\u77f3\u3002\u5728 Agent \u4e16\u4ee3\uff0c\u9019\u7a2e\u6df1\u539a\u7684\u6587\u4ef6\u6587\u5316\u975e\u4f46\u6c92\u6709\u904e\u6642\uff0c\u53cd\u800c\u8207\u4e3b\u6d41\u7684 **SDD\uff08Specification-Driven Development\uff0c\u898f\u683c\u9a45\u52d5\u958b\u767c\uff09** \u5b8c\u7f8e\u7d50\u5408\u3002\n\u672c\u5206\u4eab\u5c07\u4ee5\u81ea\u8eab\u5f8c\u7aef\u5718\u968a\u7684\u5be6\u6230\u7d93\u9a57\u51fa\u767c\uff0c\u5c55\u793a\u5982\u4f55\u4ee5 **API-First** \u70ba\u6e9d\u901a\u4e2d\u6a1e\uff0c\u5c07\u50b3\u7d71 SA/SD \u6587\u4ef6\u8f49\u5316\u70ba\u6a5f\u5668\u53ef\u8b80\u7684\u898f\u683c\u5951\u7d04\u3002\u7531\u65bc LLM \u6a21\u578b\u672c\u8eab\u662f\u7121\u72c0\u614b\uff08Stateless\uff09\u4e14\u4f34\u96a8\u5e7b\u89ba\u98a8\u96aa\uff0c\u6211\u5011\u900f\u904e\u4e00\u5957\u5de5\u7a0b\u5316\u7684 **Harness\uff08\u958b\u767c\u6cbb\u5177\uff09** \u56b4\u683c\u63a7\u5236\u958b\u767c\u6d41\u7a0b\uff1b\u540c\u6642\u5229\u7528 **Codex Skills** \u5c07\u5718\u968a\u65e2\u6709\u7684\u67b6\u69cb\u898f\u7bc4\u8207\u5b89\u5168\u6e96\u5247\u6a19\u6e96\u5316\u3002\n\u900f\u904e **Multi-Agent \u5354\u4f5c\u6a5f\u5236**\uff0c\u6211\u5011\u5c07 SA\u3001SD\u3001PG\u3001QA \u89d2\u8272\u865b\u64ec\u5316\uff08Virtual Dev Team\uff09\uff0c\u70ba\u6bcf\u500b\u89d2\u8272\u8a2d\u5b9a\u660e\u78ba\u7684\u4efb\u52d9\u76ee\u6a19\u8207\u56b4\u683c\u7684\u4ea4\u4ed8\u908a\u754c\u3002\u672c\u5834 talk \u5c07\u5b8c\u6574\u89e3\u6790\u5f9e\u7cfb\u7d71\u8a2d\u8a08\u3001API \u5951\u7d04\u5b9a\u7fa9\u3001\u7a0b\u5f0f\u81ea\u52d5\u751f\u6210\u3001\u6574\u5408\u6e2c\u8a66\uff0c\u5230\u6700\u7d42\u90e8\u7f72\u8207 E2E \u56de\u6b78\u6e2c\u8a66\u7684\u5b8c\u6574\u9589\u74b0\u3002\u9019\u5957\u65b9\u6cd5\u8b49\u660e\u4e86\uff1a\u52a0\u5f37 SDD \u8207\u50b3\u7d71\u958b\u767c\u65b9\u5f0f\u4e0d\u50c5\u6c92\u6709\u885d\u7a81\uff0c\u53cd\u800c\u662f\u76f8\u8f14\u76f8\u6210\uff0c\u5728\u5927\u5e45\u63d0\u5347\u4ea4\u4ed8\u6548\u7387\u7684\u540c\u6642\uff0c\u66f4\u80fd\u5c07\u4eba\u70ba\u5931\u8aa4\u964d\u81f3\u6700\u4f4e\uff0c\u5be6\u8e10\u91d1\u878d\u7d1a\u7684\u8edf\u9ad4\u5de5\u85dd\u843d\u5730\u3002", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "PGFTUG", "name": "Samson", "avatar": null, "biography": "\u73fe\u4efb\u570b\u6cf0\u91d1\u63a7\u52a9\u7406\u67b6\u69cb\u5e2b\uff0c\u64c1\u6709\u8c50\u5bcc\u7684\u7cfb\u7d71\u958b\u767c\u8207\u67b6\u69cb\u8a2d\u8a08\u7d93\u9a57\u3002\u8077\u6daf\u6df1\u8015\u65bc\u5f8c\u7aef\u958b\u767c\u3001\u5fae\u670d\u52d9\u67b6\u69cb\u8207\u96f2\u7aef\u6280\u8853\uff08GCP/AWS\uff09\uff0c\u66fe\u4e3b\u5c0e\u591a\u9805\u55ae\u9ad4\u7cfb\u7d71\u7684\u5fae\u670d\u52d9\u91cd\u69cb\uff0c\u81f4\u529b\u65bc\u5efa\u69cb\u9ad8\u4f75\u767c\u3001\u9ad8\u7a69\u5b9a\u6027\u7684\u7cfb\u7d71\u3002\n\n\u8fd1\u5e74\u5c08\u6ce8\u65bc AI Agent \u7cfb\u7d71\u8a2d\u8a08\u3001AI \u8ce6\u80fd\u958b\u767c\u5de5\u5177\u93c8\uff08Developer Tooling\uff09\u4ee5\u53ca\u4e0a\u4e0b\u6587\u5de5\u7a0b\uff08Context Engineering\uff09 \u5728\u91d1\u878d\u79d1\u6280\u4e2d\u7684\u5be6\u969b\u843d\u5730\u3002\u4ed6\u81f4\u529b\u65bc\u63a2\u8a0e\u5982\u4f55\u5c07 AI \u4ee3\u7406\u6280\u8853\u8207\u50b3\u7d71\u91d1\u878d\u696d\u56b4\u8b39\u7684\u8edf\u9ad4\u5de5\u85dd\uff08Software Craftsmanship\uff09\u5b8c\u7f8e\u5951\u5408\uff0c\u900f\u904e\u898f\u683c\u9a45\u52d5\u958b\u767c\uff08SDD\uff09\u8207\u5de5\u7a0b\u6cbb\u5177\uff08Harness\uff09\u5efa\u7acb\u53ef\u63a7\u7684\u958b\u767c\u6d41\u6c34\u7dda\uff0c\u5728\u78ba\u4fdd\u7cfb\u7d71\u5b89\u5168\u8207\u54c1\u8cea\u7684\u540c\u6642\uff0c\u5be6\u73fe\u958b\u767c\u5718\u968a\u7684\u865b\u64ec\u5316\u5354\u4f5c\u8207\u6548\u80fd\u8e8d\u5347\u3002", "public_name": "Samson", "guid": "9bbf8632-f3f8-5359-9908-398506c152c6", "url": "https://pretalx.com/jcconf-2026/speaker/PGFTUG/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/EPKX8E/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/EPKX8E/", "attachments": []}, {"guid": "0cdc68ee-1637-54a6-8275-9af936673581", "code": "VYMLCA", "id": 98606, "logo": null, "date": "2026-09-11T16:15:00+08:00", "start": "16:15", "end": "2026-09-11T17:00:00+08:00", "duration": "00:45", "room": "402CD", "slug": "jcconf-2026-98606-from-theory-to-practice-real-world-lessons-in-post-quantum-cryptography-migration", "url": "https://pretalx.com/jcconf-2026/talk/VYMLCA/", "title": "From Theory to Practice: Real-World Lessons in Post-Quantum Cryptography Migration", "subtitle": "", "track": "402CD", "type": "Session", "language": "en", "abstract": "Quantum computing is no longer a distant concept\u2014it\u2019s an imminent challenge to today\u2019s cryptographic standards. The shift to Post-Quantum Cryptography (PQC) is not optional; it\u2019s inevitable. Yet, the practical steps for adapting existing applications to PQC, and the critical considerations for ensuring compatibility, remain largely unclear.\nThis session goes beyond theory. We\u2019ll start with a concise overview of PQC fundamentals, then dive into real-world migration experiences\u2014what worked, what didn\u2019t, and why. Attendees will gain actionable best practices drawn from hands-on projects, offering guidance not only for those planning future migrations but also for developers designing new applications today.\nIf you\u2019ve ever wondered, \u201cWhere do I start?\u201d or \u201cWhat pitfalls should I avoid?\u201d, this talk will provide the answers\u2014grounded in real-world experience and focused on practical success.\n\nBy the end of this session, participants will be able to:\n\n- Understand the fundamentals of Post-Quantum Cryptography (PQC) and why early adoption is critical in the face of quantum computing threats.\n- Identify key challenges and pitfalls encountered during real-world PQC migration projects.\n- Apply proven best practices for adapting existing applications to PQC while maintaining security and performance.\n- Develop a practical roadmap for integrating PQC into both legacy systems and new application designs.", "description": null, "recording_license": "", "do_not_record": false, "persons": [{"code": "SEZZND", "name": "Akihiro Nishikawa", "avatar": "https://pretalx.com/media/avatars/VT97MU_R6MdMcR.webp", "biography": "Working for Microsoft as a Cloud Solution Architect, based in Japan. Conference speaker at not only local conferences but also outside Japan. Expertise in application development with Java and application integration, including API management and EDI. Also, a board member of JJUG (Japan Java Users Group).", "public_name": "Akihiro Nishikawa", "guid": "ad1e8ef8-2dfb-5242-a96b-d331aa9f2136", "url": "https://pretalx.com/jcconf-2026/speaker/SEZZND/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/VYMLCA/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/VYMLCA/", "attachments": []}], "203": [{"guid": "0c7a8d71-a9d5-503f-b6d3-d43dafbda580", "code": "7TRTRK", "id": 103788, "logo": null, "date": "2026-09-11T13:30:00+08:00", "start": "13:30", "end": "2026-09-11T13:45:00+08:00", "duration": "00:15", "room": "203", "slug": "jcconf-2026-103788-clusterj-apimysql-ndb-cluster-java", "url": "https://pretalx.com/jcconf-2026/talk/7TRTRK/", "title": "ClusterJ API\u548cMySQL NDB Cluster \u5efa\u7acb\u4e00\u5957\u6975\u901fJava\u61c9\u7528\u7cfb\u7d71", "subtitle": "", "track": "203", "type": "Quickie", "language": "en", "abstract": "MySQL NDB Cluster\u662f\u4e00\u500b\u5177\u6709\u6975\u81f4\u64f4\u5145\u529b\u7684\u5206\u4f48\u5f0f\u8cc7\u6599\u5eab,\u5927\u90e8\u4efd\u7684\u61c9\u7528\u628a\u5b83\u7576\u6210\u4e00\u822c\u7684\u95dc\u806f\u5f0f\u8cc7\u6599\u5eab,\u4ee5MySQL Connector/J \u900f\u904eMySQL server (mysqld) \u53d6\u7528\u5b58\u5728data node\u7684\u8cc7\u6599, \u7576\u60a8\u60f3\u8981\u8b93\u60a8\u7684Java\u61c9\u7528\u6027\u80fd\u66f4\u4e0a\u4e00\u5c64\u6a13, \u60a8\u7684Java\u61c9\u7528\u53ef\u4ee5\u7528ClusterJ API\u7e5e\u904eMySQL Server\u76f4\u63a5\u53d6\u7528data nodes\u7684\u8cc7\u6599, \u9032\u800c\u80fd\u4f7f\u8cc7\u6599\u53d6\u7528\u7684\u901f\u5ea6\u63d0\u5347\u6578\u500d. \u9019\u5834\u6f14\u8b1b\u6211\u5c07\u4ecb\u7d39Java\u61c9\u7528\u5982\u4f55\u4f7f\u7528ClusterJ,\u4ee5\u53caMySQL NDB Cluster\u7684\u67b6\u69cb, \u548c\u5c55\u793aClusterJ\u6240\u5e36\u4f86\u7684\u6027\u80fd\u63d0\u5347.", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "AGSZBN", "name": "\u675c\u4fee\u6587", "avatar": "https://pretalx.com/media/avatars/7WMKLH_0sfLZPo.webp", "biography": "\u675c\u4fee\u6587(Ivan Tu)\u76ee\u524d\u662fOracle \u516c\u53f8\u8cc7\u6df1 MySQL \u89e3\u6c7a\u65b9\u6848\u5de5\u7a0b\u7d93\u7406\uff0c\u9818\u5c0e\u6771\u4e9e\u5340MySQL \u89e3\u6c7a\u65b9\u6848\u5de5\u7a0b\u5718\u968a\uff0c\u81f4\u529b\u65bc\u63a8\u5ee3 MySQL \u6280\u8853\u4e26\u5e6b\u52a9\u95dc\u9375\u4f01\u696d\u7528\u6236\u63a1\u7528 MySQL\uff0cIvan\u4e5f\u662f\u81fa\u7063 MySQL \u4f7f\u7528\u8005\u7d44\u7684\u53ec\u96c6\u4eba\uff0c\u8a72\u7d44\u662f\u4e00\u500b\u6d3b\u8e8d\u7684 MySQL \u793e\u5340\uff0c\u53c3\u8207\u8005\u8d85\u904e 6200 \u4eba\u3002\n\u6709\u95dc\u675c\u4fee\u6587\u7684\u80cc\u666f\u8a73\u60c5\uff0c\u8acb\u53c3\u95b1\u4ed6\u7684LinkedIn\u9801 https://www.linkedin.com/in/ivan-tu-0a330a126/", "public_name": "\u675c\u4fee\u6587", "guid": "97db11fb-b380-5d60-a303-a41e442dfcdb", "url": "https://pretalx.com/jcconf-2026/speaker/AGSZBN/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/7TRTRK/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/7TRTRK/", "attachments": []}, {"guid": "a5068795-3421-5099-a8c4-dcf121d31e34", "code": "WZM8EQ", "id": 101115, "logo": null, "date": "2026-09-11T14:00:00+08:00", "start": "14:00", "end": "2026-09-11T14:45:00+08:00", "duration": "00:45", "room": "203", "slug": "jcconf-2026-101115-scala", "url": "https://pretalx.com/jcconf-2026/talk/WZM8EQ/", "title": "\u99d5\u99ad Scala \u578b\u5225\u7cfb\u7d71\uff1a\u5728\u578b\u5225\u5c64\u6253\u9020\u81ea\u52d5\u6a5f", "subtitle": "", "track": "203", "type": "Session", "language": "en", "abstract": "Scala \u7684\u578b\u5225\u7cfb\u7d71\u5728 JVM \u751f\u614b\u7cfb\u4e2d\u7368\u6a39\u4e00\u5e5f\uff0c\u4f46\u4e5f\u56e0\u70ba\u5176\u5f37\u5927\u7684\u529f\u80fd\u8b93\u958b\u767c\u8005\u6642\u5e38\u4e0d\u77e5\u9053\u5982\u4f55\u904b\u7528\u9019\u500b\u512a\u52e2\u53bb\u958b\u767c\u578b\u5225\u4e0a\u66f4\u52a0\u5b89\u5168\u7684\u7a0b\u5f0f\u3002\n\n\u5728\u9019\u500b session \u4e2d\uff0c\u5c07\u6703\u7c21\u55ae\u4ecb\u7d39 Scala \u578b\u5225\u7cfb\u7d71\uff0c\u4e26\u5229\u7528\u5176\u5e95\u5c64\u7684\u63a8\u5c0e\u908f\u8f2f\u6253\u9020\u4e00\u500b\u578b\u5225\u5b89\u5168\u7684\u81ea\u52d5\u6a5f\uff0c\u521d\u6b65\u5e36\u9818\u958b\u767c\u8005\u7406\u89e3\u578b\u5225\u7cfb\u7d71\u4e26\u958b\u767c\u7684\u64c1\u6709\u9032\u968e\u578b\u5225\u5b89\u5168\u7684\u7a0b\u5f0f\u3002", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "KXMRZA", "name": "ChAoS UnItY (Kyle Lin)", "avatar": "https://pretalx.com/media/avatars/PU8Y7G_AGFZ39h.webp", "biography": "\u76ee\u524d\u64d4\u4efbTWKUG\u5fd7\u5de5\uff0c\n\u4e3b\u8981\u7814\u7a76\u7de8\u8b6f\u5668\u9818\u57df\u53ca\u5f62\u5f0f\u5316\u8b49\u660e\u3002\n\n\u9592\u6687\u6642\u9593\u559c\u6b61\u7814\u7a76 Functional Programming \u7b49\u51b7\u9580\u6280\u8853\u3002", "public_name": "ChAoS UnItY (Kyle Lin)", "guid": "7ab7cf5c-4eb2-5fd7-bb0d-f302c5a5a79f", "url": "https://pretalx.com/jcconf-2026/speaker/KXMRZA/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/WZM8EQ/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/WZM8EQ/", "attachments": []}, {"guid": "87147e03-b9c0-5a64-85cb-5f752fa883fb", "code": "NBAXXU", "id": 100321, "logo": null, "date": "2026-09-11T15:00:00+08:00", "start": "15:00", "end": "2026-09-11T15:45:00+08:00", "duration": "00:45", "room": "203", "slug": "jcconf-2026-100321-reading-java-class-files-for-fun-from-cafebabe-to-invokedynamic", "url": "https://pretalx.com/jcconf-2026/talk/NBAXXU/", "title": "Reading Java Class Files for Fun: From CAFEBABE to invokedynamic", "subtitle": "", "track": "203", "type": "Session", "language": "en", "abstract": "Java developers usually write source code and let javac and the JVM handle the rest. But the generated class file contains many interesting details: the constant pool, methods, attributes, bytecode instructions, stack-based execution, synthetic methods, and invokedynamic.\n\nIn this session, we will take a guided tour of Java class files using small Java programs and javap. We will start with the basic structure of a class file, including the magic number, version, constant pool, methods, and attributes. Then we will read simple bytecode instructions as stack-machine operations, so that attendees can understand how Java code is represented after compilation.\n\nAfter building this foundation, we will look at invokedynamic, one of the most interesting bytecode instructions added to the JVM. We will examine how modern Java features such as string concatenation and lambdas are represented in class files, and what bootstrap methods and call sites roughly do behind the scenes.\n\nThe goal is not to memorize the JVM specification. The goal is to enjoy discovering what Java actually becomes after compilation. After this session, attendees should be able to inspect class files by themselves and use that knowledge as a foundation for understanding Java language features, JVM behavior, performance topics, and bytecode-based tools.", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "DBFVFJ", "name": "Koichi Sakata", "avatar": null, "biography": "Koichi Sakata is a JVM Sustaining Engineer at Oracle, a Java Champion, and an OpenJDK Committer. At Oracle, he works on sustaining and maintaining the JVM, drawing on his long-standing interest in how Java works under the hood.\n\nBefore joining Oracle, Koichi was active in the Java community in Japan. He founded and led the Kansai Java Engineers Group, also known as KanJava, for a decade, and has spoken at many Java conferences and community events in Japan and abroad, including JCConf Taiwan.\n\nHis technical interests include class file structures, bytecode, garbage collection, and JIT compilation. Koichi is also the father of three sons and enjoys exploring different cultures through Java conferences around the world. He continues to share his knowledge and enthusiasm for Java with the global Java community.", "public_name": "Koichi Sakata", "guid": "a298e7d7-b216-5649-908d-f66a37e6bde4", "url": "https://pretalx.com/jcconf-2026/speaker/DBFVFJ/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/NBAXXU/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/NBAXXU/", "attachments": []}, {"guid": "f3ff2020-b714-5c02-983e-f2be67fd2357", "code": "TLXZ38", "id": 99954, "logo": null, "date": "2026-09-11T16:15:00+08:00", "start": "16:15", "end": "2026-09-11T17:00:00+08:00", "duration": "00:45", "room": "203", "slug": "jcconf-2026-99954", "url": "https://pretalx.com/jcconf-2026/talk/TLXZ38/", "title": "\u4f7f\u7528\u73fe\u4ee3\u6d41\u7a0b\u5f15\u64ce\uff0c\u7c21\u5316\u8de8\u670d\u52d9\u3001\u591a\u6b65\u9a5f\u6d41\u7a0b\u958b\u767c", "subtitle": "", "track": "203", "type": "Session", "language": "en", "abstract": "\u5728\u5fae\u670d\u52d9\u67b6\u69cb\u4e0b\uff0c\u8de8\u670d\u52d9\u6d41\u7a0b\u5f80\u5f80\u4f34\u96a8\u91cd\u8a66\u3001\u88dc\u511f\u3001\u72c0\u614b\u8ffd\u8e64\u8207\u4eba\u5de5\u4ecb\u5165\u7b49\u6311\u6230\uff0c\u958b\u767c\u8005\u4e0d\u5f97\u4e0d\u64b0\u5beb\u5927\u91cf\u6d41\u7a0b\u63a7\u5236\u7a0b\u5f0f\uff0c\u589e\u52a0\u7cfb\u7d71\u8907\u96dc\u5ea6\u8207\u7dad\u8b77\u6210\u672c\u3002\n\u672c\u6b21\u5206\u4eab\u5c07\u56de\u9867\u6d41\u7a0b\u5f15\u64ce\u7684\u6f14\u9032\uff0c\u4ecb\u7d39 Workflow as Code \u7684\u8a2d\u8a08\u7406\u5ff5\uff0c\u4e26\u4ee5 Temporal \u70ba\u4f8b\uff0c\u8aaa\u660e Durable Execution \u5982\u4f55\u7c21\u5316\u8de8\u670d\u52d9\u6d41\u7a0b\u958b\u767c\uff0c\u5206\u4eab\u591a\u7a2e\u61c9\u7528\u6a21\u5f0f\uff0c\u5354\u52a9\u958b\u767c\u8005\u5efa\u69cb\u66f4\u53ef\u9760\u4e14\u6613\u65bc\u7dad\u8b77\u7684\u5206\u6563\u5f0f\u6d41\u7a0b\u3002", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "8L7ZTD", "name": "\u59dc\u653f\u5b8f Jiang", "avatar": "https://pretalx.com/media/avatars/KJD8WT_aUkVTZM.webp", "biography": "\u8edf\u9ad4\u5de5\u7a0b\u5e2b\n\n\u958b\u767c\u904e\u524d\u7aef\u5f8c\u7aef\uff0c\u7dad\u904b\u904e\u96f2\u7aef\u5730\u7aef\uff0c\u504f\u597d\u627e\u5c0b\u7c21\u55ae\u65b9\u5f0f\u53bb\u89e3\u6c7a\u91cd\u8907\u7e41\u96dc\u554f\u984c", "public_name": "\u59dc\u653f\u5b8f Jiang", "guid": "afe2882f-87bc-538f-ad67-a05a325cf19e", "url": "https://pretalx.com/jcconf-2026/speaker/8L7ZTD/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/TLXZ38/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/TLXZ38/", "attachments": []}], "403": [{"guid": "3afa567e-f835-5c05-b55e-5da7505fc5e1", "code": "ZMVVKZ", "id": 101250, "logo": null, "date": "2026-09-11T14:00:00+08:00", "start": "14:00", "end": "2026-09-11T17:00:00+08:00", "duration": "03:00", "room": "403", "slug": "jcconf-2026-101250-tdd", "url": "https://pretalx.com/jcconf-2026/talk/ZMVVKZ/", "title": "\u4eba\u8981\u6bd4\u8eca\u5147 - \u4eca\u5e74\u4e0d\u770b\u660e\u5e74\u53bb\u50b3\u85dd\u4e2d\u5fc3\u770b\u7684 TDD \u9ad4\u9a57\u5de5\u4f5c\u574a", "subtitle": "", "track": "403", "type": "Workshop", "language": "en", "abstract": "TDD \u8aaa\u8d77\u4f86\u597d\u50cf\u662f\u500b\u5f88\u8001\u7684\u6771\u897f\uff0c\u5927\u5bb6\u90fd\u89ba\u5f97\u5f88\u8001\uff0c\u5927\u5bb6\u90fd\u89ba\u5f97\u81ea\u5df1\u61c2\uff0c\u5927\u5bb6\u90fd\u89ba\u5f97\u73fe\u5728\u597d\u50cf\u4e0d\u9700\u8981\u4e86\uff0c\u4f46\u4e8b\u5be6\u662f\uff1a\u5927\u5bb6\u5176\u5be6\u90fd\u4e0d\u77e5\u9053\u4ed6\u5230\u5e95\u5728\u5e79\u561b\u3002\n\n\u300e\u5728\u9019\u500b AI \u98c6\u901f\u7684\u5e74\u4ee3\uff0c\u5df2\u7d93\u4e0d\u9700\u8981 TDD \u4e86\u300f\u9019\u500b\u7acb\u8ad6\u4f60\u4e00\u5b9a\u807d\u904e\uff0c\u4f46\u4f60\u4ed4\u7d30\u60f3\uff0c\u5728\u9019\u500b AI \u98c6\u901f\u7684\u5e74\u4ee3\uff0c\u5225\u4eba\u8ddf\u4f60\u8aaa\u4e0d\u518d\u9700\u8981\u7684\u8c48\u6b62\u662f TDD \u800c\u5df2\uff1f\u8aaa\u8001\u5be6\u8a71\uff0c\u5982\u679c\u4eca\u5929\u516c\u53f8\u8ddf\u4f60\u8aaa\u4e0d\u518d\u9700\u8981\u4f60\u4e86\uff0c\u4f60\u4e5f\u5c31\u9ede\u982d\u8a8d\u540c\u8209\u624b\u540c\u610f\uff1f\u4e0d\u6703\u5427\uff01\uff1f\n\nTDD \u7684\u64cd\u4f5c\u6c92\u6709\u4ec0\u9ebc\u7279\u5225\u7684\uff0c\u5c31\u53ea\u662f\u5927\u5bb6\u719f\u77e5\u7684\u300e\u7d05\u71c8\u3001\u7da0\u71c8\u3001\u91cd\u69cb\u300f\u3002\u5b83\u7684\u50f9\u503c\u5728\u65bc\u80fd\u5920\u5feb\u901f\u66b4\u9732\u4f60\u81ea\u8eab\u5c0d\u65bc\u9700\u6c42\u7406\u89e3\u3001\u67b6\u69cb\u8a2d\u8a08\u3001\u8a2d\u8a08\u6210\u672c\u7684\u63a7\u7ba1\u7684\u4e0d\u8db3\u3002\u9019\u4ef6\u4e8b\uff0c\u8ddf AI \u4e0d AI \u6c92\u6709\u95dc\u4fc2\uff0cAI \u53ea\u662f\u8b93\u554f\u984c\u66b4\u9732\u5f97\u66f4\u5feb\u800c\u5df2\u3002\n\n\u771f\u6b63\u7684\u554f\u984c\u5728\uff0c\u7576\u554f\u984c\u66b4\u9732\u51fa\u4f86\u64fa\u5728\u4f60\u773c\u524d\uff0c\u4e0d\u8981\u8aaa\u80fd\u4e0d\u80fd\u89e3\u4e86\uff0c\u770b\u4e0d\u770b\u5f97\u51fa\u4f86\u4e5f\u8a31\u624d\u662f\u6211\u5011\u771f\u6b63\u7684\u74f6\u9838\u3002\n\n\u5728 AI \u98c6\u901f\u7684\u5e74\u4ee3\uff0c\u5beb\u7a0b\u5f0f\u9084\u9700\u8981\u55ce\uff1f\u67b6\u69cb\u9084\u9700\u8981\u55ce\uff1fDDD \u9084\u9700\u8981\u55ce\uff1f\u7a0b\u5f0f\u6613\u8b80\u6613\u6539\u6027\u9084\u9700\u8981\u55ce\uff1f\n\n\u4e5f\u8a31\u5230\u6700\u5f8c\u53ef\u4ee5\u4e00\u53e5\u8a71\u7e3d\u7d50\uff1a\u300e\u4eba\u8981\u6bd4\u8eca\u5147\u300f\u3002\n\n\u5728\u9019\u5834\u5de5\u4f5c\u574a\u4e2d\uff0c\u8207\u6703\u8005\u5c07\u8207\u8b1b\u8005\u7d44\u6210 Pair\uff0c\u6211\u5011\u5c07\u4e00\u8d77\u7528 TDD \u7684\u65b9\u5f0f\uff0c\u5e36\u51fa\u5f9e\u4ee5\u524d\u5230\u73fe\u5728\u4f60\u53ef\u80fd\u60f3\u90fd\u6c92\u60f3\u904e\u7684\u8a2d\u8a08\u554f\u984c\u3002\u66f4\u68d2\u7684\u662f\uff0c\u4f60\u4e0d\u7528\u5e36\u96fb\u8166\uff01\u8b93\u6211\u4f86\u7576\u4f60\u7684 Driver\uff0c\u4e00\u8d77\u4f86\u9ad4\u9a57\uff0c\u5728 TDD + Pair Programming \u7684\u904e\u7a0b\u4e2d\uff0c\u5168\u7a0b\u7528\u529b\u601d\u8003\u67b6\u69cb\u8207\u8a2d\u8a08\u554f\u984c\u662f\u9577\u4ec0\u9ebc\u6a23\u5b50\u3002", "description": null, "recording_license": "", "do_not_record": true, "persons": [{"code": "ZBQGYF", "name": "Kuma Syu", "avatar": "https://pretalx.com/media/avatars/XKYAYV_bgl1MbT.webp", "biography": "\u4f60\u5f88\u5c11\u898b\u904e\u50cf Kuma \u9019\u9ebc\u8a0e\u53ad coding \u7684 RD\u3002\n\n\u4ed6\u5805\u6301\uff0c\u53ea\u8981\u6eff\u8db3\u9700\u6c42\uff0c\u80fd\u5920\u5c11\u5beb code \u5c31\u5c11\u5beb code\u3002\u56e0\u6b64\u81f4\u529b\u65bc\u81ea\u52d5\u5316\u6e2c\u8a66\u8207 Clean Code \u7cbe\u795e\u7684\u5be6\u8e10\u3002\u65bc\u6b64\u540c\u6642\uff0c\u54c1\u8cea\u4e0d\u80fd\u72a7\u7272\u3002\n\n\u4e0d\u64c5\u9577\u91cd\u8907\u52d5\u4f5c\u7684 Kuma\uff0c\u5c0d\u65bc\u7dad\u904b\uff0c\u4ed6\u8ffd\u6c42\u7684\u76ee\u6a19\u662f\u6975\u81f4\u81ea\u52d5\u5316\uff0c\u80fd\u5920\u8b93\u6a5f\u5668\u505a\u7684\u4e8b\u5c31\u4e0d\u81ea\u5df1\u505a\u3002\u4ed6\u70ba\u8ffd\u6c42\u66f4\u9ad8\u7684\u50f9\u503c\u4e26\u6e1b\u5c11\u6d6a\u8cbb\uff0c\u53ea\u6191\u4e00\u80a1\u8fd1\u4e4e\u4fe1\u4ef0\u7684\u71b1\u5ff1\uff0c\u5728\u7d44\u7e54\u5167\u63a8\u52d5\u5404\u7a2e\u6d41\u7a0b\u6539\u5584\u3002\n\n\u505a\u904e PO\uff0c\u505a\u904e SM\uff0c\u4e5f\u505a\u904e\u7dad\u904b\u4e00\u689d\u9f8d\u7684 RD\uff0c\u5230\u6700\u5f8c\u624d\u767c\u73fe\uff0c\u7576\u4ec0\u9ebc\u8077\u4f4d\u7121\u6240\u8b02\uff0c\u8ffd\u6c42\u50f9\u503c\u624d\u662f\u91cd\u9ede\u3002\n\n\u300c\u654f\u6377\u7cbe\u795e\uff0c\u71b1\u611b\u8edf\u9ad4\u5de5\u7a0b\u300d\u2500\u2500 \u4f60\u53ef\u4ee5\u9019\u9ebc\u5f62\u5bb9\u4ed6\u3002", "public_name": "Kuma Syu", "guid": "9ba1435c-9093-57ba-a522-294fabff7f50", "url": "https://pretalx.com/jcconf-2026/speaker/ZBQGYF/"}], "links": [], "feedback_url": "https://pretalx.com/jcconf-2026/talk/ZMVVKZ/feedback/", "origin_url": "https://pretalx.com/jcconf-2026/talk/ZMVVKZ/", "attachments": []}]}}]}}}