This chapter is being brought up to date with Jython 2.5, and will need changes when Jython 3 comes out.
Some of the descriptions in this chapter are introductory, so that the material can be used to introduce Java programmers to Jython.
Sometimes it’s easier and faster to temporarily step into another language to solve a particular aspect of your problem.
This chapter looks at the value of crossing language boundaries. It is often advantageous to solve a problem using more than one programming language; as you’ll see, a problem that is very difficult or tedious to solve in one language can often be solved quickly and easily in another. By combining languages, you can create your product much more quickly and cheaply.
One use of this idea is the Interpreter design pattern, which adds an interpreted language to your program to allow the end user to easily customize a solution. If the application user needs greater run time flexibility, for example to create scripts describing the desired behavior of the system, you can use Interpreter by creating and embedding a language interpreter into your program.
In Java, the easiest and most powerful way to do this is with Jython , an implementation of Python in pure Java byte codes. As you will see, this brings together the benefits of both worlds.
Jython is generated entirely in Java byte codes, so incorporating it into your application is quite simple, and it’s as portable as Java is. It has an extremely clean interface with Java: Java can call Python classes, and Python can call Java classes.
Because Jython is just Java classes, it can often be “stealthed” into companies that have rigid processes for using new languges and tools. If Java has been accepted, such companies often accept anything that runs on the JVM without question.
The Python/Jython language can be freely embedded into your for-profit application without signing any license agreement, paying royalties, or dealing with strings of any kind. There are basically no restrictions when you’re using Python/Jython.
Python is designed with classes from the ground up and provides pure support for object-oriented programming (both C++ and Java violate purity in various ways). Python scales up so that you can create large programs without losing control of the code. Java projects have been quickly created using Jython, then later optimized by rewriting into Java sections of the Jython code that have profiled as bottlenecks.