Phase 1 – (Jan 2007) Improve existing solution without adding any major new functionality
1. (50% complete) Remove the need for the special compiler (javaprec), by:
a. Retrieving source for methods directly from un-compiled *.java source and thereby remove the need to produce the XML files
b. Use AspectJ to control the execution of altered methods and thereby remove the need to insert extra code in every method
2. (80% complete) Improve display of objects (the tree structure at top)
a. Display information about constructors and inner classes
b. Improve the “history” (backwards / forwards) functionality by integrating it into the object structure tree so that field can expand into a completely new sub-tree
3. (15% complete) Refactor clean-up and improve existing code
4. Improve performance
a. Use a tool such as JProfiler to identify bottle necks and hot spots
5. Perform extensive testing to reduce bugs... read more
I have added major new functionality which will be realised shortly once fully tested. This new item is just to inform users that work is currently underway on the project and substantial progress is being made. The main efforts of the existing work is to remove the need for the special compiler javaprec and to improve the object structure tree in several ways.
The project is now under source control using Subversion. This project's Subversion repository can be checked out through SVN with the following instruction set:
svn co https://svn.sourceforge.net/svnroot/class-editor class-editor
For more information please see: https://sourceforge.net/svn/?group_id=79282
The following stories will be completed (in this order):
01. Refactor code, cleanup, improve and apply good coding principles.
02. Display object variables - available in current solution but improve display.
03. Edit object variables.
04. Display object methods - available in current solution but improve by removing need for javaprec or XML files. Instead read source files directly so no special compiler will be required. To enable this AOP will be incorporated into the solution.
05. Display method execution tree
06. Edit object methods – available in current solution, however this will need to be updated to after changes from step 4 above.
07. Debug code forwards
08. Run debugger backwards
09. Edit code while debugging
10. Display memory hot spots
11. Display memory allocation
12. Display method execution time
13. Display method execution hot spots
A major rework of RJCE is underway. This rework will be done in short sprints. As a result after each new piece of functionality is added / updated the solution will be fully tested and released allowing users to benefit from the changes.
I have now released the design report, which includes information on all technologies used in RJCE.
The purpose of the Runtime Java Class Editor (RJCE) project was to enable a program to be altered at runtime. This is a revolutionary, new approach to developing, debugging or learning Java. Several approaches were investigated including byte code alteration and class loading. The chosen approach was to combine the use of interpreters and parsers. Through this, the speed of compiled code is combined with the flexibility of interpreted code. A powerful Integrated Development Environment was implemented that can be embedded into any application in only two lines of code. This allows not only source code editing but also provides a class browser, which can be used to introspect on variables, methods, inner-classes, interfaces and super-classes. The project achieved its purpose as confirmed by various test. The potential of the RJCE system is demonstrated by over 500 downloads within the first week of being released as an open source project.... read more
Aspect systems, such as AspectJ from PARC, are being investiagted as part of another project I'm on. I have now been made aware of their potential. Aspects could possible be used to replace the interpreter in RJCE or for anti-patterns (bad coding) detection. Therefore this has been included on the RJCE TODO list.
I am just taking a two week holiday, but after that I will be spending at least one solid month debugging and tweaking so expect some big improvements very soon.
Runtime Java Class Editor (RJCE)
1. Install Java SDK 1.4.2
2. Download & unzip rjce.zip
Installing Java SDK 1.4.2
1.) To ensure reliability javaprec uses the sun.tools.javac package from compilation. Therefore as there have been some recent changes to this package Java SDK 1.4.2 needs to be installed before javaprec can run. The Java SDK 1.4.2 can be downloaded from: http://java.sun.com/j2se/1.4.2/download.html ... read more
Release alpha 0.4 is the first proper release; although the proper source, manual, etc are not yet ready. This will come soon in the next few weeks. I am currently debugging, shortly I will start some intensive testing, and benchmarking.
The first release is immanent i.e. ~1/2 wks. I am just finishing the debugging, testing and the manual, etc.
Current screen shots:
Javaprec Precompilation & Compilation Module: http:\\class-editor.sourceforge.net\images\rjce_code_editor_screenshot_15-08-2003.gif
Code Editor Module: http:\\class-editor.sourceforge.net\images\rjce_javaprec_screenshot_15-08-2003.gif
Runtime Java Class Editor (RJCE) is a JavaBean, ensuring that it can easily be added to any Java program. RJCE enables editing and re-loading of any Java programs (application or applet) classes at runtime. Class reloading is made possible through the use of a special custom designed class loading system. The RJCE contains an editor window that allows editing and compilation of Java source files. The compiled class files can be used either to help debugging or to reload part of the enclosing program. RJCE improves debugging of GUIs by allowing code or classes to be added to a program on the fly without needing to restart the program, enabling code testing and variable value checking. RJCE is invaluable for updating, editing or improving programs for which a restart is not possible, such as safety critical systems or control systems.... read more
This product is at the earliest coding stage, therefore I would like feature requests and ideas. Please make feature suggestions in the feature request tracker:
The current planned (designed) features are:
JavaBean to enable editing and re-loading of any Java programs (application or applet) classes at runtime
Improve debugging of Java GUIs
Edit classes of running Java programs
Add classes to running Java programs
Easily added to any Java program
Full code source code editor and compiler
This project has currently only just reached the end of the design phase. A UML diagram can be viewed at: http://class-editor.sourceforge.net/images/Overall-UML.jpg. The coding of this project has now started full time, with the first release due for 1st August 2003.
This projects main aim is to create a JavaBean to enable editing and re-loading of any Java programs (application or applet) classes at runtime. ... read more