|
|
|
Platform Specific Information: Finding a Good JVM
JPython is certified as 100% Pure Java and should run successfully
on any bug-free fully 1.1 or 1.2 compliant JVM. Unfortunately, such a
beast can sometimes be hard to find. The following is a collection of
notes for getting JPython to run (and run well) on specific OS's and
JVM's. Since performance can also vary considerably across JVM
implementations, this page will also contain information regarding
JPython's performance on different platforms.
This list of platform specific information is clearly
incomplete. If you find this information to be incorrect for your
particular platform, or if you have tips for running JPython on a
platform not mentioned on this page, please send that information to
jpython@python.org. If your
platform is not included in the list below, you might be able to get
useful information from Sun's
list of
third-party JVM's.
Operating Systems
- Linux (updated 10-Sep-1999 -baw)
JDK
1.1.x and 1.2.x from blackdown.org
There have recently been reports of JPython crashing the 1.1.8
Blackdown JVM. I have tested JPython with 1.1.7B and it works
fine, so I recommend not using the 1.1.8 JVM. I haven't
personally used JPython with the latest 1.2 Blackdown JVM and
haven't heard much feedback from the community, so you're own your
own here.
- Windows NT, 95, and 98 (updated 04-Jun-1999 -baw)
JRE 1.1.8 from Sun (Recommended)
This is not the fastest of the JVM's for Windows, but it's
certainly the most compatible with the official Java
specification. I'd strongly encourage people to start with this
VM, and only consider trying alternatives if they find performance
to be a serious problem for their application.
I've down a little bit of testing JPython with the 1.2.x JVM
from Sun. It seems to work fine, but I haven't run it through
its paces much.
-
JView from Microsoft
If you have IE 4.0 or 5.0 installed, you almost certainly
already have this VM. Type "jview" at a command prompt
to be sure. Note: if the copyright dates you see when you type
"jview" do not include 1998 or 1999, you have an older
VM. Either download a recent version of IE 4.0 or 5.0, or download
the VM directly from the site above.
While Microsoft's VM is still the fastest platform on which to
run JPython, recent improvements in Symantec's JIT compiler (which
is included in Symantec Cafe) have dramatically narrowed the
gap. Microsoft's VM is now only about 25% faster than the version
available from Symantec (based on pystone in
JPython). Unfortunately, MS's VM is still over 2x faster than the
JVM available freely from Sun. So, if you don't have easy access
to Symantec's very latest JIT, MS's VM still offers significant
performance advantages.
On the other hand, if you want to write JPython code that takes
advantage of Windows specific functionality (using win32 api's,
interacting with COM objects, ...) then this VM will give you all
of the platform specific functionality you could desire.
JPython no longer requires a package registry, and
sys.add_package() should also be unnecessary. However,
to use this with Microsoft's JVM, you must run the following in a
console window before using JPython:
clspack -auto
- Solaris (update 10-Sep-1999 -baw)
JRE 1.1.7 from Sun
JRE 1.2.1 from Sun
Solaris 2.6 comes with JDK 1.1.3, but Solaris users will
probably want to upgrade to either the JRE 1.1.7 or JRE 1.2.1 at
least (depending on whether you want to stay in the 1.1 family or
like living on the bleeding edge). I have tested JPython with the
production and reference implementations of both JREs (this is
Barry's primary development platform). All seem to work well,
although I am still experiences JIT bugs that cause problems with
JPython. Don't believe the Sun documentation -- the reference
JREs do contain JITs!
If you notice problems with JPython, before you submit a bug
report, please try it again with the JIT turned off. If the
problem goes away, don't bug me -- bug Sun! :)
The easiest way that I've found to turn off the JIT is to add
the following to the jpython script created when you
installed JPython:
JAVA_COMPILER=NONE
export JAVA_COMPILER
I've also had reports of strange problems with people using
JPython on the HotSpot JVM. I suspect (although haven't tried it
much) that it suffers from buggy optimizations too.
- Irix
Java Development Environment 3.1 from SGI
JPython will work with the 3.0.1 version of the JDE (which is
based on the 1.1.3 JVM), but there are a number of significant
known bugs in this release. I strongly recommend using to the 3.1
release on this platform.
- Macintosh
Mizutori Tetsuya has made available an application called
JPython Runner to make it easier to use JPython on this
system. More details on this system can be found at
JPython
Runner for Macintosh. This link also contains pointers to the
lastest JVM for Macintosh.
Hopefully, future releases of JPython will be able to
incorporate either this technology or something like it to make
life easier for Macintosh users.
Cross-Platform JVM's
- Kaffe
JPython does not work with the current version available from
Transvirtual. This appears to be both due to some small
incompatibilities between this Java VM and Sun's version, as well
as at least one serious issue which is the lack of a
java.math.BigInteger class -- this lack will be a problem for any
VM that only implements the PersonalJava subset of the full Java
spec. It should be possible to get JPython working on this VM if
someone has the time to invest, please let us know if you have any
success here or need any help.
|