skip to main content
10.1145/2245276.2232058acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

A type system for checking specialization of packages in object-oriented programming

Published: 26 March 2012 Publication History

Abstract

Large object-oriented software systems are usually structured using modules or packages to enable large-scale development using clean interfaces that promote encapsulation and information hiding. However, in most OO languages, package interfaces (or signatures) are only implicitly defined.
In this paper, we propose explicit package signatures that allow for modularly type-checking packages. We show how the signatures can be derived from packages and define a checkable specialization relation for package signatures. As main contribution, we show that if the package signatures of a new component version Cnew specialize the signatures of the old version Cold, then Cnew type-checks in all contexts in which Cold type-checks. That is, we extend checking of interface types to the level of packages.

References

[1]
D. Ancona and E. Zucca. True modules for Java-like languages. In ECOOP, pages 354--380, 2001.
[2]
A. Buckley. JSR 294 and module systems. http://blogs.sun.com/abuckley/en_US/entry/jsr_294_and_module_systems.
[3]
J. Corwin, D. F. Bacon, D. Grove, and C. Murthy. MJ: A rational module system for Java and its applications. In OOPSLA, pages 241--254, 2003.
[4]
F. Damiani, A. Poetzsch-Heffter, and Y. Welsch. A type system for checking specialization of packages in object-oriented programming. Technical Report 386/11, University of Kaiserslautern, October 2011. https://softech.cs.uni-kl.de/Homepage/PublikationsDetail?id=174.
[5]
J. des Rivières. Evolving Java-based APIs. http://wiki.eclipse.org/Evolving_Java-based_APIs.
[6]
D. Dig and R. Johnson. How do APIs evolve? A story of refactoring. Journal of Software Maintenance and Evolution, pages 83--107, 2006.
[7]
Eclipse PDE API Tools. http://www.eclipse.org/pde/pde-api-tools/.
[8]
ECMA. C# Language Specification (Standard ECMA-334, 4th edition). http://www.ecma-international.org/publications/standards/Ecma-334.htm.
[9]
J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification, Third Edition. The Java Series. Addison-Wesley, Boston, Mass., 2005.
[10]
C. Grothoff, J. Palsberg, and J. Vitek. Encapsulating objects with confined types. In OOPSLA, pages 241--253, 2001.
[11]
A. Igarashi, B. Pierce, and P. Wadler. Featherweight Java: A minimal core calculus for Java and GJ. ACM TOPLAS, 23(3): 396--450, 2001.
[12]
A. Jeffrey and J. Rathke. Java Jr.: Fully abstract trace semantics for a core Java language. In ESOP, pages 423--438, 2005.
[13]
JSR 277: Java Module System. http://jcp.org/en/jsr/detail?id=277.
[14]
JSR 294: Improved Modularity Support in the Java Programming Language. http://jcp.org/en/jsr/detail?id=294.
[15]
S. McDirmid, M. Flatt, and W. Hsieh. Jiazzi: New age components for old fashioned Java. In OOPSLA, pages 211--222, 2001.
[16]
P. Müller and A. Poetzsch-Heffter. Kapselung und Methodenbindung: Javas Designprobleme und ihre Korrektur. In Java-Informations-Tage, pages 1--10, 1998.
[17]
O. Nierstrasz. A survey of object-oriented concepts. In Object-Oriented Concepts, Databases, and Applications, pages 3--21. 1989.
[18]
OSGi Service Platform. http://www.osgi.org/.
[19]
Project Jigsaw. http://openjdk.java.net/projects/jigsaw/.
[20]
N. Schirmer. Analysing the Java package/access concepts in Isabelle/HOL. Concurrency and Computation: Practice and Experience, 16(7): 689--706, 2004.
[21]
R. Strnisa, P. Sewell, and M. J. Parkinson. The Java module system: core design and semantic definition. In OOPSLA, pages 499--514, 2007.
[22]
Y. Welsch and A. Poetzsch-Heffter. Full abstraction at package boundaries of object-oriented languages. In SBMF 2011, LNCS, pages 28--43. Springer, 2011.
[23]
M. Zenger. KERIS: Evolving software with extensible modules. Journal of Software Maintenance, 17(5): 333--362, 2005.

Cited By

View all
  • (2017)Survey of the state of art based on PICOC about the use of artificial intelligence tools and expert systems to manage and generate tourist packages2017 International Conference on Infocom Technologies and Unmanned Systems (Trends and Future Directions) (ICTUS)10.1109/ICTUS.2017.8286021(290-296)Online publication date: Dec-2017
  • (2014)A fully abstract trace-based semantics for reasoning about backward compatibility of class librariesScience of Computer Programming10.1016/j.scico.2013.10.00292(129-161)Online publication date: Oct-2014
  • (2012)Verifying backwards compatibility of object-oriented libraries using BoogieProceedings of the 14th Workshop on Formal Techniques for Java-like Programs10.1145/2318202.2318209(35-41)Online publication date: 12-Jun-2012

Index Terms

  1. A type system for checking specialization of packages in object-oriented programming

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    SAC '12: Proceedings of the 27th Annual ACM Symposium on Applied Computing
    March 2012
    2179 pages
    ISBN:9781450308571
    DOI:10.1145/2245276
    • Conference Chairs:
    • Sascha Ossowski,
    • Paola Lecca
    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 March 2012

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Java
    2. modularity
    3. package signature
    4. package specialization
    5. type-checking

    Qualifiers

    • Research-article

    Conference

    SAC 2012
    Sponsor:
    SAC 2012: ACM Symposium on Applied Computing
    March 26 - 30, 2012
    Trento, Italy

    Acceptance Rates

    SAC '12 Paper Acceptance Rate 270 of 1,056 submissions, 26%;
    Overall Acceptance Rate 1,650 of 6,669 submissions, 25%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)1
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 15 Sep 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2017)Survey of the state of art based on PICOC about the use of artificial intelligence tools and expert systems to manage and generate tourist packages2017 International Conference on Infocom Technologies and Unmanned Systems (Trends and Future Directions) (ICTUS)10.1109/ICTUS.2017.8286021(290-296)Online publication date: Dec-2017
    • (2014)A fully abstract trace-based semantics for reasoning about backward compatibility of class librariesScience of Computer Programming10.1016/j.scico.2013.10.00292(129-161)Online publication date: Oct-2014
    • (2012)Verifying backwards compatibility of object-oriented libraries using BoogieProceedings of the 14th Workshop on Formal Techniques for Java-like Programs10.1145/2318202.2318209(35-41)Online publication date: 12-Jun-2012

    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