[Zope] Re: [Jython-users] Jython and Zope
Terry Hancock
hancock@anansispaceworks.com
Tue, 26 Feb 2002 12:32:19 -0800
Nicolas Bill Russell wrote:
> I just want to know if Jython is supported by Zope? I'm new to Python
> so go easy on me. :)
As far as I know (and I've been looking -- still am),
there's no direct support for Jython in Zope. However,
Jython is strictly a *client-side* technology and
Zope is strictly *server-side* -- so in principle, there
isn't much overlap. You could use DTML Methods/
Documents and File objects to hold the Jython code and
the interpreter.
What would be kind of cool, though, is a Zope product to
encapsulate a Jython applet as a Zope object. I think
it ought to:
1) Provide a syntax-sensitive editing interface (can
we just use the one currently provided for Python
scripts? I'm not sure if the syntax is similar
enough. I mean -- is the syntax checker aware of
standard modules (which may differ) or just legal
Python syntax (which should be the same)?
Actually, it occurs to me that this may not really
be a "syntax checker" -- is it actually just importing
the module and reporting the traceback from that? In
which case, this is really the same as #3 below.
2) Automatically provide the wrapper code to deliver
the Jython interpreter applet and generate the
correct <applet> tags, etc. This would be akin
to what Zope does for images.
3) It might be good to actually pre-compile into
a .jar file (or whatever is appropriate -- I'm a
Java/Jython newbie, so go easy on _me_ too ;) ), on
the server. Probably one should do this whenever
the program is edited on the server, and report
errors/traceback from the program. This probably
has to be done from an unrestricted Python module
(which may in turn call other programs on the
server, such as jythonc), so that means putting
it in as an External method, or (better) including
it in a Zope Product.
With Jython, there's an obvious cache-optimization
problem -- you want to make sure you only download
the core/interpreter part once, and the applets
separately. You also want to avoid triggering
various security problems with client-side code,
which seem to happen when you evaluate/execute
strings inside of Python. This probably ought to
be done on the server if it can't be avoided (?).
It seems to me that there's enough repetitive work
here to justify making a special product to simplify
it. If you had this, I think you could just edit
a Jython client-side method in Zope, save it (which
would compile and store on the server), and then
embed it into a DTML document, using
<dtml-var myJythonObject>.
I was thinking of waiting until the O'Reilly book
on Jython comes out (I'm not experienced at Java,
so I don't think the other book is going to help
me so much), and then having a go at writing such
a product myself, since I want to do a fairly
large amount of Jython stuff with Zope. My attraction
to this is the beauty of having both server and
client programmed in the same programming language
(Python), instead of having to learn and interface
between two different ones. This would also reduce
the burden of deciding where to draw the line between
server- and client-side components, since they would
then be relatively easy to port back and forth.
So ... Has anyone already done this (and I'm just not
so good at finding it), or is anyone interested in
collaborating / discussing this with me?
Cheers,
Terry
--
------------------------------------------------------
Terry Hancock
hancock@anansispaceworks.com
Anansi Spaceworks
http://www.anansispaceworks.com
P.O. Box 60583
Pasadena, CA 91116-6583
------------------------------------------------------