Janino é um compilador que lê uma expressão da linguagem Java, bloco, corpo do texto ou um pacote de arquivos fonte e pode ainda gerar bytecode do Java que é carregado e executado diretamente. Suporta vários pacotes da programação Java:
- 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 ?...:, &&, || e muito mais.