Lightweight Java Module System (LJAM)

A core design and semantic definition of the Java Module System.


The language was designed and formalized by Rok Strniša.


LJAM is Lightweight Java (LJ) extended with a module system based on early drafts for the Java Module System: it covers the core parts of both JSR-277 and JSR-294. For those aspects in the scope of the former, we follow the informal description closely; for the remainder, we try to capture what we believe is the intended semantics. At the time of development of LJAM, JSR-294 only a simple straw-man proposal (which is no longer available).

A second straw-man proposal for JSR-294 has been written since. It does not introduce significant changes to the first one, but rather goes into more details. LJAM corresponds closely to this one too, except that LJAM does not have support for inner modules.

LJAM is formalized rigorously: using the Ott tool, we obtain the typeset rules and its formal definition (in Isabelle/HOL) from the same source --- its Ott source files.


The above software is released under a New BSD license.

Development History


Valid XHTML 1.1 Valid CSS