Kawa (Scheme implementation)

{{Infobox programming language

| name = Kawa

| logo = Kawa-logo.svg

| screenshot =

| screenshot caption =

| paradigm =

| family = Lisp

| designer = Per Bothner

| developer = The Kawa Community

| released = {{Start date and age|1996|06|10|df=yes}}{{cite web |url=https://gitlab.com/kashell/Kawa/-/blob/master/ChangeLog |title=Change log |access-date=2022-04-04}}

| latest release version = 3.1.1 {{cite web|url=https://www.gnu.org/software/kawa/news.html|title=Kawa: News – Recent Changes|access-date=2020-02-14|website=gnu.org}}

| latest release date = {{Start date and age|2020|01|16|df=yes}} (w/R7RS compatibility)

| typing =

| scope =

| programming language = Java, Scheme

| platform = Java virtual machine

| operating system = Cross-platform

| license = MIT

| file ext =

| file format =

| website = {{URL|https://www.gnu.org/software/kawa}}

| implementations =

| dialects =

| influenced by = Lisp, Scheme

| influenced =

}}

Kawa is a language framework written in the programming language Java that implements the programming language Scheme, a dialect of Lisp, and can be used to implement other languages to run on the Java virtual machine (JVM). It is a part of the GNU Project.

The name Kawa comes from the Polish word for coffee; a play on words, since Java is another familiar name for coffee.

Kawa is notable as one of the few programming languages with support for units of measure in the form of quantities. {{Citation Needed|date=February 2025}}

Integration with Java

Besides using the language Scheme, Java object fields and methods can be accessed using code such as: {{code|lang= scheme |code=(invoke object 'method argument ...)}}. This will invoke a Java method, and does the same thing as {{code|lang=java|code=object.method(argument, ...)}} in Java. An object's fields can be accessed with: {{code|code=object:field-name}} or {{code|lang=scheme|code=(invoke object 'field-name)}}. Static (class) methods can be invoked with the function {{code|code=invoke-static}}. Kawa can be extended with Java code (by creating scheme functions in Java), and combined with other JVM implementations.

See also

{{Portal|Free and open-source software}}

References

{{Reflist}}