Differences between revisions 1 and 35 (spanning 34 versions)
Revision 1 as of 2005-02-07 18:28:41
Size: 5000
Editor: BillDehora
Comment:
Revision 35 as of 2015-04-30 18:11:32
Size: 5586
Editor: JimBaker
Comment: Update
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= General Information =
Line 2: Line 3:
= General Information = JythonFaq

<<TableOfContents>>
Line 6: Line 9:
'''What is JPython''' == What is Jython? ==
Line 8: Line 11:
JPython is a new implementation of the Python programming language which is designed to run on the Java(tm) Platform. It consists of a compiler to compile Python source code down to Java bytecodes which can run directly on a JVM, a set of support libraries which are used by the compiled Java bytecodes, and extra support to make it trivial to use Java packages from within JPython. JPython has been renamed and supersesed by Jython. Jython follows closely the Python language and its reference
implementation CPython, as created by Guido van Rossum.
Jython 2.7 corresponds to CPython 2.7.

Jython started as JPython, created by Jim Hugunin in 1997. JPython was
renamed to Jython by Barry Warsaw in 1999 with the 2.0 release. Since
then, Jython 2.x releases have corresponded to equivalent CPython 2.x
releases.


== Is Jython the same language as Python? ==

Yes. Jython is an implementation of the Python language for the Java platform. Jython 2.7 implements the same language as CPython 2.7, and nearly all of the Core Python standard library modules. (CPython is the C implementation of the Python language.) Jython 2.7 uses the same regression test suite as CPython, with some minor modifications.

There are a number of differences. First, Jython programs cannot currently use CPython extension modules written in C. These modules usually have files with the extension .so, .pyd or .dll. If you want to use such a module, you should look for an equivalent written in pure Python or Java. However, it is technically feasible to support such extensions, as demonstrated by IronPython. For the next release of Jython, we plan to support the C Python Extension API.

There are a number of other differences between the two implementations that are unlikely to go away. These range from the trivial - Jython's code objects currently do not have a co_code attribute because it is not possible to directly access Java bytecode from a class, without loading the file; to the significant - Jython uses Java's true garbage collection rather than Python's reference counting scheme.
Line 12: Line 31:
'''What is Jython?''' == What is the current status of Jython? ==
Line 14: Line 33:
Jython is the successor to JPython. The Jython project was created in accordance with the CNRI JPython 1.1.x license, in order to ensure the continued existence and development of this important piece of Python software. The intent is to manage this project with the same open policies that are serving CPython so well. Jython 2.7.0 will be released very soon!
Line 16: Line 35:
Mailing lists, CVS and all current information on the Jython project is available at SourceForge, at http://sourceforge.net/projects/jython Jython 2.5.3 is the last stable release; we plan to release 2.5.4 shortly after 2.7.0 is released.
Line 18: Line 37:
The name had to be changed to something other than JPython, because of paragraph 4 in the JPython-1.1 license: Unsupported releases:
Line 20: Line 39:
{{{
 4. Licensee may not use CNRI trademarks or trade name, including
    JPython [...] to endorse or promote products [...]
}}}
----
Jython 2.0 was released on January 17, 2001
Line 26: Line 41:
'''Is Jython the same language as Python?''' Jython 2.1 was released on December 31, 2001
Line 28: Line 43:
We will always strive to ensure that Jython remains as compatible with CPython as possible. Nevertheless, there are a number of differences between the two implementations that are unlikely to go away. These range from the trivial - Jython's code objects don't have a co_code attribute because they don't have any Python bytecodes; to the significant - Jython uses Java's true garbage collection rather than Python's reference counting scheme.

  http://jython.sourceforge.net/docs/differences.html

Python has never really had much of a language definition beyond it's C-based implementation. The existence of Jython changed that for the first time and will hopefully lead to a much clearer sense of what Python the language is; independent of any specific implementation.

We will be preparing a version of Python's regression test that would be appropriate for new implementations of the language. This is a good first step towards defining what parts of Python are essential and which are incidental
Jython 2.2 was released on August 22, 2007, with 2.2.1 released on October 13, 2007.
Line 38: Line 47:
'''What is the current status of JPython?''' == How fast is Jython? ==
Line 40: Line 49:
JPython 1.1 was released on 28-Jan-2000. Since then, there have been no further developments on JPython. The startup time and runtime performance for Jython are largely determined by the JVM. Startup time can be mitigated by using a tool like Nailgun. Running an older release of Java 7 can be much slower, due to bytecode verification.
Line 42: Line 51:
Jython is approximately as fast as CPython--sometimes faster, sometimes slower. Because most JVMs--certainly the fastest ones--do long running, hot code will run faster over time.

