|
ABSTRACT
While Java provides many software engineering benefits, it lacks a coherent module system and instead provides only packages (which are primarily a name space mechanism) and classloaders (which are very low-level). As a result, large Java applications suffer from unexpected interactions between independent components, require complex CLASSPATH definitions, and are often extremely complex to install and maintain. We have implemented a module system for Java called MJ that is implemented with class loaders, but provides a much higher-level interface. High-level properties can be specified in a module definition and are enforced by the module system as new modules are loaded. To experimentally validate the ability of MJ to properly handle the complex module inter-relationships found in large Java server systems, we replaced the classloader mechanisms of Apache Tomcat 4.1.18 [27] with 30 MJ modules. The modified Tomcat is functionally identical to the original, but requires no CLASSPATH definitions, and will operate correctly even if user code loads a different version of a module used by Tomcat, such as the Xerces XML parser [31]. Furthermore, by making a small change to the Java core libraries enabled by MJ, we obtained a 30% performance improvement in a servlet microbenchmark.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
|
| |
3
|
Bauer, L., Appel, A. W., and Felten, E. W. Mechanisms for secure modular programming in Java. Tech. Rep. Tech Report TR-603-99, Princeton University, Department of Computer Science, July 1999.
|
 |
4
|
|
| |
5
|
Corba. http://www.omg.org/gettingstarted/corbafaq.htm.
|
| |
6
|
Debian. http://www.debian.org/.
|
| |
7
|
|
| |
8
|
Eclipse. http://www.eclipse.org.
|
 |
9
|
|
| |
10
|
Advanced classloading in J2EE. http://www.theserverside.com/resources/articles/AdvancedClassLoading/article.html.
|
 |
11
|
|
| |
12
|
|
| |
13
|
Harrison, S. Modula-3. Prentice Hall, 1991.
|
| |
14
|
Hudak, P., and Wadler, P. Report on the programming language Haskell. Tech. Rep. Yale/DCS/RR777, Yale University, Department of Computer Science, Aug. 1991.
|
| |
15
|
IONA Orbix. http://www.iona.com.
|
 |
16
|
|
| |
17
|
Jdbc drivers: How do you know what you need? http://archive.devx.com/dbzone/articles/dd_jdbc/sosinsky-2.asp.
|
 |
18
|
|
| |
19
|
|
 |
20
|
|
 |
21
|
|
| |
22
|
Microsoft COM: Component object model. http://www.microsoft.com/com.
|
| |
23
|
Millstein, T., and Chambers, C. Modular statically typed multimethods. Information and Computation 175, 1 (May 2002), 76--118.
|
| |
24
|
|
| |
25
|
Robinson, R. Developing and deploying modular J2EE applications with WebSphere Studio Application Developer and WebSphere Application Server. http://www7b.software.ibm.com/wsdd/library/techarticles/-0206\_robinson/robinson.html.
|
| |
26
|
|
| |
27
|
Tomcat. http://jakarta.apache.org/tomcat/.
|
| |
28
|
Visigenic. http://www.borland.com/corba/index.html.
|
| |
29
|
WebSphere application server. http://www.ibm.com/software/websphere.
|
| |
30
|
|
| |
31
|
Xerces. http://xml.apache.org/.
|
|