Simeon Franklin

Blog :: Getting started with Jython

4 April 2012

A student in my Python Fundamentals class asked me to demonstrate how to get started with Jython.

I've never used Jython and I'm not a Java programmer (processing doesn't count!) but I agreed to see if I could install it and demonstrate using a Java standard library class for him.

I didn't use my package manager to install but went the manual route, downloading the latest stable version from jython.org. This got me a file called jython_installer-2.5.2.jar. Did I mention I'm not a Java programmer? Still some vague memory prompted me to try:


$ java -jar jython_installer-2.5.2.jar

Aha! This popped up a graphical installer window! I selected my language, accepted the license, accepted the default installation components and chose an installation location of ~/bin/jython2.5.2. Then I was asked to pick a java home directory with the default being the current directory. I had no idea what this meant but noticed a second option of '/usr/lib/jvm/java-6-openjdk/jre' which existed and seemed a plausible choice.

The installer finished and I was off to see what new stuff I had in my install directory.


$ cd ~/bin/jython2.5.2
$ ./jython
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06) 
[OpenJDK Server VM (Sun Microsystems Inc.)] on java1.6.0_20
Type "help", "copyright", "credits" or "license" for more information.
>>>

Of course now I have no idea what I can do with the Java standard library. I googled for "Java standard libary" and found myself at the official docs for Java. Oh yeah - I guess Oracle owns Java now... Let's see: Java.math.BigInteger looks interesting. Can I import it?


>>> from java.math import BigInteger
>>> x = BigInteger("10000000000000000000000")
>>> y = BigInteger("10000000000000000000000") 
>>> x + y
Traceback (most recent call last):
  File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'java.math.BigInteger' and 'java.math.BigInteger'
>>> dir(BigInteger)
['ONE', 'TEN', 'ZERO', '__class__', '__copy__', '__deepcopy__',
... snip...
'abs', 'add', 'and', 'andNot', 'bit', ...]
>>> x.add(y)
20000000000000000000000

Yes, that is a big integer!

I also poked around in the demos a bit - Demo/awt/Colors.py is an 18 line Python program that looks pretty simple and running it:


$ jython Demos/awt/colors.py

reveals that it uses the AWT toolkit to put a bunch of labels with color names and the corresponding color in a gui window. Jython seems to do what it says on the label - lets me talk to Java classes but with the Python runtime - and it seems simple enough to get started on. Good luck!


blog comments powered by Disqus