[ajug-members] Tuesday, April 22nd Special Event: Putting Dynamic Languages on the JVM to Work

Barry Hawkins barry at alltc.com
Wed Apr 16 14:41:51 EDT 2008


Hey gang, AJUG is hosting a talk by Jim Baker next week.  Jim has  
played a key role in the revival of the Jython project, and will be  
speaking on some very concrete examples of how Java as a platform for  
dynamic languages like Python, Ruby, etc. can be harnessed by your  
group.

Details of the event are posted below; hope to see you there!

What: Putting Dynamic Languages on the JVM to Work: A Jython Case Study
When: Tuesday, April 24th at 7:00 PM
Who: Jim Baker, Jython Committer and JRuby collaborator
Where: AJUG's Usual Meeting Location

Jim's Bio:

Jim Baker has over 15 years of professional software development  
experience, focusing on business intelligence, enterprise system  
management, and high-performance web applications. He co-founded both  
Empact Solutions, raising $10M in VC financing, and BizLogix. Jim also  
leads the Front Range Pythoneers, the Boulder Python Users Group. Jim  
graduated from Harvard College, A.B., Computer Science magna cum laude  
and Brown University, Sc.M., Computer Science (and an all-but- 
dissertation Ph.D. candidate). Jim is a Jython committer. He first  
started working with Java in 1995.

Event Abstract:

Django is a popular web application framework written in Python that  
is often compared to Ruby on Rails (RoR). Like RoR, Django enables  
developers to quickly build high-performance web apps with a robust  
database backend. But many web apps have needs that go beyond this  
standard three-tier configuration, even as enhanced with load  
balancing and caching. Or they have specific libraries they need to  
access. Because of these requirements, developers have turned to Java  
Enterprise Edition and related solutions, albeit at a higher  
development cost. But is it possible to combine the benefits of both?

Django on Jython is such a solution. By combining the time-to-market  
advantages of Django with the heavy-lifting capabilities of the Java  
platform, developers get the best of both worlds. Jython is an  
implementation of Python that runs on the Java Virtual Machine (JVM)  
via bytecode compilation. It can therefore readily interoperate with  
existing Java code, while also taking advantage of the Python  
ecosystem. This includes Django: as committers on the Jython project,  
we have recently added support for Django to the trunk version of  
Jython, and we plan to enhance this for the forthcoming release of  
Jython 2.5 this year.

In this talk, we will begin by introducing Django, as well as basic  
Python functionality. Jython, like other Python implementations,  
supports an interactive object shell. (This is a familiar concept to  
users who have worked with Lisp, Ruby, or Smalltalk, and it is a  
hallmark of a dynamic language.) This is powerful stuff. We can create  
a new Jython class that extends a Java class on the fly; or call  
methods on Java objects; or work directly with Django's object- 
relational mapper. In fact, all of Django's functionality is available  
from the object shell. To complement Django, we will look at one  
popular module for Python, dateutil, that provides easy-to-use date  
and datetime support, including generic parsing, iCalendar recurrence  
rules, and relative deltas, such as the last week of month for a given  
date.

Of course, the object shell is just a tool for developers. Similar to  
the servlet API, Python web app frameworks have adopted a common API  
called WGSI. The modjy component provides a mapping between WGSI- 
supporting servers on Jython and servlet containers for Java. We will  
show a couple of examples of various open source stacks that can be  
used with DoJ, including Tomcat, MySQL, and PostgreSQL. Indeed we  
expect to see many more databases to be supportable by DoJ because of  
the leverage JDBC provides.

Then we will look at how two popular Java open source projects can be  
harnessed to Django by running it on Jython. The first is iText, which  
supports parsing and generation of PDF documents, as well as more  
specialized functionality like form filling. Outside of the Java  
ecosystem, there's only limited support in Python for PDF; the  
ReportLab toolkit is popular, but the open source version does not  
support PDF reading or form filling for example. We will show how you  
can use Django on Jython to automatically publish standard IRS 1099  
forms.

Django supports using memcached for distributed caching. memcached is  
a proven solution, powering the scalability of such web sites as  
Flickr and Wikipedia. However, memcached only support short string  
keys with binary objects (Django stores objects through pickling,  
which is Python's own object serialization mechanism). The Java  
ecosystem provides a range of other options. In particular, Terracotta  
provides strong support for distributed computing. This works  
particularly well within the context of an Ajax-architected  
application running on Django, as we will show.

Web app development needs to be responsive to the rapid development  
cycles that are increasingly required. Django is a powerful solution  
for that. By combining it with Jython, developers can also take  
advantage of the Java resources they would otherwise miss out on.



More information about the ajug-members mailing list