|

AnyJ
The Cross-Platform Java IDE & Source Code Engineering Solution
Technical background
AnyJ is written 100% in Java, though it makes use of some platform specific tools (used by the
java code by launching them as external processes).

A small core framework (dark blue in the chart)
implements the basic functionality and application logic. The
major functionality is provided by plugins and services.
These plugins are able to
- register their own property form,
- get a 'Card' in the
main window's TabbedPane, and
- register Services.
A Service is sort of an application-level-function which appears
to the user as a MenuItem or an ActionButton.
The core tracks the user's selection and builds
a list of selected objects. Each Service that has been registered
in the ServiceRegistry is asked if it is able to work on any of
the selected Objects. If a service can process one of the selected
objects, a corresponding menu item or button will be displayed/enabled
to the user in the GUI.
The plugin achitecture enables you to replace
plugins easily, provide platform-specific functionality, or reduce
the memory footprint by unloading unused plugins. It is possible
to 'plug in' GUI Builders for libraries other than Swing, support
for special (pre-)compilers, debuggers, JDKs, VMs and so on.
The third major module (besides plugins and the
core) of AnyJ's application architecture is the 'SourceBase'.
This module is responsible for scanning the class, method, and
field information from various sources (jars, zips, .class files,
source files). The gathered information is stored and can be queried
by all modules (including plugins) of AnyJ.
Summary
The plugin architecture of AnyJ allows
the following features
- Customizability & easy extendability
to fit specific needs
- Debugger, Compiler, GUI Builders etc. can
be replaced or additionally included by the plugin mechanism.
Additional browsers or code generators may be added due to the
full access to the SourceBase's (meta-) data.
The programming language on which AnyJ is specialized
may be changed by replacing or extending the implementation of
the SourceBase module (provided the language belongs to the family
of OOP languages).
|