Java 코드를 Lisp에서 직접 실행하는 OpenLDK 런타임
Key Point
Java 라이브러리를 Common Lisp 애플리케이션과 통합해야 하는 개발자에게는 새로운 선택지를 제시하고, 각 JVM 언어를 하나의 식 안에서 연결하는 폴리글롯 프로그래밍의 가능성을 보여준다.
핵심 요약
- Common Lisp으로 작성된 JIT 컴파일러인 OpenLDK는 Java 바이트코드를 읽어 Lisp으로 번역한 뒤 SBCL을 통해 네이티브 코드로 컴파일하며, Java 객체와 Lisp 애플리케이션이 동일 프로세스·힙에서 살아간다.
- 클래스 로드 시 OpenLDK가 CLOS 표현을 만들고 메서드 스텁을 설치하며, 메서드 첫 호출 시 바이트코드→중간표현→Lisp→네이티브 코드 순으로 컴파일되고 스텁을 대체한다.
- Java 필드는 CLOS 슬롯이 되고, 인스턴스 메서드는 CLOS 제네릭 함수의 메서드가 되며, 정적 메서드는 일반 Lisp 함수가 되고, Java 예외는 Lisp 조건 계층구조에 대응된다.