Currently all the core-*.jar modules are in the
lib/ directory. They should be made into proper
modules instead, to clean up the classpath.
1. Those which provide some service which might
not always be needed, should be made autoloads,
OIDE-M-Provides some token. E.g. compilation and
execution modules would provide CompilationEngine
and ExecutionEngine, respectively. Old modules
would automatically Require these tokens; new
modules would have to ask for them explicitly. See
NbInstaller for more.
2. Those which are simply needed for normal
operation of the IDE, e.g. window system or UI,
should be made eager modules, ensuring they cannot
be turned off by the user.
Don't forget some things:
a. Update NbInstaller to not bother masking out
Java packages which are no longer in the classpath
anyway. The normal classloader mechanism will do
this correctly anyway.
b. Any real core code accessing these modules will
need to be rewritten to not have a compile-time
(or hard run-time!) dependency.
c. nbresboot: -> nbres: for e.g. DTDs.
Target milestone was changed from '3.4' to TBD.
Now mine, I guess.
Done (c) in working sources (deprecated nbresboot:).
In progress in separation_19443_b branch; all but core-windows.jar are
Only core-windows.jar remains on the classpath. Due to the difficulty
of pulling the window system out of the rest of core, I do not expect
this to be fixed for NB 4.0.
Well, it's done now! Thanks Peter.