## Please edit system and help pages ONLY in the moinmaster wiki! For more ## information, please see MoinMaster:MoinPagesEditorGroup. ## Please edit (or translate) system/help pages on the moinmaster wiki ONLY. ## For more information, please see MoinMaster:MoinPagesEditorGroup. ##master-page:Unknown-Page ##master-date:Unknown-Date #acl MoinPagesEditorGroup:read,write,delete,revert All:read #format wiki #language en ''Jython, lest you do not know of it, is the most compelling weapon the Java platform has for its survival into the 21st century - SeanMcGrath'' ---- == Why Jython == There are numerous alternative languages implemented for the Java VM. The following features help to separate Jython from the rest: * Dynamic compilation to Java bytecodes - leads to highest possible performance without sacrificing interactivity. * Ability to extend existing Java classes in Jython - allows effective use of abstract classes. * Optional static compilation - allows creation of applets, servlets, beans, ... * Bean Properties - make use of Java packages much easier. * Python Language - combines remarkable power with very clear syntax. It also supports a full object-oriented programming model which makes it a natural fit for Java's OO design. == What Does Jython Do Well? == * Prototyping * Java investigation {{{ >>> from java.util import Date >>> d = Date() >>> print d Sat Jan 08 16:26:16 CST 2005 >>> from java.util import Random >>> print dir(Random) ['__init__', 'nextBoolean', 'nextBytes', 'nextDouble', 'nextFloat', 'nextGaussian', 'nextInt', 'nextLong', 'seed', 'setSeed'] >>> }}} * Making bean properties accessible {{{ >>> print Date().time 1105500911121 }}} * Glues together libraries already written in Java * Excellent embedded scripting language * Object Domain UML Tool * PushToTest * Drools ---- == Differences - Python & Jython == '''Python 2.7''' * C * Multi-platform * Compiles to .pyc * Extend with C * GIL <> * Python garbage collection, which mixes ref counting and mark and sweep '''Jython 2.7''' * Written mostly in Java, does use Java Native Runtime for C access, but works with security manager restrictions * Java 7 or Java 8 * Compiles to $py.class files * Extend with Java or C using JFFI; full CFFI, ctypes, and C Extension API support planned for the future * Truly multi-threaded * Java garbage collection, including choice of standard Java GCs; but also provides same API as Python 2.7 to observe GC