Jython: Integrating Python and Java
Upcoming SlideShare
Loading in...5

Jython: Integrating Python and Java



This was a talk I gave at the Salem Java Users Group on 2/5/08.

This was a talk I gave at the Salem Java Users Group on 2/5/08.



Total Views
Views on SlideShare
Embed Views



11 Embeds 88

http://www.slideshare.net 33
http://western-skies.blogspot.com 29
http://western-skies.blogspot.in 11
http://western-skies.blogspot.ca 4
http://western-skies.blogspot.it 3
http://western-skies.blogspot.se 2
http://western-skies.blogspot.fr 2
http://western-skies.blogspot.co.uk 1
http://www.slashdocs.com 1
http://western-skies.blogspot.de 1
http://western-skies.blogspot.co.il 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Jython: Integrating Python and Java Jython: Integrating Python and Java Presentation Transcript

  • Jython: Integrating Python and Java Charles Anderson Western Skies Consulting Western Oregon University charles@western-skies.us / andersc@wou.edu
  • 10 Second Summary • Jython is the Python interpreter implemented in Java
  • Outline • Python • Scripting and embedded languages • Jython • Other Java scripting languages
  • Python Background • Python is a object-oriented scripting language - runs on many platforms • Mature but still evolving: version 1.0 - 1994, current version: 2.5, 3.0 under development • Huge user base including Google,Yahoo, YouTube, Industrial Light & Magic
  • Python Overview • Python is a scripting language - no compile • Dynamic typing - no variable declarations, but strictly typed at runtime • Simple syntax - large library rather than cryptic syntax (c.f., Perl) • Often a refuge from other languages
  • Hello World • print “hello world” • that’s it - no semicolons, no main function, no curly braces, etc.
  • Language Features • Object oriented: hybrid/not pure, multiple inheritance - c.f., C++ • Polymorphism without inheritance - “duck typing” • Very dynamic - introspection/reflection is simple and powerful - c.f., Java
  • Syntax • Pretty simple - familiar to Java programmers c = sqrt(a*a, b*b) emp = Employee(‘Bob’, ‘Jones’) employees[‘Bob’] = emp import sys, email.mime.text
  • More Syntax if x < 0: print ‘negative’ try: z=y/x except ZeroDivisionError, msg: print msg
  • Class Definition class Point2D: def __init__(self, x, y): self.x = x self.y = y def distance(self): return math.sqrt( self.x**2+self.y**2)
  • Syntax Notes • The block structure of code is determined by indentation - what you see is what the compiler sees • No dangling curly braces • Python favors libraries over fancy, terse syntax - c.f., Perl • When needed, __method__
  • Embedded Languages • TCL was developed to provide a common command language for tools written in C • Adding command line to tools • Extending TCL to add commands from C to TCL • Similar to Unix shell - C functions instead of executable programs
  • Extending TCL • TCL uses a simple interface between TCL and C code: int argc, char** argv • Programmer writes thin layer of interface functions to expose functionality to TCL • Programmer has to choose functions to be exposed • Can be automated - swig
  • Scripting a Program • Do the real work in C (or whatever) and glue it together with TCL • Provides extensibility of C tool to users • Performance of script language doesn’t really matter - Pareto principal • E.g., Numeric Python at LLNL • Can prototype in scripting language
  • Python Interpreter • Python is an interpreted language - need an interpreter to execute Python code • Originally written in C - “CPython” • Code is compiled to byte codes at runtime • Python can be interfaced with existing C code similar to TCL
  • Jython Interpreter • Jython is Python interpreter written in Java • Python code is compiled to Java byte codes • Aside: Iron Python is interpreter written to .Net CLR
  • Jython Ramifications • Interpreter written in Java - so what? • Jython interfaces directly to Java w/o any explicit coding • Uses Java introspection/reflection • All Java classes on class path are immediately available from Python code • Interactive command line for Java
  • Demos • Interactive • GUI
  • Java Python Integration • Python can call Java code • Java code can call out to Python - possibly in a new Python interpreter (sandbox) • Python code can sub-class Java classes
  • Possible Uses • Command prompt for controlling app • Interactive workbench for experimenting • One-off utility work - e.g., data loading • Flexible “business” rules
  • Scripting Java • Groovy - groovy.codehaus.org • JACL (TCL in Java) - tcljava.sourceforge.net • JRuby - jruby.codehaus.org • JSR 223 Scripting the Java Platform - Java 6 SE
  • Jython Information • www.jython.org • There are a couple of Jython books • “Scripting: Higher Level Programming for the 21st Century” - Ousterhout