CheerpJ 5.0, 브라우저에서 Java 21·25 지원하고 컴파일 기능 추가
CheerpJ 5.0은 브라우저에서 Java 21·25를 지원하고 전체 JDK를 제공해 javac로 코드를 컴파일한 뒤 실행하는 흐름을 마련했습니다. 새 WasmGC 엔진은 성능 개선을 목표로 한 실험 기능이며, 기본 엔진은 안정 실행 경로로 유지됩니다.
본문
Leaning Technologies의 CTO Alessandro Pignotti가 11월 2일 CheerpJ 5.0을 발표했습니다. 브라우저에서 Java 21과 25를 지원하고, 지원하는 모든 Java 버전에 전체 JDK를 제공합니다. CheerpJ 5.0은 기존 Java 프로그램 실행과 새 Java 코드의 브라우저 내 컴파일·실행을 모두 지원합니다. 회사는 Java 25 지원을 미리보기로 분류하며, 새 WasmGC 실행 엔진은 실험 기능으로 소개했습니다.
CheerpJ는 Java 바이트코드를 브라우저에서 실행하는 JVM입니다. 회사는 리플렉션, 실행 중 클래스 생성, 사용자 정의 클래스 로더와 멀티스레딩을 포함한 기존 앱을 소스 코드 수정 없이 실행하도록 설계했다고 설명합니다. 따라서 앱의 소스가 없어도 컴파일된 JAR를 사용할 수 있습니다.
5.0에서 달라진 JDK 구성은 브라우저 안에서의 작업 흐름을 넓힙니다. CheerpJ는 이전에는 다운로드 크기와 초기화 시간을 줄이기 위해 JRE만 제공했지만, I/O 최적화 뒤 Java 버전별 전체 JDK를 포함했습니다. JDK에 들어 있는 javac와 jshell도 브라우저에서 실행됩니다. 예를 들어 브라우저 기반 IDE인 BrowserCode에서는 코드를 수정하고 Run을 누르면 javac가 코드를 컴파일한 다음 CheerpJ가 결과를 실행합니다. 입력한 소스 코드에서 실행 결과까지 브라우저 안에서 이어지는 구조입니다.
이 흐름을 받치는 실행기는 WebAssembly로 컴파일한 C++ JVM과 JIT 컴파일러입니다. 코드는 먼저 인터프리터에서 실행되고, 자주 쓰이는 부분은 JIT 컴파일됩니다. 기본 엔진은 Java 객체를 JavaScript 객체로 다루고 핫 코드를 JavaScript로 생성합니다. CheerpJ는 지원하는 Java 버전마다 수정하지 않은 OpenJDK를 제공하며 JNI 계층도 WebAssembly로 컴파일합니다.
브라우저에는 데스크톱 JVM이 기대하는 파일 시스템과 창 관리 같은 환경이 기본으로 없기 때문에 CheerpJ는 가상 시스템 계층도 제공합니다. HTTP로 가져온 자산, IndexedDB에 저장하는 로컬 데이터, JavaScript에서 전달한 데이터 등을 파일 시스템으로 다루고, 네트워크·클립보드·오디오·인쇄와 여러 Java 창도 지원합니다. 이 계층이 JVM 및 JDK와 함께 작동해 데스크톱 Java 앱을 브라우저에 연결합니다.
현재 발표에서 Swing과 AWT 기반 앱은 사용자 정의 화면 테마와 여러 창을 포함해 지원 대상입니다. JavaFX와 SWT 앱은 현재 지원하지 않습니다. Java 25 역시 회사가 미리보기로 설명하며 소규모·중간 규모 용례 상당수가 작동할 것으로 기대하지만, 매우 큰 앱에서는 추가 수정이 필요할 수 있다고 밝혔습니다.
WasmGC는 안정 엔진과 별도로 선택하는 실행 경로입니다. 새 엔진에서는 Java 객체를 WebAssembly GC 확장으로 관리하고, 핫 코드를 JavaScript 대신 WebAssembly로 컴파일합니다. 메모리는 브라우저의 가비지 컬렉터가 관리합니다. Leaning Technologies는 이 방식이 시작과 실행 성능을 높이고 WebAssembly로 컴파일된 JNI 라이브러리와의 연결을 단순화할 것으로 기대합니다. 예로 든 LWJGL은 Java 게임에 쓰이는 라이브러리입니다. CheerpJ는 LWJGL 2를 지원하고, LWJGL 3도 실행은 가능하지만 성능 부담이 커 실용성이 낮았다고 회사는 설명했습니다.
WasmGC는 현재 불안정한 실험 기능이며 기본 엔진은 안정화된 기존 경로입니다. 사용자가 WasmGC를 별도로 켜야 하고, 오류가 나도 기본 엔진으로 자동 복귀하지 않습니다. 회사는 실제 앱 대부분이 아직 작동하지 않을 수 있다며 운영 환경에서 사용하지 말라고 밝혔습니다. 발표문은 Chrome·Edge 137 이상, Firefox 153 이상, Safari 27 이상을 요구 조건으로 제시합니다. 안정화는 2027년 초 계획된 CheerpJ 6.0의 목표입니다.
자료: Leaning Technologies / 정리·해설: Trawling