피드로 돌아가기
How the Java Launcher Works — Running Programs Without Compiling First
Dev.toDev.to
Backend

JDK 22 기준 컴파일 단계 제거를 통한 Java 소스 직접 실행 구조

How the Java Launcher Works — Running Programs Without Compiling First

Md Jamilur Rahman2026년 6월 19일6beginner

Context

기존 Java 개발 프로세스의 '작성-컴파일(javac)-실행(java)'으로 이어지는 3단계 워크플로우에 따른 개발 오버헤드 발생. 소규모 스크립트나 프로토타이핑 단계에서 빌드 시스템 설정 및 .class 파일 생성으로 인한 불필요한 디스크 I/O 비용 존재.

Technical Solution

  • Java Launcher의 내부 동작 변경을 통한 .java 파일 직접 실행 메커니즘 구현
  • In-memory Compilation 방식을 채택하여 컴파일된 Bytecode를 디스크에 쓰지 않고 메모리상에서 즉시 로드하는 구조 설계
  • JDK 22 JEP 458 도입을 통해 패키지 구조와 일치하는 하위 디렉토리의 다중 소스 파일을 자동 탐색 및 컴파일하는 Multi-file Support 확장
  • Unix-like 시스템의 Shebang(#!) 지원을 통한 Java 소스의 Scripting Language화 구현
  • Standard JDK Library 자동 로드를 통한 Classpath 설정 간소화 설계
  • 외부 라이브러리 의존성 해결을 위해 기존 -cp 플래그를 유지하는 Hybrid Dependency Resolve 방식 채택

- 단순 API 검증 및 프로토타이핑 시 별도 빌드 도구 없이 java [파일명].java 명령어로 즉시 실행 - 리눅스/macOS 환경의 단순 유틸리티 작성 시 .java 확장자 제거 및 Shebang 설정을 통한 스크립트화 검토 - 다중 파일 구조의 소규모 프로젝트에서 Maven/Gradle 도입 전 단계의 빠른 구조 설계 도구로 활용 - 외부 JAR 의존성이 필요한 경우 -cp 옵션을 통한 Classpath 수동 지정 필요성 인지

원문 읽기