Downloads and change log

Back to the JANINO home page

Development line (not released)

Changes on the development line (the branch "master") that do not fit the rules of the 3.1.x maintenance line (see "Release lines" in Compatibility); when and as which version they are released is open. What they mean for a project that moves from a 3.1.x release is described in Development line.

Version 3.1.20 2026-10-14

Fourteen fixes in the compiler, and JAR files without the dummy signature. The most important fixes concern code that compiled, but did not run as written: two local classes with the same name in one class got the same binary name, so that the code used the wrong class, without any error (issue #143); super.m() for a private or static method of the superclass failed at run time (issues #136 and #150), and so did super.a(o, v) for a variable arity method that the superclass implements from an interface (issue #160). The other fixes concern code that was rejected or crashed the compiler: invocations of overloaded and variable arity methods (issues #127, #134, #147, #156 and #157), array types of parameterized types (issue #138), static methods imported twice (issue #133), if statements with empty branches and a condition of type Boolean (issue #153), and members inherited through an accessible subclass (issue #154). No code that 3.1.19 compiled is rejected now.

Version 3.1.19 2026-10-10

Five fixes in the compiler. The most important one: a qualified superclass method invocation P.super.m() in an inner class that is itself a subclass of P invoked the method on the wrong instance, without any error (issue #110, since 3.1.16). The other fixes concern code that did not compile or did not run: an inner class whose superclass extends the enclosing class failed verification (issue #97), a protected member type could not be used from a subclass in another package (issue #87), conditional expressions with a constant condition in static final fields and annotations crashed the compiler or were rejected (issue #113), and floating-point literals with a leading zero were rejected (issue #96). No code that compiled before is rejected now.

Version 3.1.18 2026-10-08

The first release of the 3.1.x maintenance line (see "Release lines" in Compatibility): one fix in the parameter name guessing of the evaluators, smaller JAVADOC JARs, and tests that use the API of JANINO the way Apache Spark and Apache Calcite do. The compiler itself is unchanged.

Version 3.1.17 2026-10-08

Local and anonymous classes can now access effectively final local variables (Java 8), and seven defects are fixed that exist in 3.1.12 already: the type of array.clone(), local classes with modifiers, the scope of the resource variables of try-with-resources statements, the access to protected members of the superclass of an enclosing class, two internal compiler errors, and a throws clause whose exception type has an all-uppercase name. No code that compiled before is rejected now, and the class files of such code are unchanged, with two small exceptions (see the compatibility entry below). The known deviations from JAVAC are documented in Differences between Janino and javac.

Version 3.1.16 2026-10-06

Two language features that Janino parsed, but did not compile, are implemented now: multi-catch clauses and qualified superclass method invocations. Most fixes concern conditional expressions, annotations, enums and invalid code that compiled into class files that the JVM rejects; all of the defects exist in 3.1.12 already, except #51 (a regression of 3.1.15) and #57 (since 3.1.13). The known deviations from JAVAC are documented in Differences between Janino and javac.

Version 3.1.15 2026-10-06

The first release of this fork on MAVEN Central, under the new group ID io.github.janino-lts (see Packages); the Java packages, the OSGi bundle symbolic names and the automatic module names are unchanged. Most fixes concern constant expressions, conversions and annotations; all of the defects exist in 3.1.12 already.

Version 3.1.14 2026-10-04

A bug fix release for the code generation of try statements. Some of the defects are regressions of 3.1.13, whose default target version 8 (was 6) disabled the JVM's fallback to its old bytecode verifier; others exist in 3.1.12 already.

Version 3.1.13 2026-10-04

Version 3.1.13-SNAPSHOT-1 (pre-release)

Version 3.1.12 2024-02-06

Version 3.1.11 2023-11-27

Version 3.1.10 2023-07-04

Version 3.1.9 2022-11-16

Version 3.1.8 2022-09-01

Version 3.1.7 2022-04-19

Version 3.1.6 2021-07-28

Version 3.1.4 2021-05-06

Version 3.1.3 2021-01-25

Version 3.1.2, 2020-03-18

Version 3.1.1, 2020-03-09

Version 3.1.0, 2019-08-14

In this release, many classes were moved from module janino to module commons-compiler, thus their package declarations changed. The "important" APIs, however, remain unchanged. All in all, it was decided to release this as a "minor" release.

Version 3.0.16, 2020-03-18 (the 3.0.x line is deprecated)

Version 3.0.15, 2019-07-28

Version 3.0.14, 2019-07-05

Version 3.0.13, 2019-06-23

Version 3.0.12, 2019-01-18

Version 3.0.11, 2018-11-13

Version 3.0.10, 2018-09-16

Version 3.0.9, 2018-08-23

Version 3.0.8, 2017-12-04

Version 3.0.7, 2017-03-22

Version 3.0.6, 2016-09-20

Version 3.0.5, 2016-09-15

Version 3.0.4, 2016-09-15

Version 3.0.3, 2016-09-15

Version 3.0.2, 2016-09-15

Version 3.0.1, August 22, 2016 - Download

Version 3.0.0, July 7, 2016 - Download

After a relative long period of little development, new features appear on the horizon! Enums and annotations finally made it into JANINO...

Version 2.7.8, January 30, 2015 - Download

Version 2.7.7, December 6, 2014 - Download

Version 2.7.6, August 16, 2014 - Download

Version 2.7.5, Jul 13, 2014 - Download

Version 2.7.4, Feb 3, 2014 - Download

Version 2.7.3, Jan 19, 2014 - Download

Version 2.7.2, Jan 13, 2014 - Download

Version 2.7.1, Nov 13, 2013 - Download

Version 2.7.0, Aug 10, 2013 - Download

Version 2.6.2, May 30, 2013 - Download

Version 2.6.1, June 24, 2010 - Download

Version 2.6.0, May 30, 2010 - Download

This version implements a number of incompatible changes:

The core functionality of JANINO (expression evaluator, script evaluator, class body evaluator, simple compiler and Java source class loader) was extracted to new interfaces declared in the new package org.codehaus.commons.compiler, while the original API remains unchanged.

A second implementation of the org.codehaus.commons.compiler interfaces was added, based on the javax.tools.JavaCompiler API that exists since JDK 1.6. This implementation is available in the commons-compiler-jdk.jar file.

Rather than instantiating e.g. org.codehaus.janino.ExpressionEvaluator directly, applications can now alternatively call org.codehaus.commons.compiler.CompilerFactoryFactory.getDefaultCompilerFactory().newExpressionEvaluator(), which will use the first implementation of IExpressionEvaluator on the class path (be it janino.jar or commons-compiler-jdk.jar, or yet another implementation).

The JUNIT regression test suite was restructured so that if differentiates between implementation-independent tests, which are automatically executed against every implementation on the class path, and implementation-specific tests.

Also, the following bugs were fixed:

Version 2.5.16, January 26, 2010 - Download

Version 2.5.15, June 18, 2008 - Download

Version 2.5.14, April 27, 2008 - Download

Version 2.5.13, March 9, 2008 - Download

Version 2.5.12, December 20, 2007 - Download

Version 2.5.11, September 30, 2007 - Download

Version 2.5.10, September 4, 2007 - Download

Version 2.5.9, July 22, 2007 - Download

Version 2.5.8, June 12, 2007 - Download

Version 2.5.7, May 19, 2007 - Download

Version 2.5.6, February 26, 2007 - Download

Version 2.5.5, February 3, 2007 - Download

Version 2.5.4, January 28, 2007 - Download

Version 2.5.3, January 17, 2007 - Download

Version 2.5.2, January 14, 2007 - Download

Version 2.5.1, November 6, 2006 - Download

Version 2.5.0, September 19, 2006 - Download

Version 2.4.7, September 11, 2006 - Download

Version 2.4.6, August 20, 2006 - Download

Version 2.4.5, June 26, 2006 - Download

Version 2.4.4, June 18, 2006 - Download

Version 2.4.3, May 11, 2006 - Download

Version 2.4.2, April 24, 2006 - Download

Version 2.4.1, April 12, 2006 - Download

Version 2.4.0, March 13, 2006 - Download

Version 2.3.18, February 23, 2006 - Download

Version 2.3.17, January 18, 2006 - Download

Version 2.3.16, December 25, 2005 - Download

Version 2.3.15, November 9, 2005 - Download

Version 2.3.14, November 2, 2005 - Download

Version 2.3.13, October 28, 2005 - Download

Version 2.3.12, October 25, 2005 - Download

Version 2.3.11, October 19, 2005 - Download

Version 2.3.10, October 18, 2005 - Download

Version 2.3.9, October 11, 2005 - Download

Version 2.3.8, August 9, 2005 - Download

Version 2.3.7, July 24, 2005 - Download

Version 2.3.6, July 15, 2005 - Download

Version 2.3.5, July 06, 2005 - Download

Version 2.3.4, May 25, 2005 - Download

Version 2.3.3, May 05, 2005 - Download

Version 2.3.2, March 22, 2005 - Download

Version 2.3.1, February 20, 2005 - Download

Version 2.3.0, January 31, 2005 - Download

Version 2.2.0, January 02, 2005 - Download

Version 2.1.0, December 09, 2004 - Download

Version 2.0.17, December 06, 2004 - Download

Version 2.0.16, November 19, 2004 - Download

Version 2.0.15, November 9, 2004 - Download

Version 2.0.14, November 1, 2004 - Download

Version 2.0.13, October 27, 2004 - Download

Version 2.0.12, October 17, 2004 - Download

Version 2.0.11, September 27, 2004 - Download

Version 2.0.10, September 14, 2004 - Download

Version 2.0.9, September 5, 2004 - Download

Version 2.0.8, August 29, 2004 - Download

Version 2.0.7, August 25, 2004 - Download

Version 2.0.6, July 23, 2004 - Download

Version 2.0.5, July 12, 2004 - Download

Version 2.0.4, June 29, 2004 - Download

Version 2.0.3, May 31, 2004 - Download

Version 2.0.2, April 15, 2004 - Download

Version 2.0.1, April 11, 2004 - Download

Version 2.0, April 4, 2004 - Download

A major milestone... Janino now supports member types, local classes and anonymous classes. Therefore you can legitimally call a fully implemented JavaTM compiler!

A good time to open a bottle of champagne...

Version 1.0.22, February 16, 2004

Version 1.0.21, February 03, 2004

Version 1.0.20, January 27, 2004

Version 1.0.19, January 24, 2004

Version 1.0.18, January 24, 2004

Version 1.0.17, January 21, 2004

Version 1.0.16, January 17, 2004

Version 1.0.15, January 17, 2004

Version 1.0.14, January 12, 2004

Version 1.0.13, January 8, 2004

Version 1.0.12, January 7, 2004

Version 1.0.11, January 6, 2004

Version 1.0.10, January 4, 2004

Version 1.0.9, January 3, 2004

Version 1.0.8, January 2, 2004

Version 1.0.7, December 25, 2003

Version 1.0.6, December 15, 2003

Version 1.0.5, November 26, 2003

Version 1.0.4, November 18, 2003

Version 1.0.3, November 12, 2003

Version 1.0.2, October 30, 2003

Version 1.0.1, October 23, 2003

Version 1.0, October 20, 2003

Version 0.3.17, October 09, 2003 (not released)

Version 0.3.16, October 06, 2003 (not released)

Version 0.3.15, September 12, 2003

Version 0.3.14, July 27, 2003

Version 0.3.13, July 6, 2003

Version 0.3.12, June 4, 2003

Version 0.3.11, June 1, 2003

Version 0.3.10, April 22, 2003

Version 0.3.9, April 02, 2003

Version 0.3.8, March 05, 2003

Version 0.3.7, November 26, 2002

Version 0.3.6, November 22, 2002

Version 0.3.5, November 14, 2002

Version 0.3.4, November 9, 2002

Version 0.3.3, October 26, 2002

Version 0.3.2, October 21, 2002

Version 0.3.1, October 13, 2002

Version 0.3, May 25, 2002

Version 0.2, April 28, 2002

Version 0.1.1, November 09, 2001

Version 0.1, October 30, 2001