1987
Comment:
|
2443
converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 12: | Line 12: |
''Jython, lest you do not know of it, is the most compelling weapon the Java platform has for its survival into the 21st century - Sean McGrath'' | ''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'' |
Line 19: | Line 22: |
There are numerous [http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html alternative languages] implemented for the Java VM. The following features help to separate Jython from the rest: | There are numerous alternative languages implemented for the Java VM. The following features help to separate Jython from the rest: |
Line 30: | Line 33: |
* Protyping | * Prototyping |
Line 32: | Line 35: |
{{{ >>> 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'] >>> }}} |
{{{ >>> 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'] >>> }}} |
Line 44: | Line 48: |
* Bean properties accesible {{{ >>> print Date().time 1105500911121 }}} * Glue together libraries already written in Java |
* Making bean properties accessible {{{ >>> print Date().time 1105500911121 }}} * Glues together libraries already written in Java |
Line 54: | Line 59: |
---- == Differences - Python & Jython == '''Python''' * C * Multi-platform * Compiles to .pyc * Extend with C * GIL <<FootNote(Global Interpreter Lock, explained in [http://docs.python.org/api/threads.html Python documentation, chapter 8.1])>> * Python Garbage Collection '''Jython''' * 100% Java * Any JVM (currently 1.1+) * Compiles to .class * Extend with Java * Truly multi-threaded * Java garbage collection |
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
- Drools
Differences - Python & Jython
Python
- C
- Multi-platform
- Compiles to .pyc
- Extend with C
GIL 1
- Python Garbage Collection
Jython
- 100% Java
- Any JVM (currently 1.1+)
- Compiles to .class
- Extend with Java
- Truly multi-threaded
- Java garbage collection
Global Interpreter Lock, explained in [http://docs.python.org/api/threads.html Python documentation, chapter 8.1] (1)