skip to main content
research-article
Free Access

JavaGI: The Interaction of Type Classes with Interfaces and Inheritance

Published:01 July 2011Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. Apache Software Foundation. 2009. Apache Tomcat. http://tomcat.apache.org/.Google ScholarGoogle Scholar
  4. Apple Inc. 2009. The Objective-C programming language. http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf.Google ScholarGoogle Scholar
  5. AspectJ Team. 2009a. The AspectJ development environment guide. http://www.eclipse.org/aspectj/doc/released/devguide/index.html.Google ScholarGoogle Scholar
  6. AspectJ Team. 2009b. The AspectJ programming guide. http://www.eclipse.org/aspectj/doc/released/progguide/index.html.Google ScholarGoogle Scholar
  7. Baader, F. and Nipkow, T. 1998. Term Rewriting and All That. Cambridge University Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle Scholar
  9. 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 ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. Bonniot, D. 2003. Using kinds to type partially-polymorphic methods. Electron. Notes. Theor. Comput. Sci. 75, 21--40,Google ScholarGoogle ScholarCross RefCross Ref
  16. Bonniot, D., Keller, B., and Barber, F. 2003. The Nice user’s manual. http://nice.sourceforge.net/manual.html.Google ScholarGoogle Scholar
  17. 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 ScholarGoogle Scholar
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. Bracha, G. 2004. Generics in the Java programming language. http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf.Google ScholarGoogle Scholar
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle Scholar
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle Scholar
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle Scholar
  35. 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 ScholarGoogle Scholar
  36. Clark, J. and DeRose, S. 1999. XML path language (XPath), version 1.0. http://www.w3.org/TR/xpath.Google ScholarGoogle Scholar
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. dom4j. 2008. Dom4j - An open source XML framework for Java. http://wwy.dom4j.org/.Google ScholarGoogle Scholar
  44. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. Eclipse Foundation 2004. Eclipse public license. http://www.eclipse.org/legal/epl-vl0.html.Google ScholarGoogle Scholar
  47. Eclipse Foundation 2008. Eclipse compiler for Java. http://download.eclipse.org/eclipse/downloads/drops/R-3.4.1-200809111700/index.php.Google ScholarGoogle Scholar
  48. Eclipse. 2009. Eclipse - An open development platform. http://www.eclipse.org/.Google ScholarGoogle Scholar
  49. ECMA International 2002. C# language specification 2nd Ed. http://www.ecma-international.org/publications/standards/Ecma-334-arch.htm.Google ScholarGoogle Scholar
  50. ECMA International 2005. Standard 334: C# language specification 3rd Ed. http://www.ecma-international.org/publications/standards/Ecma-334-arch.htm.Google ScholarGoogle Scholar
  51. ECMA International 2006. Standard 335: Common language infrastructure 4th Ed. http: //www.ecma-international.org/publications/standards/Ecma-335.htm.Google ScholarGoogle Scholar
  52. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  53. 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 ScholarGoogle Scholar
  54. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  55. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  56. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  57. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  59. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  60. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  61. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  62. Girard, J.-Y. 1972. Interpretation fonctionnelle et elimination des coupures dans l’arithmetique d’ordre superieur. Ph.D. thesis, University of Paris VII.Google ScholarGoogle Scholar
  63. Goldberg, A. and Robson, D. 1989. Smalltalk 80: The Language. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Gosling, J., Joy, B., Steele, G., and Bracha, G. 2005. The Java Language Specification 3rd Ed. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  66. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  67. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  68. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  69. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  70. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  71. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  72. Hunter, J. and McLaughlin, B. 2007. JDOM. http://www.jdom.org/.Google ScholarGoogle Scholar
  73. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  74. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  75. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  76. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  77. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  78. Jaxen. 2008. Jaxen---A universal Java XPath engine. http://jaxen.codehaus.org/.Google ScholarGoogle Scholar
  79. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  80. Jones, M. P. 1994. Qualified Types: Theory and Practice. Cambridge University Press. Google ScholarGoogle ScholarCross RefCross Ref
  81. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  82. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  83. Kahl, W. and Scheffczyk, J. 2001. Named instances for Haskell type classes. In Proceedings of the ACM SIGPLAN Haskell Workshop.Google ScholarGoogle Scholar
  84. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  85. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  86. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  87. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  88. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  89. 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 ScholarGoogle Scholar
  90. 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 ScholarGoogle ScholarCross RefCross Ref
  91. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  92. Kiselyov, O. and Lämmel, R. 2005. Haskell’s overlooked object system. http://homepages.cwi.nl/~ralf/00Haskell/.Google ScholarGoogle Scholar
  93. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  94. Kiselyov, O., Lämmel, R., and Schupke, K. 2004. Strongly typed heterogeneous collections. In Proceedings of the ACM SIGPLAN Haskell Workshop. 96--107. Google ScholarGoogle ScholarDigital LibraryDigital Library
  95. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  96. Läufer, K., Baumgartner, G., and Russo, V. F. 2000. Safe structural conformance for Java. Comput. J. 43, 6,469--481.Google ScholarGoogle ScholarCross RefCross Ref
  97. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  98. Leroy, X. 2008. The Objective Caml system release 3.11. http://caml.inria.fr/pub/docs/manual-ocaml/index.html.Google ScholarGoogle Scholar
  99. Lindholm, T. and Yellin, F. 1999. The Java Virtual Machine Specification 2nd Ed. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  100. Liquori, L. and Spiwack, A. 2008. FeatherTrait: A modest extension of Featherweight Java. ACM Trans. Program. Lang. Syst. 30, 2, 1--32. Google ScholarGoogle ScholarDigital LibraryDigital Library
  101. Liskov, B., Snyder, A., Atkinson, R., and Schaffert, C. 1977. Abstraction mechanisms in CLU. Comm. ACM 20, 8, 564--576. Google ScholarGoogle ScholarDigital LibraryDigital Library
  102. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  103. 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 ScholarGoogle Scholar
  104. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  105. Litvinov, V. 2003. Constraint-bounded polymorphism: An expressive and practical type system for object-oriented languages. Ph.D. thesis, University of Washington. Google ScholarGoogle ScholarDigital LibraryDigital Library
  106. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  107. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  108. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  109. Mattsson, M., Bosch, J., and Fayad, M. E. 1999. Framework integration problems, causes, solutions. Comm. ACM 42, 10,80--87. Google ScholarGoogle ScholarDigital LibraryDigital Library
  110. 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 ScholarGoogle Scholar
  111. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  112. McNamara, B. and Smaragdakis, Y. 2000. Static interfaces in C++. In Proceedings of the Workshop on C++ Template Programming, Informal Proceedings.Google ScholarGoogle Scholar
  113. Meyer, B. 1992. Eiffel: The Language. Prentice-Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  114. Meyer, B. 1995. Static typing. ACM SIGPLAN OOPS Messenger 6, 4, 20--29. Google ScholarGoogle ScholarDigital LibraryDigital Library
  115. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  116. 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 ScholarGoogle Scholar
  117. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  118. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  119. Milner, R., Tofte, M., Harper, R., and MacQueen, D. 1997. The Definition of Standard ML. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  120. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  121. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  122. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  123. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  124. Myers, N. 1996. A new and useful template technique: ”traits”. In C++ Gems, S. B. Lippman Ed., SIGS Publications, Inc., 451--457. Google ScholarGoogle ScholarDigital LibraryDigital Library
  125. MzScheme 2009. MzScheme---Core virtual machine for PLT Scheme. http://www.plt-scheme.org/software/mzscheme/.Google ScholarGoogle Scholar
  126. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  127. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  128. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  129. Odersky, M. 2009. The Scala language specification, version 2.7. http://www.scaIa-Iang,org/docu/files/ScalaReference.pdf.Google ScholarGoogle Scholar
  130. 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 ScholarGoogle Scholar
  131. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  132. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  133. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  134. 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 ScholarGoogle ScholarCross RefCross Ref
  135. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  136. Peyton Jones, S. (Ed.) 2003. Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press.Google ScholarGoogle Scholar
  137. 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 ScholarGoogle Scholar
  138. Pierce, B. C. 2002. Types and Programming Languages. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  139. Pierce, B. C. (Ed.) 2005. Advanced Topics in Types and Programming Languages. MIT Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  140. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  141. Plotkin, G. 1981. A structural approach to operational semantics. Tech. rep. DAIMI FN-19, Aarhus University, Denmark.Google ScholarGoogle Scholar
  142. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  143. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  144. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  145. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  146. 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 ScholarGoogle Scholar
  147. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  148. 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 ScholarGoogle Scholar
  149. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  150. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  151. Saito, C., Igarashi, A., and Viroli, M. 2008. Lightweight family polymorphism. J. Funct. Program. 18, 3, 285--331. Google ScholarGoogle ScholarDigital LibraryDigital Library
  152. Sakkinen, M. 1989. Disciplined inheritance. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Cambridge University Press, 39--56.Google ScholarGoogle Scholar
  153. Saraswat, V. 2009. Report on the programming language Xl0, version 2.0. http://dist.codehaus.org/xl0/docurnentation/languagespec/xl0-200.pdf.Google ScholarGoogle Scholar
  154. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  155. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  156. Shalit, A. 1997. The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Programming Language. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  157. Siek, J. G. 2005. A language for generic programming. Ph.D. thesis, Indiana University. Google ScholarGoogle ScholarDigital LibraryDigital Library
  158. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  159. Siek, J. G., Lee, L.-Q., and Lumsdaine, A. 2002. The Boost Graph Library: User Guide and Reference Manual. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  160. 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 ScholarGoogle ScholarCross RefCross Ref
  161. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  162. Steele, G. 1990. Common LISP: The Language 2nd Ed. Digital Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  163. Stepanov, A. and Lee, M. 1995. The standard template library. Tech. rep., WG21/N0482, ISO Programming Language C++ Project.Google ScholarGoogle Scholar
  164. Stoutamire, D. and Omohundro, S. 1996. The Sather 1.1 specification, Tech. rep. TR-96-012, International Computer Science Institute.Google ScholarGoogle Scholar
  165. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  166. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  167. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  168. Sun Microsystems. 2004a. The collections framework. http://java.sun.com/j2se/1.5.0/docs/guide/collections/.Google ScholarGoogle Scholar
  169. 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 ScholarGoogle Scholar
  170. Sun Microsystems. 2006. JSR 277: Java module system. http://jcp.org/en/jsr/detail?id=277.Google ScholarGoogle Scholar
  171. Sun Microsystems. 2007. Java servlet specification, version 2.5. http://java.sun.com/products/servlet/.Google ScholarGoogle Scholar
  172. Sun Microsystems. 2008. Project Fortress website. http://projectfortress.sun.com/.Google ScholarGoogle Scholar
  173. Sun Microsystems. 2009. Java platform standard edition. http://java.sun.com/javase/.Google ScholarGoogle Scholar
  174. Szyperski, C. 1996. Independently extensible systems - Software engineering potential and challenges. In Proceedings of the Australasian Computer Science Conference (ACSC).Google ScholarGoogle Scholar
  175. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  176. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  177. Thiemann, P. 2005. An embedded domain-specific language for type-safe server-side Webscripting. ACM Trans. Intern. Techn. 5, 1, 1--46. Google ScholarGoogle ScholarDigital LibraryDigital Library
  178. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  179. 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 ScholarGoogle ScholarCross RefCross Ref
  180. 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 ScholarGoogle ScholarCross RefCross Ref
  181. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  182. Viroli, M. 2000. On the recursive generation of parametric types. Tech. rep. DEIS-LIA-OO-002, Universita di Bologna.Google ScholarGoogle Scholar
  183. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  184. Wadler, P. 1998. The expression problem. Post to the Java Genericity mailing list.Google ScholarGoogle Scholar
  185. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  186. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  187. 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 ScholarGoogle Scholar
  188. Wehr, S. 2009. JavaGI homepage. http://www.informatik.uni-freiburg.de/~wehr/javagi.Google ScholarGoogle Scholar
  189. 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 ScholarGoogle Scholar
  190. 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 ScholarGoogle Scholar
  191. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  192. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  193. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  194. Wright, A. and Felleisen, M. 1994. A syntactic approach to type soundness. Inform. Computat. 115, 1, 38--94. Google ScholarGoogle ScholarDigital LibraryDigital Library
  195. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  196. Zenger, M. 2005. Keris: Evolving software with extensible modules. J. Softw. Maint. Evol. Resear. Pract. 17, 5, 333--362. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. JavaGI: The Interaction of Type Classes with Interfaces and Inheritance

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!