1.3 Python Implementations
Python currently has two
production-quality implementations, CPython and Jython, and one
experimental implementation, Python .NET. This book primarily
addresses CPython, which I refer to as just Python for simplicity.
However, the distinction between a language and its implementations
is an important one.
1.3.1 CPython
Classic Python (a.k.a.,
CPython, often just called Python) is the fastest, most up-to-date,
most solid and complete implementation of Python. CPython is a
compiler, interpreter, and set of built-in and optional extension
modules, coded in standard C. CPython can be used on any platform
where the C compiler complies with the ISO/IEC 9899:1990 standard
(i.e., all modern, popular platforms). In Chapter 2, I'll explain how to download
and install CPython. All of this book, except Chapter 24 and a few sections explicitly marked
otherwise, applies to CPython.
1.3.2 Jython
Jython is a Python
implementation for any Java Virtual Machine (JVM) compliant with Java
1.2 or better. Such JVMs are available for all popular, modern
platforms. To use Jython well, you need some familiarity with
fundamental Java classes. You do not have to code in Java, but
documentation and examples for existing Java classes are couched in
Java terms, so you need a nodding acquaintance with Java to read and
understand them. You also need to use Java supporting tools for tasks
such as manipulating .jar files and signing
applets. This book deals with Python, not with Java. For Jython
usage, you should complement this book with
Jython Essentials, by Noel
Rappin and Samuele Pedroni (O'Reilly), possibly
Java in
a Nutshell, by David
Flanagan (O'Reilly), and, if needed, some of the
many other Java resources available.
1.3.3 Choosing Between CPython and Jython
If your platform is able to run both CPython and Jython, how do you
choose between them? First of all, don't
choose—download and install them both. They coexist without
problems, and they're free. Having them both on your
machine costs only some download time and a little extra disk space.
To experiment, learn, and
try things out, you will most often use CPython, as
it's faster. To develop and deploy, your best choice
depends on what extension modules you want to use and how you want to
distribute your programs. CPython applications are generally faster,
particularly if they can make good use of suitable extension modules,
such as Numeric (covered in Chapter 15). The development of CPython versions is
faster than that of Jython versions: at the time of writing, for
example, the next scheduled release is 2.2 for Jython, but 2.3 for
CPython.
However, as you'll see in Chapter 25, Jython can use any Java class as an extension
module, whether the class comes from a standard Java library, a
third-party library, or a library you develop yourself. A
Jython-coded application is a 100% pure Java application, with all of
Java's deployment advantages and issues, and runs on
any target machine having a suitable JVM. Packaging opportunities are
also identical to Java's.
Jython and CPython are both good, faithful implementations of Python,
reasonably close in terms of usability and performance. Given these
pragmatic issues, either one may enjoy decisive practical advantages
in a specific scenario. Thus, it is wise to become familiar with the
strengths and weaknesses of each, to be able to choose optimally for
each development task.
1.3.4 Python .NET
The experimental Python
.NET is a Python implementation for the Microsoft .NET platform, with
an architecture similar to Jython's, but targeting
Microsoft Intermediate Language (MSIL) rather than JVM bytecode.
Python .NET is not as mature as CPython or Jython, but when it is
ready for production use, Python .NET may become a great way to
develop for .NET, like Jython is for the JVM. For information on
Python .NET and links to download it, see http://www.activestate.com/Initiatives/NET/Research.html.
1.3.5 Licensing and Price Issues
Current
releases of CPython are covered by the CNRI Open Source
GPL-Compatible License, allowing free use of Python for both
commercial and free-software development (http://www.python.org/2.2.1/license.html).
Jython's license is similarly liberal. Anything you
download from the main Python and Jython sites will not cost you a
penny. These licenses do not constrain what licensing and pricing
conditions you can use for software you develop using the tools,
libraries, and documentation they cover.
However, not everything Python-related is totally free from licensing
costs or hassles. Many third-party Python sources, tools, and
extension modules that you can freely download have liberal licenses,
similar to that of Python itself. Others, however, are covered by the
GNU Public License (GPL) or Lesser GPL (LGPL), constraining the
licensing conditions you are allowed to place on derived works.
Commercially developed modules and tools may require you to pay a
fee, either unconditionally or if you use them for
profit.
There is no substitute for careful examination of licensing
conditions and prices. Before you invest time and energy into any
software component, check that you can live with its license. Often,
especially in a corporate environment, such legal matters may involve
consulting a lawyer. Modules and tools covered in this book, unless I
explicitly say otherwise, can be taken to be, at the time of this
writing, freely downloadable, open source, and covered by a liberal
license akin to Python's. However, I claim no legal
expertise, and licenses can change over time, so double-checking is
always prudent.
|