Janino 2.5.7
Sponsored Links
Janino 2.5.7 Ranking & Summary
File size:
1.51 MB
Platform:
Windows 9X/ME/NT/2K/2003/XP/Vista
License:
Freeware
Price:
Downloads:
888
Date added:
2007-05-21
Publisher:
Arno Unkrig
Janino 2.5.7 description
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 dont 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 dont know the merchants 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 merchants 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 whos first operand is parameter "a" and whos second operand is a "Product" object whos 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.
Main 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
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 dont 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 dont know the merchants 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 merchants 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 whos first operand is parameter "a" and whos second operand is a "Product" object whos 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.
Main 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
Janino 2.5.7 Screenshot
Janino 2.5.7 Keywords
shipping cost
Janino 2.5.7
Janino
expression
class
operators
compiler
java
Janino 2.5.7
Misc Programming Tools
Software Development
Bookmark Janino 2.5.7
Janino 2.5.7 Copyright
WareSeeker periodically updates pricing and software information of Janino 2.5.7 full version from the publisher, so some information may be slightly out-of-date. You should confirm all information before relying on it. Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future development of Janino 2.5.7 Edition. Download links are directly from our publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed
Featured Software
Want to place your software product here?
Please contact us for consideration.
Contact WareSeeker.com
Related Information
shipping costs will
expressions catalog
classic industries
ups shipping cost
unix ksh operators expression
janinos
idiomatic expressions
classified ads
expressionery
shipping costs
classmates
expressionism
janinos mobile al
calculate shipping costs
black expressions
classic auto trader
operators local 302
calculate shipping cost
Version History
Related Software
VidGIF is a tool for converting selected video file to animation GIF formats. By using VidGIF you can create amusing avatars, animated logos for your website. It`s also useful for webmasters who want to place graphic on the website. Free Download
A program that reads one or more Java class files and converts them into Java source files which can be compiled again. Free Download
Powerful, easy-to-use SQL tracer for various RDBMS: Oracle, MS SQL, MySQL, Interbase/Firebird, Advantage Server, ODBC, ADO. File and registry operations are supported as well. Its also possible to merge a SQL statement with its parameters Free Download
JavaNativeCompiler (JNC) is a Java to native compiler Free Download
Javelin is the award winning point and click tool for the design, coding, management and persistence of POJOs Free Download
An integrated Java environment specifically designed for introductory teaching Free Download
XBinder is regarded as a professional and smart XML Schema to C/C++/Java/C# Data Binding Tool. Free Download
ticker supports urdu & english Free Download
Latest Software
Popular Software
Favourite Software