class declaration and inheritance. Various syntactic sugars and a versatile print statement typify its scripting language nature. Judoscript is fully capable of scripting Java resources. Its static typing feature was introduced primarily for invoking overloaded Java methods. The second flavor, which distances Judoscript from the rest of the crowd, is its embodiment of a number of native domain-specific statements, each carrying a very different look. Some return a value, others not. Most of these special statements can be used as regular statements anywhere in the program. Expressions can be embedded in the domain-specific statements wherever appropriate. Expressions can also be embedded in textual literals like strings and XML values, effectively making them textual templates. Language features I: a potent scripting language The Base language The Judoscript base language is almost identical to JavaScript for variable and constant declarations, flow control statements, and dot notation for accessing object members. In addition to the two C++-style comments, it has a third form, /? ?/, useful to disable a chunk of code. Function parameters can have default values, and invocation can take named parameter values. Like in JavaScript, functions are also objects and can be passed as values. Dynamic programming is available via the eval and evalExternal commands. Object oriented programming Unlike JavaScript, user-defined classes are declared statically, but the data members are dynamic. Multiple inheritance is supported, and programmers should handle potential diamond inheritance issues. Class instances can be transposed to another type. class Node { constructor { assert(name != null); // mandates that 'name' must be initialized children = []; } function addChild child { children.add(child); } function toString { return name; } } Code organization Judoscript has a !include directive to include other scriptlets. This is the only mechanism to share code written in Judoscript. The lack of support for Java-like package or module in other languages is intentional, in order to discourage creating libraries written in Judoscript. Reusable libraries are encouraged to be written in Java, and let Judoscript (or any Java scripting languages) to use. Language features II: Java scripting Java scripting is a first-class citizen in Judoscript. Listed here are some of the most important Java scripting features. Refer to the documentation to see all the uses and examples. Scripting Java Objects a = new java::java.util.HashMap; a.put('date', Date(2001,1,1)); a.put('integer', 1); a.put('double', 10.01); a.put('string', 'Hello, World!'); a.put('Dimension', new java::java.awt.Dimension(10,20)); for k in a.keys() { println k:>10, ' =