Java 코드를 Lisp으로 번역해 실행하는 OpenLDK, Spring Boot 앱을 84ms 만에 재시작하다
OpenLDK: Bringing the Java World into Common Lisp
OpenLDK는 Common Lisp으로 작성된 Java JIT 컴파일러이자 런타임이다. Java 바이트코드를 Lisp으로 번역하고 SBCL이 이를 네이티브 코드로 컴파일해, Java 객체가 Lisp 애플리케이션과 같은 프로세스·힙에서 살아간다. Java 클래스는 CLOS 클래스가 되고, Kotlin·Scala·Clojure 등 JVM 언어 코드를 Lisp 안에 직접 넣을 수 있다. 초기화된 Spring Boot 애플리케이션을 Lisp 이미지에 저장해 약 84밀리초 만에 다시 띄우는 실험도 소개한다.
Java 클래스는 CLOS 클래스가 된다. Lisp는 Kotlin으로 작성된 메서드 주위에 메서드를 추가할 수 있다. Clojure 함수는 funcall에 넘길 수 있는 대상이 될 수 있다. Java 자체 컴파일러가 SBCL 안에서 실행된다.