0% found this document useful (0 votes)
226 views

Introduction To Jython

Frank Wierzbicki gave an introduction to Jython which brings the Python language to the Java Virtual Machine. Jython allows full integration with Java libraries and code while also providing access to Python libraries. The current version is 2.2.1 with 2.5 in alpha testing. Jython is used in several applications and frameworks including Django, TurboGears and Zope. It allows things like database access via JDBC and GUI development using Swing. Future plans include improved support for libraries like NumPy and integration with Java 7 features.

Uploaded by

Ankit
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
226 views

Introduction To Jython

Frank Wierzbicki gave an introduction to Jython which brings the Python language to the Java Virtual Machine. Jython allows full integration with Java libraries and code while also providing access to Python libraries. The current version is 2.2.1 with 2.5 in alpha testing. Jython is used in several applications and frameworks including Django, TurboGears and Zope. It allows things like database access via JDBC and GUI development using Swing. Future plans include improved support for libraries like NumPy and integration with Java 7 features.

Uploaded by

Ankit
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Introduction to Jython

Frank Wierzbicki
note: some slides borrowed from Jim Baker
Me
• Java developer for 10+ years
• Python/Jython developer for 10+ years
• Jython contributor for the last 5 years
• Jython project lead for the last 3 years
• Sun Microsystems hired me to work full-
time on Jython about 4 months ago
What is Python?
• A programming language that is:
• Elegant and Robust
• Easy to pick up: readability is at the
forefront of the language design
• Easy to use, yet powerful
• The fastest growing language of 2007
according to http://www.tiobe.com
What is Jython?

• Jython brings the Python language to the


JVM.
• Jython has full and nearly seamless
integration into any Java libraries and code.
• Jython can access many of the libraries and
frameworks written in Python.
Some code
print “hello world”

def hello(name):
print “hello”, name
Demo: Jython basics
Project Status
• Jython 2.2.1 is the production version
• Jython 2.5 alpha is out
• 2.5 Unit test compliance
• 199 passing
• 58 fails, but most are minor
• Active group of 8 committers
Applications

• Django - Leo Soto


• TurboGears 2 - Ariane Paola
• Zope - Georgy Berdyshev
• Twisted, ipython
And Existing Apps

• Admin - WebSphere, Weblogic,VMware


• Testing tools like PushToTest, Grinder
• Large and small companies as supported by 2.1 and
as of last summer, 2.2
Demo: Jython basics
Jython DB access
• Jython has built in support for DB-API with
zxjdbc: a thin wrapper around JDBC
• Provides Python programmers with access
to any database with a JDBC driver.
• Provides Java programmers with access to
any Python frameworks that are built on
DB-API
“with” statement
with VAR as EXPR:
BLOCK

#roughly translates into this:


VAR = EXPR
VAR.enter()
try:
BLOCK
finally:
VAR.exit()
transactional code
db = zxJDBC.connect(
"jdbc:postgresql://localhost/world",
'user', 'pass', "org.postgresql.Driver")

with db_transaction(db) as cursor:


cursor.execute("select name from continent")
rowdata = [row for row in cursor.fetchall()]
print rowdata
context manager
@contextmanager
def db_transaction (connection):
cursor = connection.cursor()
try:
yield cursor
except:
connection.rollback()
raise
else:
connection.commit()
Jython and Swing
from javax.swing import JTable
from javax.swing import JFrame

rowdata = [('bill', 'Bill Williams')]


colnames = ['user name', 'full name']
table = JTable(rowdata, colnames)
frame = JFrame("Table")
frame.getContentPane().add( table )
frame.size = 400, 300
frame.visible = True
Demo: DB and Swing
Django
• A Python MVC framework with a web and
database bias (similar to Ruby on Rails)
• Makes creating a project very simple
• Comes with a powerful admin tool that can
be used to manage the data in your
database -- no need to write your own
admin tool!
Demo: Django
java.util.concurrent
not interpreted

Java Platform
no GIL

-J for setting options


like one of 20 or so GCs
heap size
etc

• Now takes advantage of Java 5 libraries


• Continue to
• Compile to Java Bytecode
• Use a choice of Java garbage collectors
• Use Java native threads
• -J flag namespace for JVM config
Python Platform

• _ast to use the same AST - almost there


• CPythonLib unit tests, augmented with
Jython specific ones
• Most libraries are imported directly from
the standard library (154 out of 191)
virtualenv

Deployment portable bytecode vm?

of course, PBCs do vary


over time, but fine for
internal usage!

• setuptools, easy_install (only on trunk!)


• modjy + app servers like GlassFish
• Coming: JAR, WAR packaging
• Looking at: applets, Android
• Bytecode gen in advance
• No eval, use reflection to/from Java
Planned Integrations

• sqlite3 via NestedVM


• ctypes, either JNA or using PyPy’s work
• PyAMF PyAMF - probably via

• NumPy BlazeDS

NumPy - multidim array


support in Java from
UCAR; need also support
for ufunc, broadcast/
reduce, then ctypes too
spans the spectrum

Collaboration
• Major apps
• Implementations - CPython, PyPy
• Other Java dynamic languages - JRuby
• Tooling support
• Java Virtual Machine development
• Academic research - gradual typing
JRuby support in NB

Tooling Support
• IDEs
• Especially integrated packaging - simple,
standardized deployment options
• Code completion
• Possibilities of refactoring, etc.
• Typing?
JRuby support in NB

Tooling Support
• IDEs
• Especially integrated packaging - simple,
standardized deployment options
• Code completion
• Possibilities of refactoring, etc.
• Typing?
JRuby in NB
one-shots get us
greenlets

Java 7 Support

• invokedynamic and related functionality


• Relevant because of backported support
• Possible
• One-shot continuations
More Demos

• Alice
• pydoclet
Where to find out
more
• http://www.jython.org
• http://wiki.python.org/jython
• http://fwierzbicki.blogspot.com
• Twitter: fwierzbicki
• http://www.python.org
• http://nbpython.dev.java.net

You might also like