Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/949305.949326acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

MJ: a rational module system for Java and its applications

Published: 26 October 2003 Publication History
  • Get Citation Alerts
  • 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
    • (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
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    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
    • 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
    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]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 26 October 2003

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

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

    Qualifiers

    • Article

    Conference

    OOPSLA03
    Sponsor:

    Acceptance Rates

    OOPSLA '03 Paper Acceptance Rate 26 of 147 submissions, 18%;
    Overall Acceptance Rate 268 of 1,244 submissions, 22%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)4
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 11 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (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
    • (2010)Composable thread coloringACM SIGPLAN Notices10.1145/1837853.169348545:5(233-244)Online publication date: 9-Jan-2010
    • (2010)Composable thread coloringProceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming10.1145/1693453.1693485(233-244)Online publication date: 9-Jan-2010
    • (2010)Examining OSGi from an ideal enterprise software component model2010 IEEE International Conference on Software Engineering and Service Sciences10.1109/ICSESS.2010.5552372(119-123)Online publication date: Jul-2010
    • (2010)Using AOP to ensure component interactions in component-based software2010 The 2nd International Conference on Computer and Automation Engineering (ICCAE)10.1109/ICCAE.2010.5452043(518-523)Online publication date: Feb-2010
    • Show More Cited By

    View Options

    Get Access

    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