Sunday, November 14, 2010

Remember Jython?

TestClass.java

import org.python.util.PythonInterpreter;
import org.python.core.*;

public class TestClass {

 public static void main(String[] args) {
  try {
   PythonInterpreter py = new PythonInterpreter(); 
   py.execfile(args[0]);
  } catch(Exception e) {
   e.printStackTrace();
  }
 }
}

mypy.py

print 'Hello, World'

Terminal

[greg:py] javac -cp .:${HOME}/dev/bin/jython2.5.2/jython.jar TestClass.java
[greg:py] java -cp .:/${HOME}/dev/bin/jython2.5.2/jython.jar TestClass mypy.py
Hello, World
[greg:py]

Interactive Swing

Create a Swing UI Without Compiling
[greg:local] jython
Jython 2.5.1 (Release_2_5_1:6813, Sep 26 2009, 13:47:54) 
[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_22
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Hello, World'              
Hello, World
>>> from javax.swing import JButton, JFrame
>>> frame = JFrame('Hello Jython', defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size=(300,300))
>>> def change_text(event):
...    print 'Clicked!'
... 
>>> button = JButton('Click Me', actionPerformed = change_text) 
>>> frame.add(button)
javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,border=com.apple.laf.AquaButtonBorder$Dynamic@32a6faa9,
flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,
margin=javax.swing.plaf.InsetsUIResource[top=0,left=2,bottom=0,right=2],paintBorder=true,paintFocus=true,
pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Click Me,
defaultCapable=true]
>>> frame.visible = True
>>> [greg:local]