ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From (Kevin A. Burton)
Subject [PROPOSAL] 'redefine' task that uses JDK 1.4/JPDA class redefinition
Date Sun, 03 Feb 2002 21:46:01 GMT
Hash: SHA1


Has anyone read about the JPDA 1.4 enhancements that have made it into JDK 1.4:

I am specifically talking about class redefinition.  AKA the ability to
recompile and update classes within a running JVM.

This is done through JPDA and should support any application that runs within
JDK 1.4.

Some applications like Tomcat have class reloading built into them.  This is
primarily due to the fact that Java has not been able to redefine classes at

What I want to do is build a new ant task named 'redefine' that takes a
directory of .class files, compares it to a directory of deployed class files
(if available) and redefines them.

So for example one could:

<redefine host="localhost" port="2112">


        <fileset dir="../bin/classes" includes="**/*.class"/>



This would connect to localhost:2112 with JPDA and redefine every class under

This isn't as easy as it sounds... there are some issues.

Specifically if you have singleton classes, these will not be reloaded.  In
order to do this you have to pop entries off the stack before this class was

Obviously in a lot of situations this is not desirable.  We should have the
ability to enable/disable this via pop-frames="false|true" (should be false by

This should provide a significant increase in functionality for both server
applications and developers.  

Developers could have compile, redefine, and test (with cactus or RPC style
code) within seconds without having to wait for their ENTIRE application
reload.  Application server admins will be able to redefine necessary code
without having to restart their application (think availability).


I think this is a good idea.  Of course I will contribute this to Apache if it
is requested.

The only other drawback is that this will require JDK 1.4 to compile.  It might
be a good idea to put this under a CONTRIB directory.


- -- 
Kevin A. Burton (,, )
             Location - San Francisco, CA, Cell - 415.595.9965
        Jabber -,  Web -

Windows is easy to learn and hard to use, while *nix is hard to learn but easy
to use. 

Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Get my public key at:


To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

View raw message