Slide 1

Slide 1 text

0 Exploring Java OSS with LLMs: A New Way to Approach Open-Source Code Reading April 23rd, 2025 Hiroshi Ito Executive Officer / CTO Loglass

Slide 2

Slide 2 text

1 Exploring Java OSS with LLMs: Self Introduction After joining Goldman Sachs' Technology Division as a new graduate, he involved in the development of the company’s core systems. Later, as a VP/Senior Engineer, he contributed to platform development and spearheaded the company’s open-source software (OSS) strategy. After working at two startups, he joined READYFOR as an Executive Officer and Vice President of Engineering (VPoE), where he managed the engineering organization, led the overhaul of the payment infrastructure, and spearheaded new product development. In October 2022, he joined Loglass Inc. as an engineer in the Development Department. After serving as an Engineering Manager (EM) and VPoE, he was appointed Executive Officer and CTO in November 2024. Loglass Inc. Executive Officer, CTO Hiroshi Ito Hiroshi Ito

Slide 3

Slide 3 text

2 Exploring Java OSS with LLMs The theme was "Exploring Java OSS with LLMs: A New Way to Approach Open-Source Code Reading." 6 Month Ago, I submitted this proposal

Slide 4

Slide 4 text

3 Exploring Java OSS with LLMs And Today, Looking Around GIDS sessions.... AI! AI! AI! It's the topic everywhere! All Screenshots are from https://developersummit.com/session/ © 2025-2026 Saltmarch. All rights reserved.

Slide 5

Slide 5 text

4 Exploring Java OSS with LLMs Which Leads to a Big Question... Will We Keep Reading & Writing Code? Image Credit: ChatGPT/Dall-E, 2025

Slide 6

Slide 6 text

5 Exploring Java OSS with LLMs ● It's a traditional Japanese art form – recreating natural landscapes in a pot. ● Characteristics: ○ Cultivated over many years. ○ Shaped through careful pruning and tending. ○ Reflects the creator's aesthetic sense and philosophy. A Bit Sudden, But Do You Know "Bonsai"? In Japan, it's often enjoyed as a hobby in later life.

Slide 7

Slide 7 text

6 Exploring Java OSS with LLMs ● If AI handles most coding tasks in the future... ● Would reading & writing code might be.. ○ A pursuit of deep understanding, cultivated over time? ○ An act of careful crafting and refinement, like pruning? ○ A way to express coding aesthetics or philosophy? Or perhaps, simply a refined 'hobby'? Is Code Reading & Writing the Future "Bonsai"? Image Credit: ChatGPT/Dall-E, 2025

Slide 8

Slide 8 text

7 Exploring Java OSS with LLMs In this session, however, acknowledging it's still too early for the "Bonsai" stage (?), we'll explore how to practically leverage LLMs and AI Agents as useful tools for understanding OSS code today. Well, it might be true, but let’s forget about it Image Credit: ChatGPT/Dall-E, 2025

Slide 9

Slide 9 text

8 Exploring Java OSS with LLMs Why would you read OSS source code anyways? Image Credit: ChatGPT/Dall-E, 2025 ● See real‑world architecture up close – Explore how large projects organise layers and boundaries. ● Spot design patterns in action – Notice Strategy, Builder, Reactor and other patterns working together. ● Learn how good APIs evolve – Observe how maintainers add features while keeping backward compatibility. ● Build your code‑reading stamina – Practise tracing big codebases and finding what matters. ● Speed up onboarding for new teammates – Use proven, battle‑tested code as hands‑on learning material.

Slide 10

Slide 10 text

9 Exploring Java OSS with LLMs ● Learn how LLMs can accelerate understanding of complex OSS codebases ● Discover practical techniques for using AI to navigate OSS projects ● Develop an efficient workflow combining traditional and AI-assisted code reading ● Apply these techniques to popular Java frameworks and libraries Session Objectives

Slide 11

Slide 11 text

10 Java OSS Code Reading - The Challenge & The Promise -

Slide 12

Slide 12 text

11 Exploring Java OSS with LLMs Want to understand the architecture or contribute to that cool Java OSS project! Do You Ever Felt Like This? Image Credit: ChatGPT/Dall-E, 2025

Slide 13

Slide 13 text

12 Exploring Java OSS with LLMs Want to understand the architecture or contribute to that cool Java OSS project! ...But where to even start? A vast sea of code! Overwhelming! Do You Ever Felt Like This? Image Credit: ChatGPT/Dall-E, 2025

Slide 14

Slide 14 text

