OpenLDK es un compilador JIT y runtime para Java escrito en Common Lisp que permite ejecutar código Java directamente en el proceso de Lisp. A diferencia de los runtimes tradicionales, OpenLDK lee el bytecode de Java, lo traduce a una representación intermedia y luego a Lisp, permitiendo que SBCL compile el resultado en código nativo. Esta arquitectura unifica la memoria: los objetos Java y Lisp coexisten en el mismo heap y proceso, eliminando la necesidad de serialización para la interacción entre ambos lenguajes.
El proyecto, dirigido a la JDK 25, destaca por su enfoque de compilación bajo demanda. No compila todos los métodos de una librería al cargarla, sino que genera código solo cuando se invoca la primera vez, optimizando el rendimiento para aplicaciones que no utilizan toda la librería. La traducción preserva la semántica de Java, manteniendo el comportamiento de desbordes de enteros de 32 bits y la jerarquía de excepciones, mientras que los campos y métodos se mapean a slots y funciones genéricas de CLOS.
Una de las capacidades más notables de OpenLDK es la interoperabilidad bidireccional. Permite que funciones de Clojure, Kotlin, Scala, Groovy, JScheme o ABCL se integren nativamente en el código Lisp mediante sintaxis específica. Por ejemplo, una función Clojure puede convertirse en un objeto funcall para Lisp, y viceversa. El sistema también soporta la ejecución de aplicaciones Spring Boot, permitiendo inspeccionar y modificar objetos en tiempo real mientras la aplicación sigue corriendo. Esta herramienta es útil para desarrolladores que buscan integrar bibliotecas Java en aplicaciones Lisp sin sacrificar el rendimiento nativo ni la capacidad de inspección profunda del código.
