Compared with the travails required to shim Ruby.Net and JRuby onto a shared Java/J# code platform, doing the same for Jython (in NetBeans 5.0)/IronPython (using the DevStudio extension build for IronPython 1.1) was trivial. In fact most of the work was re-gearing my mind to Python after thinking in Ruby for some weeks.
Apart from the fact that that the IronPython build ignores any directory structure and smooshes all classes into the one assembly and considers that the package, which will impact on the broader code shape for any project, there is no shimming. Just build your assembly with references to the appropriate external files and you don't even need all the clr.AddReference to do it by hand
Doing the same as the J# and Ruby.Net — string and baling wire example, in a project that references the appropriate assemblies just requires the same Python code as a Jython build with the equivalent .jar files on the classpath
## pyinterop.py import dtai.gwt.GadgetFrame import java11.awt.event.WindowListener import java.lang.System window = dtai.gwt.GadgetFrame() window.setSize (800, 600) window.setTitle("Proof of Concept") class Handler(java11.awt.event.WindowListener): def __init__(self, window): self.window = window def windowClosing(self, e): self.window.hide() def windowClosed(self, e): java.lang.System.exit(0) def windowActivated(self, e): pass def windowDeactivated(self, e): pass def windowDeiconified(self, e): pass def windowIconified(self, e): pass def windowOpened(self, e): pass adapter = Handler(window) window.addWindowListener(adapter) window.show()
It still works in either case, if I simply use the WindowAdapter class and just override the methods I need. W00t! Indeed, so far it almost seem too easy!
Now I just have to keep working around the weird problems I ran into last time around this loop. Keeping Java beneath everything this time around should help.
No comments:
Post a Comment