13 Exploring Java OSS with LLMs ● Read the manual ● Source code deep dive ● Find usages: Search for keywords or method calls ● Use debugger yourself to go through the code path Result: Time-consuming, prone to frustration, hard to even take the first step. The Old Ways of Tackling the "Code Mountain" Image Credit: ChatGPT/Dall-E, 2025

Slide 15

Slide 15 text

14 Exploring Java OSS with LLMs Spring Framework: Untangling the bean lifecycle from creation to destruction – how does Spring manage dependencies across hundreds of classes while maintaining circular reference detection? Hibernate ORM: Deciphering lazy loading proxies and collection wrappers – where in the codebase does bytecode enhancement happen and how does it intercept property access? Netty: Tracing asynchronous operations through event loops – following a request from channel registration to completion callback across multiple thread contexts. Apache Kafka: Tracking message flow from producer to consumer – how does offset management work across multiple partitions and consumer group instances? Understanding OSS Internal Code Can Be Hard

Slide 16

Slide 16 text

15 Exploring Java OSS with LLMs Where should I start reading? How can I grasp the overall picture? Which are the main classes or modules? Where is the code related to this specific feature? Facing vast code, what I need first is a "map"! This "first step" hurdle is extremely high. The Biggest Hurdle: The "First Step"

Slide 17

Slide 17 text

16 Exploring Java OSS with LLMs A Savior Appears? Enter AI Assistants Image Credit: ChatGPT/Dall-E, 2025

Slide 18

Slide 18 text

17 Exploring Java OSS with LLMs Summarization: Tells you the purpose/role of the whole project, modules, or classes. Structure Explanation: Explains the rough architecture and relationships between key components. Identifying Key Parts: "Where is feature xxx located?" → Suggests relevant code locations. Illustration: Visualize the key concept with image or modeling notation e.g. mermaid Deep dive with repeated Q&A: Answers "What is the purpose of xx ?", “Why this code is written this way?” etc. How AI Helps the "First Step"

Slide 19

Slide 19 text

18 Source Code Reading with LLMs - Spring Boot-

Slide 20

Slide 20 text

19 Exploring Java OSS with LLMs Hello ChatGPT, I’d like to dive into the Spring Boot source code to grasp its high‑level architecture and then perform an in‑depth analysis of some of its core features. Could you please start by providing an overview of Spring Boot and outline an effective step‑by‑step approach for reading its code? Let’s get started!! Image Credit: ChatGPT/Dall-E, 2025

Slide 21

Slide 21 text

20 Exploring Java OSS with LLMs ChatGPT answers

Slide 22

Slide 22 text

21 Exploring Java OSS with LLMs Opinionated Spring Spring Boot builds on the core Spring Framework by applying “convention over configuration.” It auto‑configures your application based on the jars on your classpath and sensible defaults, so you can get a production‑ready app up and running with minimal XML or Java configuration. Key Goals 1. Quick Start: Embed a servlet container (Tomcat, Jetty) so you can java -jar your app. 2. Minimal Boilerplate: Provide starter POMs (spring-boot-starter-*) that bring in a curated set of dependencies. 3. Production‑Ready Features: Include health checks, metrics, externalized configuration, and more out of the box. 1. What Is Spring Boot and Why It Exists

Slide 23

Slide 23 text

22 Exploring Java OSS with LLMs SpringApplication ● Entry point (SpringApplication.run(...)): boots the entire framework, sets up the ApplicationContext, triggers auto‑configuration, and then calls any CommandLineRunner or ApplicationRunner beans. Auto‑Configuration ● Lives in the spring-boot-autoconfigure module. ● Scans for classes annotated with @Configuration and guarded by @ConditionalOn… annotations (e.g. @ConditionalOnClass, @ConditionalOnMissingBean). ● Decouples “if X is on classpath, then configure Y” logic into many small auto‑config classes. 2. Core Architectural Building Blocks

Slide 24

Slide 24 text

23 Exploring Java OSS with LLMs Starter POMs ● Modules named spring-boot-starter-* (web, data-jpa, security, etc.). ● Bring in the right spring‑boot dependencies without you having to pick versions. Actuator ● In spring-boot-actuator. ● Exposes operational endpoints (health, metrics, env, loggers) over HTTP or JMX to monitor and manage your app. Developer Tools ● spring-boot-devtools for hot reloading, automatic restart, and remote debugging support. CLI ● spring-boot-cli lets you write Groovy-based “scripts” that run on Spring Boot. 2. Core Architectural Building Blocks

Slide 25

Slide 25 text

