Kawa 1.11 released

Kawa 1.11 is now evailable from the usual places:
ftp://ftp.gnu.org/pub/gnu/kawa/kawa-1.11.tar.gz (source code)
ftp://ftp.gnu.org/pub/gnu/kawa/kawa-1.11.jar (runnable jar)

For a full list of changes, see the news page. Below are some highlights.

Improved object initialization

When constructing an object and there is no matching constructor method, look for "add" methods in addition to "set" methods. Also, allow passing constructor args as well as keyword setters. These features make it more convenient to allocate and initialize complex objects. See here for details and examples, including a simple but complete Swing application.

SAM-conversion

In a context that expects a Single Abstract Method (SAM) type (for example java.lang.Runnable), if you pass a lambda you will get an object where the lambda implements the abstract method. For example, you can just write:

(button:addActionListener
  (lambda (e) (do-something)))
instead of the equivalent but more long-winded:
(button:addActionListener
  (object (java.awt.event.ActionListener)
    ((actionPerformed (e ::java.awt.event.ActionEvent))::void
     (do-something))))
See here for more information.

Enumerations

A new define-enum form, contributed by Jamison Hope, makes it easy to define enuration types and values compatible with Java5 enums.

(define-enum colors (red blue green))
For more details and examples, see here.

New Kawa logo

Kawa new has a logo contributed by Jakub Jankiewicz:

Kawa logo

Tags: