Janino 2.6.1

Janino 2.6.1 Screenshot Janino is a useful compiler which reads a Java expression, block, or source file, and generates Java bytecode that is loaded and executed directly.

Developer:   Arno Unkrig
      software by Arno Unkrig →
Price:  0.00
License:   Freeware
File size:   0K
Language:   
OS:   Windows Vista (?)
Rating:   0 /5 (0 votes)

Janino is a useful compiler which reads a Java expression, block, or source file, and generates Java bytecode that is loaded and executed directly.

Janino is not intended to be a development tool, but an embedded compiler for run-time compilation purposes, such as expression evaluators or "server pages" engines like JSP.

The major design goal was to keep the compiler small and simple, while partially sacrificing completeness. I don't like the idea of carrying around huge libraries for simple applications. See Parser for the list of implemented and missing language features.

When do you need an efficient expression evaluator?

Say you build an e-commerce system, which computes the shipping cost for the items that the user put into his/her shopping cart. Because you don't know the merchant's shipping cost model at implementation time, you could implement a set of shipping cost models that come to mind (flat charge, by weight, by number of items, ...) and select one of those at run-time.

In practice, you will most certainly find that the shipping cost models you implemented will rarely match what the merchant wants, so you must add custom models, which are merchant-specific. If the merchant's model changes later, you must change your code, re-compile and re-distribute your software.

Because this is so unflexible, the shipping cost expression should be specified at run-time, not at compile-time. This implies that the expression must be scanned, parsed and evaluated at run-time, which is why you need an expression evaluator.

A simple expression evaluator would parse an expression and create a "syntax tree". The expression "a + b * c", for example, would compile into a "Sum" object who's first operand is parameter "a" and who's second operand is a "Product" object who's operands are parameters "b" and "c".

Such a syntax tree can evaluated relatively quickly. However, the run-time performance is about a factor of 100 worse than that of native Java code.