24 Exploring Java OSS with LLMs 3. High‑Level Module Structure spring-boot/ ├─ spring-boot-project/ │ ├─ spring-boot/ │ ├─ spring-boot-autoconfigure/ │ ├─ spring-boot-actuator/ │ ├─ spring-boot-test/ │ └─ spring-boot-cli/ ├─ docs/ ├─ build-system/ (Gradle scripts) └─ samples/ Tip: Start with spring-boot-autoconfigure to see how each piece (e.g. DataSource, Jackson, Security) wires itself up when relevant classes are present.

Slide 26

Slide 26 text

25 Exploring Java OSS with LLMs OK, so let’s start with what ChatGPT suggests :) spring-boot-autoconfigure

Slide 27

Slide 27 text

26 Exploring Java OSS with LLMs Starting the Journey

Slide 28

Slide 28 text

27 Exploring Java OSS with LLMs The Big Picture: Spring Boot Auto-Configuration

Slide 29

Slide 29 text

28 Exploring Java OSS with LLMs The Big Picture: Spring Boot Auto-Configuration

Slide 30

Slide 30 text

29 Exploring Java OSS with LLMs The Big Picture: Spring Boot Auto-Configuration

Slide 31

Slide 31 text

30 Exploring Java OSS with LLMs The Big Picture: Spring Boot Auto-Configuration

Slide 32

Slide 32 text

31 Exploring Java OSS with LLMs The Big Picture: Spring Boot Auto-Configuration

Slide 33

Slide 33 text

32 Exploring Java OSS with LLMs The Big Picture: Spring Boot Auto-Configuration

Slide 34

Slide 34 text

33 Exploring Java OSS with LLMs The Big Picture: Spring Boot Auto-Configuration

Slide 35

Slide 35 text

34 Exploring Java OSS with LLMs The Big Picture: Spring Boot Auto-Configuration

Slide 36

Slide 36 text

35 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 37

Slide 37 text

36 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 38

Slide 38 text

37 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 39

Slide 39 text

38 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 40

Slide 40 text

39 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 41

Slide 41 text

40 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 42

Slide 42 text

41 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 43

Slide 43 text

42 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 44

Slide 44 text

43 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 45

Slide 45 text

44 Exploring Java OSS with LLMs Going Deeper into Source Code

Slide 46

Slide 46 text

45 Exploring Java OSS with LLMs At this point, I still didn't have a clear mental model of how the different parts of the source code connected. So I asked ChatGPT to create a sequence diagram to help visualize the flow.

Slide 47

Slide 47 text

46 Exploring Java OSS with LLMs Visual Aid - Sequence Diagram

Slide 48

Slide 48 text

47 Exploring Java OSS with LLMs Visual Aid - Sequence Diagram

Slide 49

Slide 49 text

48 Exploring Java OSS with LLMs Hands-on with Debugging

Slide 50

Slide 50 text

49 Exploring Java OSS with LLMs Hands-on with Debugging

Slide 51

Slide 51 text

50 Exploring Java OSS with LLMs Hands-on with Debugging

Slide 52

Slide 52 text

51 Exploring Java OSS with LLMs Hands-on with Debugging

Slide 53

Slide 53 text

52 Exploring Java OSS with LLMs Hands-on with Debugging

Slide 54

Slide 54 text

53 Exploring Java OSS with LLMs Another Visual Aid - Debug Flow Illustrated

Slide 55

Slide 55 text

54 Exploring Java OSS with LLMs But wait, I still get lost

Slide 56

Slide 56 text

55 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 57

Slide 57 text

56 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 58

Slide 58 text

57 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 59

Slide 59 text

58 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 60

Slide 60 text

59 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 61

Slide 61 text

60 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 62

Slide 62 text

61 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 63

Slide 63 text

62 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 64

Slide 64 text

63 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 65

Slide 65 text

64 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 66

Slide 66 text

65 Exploring Java OSS with LLMs Summarizing Participant Role

Slide 67

Slide 67 text

66 Exploring Java OSS with LLMs o3 is creative enough to illustrate the actors Image Credit: ChatGPT/Dall-E, 2025

Slide 68

Slide 68 text

67 Exploring Java OSS with LLMs Now I can explore code with debugging following ChatGPT’s instructions

Slide 69

Slide 69 text

68 Exploring Java OSS with LLMs Going back and forth between code and diagram

Slide 70

Slide 70 text

69 Exploring Java OSS with LLMs Participant role helps to add contexts in the flow

Slide 71

Slide 71 text

