Janino - Version 0.3.4 Janino is a compiler that reads a Java expression,block, or source file, and generates Java bytecode thatis loaded and executed directly. It is not intended tobe a development tool, but an embedded compiler forrun-time compilation purposes, such as expressionevaluators or "server pages" engines like JSP.PropertiesThe major design goal was to keep the compiler smalland simple, while partially sacrificing completeness. Idon't like the idea of carrying around huge librariesfor simple applications. See Parser for the list ofimplemented and missing language features.When do you need an efficient expression evaluator?Say you build an e-commerce system, which computes theshipping cost for the items that the user put intohis/her shopping cart. Because you don't know themerchant's shipping cost model at implementation time,you could implement a set of shipping cost models thatcome to mind (flat charge, by weight, by number ofitems, ...) and select one of those at run-time.In practice, you will most certainly find that theshipping cost models you implemented will rarely matchwhat the merchant wants, so you must add custom models,which are merchant-specific. If the merchant's modelchanges later, you must change your code, re-compileand re-distribute your software.Because this is so unflexible, the shipping costexpression should be specified at run-time, not atcompile-time. This implies that the expression must bescanned, parsed and evaluated at run-time, which is whyyou need an expression evaluator.A simple expression evaluator would parse an expressionand create a "syntax tree". The expression "a + b * c",for example, would compile into a "Sum" object who'sfirst operand is parameter "a" and who's second operandis a "Product" object who's operands are parameters "b"and "c". Such a syntax tree can evaluated relativelyquickly. However, the run-time performance is about afactor of 100 worse than that of native Java code.