cl-kawa projesi, Common Lisp, Kawa Scheme ve Java sanal makinesi (JVM) ekosistemleri arasında derin bir birlikte çalışabilirlik sağlamayı hedefleyen deneysel bir çalışmadır. Per Bothner tarafından geliştirilen Kawa Scheme, Scheme kodunu Java bytecode'una derleyerek JVM üzerinde çalıştırırken, OpenLDK ise Common Lisp ile yazılmış bir JVM uygulamasıdır ve Java bytecode'unu Common Lisp koduna dönüştürür. Bu mimari sayesinde, SBCL gibi bir Common Lisp ortamında, Java bytecode'u Common Lisp'e çevrilip doğrudan yerel makine koduna derlenebilir.
Bu entegrasyon, Common Lisp ve Scheme arasında herhangi bir serileştirme veya süreç sınırı olmaksızın, aynı SBCL süreci ve bellek alanı içinde etkileşim kurma imkanı sunar. cl-kawa ile Common Lisp'ten Scheme ifadeleri değerlendirilebilir, Scheme prosedürleri çağrılabilir ve hatta Common Lisp fonksiyonları Scheme tarafından çağrılmak üzere kaydedilebilir. Sayılar, dizeler, boolean değerler ve listeler gibi temel veri türleri iki dil arasında sorunsuz bir şekilde alışveriş edilebilir. Proje şu an için bir teknoloji gösterimi niteliğindedir ve performans veya üretim ortamı için hazır değildir.
En dikkat çekici özelliği, Common Lisp'ten çağrılan bir Scheme ifadesinin Java kodunu çalıştırması ve bu Java kodunun OpenLDK aracılığıyla Common Lisp'e dönüştürülüp SBCL tarafından yerel makine koduna derlenmesidir. Örneğin, bir java.lang.String nesnesinin toUpperCase() metodu, Common Lisp içinden çağrılan bir Scheme ifadesi aracılığıyla çalıştırılabilir. Bu, farklı dil sınırlarını tek bir Lisp imajı içinde, harici fonksiyon arayüzleri (FFI), soketler veya serileştirme gibi ek mekanizmalara ihtiyaç duymadan aşan benzersiz bir entegrasyon seviyesi sunar.
Bu proje, farklı programlama dillerinin ve runtime'larının tek bir süreç içinde, yüksek verimlilikle ve derinlemesine entegre olabileceği potansiyeli gösteriyor.