Janino features
  • package declaration, import declaration
  • class declaration, interface declaration
  • Inheritance (extends and implements)
  • Static member type declaration
  • Inner classes (member classes, local classes, anonymous classes)
  • Class initializer, Instance initializer
  • Field declaration, Method declaration
  • Local variable declaration
  • Class variable initializer, Instance variable initializer
  • Block statement ({ ... })
  • if ... else statement
  • for statement
  • while statement
  • do ... while statement
  • try ... catch ... finally statement
  • throw statement
  • return statement
  • break statement
  • continue statement
  • switch statement
  • synchronized statement
  • All primitive types (boolean, char, byte, short, int, long, float, double)
  • Assignment operator =
  • Assignment operators +=, -=, *=, /=, &=, |=, ^=, %=, =, >>>=
  • Conditional operators ?...:, &&, ||
  • Boolean logical operators &, ^, |
  • Integer bitwise operators &, ^, |
  • Numeric operators *, /, %, +, -, , >>>
  • String concatenation operator +
  • Operators ++ and --
  • Type comparison operator instanceof
  • Unary operators +, -, ~, !
  • Parenthesized expression
  • Field access (like System.out)
  • Superclass member access (super.meth();, super.field = x;
  • this (reference to current instance)
  • Alternate constructor invocation (like this(a, b, c))
  • Superclass constructor invocation (like super(a, b, c))
  • Method invocation (like System.out.println("Hello")) (partially)
  • Class instance creation (like new Foo())
  • Primitive array creation(like new int[10][5][])
  • Class or interface array creation(like new Foo[10][5][])
  • Array access (like args[0]) (currently read-only)
  • Local variable access
  • Integer, floating-point, boolean, character, string literal
  • null literal
  • Unary numeric conversion, binary numeric conversion, widening numeric conversion, narrowing numeric conversion
  • Widening reference conversion, narrowing reference conversion
  • Cast
  • Assignment conversion
  • String conversion (for string concatenation)
  • Constant expression
  • Block scope, method scope, class scope, global scope
  • throws clause
  • Array initializer (like String[] a = { "x", "y", "z" })
  • Primitive class literals, e.g. "int.class"
  • Non-primitive class literals, e.g. "String.class"
  • References between uncompiled compilation units
  • Line number tables a la "-g:lines"
  • Source file information a la "-g:source"
  • Handling of @deprecated doc comment tag
  • Accessibility checking (PUBLIC, PROTECTED, PRIVATE)
  • Static imports for fields (single an on-demand; fields, types and methods

    Requirements
  • JDK 1.3.1 or above.

    Limitations
  • Local variable information information for debugging is not yet implemented (i.e. "-g:vars" is ignored)
  • assert (a JDK 1.4 language feature) is not yet implemented
  • The upcoming JDK 5.0 language features are not yet implemented except for static imports
  • Checking of "definite assignment" (JLS2 16) is not executed
  • Methods that compile to more than 32 KB of bytecode cannot be compiled (other JavaTM compilers support up to 64 KB per method)
  • Imprint

    tags shipping cost  run time  numeric conversion  that the  the merchant  local variable  like new  creation like  the shipping  not yet  yet implemented  invocation like  expression evaluator  

    Janino 2.6.1 screenshot


    Download Janino 2.6.1

     Download Janino 2.6.1


    Authors software

    Janino 2.6.1 Janino 2.6.1
    Arno Unkrig

    Janino is a useful compiler which reads a Java expression, block, or source file, and generates Java bytecode that is loaded and executed directly.

    Similar software

    Janino 2.6.1 Janino 2.6.1
    Arno Unkrig

    Janino is a useful compiler which reads a Java expression, block, or source file, and generates Java bytecode that is loaded and executed directly.

    EasyMP3 2005 2.0.0.19 EasyMP3 2005 2.0.0.19
    ZeuS Microsystems

    EasyMP3 was created to simply encode and decode audio files.

    Anim8or 0.95B Anim8or 0.95B
    Steve Glanville

    Anim8or is a character animation and 3D modeling application that I have written over the past couple of years, not as a commercial endeavor, but because I love 3D graphics, animation and programming.

    Advanced System Tune up 3.1.0.4 Advanced System Tune up 3.1.0.4
    Softwaredepo.com

    FREE Advanced System Tuneup and Optimizer is a free program that consist of many useful modules that can be launched from the startup screen.

    Cjmath 1.01 Cjmath 1.01
    Patrik Lundin

    Cjmath is a class library for Java which contains two classes of interest, Eval.

    Regular Expression Component Library for VC6 3.1 Regular Expression Component Library for VC6 3.1
    Tropic Software East Inc.

    The Regular Expression Component Library is an easy to use library for searching and/or replacing strings or data in files using regular expressions.

    Regular Expression Component Library for VC7 3.1 Regular Expression Component Library for VC7 3.1
    Tropic Software East Inc.

    The Regular Expression Component Library is an easy to use library for searching and/or replacing strings or data in files using regular expressions in non-managed C++ code.

    Regular Expression Component Library for BCB6 3.1 Regular Expression Component Library for BCB6 3.1
    Tropic Software East Inc.

    The Regular Expression Component Library is an easy to use library for searching and/or replacing strings or data in files using regular expressions.

    Regular Expression Component Library for BCB5 3.1 Regular Expression Component Library for BCB5 3.1
    Tropic Software East Inc.

    The Regular Expression Component Library is an easy to use library for searching and/or replacing strings or data in files using regular expressions.

    Regular Expression Component Library for BCB4 3.1 Regular Expression Component Library for BCB4 3.1
    Tropic Software East Inc.

    The Regular Expression Component Library is an easy to use library for searching and/or replacing strings or data in files using regular expressions.

    Other software in this category

    File Analyzer 1.6 12.10.2002 File Analyzer 1.6 12.10.2002
    Vadim Tarasov

    File Analyzer is a software application that can identify the format of a file, with what it was compiled, encrypted, packed, etc.

    Snap 1.1 Snap 1.1
    Fritz

    This program is a multiplatform (9x,ME,NT4) Task/Window manager and MORE.

    FileType v1.26 FileType v1.26
    X-Fixer

    FileType is intended to give the "first-look" file type information without any futher details.

    CodeSnip 1.0 CodeSnip 1.0
    Dacris Software

    CodeSnip helps you to increase your daily coding efficiency.

    ExamDiff 1.6m ExamDiff 1.6m
    PrestoSoft

    ExamDiff is a useful utility for visual file comparison.