Areas that are known to be slower include the expat emulation (which is used by ElementTree), bisect, datetime, decimal, heapq, and unicodedata, since these are all currently written in Python instead of Java; in CPython, these are all written in C. Future releases of Jytho can address this situation.

If you find a specific area where Jython performance is worse than CPython, and especially if you have a patch, please file a bug at http://bugs.jython.org.
Line 44: Line 58:
== How do I learn more about Jython? ==
You might want to start with the the Apress book documenting Jython 2.5, [[http://apress.com/book/view/9781430225270|The Definitive Guide to Jython]], which is also available online as the [[http://jythonbook.com|Jython Book]], an open source version.
Line 45: Line 61:
'''What is the current status of Jython?''' Since Jython and Python are so closely related any good python book or documentation works well. There are also many good choices available and can be found easily by using your favorite search engine and searching for Jython. Here are a few of the frequently used references:
Line 47: Line 63:
The Jython project was announced on 19-oct-2000. The first alpha release occured on 26-nov-2000. These are good starting points for learning python but by no means a complete list:
Line 49: Line 65:
The final release of Jython-2.0 occured on 17-jan-2001. The final release of Jython-2.1 occured on 31-dec-2001.  * The [[http://python.org/doc/|official Python documentation]] - (note this covers the 2.6 version of the language and libraries). This is currently being patched against the small changes seen in Jython. Note that class decorators, the ast module, and the namedtuple factory function from 2.6 were implemented in Jython 2.5.0.
Line 51: Line 67:
Current work include improvements to java integration and implementing the lastest features from CPython 2.2/3.  * [[http://diveintopython.net|Dive into Python]] is a great learning resource
Line 53: Line 69:
for Jython specific starting points try these:
 * [[UserGuide|The Jython Users Guide]]
 * An excellent book, [[http://www.oreilly.com/catalog/jythoness/|"Jython Essentials"]], by Samuele Pedroni & Noel Rappin
 * as the song goes, [[http://www.ibm.com/developerworks/java/library/j-alj07064/|"...getting to know you.."]]
 * An excellent [[http://www.rexx.com/~dkuhlman/jython_course_03.html|online course]] by Dave Kuhlman

Be sure to check out the references at the bottom of the online course.

These are just a sampling of what's available. There is a lot out there and it covers a wide variety of topics. This will get you started and on you way to becoming a Jython developer and when you are ready for more, it's just a few clicks away.
Line 55: Line 80:
'''How fast is Jython?''' == Can I use Jython to make apps for mobile phones? ==
Unfortunately not. Mobile phones only have [[http://en.wikipedia.org/wiki/Java_Platform,_Micro_Edition|Java ME (Micro Edition)]] but Jython requires [[http://en.wikipedia.org/wiki/Java_Platform,_Standard_Edition|Java SE (Standard Edition)]]. There is no Jython port to ME, and there is not enough interest to make it worth the effort.
Line 57: Line 83:
The startup time and runtime performance for Jython are largely determined by the JVM. However, Jython is Free and Open Source so if you have the skills and are interested then feel free to start porting it. If you want to make apps for Android smartphones, you may be interested in [[http://code.google.com/p/android-scripting/|SL4A]].
Line 59: Line 85:
Current status is that CPython 2.3 on Windows2000 is about twice as fast as Jython 2.1 on JDK1.4 on Windows2000. However, because of Java's slow startup time, Jython starts much more slowly (2.4 s) than CPython (80 ms). This means you don't want to do standard CGI in Jython, but long-running processes are fine.

The following notes are retained for historical interest.

At IPC-6 JimH reported speeds equal to CPython 1.4 on the pystone benchmark. When Guido released CPython 1.5 he succeeded in making it about 2x faster than the 1.4 release. The current release of CPython is 1.5.2 which might be only slightly faster than 1.5. JimH re-ran his benchmark tests against CPython 1.5 and his then current release of Jython, finding that Jython was about 2.5x slower than CPython 1.5. I have recently run a few informal benchmarks and found some interesting numbers: using Sun's JDK 1.2.1 with JIT on a Solaris 2.6 Sparc Ultra 2, I found Jython 1.1beta3 to produce pystone numbers equal to (or very slightly better than) CPython 1.5.2+.

The problem, of course, is that JITs are still not reliable enough for Jython. Turning off the JIT on the above platform, can slow Jython down by a factor of 10.

The speed of Jython is tied very tightly to the speed of the underlying JVM. The benchmark results that JimH reported were all using Microsoft's JVM from Internet Explorer 4.0. The next fastest JVM that he used was almost a factor of 2 slower than this. Since the performance of JVMs changes nearly every day, at some point I'll need to collect a set of scores comparing pystone performance on a wider variety of JVM's.

Finally, pystone is not the last word in benchmarking. At the moment I'm more concerned with making Jython complete and correct than with performance. We will continually be revisiting performance issues both to examine better benchmark's for comparing Jython and CPython (as well as other scripting languages for the JVM) and work at optimizing Jython's performance.
----

General Information

JythonFaq


What is Jython?

Jython follows closely the Python language and its reference implementation CPython, as created by Guido van Rossum. Jython 2.7 corresponds to CPython 2.7.

Jython started as JPython, created by Jim Hugunin in 1997. JPython was renamed to Jython by Barry Warsaw in 1999 with the 2.0 release. Since then, Jython 2.x releases have corresponded to equivalent CPython 2.x releases.

Is Jython the same language as Python?

Yes. Jython is an implementation of the Python language for the Java platform. Jython 2.7 implements the same language as CPython 2.7, and nearly all of the Core Python standard library modules. (CPython is the C implementation of the Python language.) Jython 2.7 uses the same regression test suite as CPython, with some minor modifications.

There are a number of differences. First, Jython programs cannot currently use CPython extension modules written in C. These modules usually have files with the extension .so, .pyd or .dll. If you want to use such a module, you should look for an equivalent written in pure Python or Java. However, it is technically feasible to support such extensions, as demonstrated by IronPython. For the next release of Jython, we plan to support the C Python Extension API.

There are a number of other differences between the two implementations that are unlikely to go away. These range from the trivial - Jython's code objects currently do not have a co_code attribute because it is not possible to directly access Java bytecode from a class, without loading the file; to the significant - Jython uses Java's true garbage collection rather than Python's reference counting scheme.


What is the current status of Jython?

Jython 2.7.0 will be released very soon!

Jython 2.5.3 is the last stable release; we plan to release 2.5.4 shortly after 2.7.0 is released.

Unsupported releases:

Jython 2.0 was released on January 17, 2001

Jython 2.1 was released on December 31, 2001

Jython 2.2 was released on August 22, 2007, with 2.2.1 released on October 13, 2007.


How fast is Jython?

The startup time and runtime performance for Jython are largely determined by the JVM. Startup time can be mitigated by using a tool like Nailgun. Running an older release of Java 7 can be much slower, due to bytecode verification.

Jython is approximately as fast as CPython--sometimes faster, sometimes slower. Because most JVMs--certainly the fastest ones--do long running, hot code will run faster over time.

Areas that are known to be slower include the expat emulation (which is used by ElementTree), bisect, datetime, decimal, heapq, and unicodedata, since these are all currently written in Python instead of Java; in CPython, these are all written in C. Future releases of Jytho can address this situation.

If you find a specific area where Jython performance is worse than CPython, and especially if you have a patch, please file a bug at http://bugs.jython.org.


How do I learn more about Jython?

You might want to start with the the Apress book documenting Jython 2.5, The Definitive Guide to Jython, which is also available online as the Jython Book, an open source version.

Since Jython and Python are so closely related any good python book or documentation works well. There are also many good choices available and can be found easily by using your favorite search engine and searching for Jython. Here are a few of the frequently used references:

These are good starting points for learning python but by no means a complete list:

  • The official Python documentation - (note this covers the 2.6 version of the language and libraries). This is currently being patched against the small changes seen in Jython. Note that class decorators, the ast module, and the namedtuple factory function from 2.6 were implemented in Jython 2.5.0.

  • Dive into Python is a great learning resource

for Jython specific starting points try these:

Be sure to check out the references at the bottom of the online course.

These are just a sampling of what's available. There is a lot out there and it covers a wide variety of topics. This will get you started and on you way to becoming a Jython developer and when you are ready for more, it's just a few clicks away.


Can I use Jython to make apps for mobile phones?

Unfortunately not. Mobile phones only have Java ME (Micro Edition) but Jython requires Java SE (Standard Edition). There is no Jython port to ME, and there is not enough interest to make it worth the effort.

However, Jython is Free and Open Source so if you have the skills and are interested then feel free to start porting it. If you want to make apps for Android smartphones, you may be interested in SL4A.


JythonFaq/GeneralInfo (last edited 2018-01-01 19:27:10 by MalcolmSmith)