Brad Miller wrote: > If it does turn out that Jython becomes a thriving, active version of > Python then I think it would be very interesting to investigate. > Have you used Jython? What has been your experience? Maybe others > are more in the know about the future prospects of Jython?
We're using Jython for a medium sized commercial project (using the latest stuff from CVS) and it seems to be working quite well. However, whether it is easy enough for learning is a different matter. The value of Jython (to us) is in the ability to use Python syntax and features and yet access a huge array of Java class libraries and then be able to say to a client we are "using Java" without suffering through endless braces and casts and type declarations and so on. (And realistically, Java does provide a lot of enterprise level libraries, or at least says it does.) Personally, I prefer the Swing API to wxWindows (what I use under CPython), however the cost of that is not being truly open source (Google on "The Java Trap") if you use Sun's class libraries and JRE stuff and also having a huge footprint in memory use (30MB+) whereas python + wxWindows is much smaller (both memory and installation needs). Of course that is slowly being balanced by the fact that if someone already has a JRE (Java runtime environment) installed, which is more and more common, all you need to give them is a 1.5MB or so Jython jar file. Supposedly JRE 1.5 does a better job of sharing memory for common code across all JRE users. And GNU classpath (free as in freedom Java libraries) is moving along. As for Jython's support, it does have some active users, but obviously it does not have the volume of posts to the mailing lists that Python has. Also unlike the Python mailing list there have been quite a few unanswered questions especially in the past (i.e. I sometimes Google on some Jython issue and find someone else asked it but there was not a reply, whereas Python rarely has that). However, many questions related to Jython in terms of how to use widgets can instead be answered by looking at Java forums for ideas. There really isn't that much Jython specific stuff (as opposed to Java specific stuff) to know unless you are hacking the Jython codebase, and that one of the beauties of Jython (for people comfortable with Java). And despite the limited volume of the mailing list, except for missing features of later Pythons, Jython 2.1 from a couple years back seems to have a good reputation for stability. Due to the Python Software Foundation's wisdom in funding work on Jython it is moving along towards later Python compatibility and at least for a short time better supported. I think that was an excellent choice by the PSF (and I say that seriously as someone who had a rejected proposal [Delphi -> Python conversion]; investing in Jython was a better choice, and even I am now benefiting from it). I think Jython will remain an excellent place to invest Python-related money and effort -- it really does open Python up to a broad spectrum of situations. I think Jython could be made into an excellent educational environment (including being usable in later web browsers linked to a late model JRE, which would be a big deal for use in schools!) but it would take some work. The biggest issue is that to use most common Swing classes in Jython like JLabel and JTree and JList, you need to read and mentally translate to Python syntax the Java documentation (sort of like how in wxWindows you need to read the C documentation, but wxPython at least has a nice demo of all widgets and Jython Swing does not). This is quite a bit of a hurdle, though not that bad for an experienced or motivated programmer, especially if you already know Java. That issue might be solved by just making better documentation of Swing for Jython (though who would want to maintain is, if it wasn't generated automatically?). [There are also some Jython idioms which make the code smaller than straight Java to Jython translation by dropping all the typecasts and type declarations which are not obvious at the start.] Or alternatively, one could just make special educational classes for novices which would be like training wheels (think 2D turtle, etc.) until kids could start using Swing. There are two Jython related IDEs now for eclipse, so perhaps one of them could be modified for education use as well (though Eclipse has its own learning curve). And for learning, as in another post in this thread, some issues like the ease of making typos might need to be addressed somehow. Smalltalk, another flexible system designed for kids, requires local variable declarations as names to prevent typos (which I like, personally, as opposed to mandatory type declarations) and warns you when you save code that uses an undefined function (actually,undefined "selector" of a method, in Smalltalk jargon). Given the source is there, it might be possible to add this requirement somehow to Jython, but that would break some Python compatibility? I would not mind this typo problem so much if Jython, like most Smalltalk, allowed you to easily modify running code in the debugger. So, that would be another approach to making the type problem less of a bother -- adding better support for modifying code while running (and I have made some experiments in that direction). However, for small learning programs, rerunning the code from scratch (especially under JRE 1.5 with quicker subsequent startup) might not be such a big deal. As an aside, I was posting against Java (in favor of Smalltalk) in the newsgroups when Java came out, as I thought it was marketing hype and unneeded. And it was. But now, eight years or so later, Sun and cohorts finally have a lot of the bugs out (and have added so many features from Smalltalk like Swing and hot spot technology), so, given you can use all that stuff from Python with Jython, it isn't that bad a platform anymore (ignoring "The JavaTrap" license issue). --Paul Fernhout _______________________________________________ Edu-sig mailing list [email protected] http://mail.python.org/mailman/listinfo/edu-sig
