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

Irix

Java Development Environment 3.1.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.

Linux

JDK 1.1.6 from blackdown.org

There should be no problems running JPython on this JVM.

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.

Solaris

JRE 1.1.6 from SUN

Solaris 2.6 comes with JDK 1.1.3. The JIT compiler in this release has a number of serious bugs that can lead to confusing errors. You can type "java -version" to determine what release you have installed on your machine. While JPython will generally work with the 1.1.3 JVM, I strongly recommend that Solaris users upgrade to this latest version to avoid being bitten by hard to track down JIT related bugs.

Windows NT, 95, and 98

JRE 1.1.7 from SUN (My recommendation for this platform)

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.

JView from Microsoft

If you have IE 4.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, you have an older VM. Either download a recent version of IE 4.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 based on pystone. (Note: SUN's 1.1.7 VM includes an older version of Symantec's JIT that doesn't have nearly as high performance as the version that comes with Visual Cafe). 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.

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.