[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
article

MJ: a rational module system for Java and its applications

Published: 26 October 2003 Publication History

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

[1]
Ancona, D., and Zucca, E. True modules for Java-like languages. In 15th European Conference on Object-Oriented Programming (2001).]]
[2]
Barnes, J. Programming in Ada 95. Addison-Wesley, 1996.]]
[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]
Clifton, C., Leavens, G. T., Chambers, C., and Millstein, T. MultiJava: modular open classes and symmetric multiple dispatch for Java. ACM SIGPLAN Notices 35, 10 (Oct. 2000), 130--145. Published as part of the Proceedings of OOPSLA'00.]]
[5]
Corba. http://www.omg.org/gettingstarted/corbafaq.htm.]]
[6]
Debian. http://www.debian.org/.]]
[7]
Detlefs, D., and Agesen, O. Inlining of virtual methods. In 13th European Conference on Object-Oriented Programming (June 1999), pp. 258--278.]]
[8]
Eclipse. http://www.eclipse.org.]]
[9]
Findler, R. B., and Flatt, M. Modular object-oriented programming with units and mixins. ACM SIGPLAN Notices 34, 1 (Jan. 1999), 94--104.]]
[10]
Advanced classloading in J2EE. http://www.theserverside.com/resources/articles/AdvancedClassLoading/article.html.]]
[11]
Flatt, M., and Felleisen, M. Units: Cool modules for HOT languages. ACM SIGPLAN Notices 33, 5 (May 1998), 236--248. Published as part of the Proceedings of PLDI'98.]]
[12]
Gosling, J., Joy, B., and Steele, G. The Java Language Specification. Addison Wesley, 1996.]]
[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]
Ishizaki, K., Kawahito, M., Yasue, T., Komatsu, H., and Nakatani, T. A study of devirtualization techniques for a Java Just-In-Time compiler. ACM SIGPLAN Notices 35, 10 (Oct. 2000), 294--310. Published as part of the Proceedings of OOPSLA'00.]]
[17]
Jdbc drivers: How do you know what you need? http://archive.devx.com/dbzone/articles/dd_jdbc/sosinsky-2.asp.]]
[18]
Liang, S., and Bracha, G. Dynamic class loading in the Java Virtual Machine. ACM SIGPLAN Notices 33, 10 (Oct. 1998), 36--44.]]
[19]
Lindholm, T., and Yellin, F. The Java Virtual Machine Specification Second Edition. The Java Series. Addison-Wesley, 1999.]]
[20]
MacQueen, D. Modules for standard ml. In Proceedings of ACM Conference on Lisp and Functional Programming (1984), pp. 409--423.]]
[21]
McDirmid, S., Flatt, M., and Hsieh, W. C. Jiazzi: new-age components for old-fashioned Java. ACM SIGPLAN Notices 36, 11 (Nov. 2001), 211--222. Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).]]
[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]
Milner, R., Tofte, M., and Harper, R. The Definition of Standard ML. MIT Press, 1990.]]
[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]
Seco, J. C., and Caires, L. A basic model of typed components. In 14th European Conference on Object-Oriented Programming (2000).]]
[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]
Wirth, N. Programming in Modula-2. Springer-Verlag, 1983.]]
[31]
Xerces. http://xml.apache.org/.]]

Cited By

View all
  • (2018)How Java APIs break - An empirical studyInformation and Software Technology10.1016/j.infsof.2015.02.01465:C(129-146)Online publication date: 30-Dec-2018
  • (2018)What Java developers know about compatibility, and why this mattersEmpirical Software Engineering10.1007/s10664-015-9389-121:3(1371-1396)Online publication date: 27-Dec-2018
  • (2014)Broken promises: An empirical study into evolution problems in Java programs caused by library upgrades2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE)10.1109/CSMR-WCRE.2014.6747226(64-73)Online publication date: Feb-2014
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 38, Issue 11
Special Issue: Proceedings of the OOPSLA '03 conference
November 2003
417 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/949343
Issue’s Table of Contents
  • cover image ACM Conferences
    OOPSLA '03: Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
    October 2003
    430 pages
    ISBN:1581137125
    DOI:10.1145/949305
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 26 October 2003
Published in SIGPLAN Volume 38, Issue 11

Check for updates

Author Tags

  1. Java
  2. components
  3. language design
  4. modularity

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)0
Reflects downloads up to 11 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2018)How Java APIs break - An empirical studyInformation and Software Technology10.1016/j.infsof.2015.02.01465:C(129-146)Online publication date: 30-Dec-2018
  • (2018)What Java developers know about compatibility, and why this mattersEmpirical Software Engineering10.1007/s10664-015-9389-121:3(1371-1396)Online publication date: 27-Dec-2018
  • (2014)Broken promises: An empirical study into evolution problems in Java programs caused by library upgrades2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE)10.1109/CSMR-WCRE.2014.6747226(64-73)Online publication date: Feb-2014
  • (2013)Software Components Compatibility Verification Based on Static Byte-Code AnalysisProceedings of the 2013 39th Euromicro Conference on Software Engineering and Advanced Applications10.1109/SEAA.2013.58(145-152)Online publication date: 4-Sep-2013
  • (2022)A Search-Based Approach on Metaheuristic Algorithm for Software Modularization to optimize Software Modularity2022 6th International Conference on Computing Methodologies and Communication (ICCMC)10.1109/ICCMC53470.2022.9753800(1440-1450)Online publication date: 29-Mar-2022
  • (2021)ModGuard : Identifying Integrity & Confidentiality Violations in Java ModulesIEEE Transactions on Software Engineering10.1109/TSE.2019.293133147:8(1656-1667)Online publication date: 1-Aug-2021
  • (2018)Optimizing Software Modularity with Minimum Possible VariationsJournal of Intelligent Systems10.1515/jisys-2018-023129:1(1135-1150)Online publication date: 4-Dec-2018
  • (2012)A type system for checking specialization of packages in object-oriented programmingProceedings of the 27th Annual ACM Symposium on Applied Computing10.1145/2245276.2232058(1737-1742)Online publication date: 26-Mar-2012
  • (2011)The road to feature modularity?Proceedings of the 15th International Software Product Line Conference, Volume 210.1145/2019136.2019142(1-8)Online publication date: 21-Aug-2011
  • (2010)Modules as objects in newspeakProceedings of the 24th European conference on Object-oriented programming10.5555/1883978.1884007(405-428)Online publication date: 21-Jun-2010
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media