70 Exploring Java OSS with LLMs At this point, you can gradually build your mental model with clear image of what each actor is responsible for

Slide 72

Slide 72 text

71 Exploring Java OSS with LLMs So now I asked ChatGPT to create mini-boot

Slide 73

Slide 73 text

72 Exploring Java OSS with LLMs So now I asked ChatGPT to create mini-boot

Slide 74

Slide 74 text

73 Exploring Java OSS with LLMs Code Demo

Slide 75

Slide 75 text

74 Exploring Java OSS with LLMs mini-boot illustrated

Slide 76

Slide 76 text

75 Exploring Java OSS with LLMs mini-boot vs Spring Boot mapping

Slide 77

Slide 77 text

76 Exploring Java OSS with LLMs Debugging Help with LLM

Slide 78

Slide 78 text

77 Exploring Java OSS with LLMs While debugging, sometimes you get lost when the debugger stops many times at the same breakpoint

Slide 79

Slide 79 text

78 Exploring Java OSS with LLMs ChatGPT helps clarifying what I don’t get

Slide 80

Slide 80 text

79 Exploring Java OSS with LLMs ChatGPT helps clarifying what I don’t get

Slide 81

Slide 81 text

80 Exploring Java OSS with LLMs ChatGPT helps clarifying what I don’t get

Slide 82

Slide 82 text

81 Exploring Java OSS with LLMs Now I got confused why Condition doesn’t stop

Slide 83

Slide 83 text

82 Exploring Java OSS with LLMs Summarization: Tells you the purpose/role of the whole project, modules, or classes. Structure Explanation: Explains the rough architecture and relationships between key components. Identifying Key Parts: "Where is feature xxx located?" → Suggests relevant code locations. Illustration: Visualize the key concept with image or modeling notation e.g. mermaid Deep dive with repeated Q&A: Answers "What is the purpose of xx ?", “Why this code is written this way?” etc. Quick Recap: Here are the overall steps

Slide 84

Slide 84 text

83 Source Code Reading with LLMs - Eclipse Collections -

Slide 85

Slide 85 text

84 Exploring Java OSS with LLMs What is Eclipse Collections?

Slide 86

Slide 86 text

85 Exploring Java OSS with LLMs I asked ChatGPT to illustrate the data architecture and algorithm of FastList in Eclipse Collections

Slide 87

Slide 87 text

86 Exploring Java OSS with LLMs This is an interesting image of hulcination

Slide 88

Slide 88 text

87 Exploring Java OSS with LLMs Another example: comparison between FastList and ArrayList

Slide 89

Slide 89 text

88 Exploring Java OSS with LLMs Interestingly it is still difficult for ChatGPT o3 to illustrate logical sequence in an image

Slide 90

Slide 90 text

89 Exploring Java OSS with LLMs But if I asked to create a visualization in a text, it perfectly illustrates the logical sequence!

Slide 91

Slide 91 text

90 Exploring Java OSS with LLMs But if I asked to create a visualization in a text, it perfectly illustrates the logical sequence!

Slide 92

Slide 92 text

91 Exploring Java OSS with LLMs But if I asked to create a visualization in a text, it perfectly illustrates the logical sequence!

Slide 93

Slide 93 text

92 Exploring Java OSS with LLMs But if I asked to create a visualization in a text, it perfectly illustrates the logical sequence!

Slide 94

Slide 94 text

93 Exploring Java OSS with LLMs Let ChatGPT speak about why FastList is fast

Slide 95

Slide 95 text

94 Exploring Java OSS with LLMs Let ChatGPT speak about why FastList is fast

Slide 96

Slide 96 text

95 Exploring Java OSS with LLMs Let ChatGPT speak about why FastList is fast

Slide 97

Slide 97 text

96 Exploring Java OSS with LLMs Let ChatGPT speak about why FastList is fast

Slide 98

Slide 98 text

97 Exploring Java OSS with LLMs Let ChatGPT speak about why FastList is fast

Slide 99

Slide 99 text

98 Exploring Java OSS with LLMs Let ChatGPT speak about why FastList is fast

Slide 100

Slide 100 text

99 Final Remark

Slide 101

Slide 101 text

100 Exploring Java OSS with LLMs ● LLMs provide that crucial "map" to help us take the first step into complex codebases ● They can explain architecture, summarize code, and identify key components ● Visual aids like sequence diagrams and role descriptions add another dimension of understanding ● Combining AI assistance with traditional debugging creates a powerful learning workflow ... and it’s fun!!! Enjoy OSS code reading!! Conclusion

Slide 102

Slide 102 text

101