Lightweight Java Module System

Lightweight Java Module System (LJAM) is the core design and semantic definition of a Java Module System proposal.


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).

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


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.