Chapter 25. Extending and Embedding Jython
Jython
implements Python on a Java Virtual Machine (JVM).
Jython's built-in objects, such as numbers,
sequences, dictionaries, and files, are coded in Java. To extend
Classic Python with C, you code C modules using the Python C API (as
covered in Chapter 24). To extend Jython with Java,
you do not have to code Java modules in special ways: every Java
package on the Java CLASSPATH (or on
Jython's sys.path) is
automatically available to your Jython scripts and Jython interactive
sessions for use with the import statement covered
in Chapter 7. This applies to
Java's standard libraries, third-party Java
libraries you have installed, and Java classes you have coded
yourself. You can also extend Java with C using the Java Native
Interface (JNI), and such extensions will also be available to Jython
code, just as if they had been coded in pure Java rather than in
JNI-compliant C.
For details on advanced issues related to interoperation between Java
and Jython, I recommend Jython Essentials, by
Samuele Pedroni and Noel Rappin (O'Reilly). In this
chapter, I offer a brief overview of the simplest interoperation
scenarios, which suffices for a large number of practical needs.
Importing, using, extending, and implementing Java classes and
interfaces in Jython just works in most practical cases of interest.
In some cases, however, you need to be aware of issues related to
accessibility, type conversions, and overloading, as covered in this
chapter. Embedding the Jython interpreter in Java-coded applications
is similar to embedding the Python interpreter in C-coded
applications (as covered in Chapter 24), but the
Jython task is easier. Jython offers yet another possibility for
interoperation with Java, using the jythonc
compiler to turn your Python sources into classic, static
JVM bytecode .class and
.jar files. You can then use these bytecode
files in Java applications and frameworks, exactly as if their source
code had been in Java rather than in Python.
|