Java module separations
Vitezslav Stejskal <[email protected]> Mon, 12 May 2003 13:51:03 +0200
| Newsgroups | gmane.comp.java.netbeans.modules.projects.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi people, we are thinking about the way how to split the code in java module(s) into more manageable pieces reflecting the logical structure of features provided by the module. The goals which we would like to achieve by the separation are: - separate independent pieces of code - clean up the APIs and SPIs by removing inappropriate dependencies - make hard to mess up things again in the future - allow modules building on top of java APIs to pick up only those pieces which they are interested in - improve the understandability of the code and lower the maintenance costs Let me outline the suggested set of modules and briefly describe the functionality covered by them. Some modules listed below already exist others will be created. * java - This module provides integration of all the services and functions provided by other modules in the Netbeans IDE. It has no API nor SPI, but a lot of GUI. * java/api - This is the basic java API module. Now it contains all the java APIs mixed together, but they should be separated from there. It will contain only the ClassPath API because of keeping the backward compatibility with Netbeans 3.4/3.5. * java/platform - This module will contain the generic support for java platforms, mostly the API and SPI for maintaining platforms registry, definition of platform services, etc. * java/j2se - This is the implementation of J2SE platform support including services like compilation, execution, etc. * java/projects - The projects support for java developement. It will contain things like JavaProject, CompilationUnit, ProjectPath, etc. * java/editor - The java editor kit. * java/completion - The java editor code completion support. * java/srcmodel - Java Source Hierarchy The intermodule depenencies are shown on the graph below, it doesn't show dependencies on Open API and other external modules. Modules are grouped to two groups - projects dependent and projects independent. * projects independent: java/api java/platform depend on java/api java/j2se depends on java/api, java/platform * projects dependent java/projects depends on java/api, java/platform java/srcmodel depends on java/projects java/completion depends on java/api, java/projects, java/srcmodel java/editor depends on java/completion, java/api, java/projects, java/srcmodel java depends on all other modules This is the first sketch and details are very likely to change when we will proceed with implementation. Any comments, suggestions? -vita