Abstract
The language JavaGI extends Java 1.5 conservatively by a generalized interface mechanism. The generalization subsumes retroactive and type-conditional interface implementations, binary methods, symmetric multiple dispatch, interfaces over families of types, and static interface methods. These features make certain coding patterns redundant, increase the expressiveness of the type system, and permit solutions to extension and integration problems with components in binary form, for which previously several unrelated extensions had been suggested.
This article explains JavaGI and motivates its design. Moreover, it formalizes a core calculus for JavaGI and proves type soundness, decidability of typechecking, and determinacy of evaluation. The article also presents the implementation of a JavaGI compiler and an accompanying run-time system. The compiler, based on the Eclipse Compiler for Java, offers mostly modular static typechecking and fully modular code generation. It defers certain well-formedness checks until load time to increase flexibility and to enable full support for dynamic loading. Benchmarks show that the code generated by the compiler offers good performance. Several case studies demonstrate the practical utility of the language and its implementation.
- Allen, E., Hallett, J. J., Luchangco, V., Ryu, S., and Steele Jr., G. L. 2007. Modular multiple dispatch with multiple inheritance. In Proceedings of the ACM Symposium on Applied Computing (SAC). 1117--1121. ACM Press. Google Scholar
Digital Library
- Ancona, D. and Zucca, E. 2001. True modules for Java-like languages. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 2072. 354--380. Google Scholar
Digital Library
- Apache Software Foundation. 2009. Apache Tomcat. http://tomcat.apache.org/.Google Scholar
- Apple Inc. 2009. The Objective-C programming language. http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf.Google Scholar
- AspectJ Team. 2009a. The AspectJ development environment guide. http://www.eclipse.org/aspectj/doc/released/devguide/index.html.Google Scholar
- AspectJ Team. 2009b. The AspectJ programming guide. http://www.eclipse.org/aspectj/doc/released/progguide/index.html.Google Scholar
- Baader, F. and Nipkow, T. 1998. Term Rewriting and All That. Cambridge University Press. Google Scholar
Digital Library
- Baumgartner, G., Jansche, M., and Läufer, K. 2002. Half & Half: Multiple dispatch and retroactive abstraction for Java. Tech. rep. OSU-CISRC-5/01-TR08, Ohio State University. http://www.csc.lsu.edu/~gb/Brew/Publications/HalfNHalf.pdf.Google Scholar
- Bergel, A., Ducasse, S., and Wuyts, R. 2003. Class boxes: A minimal module model supporting local rebinding. In Proceedings of the Joint Modular Languages Conference (JMLC). Lecture Notes in Computer Science, vol. 2789, Springer-Verlag, 122--131.Google Scholar
- Bergel, A., Ducasse, S., and Nierstrasz, O. 2005a. Class box/J: Controlling the scope of change in Java. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 177--189. Google Scholar
Digital Library
- Bergel, A., Ducasse, S., Nierstrasz, O., and Wuyts, R. 2005b. Classboxes: Controlling visibility of class extensions. Comp. Lang. Syst. Struct. 31, 3--4, 107--126. Google Scholar
Digital Library
- Bergel, A., Ducasse, S., Nierstrasz, O., and Wuyts, R. 2008. Stateful traits and their formalization. Comp. Lang. Syst. Struct. 34, 2--3, 83--108. Google Scholar
Digital Library
- Bernardy, J.-P., Jansson, P., Zalewski, M., Schupp, S., and Priesnitz, A. 2008. A comparison of C++ concepts and Haskell type classes. In Proceedings of the ACM SIGPLAN Workshop on Generic Programming. ACM Press, 37--48. Google Scholar
Digital Library
- Blackburn, S. M., Garner, R., Hoffmann, C., Khang, A. M., McKinley, K. S., Bentzur, R., Diwan, A., Feinberg, D., Frampton, D., Guyer, S. Z., Hirzel, M., Hosking, A., Jump, M., Lee, H., Moss, J. E. B., Moss, B., Phansalkar, A., Stefanović, D., VanDrunen, T., von Dincklage, D., and Wiedermann, B. 2006. The DaCapo benchmarks: Java benchmarking development and analysis. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 169--190. Google Scholar
Digital Library
- Bonniot, D. 2003. Using kinds to type partially-polymorphic methods. Electron. Notes. Theor. Comput. Sci. 75, 21--40,Google Scholar
Cross Ref
- Bonniot, D., Keller, B., and Barber, F. 2003. The Nice user’s manual. http://nice.sourceforge.net/manual.html.Google Scholar
- Bono, V., Damiani, F., and Giachino, E. 2008. On traits and types in a Java-like setting, In Proceedings of the IFIP International Conference on Theoretical Computer Science (TCS). SpringerVerlag, 367--382.Google Scholar
- Bourdoncle, F. and Merz, S. 1997. Type checking higher-order polymorphic multi-methods, In Proceedings of the ACM SICPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 302--315. Google Scholar
Digital Library
- Bracha, G. 2004. Generics in the Java programming language. http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf.Google Scholar
- Bracha, G. and Cook, W. 1990. Mixin-based inheritance. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 303--311. Google Scholar
Digital Library
- Bracha, G., Odersky, M., Stoutamire, D., and Wadler, P. 1998. Making the future safe for the past: Adding genericity to the Java programming language, In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 183--200. Google Scholar
Digital Library
- Bruce, K. B. and Foster, J. N. 2004. LOOJ: Weaving LOOM into Java. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 389--413.Google Scholar
- Bruce, K. B., Cardelli, L., Castagna, G., Eifrig, J., Smith, S. F., Trifonov, V., Leavens, G. T., and Pierce, B. C. 1995. On binary methods. Theor. Pract. Obj. Syst. 1, 3, 221--242. Google Scholar
Digital Library
- Bruce, K. B., Schuett, A., and van Gent, R. 1995. PolyTOIL: A type-safe polymorphic object-oriented language, In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 952. Springer-Verlag, 27--51. Google Scholar
Digital Library
- Bruce, K. B., Petersen, L., and Fiech, A. 1997. Subtyping is not a good ”match” for object-oriented languages, In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 104--127.Google Scholar
- Bruce, K. B., Odersky, M., and Wadler, P. 1998. A statically safe alternative to virtual types, In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 523--549. Google Scholar
Digital Library
- Bruce, K. B., Schuett, A., van Gent, R., and Fiech, A. 2003. PolyTOIL: A type-safe polymorphic object-oriented language. ACM Trans. Program. Lang. Syst. 25, 2, 225--290. Google Scholar
Digital Library
- Buchi, M. and Weck, W. 1998. Compound types for Java, In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 362--373. Google Scholar
Digital Library
- Cameron, N., Drossopoulou, S., and Ernst, E. 2008. A model for Java with wildcards, In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). 2--26. Google Scholar
Digital Library
- Canning, P., Cook, W., Hill, W., Olthoff, W., and Mitchell, J. C. 1989. F-bounded polymorphism for object-oriented programming, In Proceedings of the Conference on Functional Programming Languages and Computer Architecture (FPCA). ACM Press, 273--280. Google Scholar
Digital Library
- Chakravarty, M. M. T., Keller, G., and Peyton Jones, S. 2005a. Associated type synonyms, In Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP). ACM Press, 241--253. Google Scholar
Digital Library
- Chakravarty, M. M. T., Keller, G., Peyton Jones, S., and Marlow, S. 2005b. Associated types with class, In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 1--13. Google Scholar
Digital Library
- Chambers, C. 1992. Object-oriented multi-methods in Cecil. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 615, Springer-Verlag, 33--56. Google Scholar
Digital Library
- Chambers, C. and Leavens, G. T. 1996. BeCecil, a core object-oriented language with block structure and multimethods: Semantics and typing, Tech. rep. TR-96-12-02, Department of Computer Science and Engineering, University of Washington.Google Scholar
- Chambers, C. and the Cecil Group 2004. The Cecil language: Specification and rationale, version 3.2. http://www.cs.washington.edu/research/projects/cecil/pubs/cecil-spec.html.Google Scholar
- Clark, J. and DeRose, S. 1999. XML path language (XPath), version 1.0. http://www.w3.org/TR/xpath.Google Scholar
- Clifton, C., Leavens, G. T., Chambers, C., and Millstein, T. 2000. MultiJava: Modular open classes and symmetric multiple dispatch for Java, In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 130--145. Google Scholar
Digital Library
- Clifton, C., Millstein, T., Leavens, G. T., and Chambers, C. 2006. MultiJava: Design rationale, compiler implementation, and applications. ACM Trans. Program. Lang. Syst. 28, 3, 517--575. Google Scholar
Digital Library
- Cook, W. R. 1989. A proposal for making Eiffel type-safe. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Cambridge University Press, 57--70.Google Scholar
Digital Library
- Cook, W. R. 1991. Object-oriented programming versus abstract data types. In Proceedings of the REX School/Workshop on Foundations of Object-Oriented Languages. Lecture Notes in Computer Science, vol. 489, Springer-Verlag, 151--178. Google Scholar
Digital Library
- Cook, W. R., Hill, W., and Canning, P. S. 1990. Inheritance is not subtyping. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 125--235. Google Scholar
Digital Library
- Day, M., Gruber, R., Liskov, B., and Myers, A. C. 1995. Subtypes vs. where clauses: Constraining parametric polymorphism. In Proceedings of the Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 156--168. Google Scholar
Digital Library
- dom4j. 2008. Dom4j - An open source XML framework for Java. http://wwy.dom4j.org/.Google Scholar
- Ducasse, S. 2009. Putting traits in perspective. In Proceedings of the International Conference on Software Engineering (JCSE). Lecture Notes in Computer Science, vol. 5634, Springer-Verlag, 5--8. Google Scholar
Digital Library
- Ducasse, S., Nierstrasz, O., Scharli, N., Wuyts, R., and Black, A. P. 2006. Traits: A mechanism for fine-grained reuse. ACM Trans. Program. Lang. Syst. 28, 2, 331--388. Google Scholar
Digital Library
- Eclipse Foundation 2004. Eclipse public license. http://www.eclipse.org/legal/epl-vl0.html.Google Scholar
- Eclipse Foundation 2008. Eclipse compiler for Java. http://download.eclipse.org/eclipse/downloads/drops/R-3.4.1-200809111700/index.php.Google Scholar
- Eclipse. 2009. Eclipse - An open development platform. http://www.eclipse.org/.Google Scholar
- ECMA International 2002. C# language specification 2nd Ed. http://www.ecma-international.org/publications/standards/Ecma-334-arch.htm.Google Scholar
- ECMA International 2005. Standard 334: C# language specification 3rd Ed. http://www.ecma-international.org/publications/standards/Ecma-334-arch.htm.Google Scholar
- ECMA International 2006. Standard 335: Common language infrastructure 4th Ed. http: //www.ecma-international.org/publications/standards/Ecma-335.htm.Google Scholar
- Emir, B., Kennedy, A., Russo, C. V., and Yu, D. 2006. Variance and generalized constraints for C# generics. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 4067, Springer-Verlag, 279--303. Google Scholar
Digital Library
- Ernst, E. 1999. gbeta - a language with virtual attributes, block structure, and propagating, dynamic inheritance. Ph.D. thesis, Department of Computer Science, University of Aarhus, Denmark.Google Scholar
- Ernst, E. 2001. Family polymorphism. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 2072, Springer-Verlag, 303--326. Google Scholar
Digital Library
- Ernst, E. 2003. Higher-order hierarchies. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 2743, Springer-Verlag, 303--329.Google Scholar
Digital Library
- Flatt, M. and Felleisen, M. 1998. Units: Cool modules for HOT languages. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDJ). ACM Press, 236--248. Google Scholar
Digital Library
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. Google Scholar
Digital Library
- Garcia, R., Jarvi, J., Lumsdaine, A., Siek, J. G., and Willcock, J. 2003. A comparative study of language support for generic programming. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 115--134. Google Scholar
Digital Library
- Garcia, R., Jarvi, J., Lumsdaine, A., Siek, J., and Willcock, J. 2007. An extended comparative study of language support for generic programming. J. Funct. Program. 17, 02, 145--205. Google Scholar
Digital Library
- Gasiunas, V., Mezini, M., and Ostermann, K. 2007. Dependent classes.In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 133--152. Google Scholar
Digital Library
- Gil, J. and Maman, I. 2008. Whiteoak: Introducing structural typing into Java. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 73--90. Google Scholar
Digital Library
- Girard, J.-Y. 1972. Interpretation fonctionnelle et elimination des coupures dans l’arithmetique d’ordre superieur. Ph.D. thesis, University of Paris VII.Google Scholar
- Goldberg, A. and Robson, D. 1989. Smalltalk 80: The Language. Addison-Wesley. Google Scholar
Digital Library
- Gosling, J., Joy, B., Steele, G., and Bracha, G. 2005. The Java Language Specification 3rd Ed. Addison-Wesley. Google Scholar
Digital Library
- Gregor, D., Järvi, J., Siek, J., Stroustrup, B., Dos Reis, G., and Lumsdaine, A. 2006. Concepts: Linguistic support for generic programming in C++. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 291--310. Google Scholar
Digital Library
- Hall, C. V., Hammond, K., Peyton Jones, S. L., and Wadler, P. L. 1996. Type classes in Haskell. ACM Trans. Program. Lang. Syst. 18, 2, 109--138. Google Scholar
Digital Library
- Harrison, W. and Ossher, H. 1993. Subject-oriented programming: A critique of pure objects. In Proceedings of the Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 411--428. Google Scholar
Digital Library
- Helm, R., Holland, I. M., and Gangopadhyay, D. 1990. Contracts: Specifying behavioral compositions in object-oriented systems. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 169--180. Google Scholar
Digital Library
- Hölzle, U. 1993. Integrating independently-developed components in object-oriented languages. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 707, Springer-Verlag, 36--56. Google Scholar
Digital Library
- Huang, S. S., Zook, D., and Smaragdakis, Y. 2007. cJ: Enhancing Java with safe type conditions. In Proceedings of the International Conference on Aspect-Oriented Software Development (AOSD). ACM Press, 185--198. Google Scholar
Digital Library
- Hummel, O. and Atkinson, C. 2009. The managed adapter pattern: Facilitating glue code generation for component reuse. In Proceedings of the International Conference on Software Reuse (ICSR). Springer-Verlag, 211--224. Google Scholar
Digital Library
- Hunter, J. and McLaughlin, B. 2007. JDOM. http://www.jdom.org/.Google Scholar
- Igarashi, A. and Viroli, M. 2007. Variant path types for scalable extensibility. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 113--132. Google Scholar
Digital Library
- Igarashi, A., Pierce, B. C., and Wadler, P. 2001. Featherweight Java: A minimal core calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23, 3, 396--450. Google Scholar
Digital Library
- Ingalls, D. H. H. 1986. A simple technique for handling multiple polymorphism. In Proceedings of the Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press. Google Scholar
Digital Library
- Järvi, J., Willcock, J., and Lumsdaine, A. 2003. Concept-controlled polymorphism. In Proceedings of the International Conference on Generative Programming and Component Engineering (GPCE). Lecture Notes in Computer Science, vol. 2830, Springer-Verlag, 228--244. Google Scholar
Digital Library
- Järvi, J., Willcock, J., and Lumsdaine, A. 2005. Associated types and constraint propagation for mainstream object-oriented generics. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 1--19. Google Scholar
Digital Library
- Jaxen. 2008. Jaxen---A universal Java XPath engine. http://jaxen.codehaus.org/.Google Scholar
- Jones, M. P. 1993. A system of constructor classes: Overloading and implicit higher-order polymorphism. In Proceedings of the Conference on Functional Programming Languages and Computer Architecture (FPCA). ACM Press, 52--61. Google Scholar
Digital Library
- Jones, M. P. 1994. Qualified Types: Theory and Practice. Cambridge University Press. Google Scholar
Cross Ref
- Jones, M. P. 2000. Type classes with functional dependencies. In Proceedings of the European Symposium on Programming (ESOP). Lecture Notes in Computer Science, vol. 1782, Springer-Verlag, 230--244. Google Scholar
Digital Library
- Kaes, S. 1988. Parametric overloading in polymorphic programming languages. In Proceedings of the European Symposium on Programming (ESOP). Lecture Notes in Computer Science, vol. 300, Springer-Verlag, 131--144. Google Scholar
Digital Library
- Kahl, W. and Scheffczyk, J. 2001. Named instances for Haskell type classes. In Proceedings of the ACM SIGPLAN Haskell Workshop.Google Scholar
- Kamina, T. and Tamai, T. 2007. Lightweight scalable components. In Proceedings of the International Conference on Generative Programming and Component Engineering (GPCE). ACM Press, 145--154. Google Scholar
Digital Library
- Kamina, T. and Tamai, T. 2008. Lightweight dependent classes. In Proceedings of the International Conference on Generative Programming and Component Engineering (GPCE). ACM Press, 113--124. Google Scholar
Digital Library
- Keller, R. and Hölzle, U. 1998. Binary component adaptation. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 1445, 307--329. Google Scholar
Digital Library
- Kennedy, A. and Russo, C. 2005. Generalized algebraic data types and object-oriented programming. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 21--40. Google Scholar
Digital Library
- Kennedy, A. and Syme, D. 2001. Design and implementation of generics for the .NET common language runtime. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI). ACM Press, 1--12. Google Scholar
Digital Library
- Kennedy, A. J. and Pierce, B. C. 2007. On decidability of nominal subtyping with variance. In Proceedings of the International Workshop on Foundations and Developments of Object-Oriented Languages (FOOL/WOOD).Google Scholar
- Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J.-M., and Irwin, J. 1997. Aspect-oriented programming. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 1241, 220--242.Google Scholar
Cross Ref
- Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. G. 2001. An overview of AspectJ. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 2072, 327--353. Google Scholar
Digital Library
- Kiselyov, O. and Lämmel, R. 2005. Haskell’s overlooked object system. http://homepages.cwi.nl/~ralf/00Haskell/.Google Scholar
- Kiselyov, O. and Shan, C.-C. 2004. Functional pearl: Implicit configurations-or, type classes reflect the values of types. In Proceedings of the ACM SIGPLAN Haskell Workshop. 33--44. Google Scholar
Digital Library
- Kiselyov, O., Lämmel, R., and Schupke, K. 2004. Strongly typed heterogeneous collections. In Proceedings of the ACM SIGPLAN Haskell Workshop. 96--107. Google Scholar
Digital Library
- Lämmel, R. and Ostermann, K. 2006. Software extension and integration with type classes. In Proceedings of the International Conference on Generative Programming and Component Engineering (GPCE). ACM Press, 161--170. Google Scholar
Digital Library
- Läufer, K., Baumgartner, G., and Russo, V. F. 2000. Safe structural conformance for Java. Comput. J. 43, 6,469--481.Google Scholar
Cross Ref
- Leavens, G. T. and Millstein, T. D. 1998. Multiple dispatch as dispatch on tuples. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 374--387. Google Scholar
Digital Library
- Leroy, X. 2008. The Objective Caml system release 3.11. http://caml.inria.fr/pub/docs/manual-ocaml/index.html.Google Scholar
- Lindholm, T. and Yellin, F. 1999. The Java Virtual Machine Specification 2nd Ed. Addison-Wesley. Google Scholar
Digital Library
- Liquori, L. and Spiwack, A. 2008. FeatherTrait: A modest extension of Featherweight Java. ACM Trans. Program. Lang. Syst. 30, 2, 1--32. Google Scholar
Digital Library
- Liskov, B., Snyder, A., Atkinson, R., and Schaffert, C. 1977. Abstraction mechanisms in CLU. Comm. ACM 20, 8, 564--576. Google Scholar
Digital Library
- Liskov, B., Atkinson, R., Bloom, T., Moss, E., Schaffert, J. C., Scheifler, R., and Snyder, A. 1981. CLU Reference Manual. Lecture Notes in Computer Science, vol. 114, Springer-Verlag. Google Scholar
Digital Library
- Liskov, B., Curtis, D., Day, M., Ghemawat, S., Gruber, R., Johnson, P., and Myers, A. C. 1995. Theta reference manual, preliminary version. http://www.pmg.csail.mit.edu/papers/thetaref.ps.gz.Google Scholar
- Litvinov, V. 1998. Constraint-based polymorphism in Cecil: Towards a practical and static type system. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 388--411. Google Scholar
Digital Library
- Litvinov, V. 2003. Constraint-bounded polymorphism: An expressive and practical type system for object-oriented languages. Ph.D. thesis, University of Washington. Google Scholar
Digital Library
- Madsen, O. and Møller-Pedersen, B. 1989. Virtual classes: A powerful mechanism in object-oriented programming. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 397--406. Google Scholar
Digital Library
- Malayeri, D. and Aldrich, J. 2008. Integrating nominal and structural subtyping. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 5142, 260--284. Google Scholar
Digital Library
- Malayeri, D. and Aldrich, J. 2009. Is structural subtyping useful? An empirical study. In Proceedings of the European Symposium on Programming (ESOP). Lecture Notes in Computer Science, vol. 5502, Springer-Verlag, 95--111. Google Scholar
Digital Library
- Mattsson, M., Bosch, J., and Fayad, M. E. 1999. Framework integration problems, causes, solutions. Comm. ACM 42, 10,80--87. Google Scholar
Digital Library
- Mazurak, K. and Zdancewic, S. 2006. Type inference for Java 5: Wildcards, F-bounds, and undecidability. http://www.cis.upenn.edu/~stevez/note.html.Google Scholar
- McDirmid, S., Flatt, M., and Hsieh, W. C. 2001. Jiazzi: New-age components for old-fashioned Java. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 211--222. Google Scholar
Digital Library
- McNamara, B. and Smaragdakis, Y. 2000. Static interfaces in C++. In Proceedings of the Workshop on C++ Template Programming, Informal Proceedings.Google Scholar
- Meyer, B. 1992. Eiffel: The Language. Prentice-Hall. Google Scholar
Digital Library
- Meyer, B. 1995. Static typing. ACM SIGPLAN OOPS Messenger 6, 4, 20--29. Google Scholar
Digital Library
- Mezini, M. and Ostermann, K. 2002. Integrating independent components with on-demand remodularization. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 52--67. Google Scholar
Digital Library
- Mezini, M., Seiter, L., and Lieberherr, K. 2000. Component integration with pluggable composite adapters. In Software Architectures and Component Technology: The State of the Art in Research and Practice, M. Aksit Ed., Kluwer Academic Publishers.Google Scholar
- Millstein, T. D. and Chambers, C. 1999. Modular statically typed multimethods. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 1628, Springer-Verlag, 279--303. Google Scholar
Digital Library
- Millstein, T., Reay, M., and Chambers, C. 2003. Relaxed MultiJava: Balancing extensibility and modular typechecking. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 224--240. Google Scholar
Digital Library
- Milner, R., Tofte, M., Harper, R., and MacQueen, D. 1997. The Definition of Standard ML. MIT Press. Google Scholar
Digital Library
- Mohnen, M. 2002. Interfaces with default implementations in Java. In Proceedings of the Conference on the Principles and Practice of Programming in Java (PPPJ). ACM Press, 35--40. Google Scholar
Digital Library
- Moors, A., Piessens, F., and Odersky, M. 2008. Generics of a higher kind. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 423--438. Google Scholar
Digital Library
- Muschevici, R., Potanin, A., Tempero, E., and Noble, J. 2008. Multiple dispatch in practice. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 563--582. Google Scholar
Digital Library
- Myers, A. C., Bank, J. A., and Liskov, B. 1997. Parameterized types for Java. In Proceedings of theACM SICPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 132--145. Google Scholar
Digital Library
- Myers, N. 1996. A new and useful template technique: ”traits”. In C++ Gems, S. B. Lippman Ed., SIGS Publications, Inc., 451--457. Google Scholar
Digital Library
- MzScheme 2009. MzScheme---Core virtual machine for PLT Scheme. http://www.plt-scheme.org/software/mzscheme/.Google Scholar
- Nystrom, N., Chong, S., and Myers, A. C. 2004. Scalable extensibility via nested inheritance. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 99--115. Google Scholar
Digital Library
- Nystrom, N., Qi, X., and Myers, A. C. 2006. J&: Nested intersection for scalable software composition. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 21--36. Google Scholar
Digital Library
- Nystrom, N., Saraswat, V., Palsberg, J., and Grothoff, C. 2008. Constrained types for object-oriented languages. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 457--474. Google Scholar
Digital Library
- Odersky, M. 2009. The Scala language specification, version 2.7. http://www.scaIa-Iang,org/docu/files/ScalaReference.pdf.Google Scholar
- Odersky, M. and Zenger, M. 2005a. Independently extensible solutions to the expression problem. In Proceedings of the International Workshop on Foundations of Object-Oriented Languages (FOOL).Google Scholar
- Odersky, M. and Zenger, M. 2005b. Scalable component abstractions. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 41--58. Google Scholar
Digital Library
- Ossher, H. and Tarr, P. 1999. Using subject-oriented programming to overcome common problems in object-oriented software development/evolution. In Proceedings of the International Conference on Software Engineering (ICSE). 687-688. Google Scholar
Digital Library
- Ossher, H. and Tarr, P. 2000. Hyper/J: Multidimensional separation of concerns for Java. In Proceedings of the International Conference on Software Engineering (ICSE). ACM Press, 734--737. Google Scholar
Digital Library
- Ostermann, K. 2008. Nominal and structural subtyping in component-based programming. J. Obj. Techn. 7, 1, 121--145. http://www.jot.fm/issues/issue_2008_01/article4/.Google Scholar
Cross Ref
- Pedersen, C. H. 1989. Extending ordinary inheritance schemes to include generalization. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 407--417. Google Scholar
Digital Library
- Peyton Jones, S. (Ed.) 2003. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press.Google Scholar
- Peyton Jones, S., Jones, M., and Meijer, E. 1997. Type classes: An exploration of the design space, In Proceedings of the ACM SIGPLAN Haskell Workshop.Google Scholar
- Pierce, B. C. 2002. Types and Programming Languages. MIT Press. Google Scholar
Digital Library
- Pierce, B. C. (Ed.) 2005. Advanced Topics in Types and Programming Languages. MIT Press. Google Scholar
Digital Library
- Pirkelbauer, P., Solodkyy, Y., and Stroustrup, B. 2007. Open multi-methods for C++. In Proceedings of the International Conference on Generative Programming and Component Engineering (GPCE). ACM Press, 123--134. Google Scholar
Digital Library
- Plotkin, G. 1981. A structural approach to operational semantics. Tech. rep. DAIMI FN-19, Aarhus University, Denmark.Google Scholar
- Qi, X. and Myers, A. C. 2009. Sharing classes between families. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI). ACM Press, 281--292. Google Scholar
Digital Library
- Reis, G. D. and Stroustrup, B. 2006. Specifying C++ concepts. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 295--308. Google Scholar
Digital Library
- Rémy, D. and Vouillon, J. 1997. Objective ML: A simple object-oriented extension of ML. In Proceedings of the ACM SICPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 40--53. Google Scholar
Digital Library
- Rémy, D. and Vouillon, J. 1998a. Objective ML: An effective object-oriented extension to ML. Theor. Pract. Obj. Syst. 4, 1, 27--50. Google Scholar
Digital Library
- Rémy, D. and Vouillon, J. 1998b. On the (un)reality of virtual types. http://galliurn.inria.fr/~remy/work/virtual/virtual.ps.gz.Google Scholar
- Reynolds, J. C. 1974. Towards a theory of type structure. In Proceedings of the Programming Symposium, Proceedings Colloque sur la Programmation. Lecture Notes in Computer Science, vol. 19, Springer-Verlag, 408--425. Google Scholar
Digital Library
- Reynolds, J. C. 1975. User-defined types and procedural data structures as complementary approaches to data abstraction. In New Directions in Algorithmic Languages, S. A. Schumann Ed., INRIA.Google Scholar
- Reynolds, J. C. 1994. User-defined types and procedural data structures as complementary approaches to data abstraction. In Theoretical Aspects of Object-Oriented Programming: Types, Semantics, and Language Design, C. A. Gunter and J. C. Mitchell Eds., MIT Press, 13--23. Google Scholar
Digital Library
- Saito, C. and Igarashi, A. 2009. Self type constructors. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 263--282. Google Scholar
Digital Library
- Saito, C., Igarashi, A., and Viroli, M. 2008. Lightweight family polymorphism. J. Funct. Program. 18, 3, 285--331. Google Scholar
Digital Library
- Sakkinen, M. 1989. Disciplined inheritance. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Cambridge University Press, 39--56.Google Scholar
- Saraswat, V. 2009. Report on the programming language Xl0, version 2.0. http://dist.codehaus.org/xl0/docurnentation/languagespec/xl0-200.pdf.Google Scholar
- Sasitorn, J. and Cartwright, R. 2007. Component NextGen: A sound and expressive component framework for Java. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press. 153--170. Google Scholar
Digital Library
- Sekharaiah, K. C. and Ram, D. J. 2002. Object schizophrenia problem in object role system design. In Proceedings of the International Conference on Object-Oriented Information Systems (OOIS). Springer-Verlag, 494--506. Google Scholar
Digital Library
- Shalit, A. 1997. The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Programming Language. Addison-Wesley. Google Scholar
Digital Library
- Siek, J. G. 2005. A language for generic programming. Ph.D. thesis, Indiana University. Google Scholar
Digital Library
- Siek, J. and Lumsdaine, A. 2005. Essential language support for generic programming. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI). ACM Press, 73--84. Google Scholar
Digital Library
- Siek, J. G., Lee, L.-Q., and Lumsdaine, A. 2002. The Boost Graph Library: User Guide and Reference Manual. Addison-Wesley. Google Scholar
Digital Library
- Smith, C. and Drossopoulou, S. 2005. Chai: Typed traits in Java. In Proceedings of theEuropean Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 3586, Springer-Verlag, 543--576.Google Scholar
Cross Ref
- Smith, D. and Cartwright, R. 2008. Java type inference is broken: Can we fix it? In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 505--524. Google Scholar
Digital Library
- Steele, G. 1990. Common LISP: The Language 2nd Ed. Digital Press. Google Scholar
Digital Library
- Stepanov, A. and Lee, M. 1995. The standard template library. Tech. rep., WG21/N0482, ISO Programming Language C++ Project.Google Scholar
- Stoutamire, D. and Omohundro, S. 1996. The Sather 1.1 specification, Tech. rep. TR-96-012, International Computer Science Institute.Google Scholar
- Strniša, R., Sewell, P., and Parkinson, M. 2007. The Java module system: Core design and semantic definition. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 499--514. Google Scholar
Digital Library
- Sulzmann, M. 2006. Extracting programs from type class proofs. In Proceedings of the ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming (PPDP). ACM Press, 97--108. Google Scholar
Digital Library
- Sulzmann, M., Duck, G. J., Peyton Jones, S., and Stuckey, P. J. 2007. Understanding functional dependencies via constraint handling rules. J. Funct. Program. 17, 1, 83--129. Google Scholar
Digital Library
- Sun Microsystems. 2004a. The collections framework. http://java.sun.com/j2se/1.5.0/docs/guide/collections/.Google Scholar
- Sun Microsystems. 2004b. Java 2 platform standard edition 5.0 API specification. http://java.sun.com/j2se/l.5.0/docs/api/index.html.Google Scholar
- Sun Microsystems. 2006. JSR 277: Java module system. http://jcp.org/en/jsr/detail?id=277.Google Scholar
- Sun Microsystems. 2007. Java servlet specification, version 2.5. http://java.sun.com/products/servlet/.Google Scholar
- Sun Microsystems. 2008. Project Fortress website. http://projectfortress.sun.com/.Google Scholar
- Sun Microsystems. 2009. Java platform standard edition. http://java.sun.com/javase/.Google Scholar
- Szyperski, C. 1996. Independently extensible systems - Software engineering potential and challenges. In Proceedings of the Australasian Computer Science Conference (ACSC).Google Scholar
- Szyperski, C., Omohundro, S., and Murer, S. 1994. Engineering a programming language: The type and class system of Sather. In Proceedings of the International Conference on Programming Languages and Systems Architecture. Lecture Notes in Computer Science, vol. 782. Springer-Verlag, 208--227. Google Scholar
Digital Library
- Tarr, P., Ossher, H., Harrison, W., and Jr., S. M. 1999. N degrees of separation: Multidimensional separation of concerns. In Proceedings of the International Conference on Software Engineering (ICSE). 107--119. Google Scholar
Digital Library
- Thiemann, P. 2005. An embedded domain-specific language for type-safe server-side Webscripting. ACM Trans. Intern. Techn. 5, 1, 1--46. Google Scholar
Digital Library
- Thiemann, P. and Wehr, S. 2008. Interface types for Haskell. In Proceedings of the Asian Symposium on Programming Languages and Systems (APLAS). Lecture Notes in Computer Science, vol. 5636, Springer-Verlag, 256--272. Google Scholar
Digital Library
- Torgersen, M. 2004. The expression problem revisited: Four new solutions using generics. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 3086, 123--143.Google Scholar
Cross Ref
- Torgersen, M., Ernst, E., Hansen, C. P., von der Ahé, P., Bracha, G., and Gafter, N. 2004. Adding wildcards to the Java programming language. J. Obj. Techn. 3, 11, 97--116.Google Scholar
Cross Ref
- Trifonov, V. and Smith, S. 1996. Subtyping constrained types. In Proceedings of the International Symposium on Static Analysis (SAS). Lecture Notes in Computer Science, vol. 1145, Springer-Verlag, 349--365. Google Scholar
Digital Library
- Viroli, M. 2000. On the recursive generation of parametric types. Tech. rep. DEIS-LIA-OO-002, Universita di Bologna.Google Scholar
- Viroli, M. and Natali, A. 2000. Parametric polymorphism in Java: An approach to translation based on reflective features. In Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 146--165. Google Scholar
Digital Library
- Wadler, P. 1998. The expression problem. Post to the Java Genericity mailing list.Google Scholar
- Wadler, P. and Blott, S. 1989. How to make ad-hoc polymorphism less ad-hoc. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 60--76. Google Scholar
Digital Library
- Warth, A., Stanojevic, M., and Millstein, T. 2006. Statically scoped object adaptation with expanders. Proceedings of the ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, 37--56. Google Scholar
Digital Library
- Wehr, S. 2005. Problem with superclass entailment in “A Static Semantics for Haskell.” Post to the Haskell mailing list. http://www.haskell.org//pipermail/haskell/2005-0ctober/016695.html.Google Scholar
- Wehr, S. 2009. JavaGI homepage. http://www.informatik.uni-freiburg.de/~wehr/javagi.Google Scholar
- Wehr, S. 2010. JavaGI: A language with generalized interfaces. Ph.D. thesis, Technische Fakultiit der Albert-Ludwigs-Universität Freiburg im Breisgau, Germany. http://www.freidok.uni-freiburg.de/volltexte/7678/, URN: urn:nbn:de:bsz:25-opus-76785.Google Scholar
- Wehr, S. and Thiemann, P. 2008. Subtyping existential types. In Proceedings of the Workshop on Formal Techniques for Java-like Programs (FTfJP). 125--136.Google Scholar
- Wehr, S. and Thiemann, P. 2009a. JavaGI in the battlefield: Practical experience with generalized interfaces. In Proceedings of the ACM SIGPLAN International Conference on Generative Programming and Component Engineering (GPCE). ACM Press, 65--74. Google Scholar
Digital Library
- Wehr, S. and Thiemann, P. 2009b. On the decidability of subtyping with bounded existential types. In Proceedings of the Asian Symposium on Programming Languages and Systems (APLAS). Google Scholar
Digital Library
- Wehr, S., Lammel, R., and Thiemann, P. 2007. Generalized interfaces for Java. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 4609, Springer-Verlag, 347--372. Google Scholar
Digital Library
- Wright, A. and Felleisen, M. 1994. A syntactic approach to type soundness. Inform. Computat. 115, 1, 38--94. Google Scholar
Digital Library
- Yu, D., Kennedy, A., and Syme, D. 2004. Formalization of generics for the .NET common language runtime. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 39--51. Google Scholar
Digital Library
- Zenger, M. 2005. Keris: Evolving software with extensible modules. J. Softw. Maint. Evol. Resear. Pract. 17, 5, 333--362. Google Scholar
Digital Library
Index Terms
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
Recommendations
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09: Proceedings of the eighth international conference on Generative programming and component engineeringGeneralized interfaces are an extension of the interface concept found in object-oriented languages such as Java or C#. The extension is inspired by Haskell's type classes. It supports retroactive and type-conditional interface implementations, binary ...
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09Generalized interfaces are an extension of the interface concept found in object-oriented languages such as Java or C#. The extension is inspired by Haskell's type classes. It supports retroactive and type-conditional interface implementations, binary ...
MultiJava: Design rationale, compiler implementation, and applications
MultiJava is a conservative extension of the Java programming language that adds symmetric multiple dispatch and open classes. Among other benefits, multiple dispatch provides a solution to the binary method problem. Open classes provide a solution to ...






Comments