Abstract
Pluggable types have been proposed to support multiple type systems in the same programming language. We have designed and implemented JavaCOP, a program constraint system for implementing practical pluggable type systems for Java. JavaCOP enforces user-defined typing constraints written in a declarative and expressive rule language. We have validated our design by (re)implementing a range of type systems and program checkers. By using a program constraint system to implement pluggable types, programmers are able to check that their programs will operate correctly in restricted environments, adhere to strict programming rules, avoid null pointer errors or scoped memory exceptions, and meet style guidelines, while programming language researchers can easily experiment with novel type systems.
- C. Andreae. JavaCOP - user-defined constraints on Java programs. Honours Report, Computer Science, Victoria University of Wellington, 2005.]]Google Scholar
- C. Andreae, Y. Coady, C. Gibba, J. Noble, J. Vitek, and T. Zhao. STARS: Scoped types and aspects for real-time systems. In Proceedings of ECOOP 06, 2006.]] Google Scholar
Digital Library
- K. Arnold, J. Gosling, and D. Holmes. The Java Programming Language Third Edition. Addison-Wesley, Reading, MA, third edition, 2000.]] Google Scholar
Digital Library
- T. Ball and S. K. Rajamani. The SLAM project: Debugging system software via static analysis. In Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 1--3. ACM Press, 2002.]] Google Scholar
Digital Library
- A. Birka and M. D. Ernst. A practical type system and language for reference immutability. In OOPSLA Proceedings, pages 35--49, New York, NY, USA, 2004. ACM Press.]] Google Scholar
Digital Library
- J. Bloch. A metadata facility for the Java programming language. Technical Report JSR 175, www.jcp.org, 2002.]]Google Scholar
- J. Boyland, J. Noble, and W. Retert. Capabilities for sharing: A generalisation of uniqueness and read-only. In ECOOP Proceedings, 2001.]] Google Scholar
Digital Library
- G. Bracha. Pluggable type systems. In OOPSLA Workshop on Revival of Dynamic Languages, 2004.]]Google Scholar
- G. Bracha and D. Ungar. Mirrors: Design principles for meta-level facilities of object-oriented programming languages. In OOPSLA Proceedings, 2004.]] Google Scholar
Digital Library
- R. Cartwright and M. Fagan. Soft typing. In PLDI Proceedings, 1991.]] Google Scholar
Digital Library
- Checkstyle Developers. Checkstyle. texttthttp://-checkstyle.-sourceforge.-net, 2005.]]Google Scholar
- S. Chiba. Load-time structural reflection in Java. In ECOOP Proceedings, 2000.]] Google Scholar
Digital Library
- S. R. Chidamber and C. F. Kemerer. Towards a metrics suite for object oriented design. In OOPSLA Proceedings, 1991.]] Google Scholar
Digital Library
- B. Chin, S. Markstrum, and T. Millstein. Semantic type qualifiers. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2005), June 2005.]] Google Scholar
Digital Library
- B. Chin, S. Markstrum, T. Millstein, and J. Palsberg. Inference of user-defined type qualifiers and qualifier rules. In European Symposium on Programming, 2006.]] Google Scholar
Digital Library
- D. G. Clarke, J. M. Potter, and J. Noble. Ownership types for flexible alias protection. In OOPSLA Proceedings, pages 48--64. ACM Press, 1998.]] Google Scholar
Digital Library
- T. Cohen, J. Y. Gil, and I. Maman. JTL - the Java tools language. In OOPSLA Proceedings, Oct. 2006.]] Google Scholar
Digital Library
- T. Copeland. PMD Applied. Centennial Books, Nov. 2005.]]Google Scholar
- R. F. Crew. ASTLOG: a language for examining abstract syntax trees. In Proceedings of the USENIX Conference on Domain-Specific Languages, Santa Barbara, Oct. 1997.]] Google Scholar
Digital Library
- J. Darcy. Pluggable annotation processing API, 2005.]]Google Scholar
- L. DeMichiel. Enterprise JavaBeans Specification, Version 3.0. SUN Microsystems, 2004.]]Google Scholar
- C. K. Duby, S. Meyers, and S. P. Reiss. CCEL: A metalanguage for C++. In C++ Conference, pages 99--116, 1992.]]Google Scholar
- M. Eichberg, M. Mezini, K. Ostermann, and T. Schäfer. Xirc: A kernel for cross-artifact information engineering in software development environments. In Working Conference on Reverse Engineering, 2004.]] Google Scholar
Digital Library
- M. Eichberg, T. Schäfer, and M. Mezini. Using annotations to check structural properties of classes. In FASE, 2005.]] Google Scholar
Digital Library
- T. Ekman and G. Hedin. Rewritable reference attributed grammars. In ECOOP Proceedings, 2004.]]Google Scholar
Cross Ref
- M. Fahndrich and K. R. M. Leino. Declaring and checking non-null types in an object-oriented language. In OOPSLA Proceedings, 2003.]] Google Scholar
Digital Library
- C. Flanagan and S. N. Freund. Type-based race detection for Java. In Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, pages 219--232. ACM Press, 2000.]] Google Scholar
Digital Library
- J. S. Foster, M. Fähndrich, and A. Aiken. A Theory of Type Qualifiers. In Proceedings of the 1999 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 192--203, Atlanta, Georgia, May 1999.]] Google Scholar
Digital Library
- J. S. Foster, T. Terauchi, and A. Aiken. Flow-sensitive type qualifiers. In Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, pages 1--12. ACM Press, 2002.]] Google Scholar
Digital Library
- C. Gibbs and Y. Coady. Making real-time abstractions concrete with aspects. In The 3rd Workshop on Java Technologies for Real-time and Embedded Systems, 2005. Held in conjunction with OOPSLA 2005.]]Google Scholar
- J. Y. Gil and I. Maman. Micro patterns in Java code. In OOPSLA Proceedings, 2005.]] Google Scholar
Digital Library
- J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification Second Edition. The Java Series. Addison-Wesley, Boston, Mass., 2000.]] Google Scholar
Digital Library
- E. Hajiyev, M. Verbaere, and O. de Moor. Codequest: Scalable source code queries with datalog. In ECOOP Proceedings, 2006.]] Google Scholar
Digital Library
- E. Hajiyev, M. Verbaere, O. de Moor, and K. de Volder. Codequest: Querying source code with datalog. In OOPSLA Companion, 2005.]] Google Scholar
Digital Library
- S. Hallem, B. Chelf, Y. Xie, and D. Engler. A system and language for building system-specific, static analyses. In PLDI Proceedings, 2002.]] Google Scholar
Digital Library
- J. Hogg. Islands: aliasing protection in object-oriented languages. In OOPSLA Proceedings, pages 271--285. ACM Press, 1991.]] Google Scholar
Digital Library
- D. Hovemeyer and W. Pugh. Finding bugs is easy. In OOPSLA Companion, 2004.]] Google Scholar
Digital Library
- A. Igarashi, B. C. Pierce, and P. Wadler. Featherweight Java: a minimal core calculus for Java and GJ. ACM Transactions on Programming Languages and Systems, 23(3):396--450, May 2001.]] Google Scholar
Digital Library
- D. Janzen and K. D. Volder. Navigating and querying code without getting lost. In AOSD Proceedings, 2003.]] Google Scholar
Digital Library
- S. Marlow and P. Wadler. A practical subtyping system for Erlang. In ICFP Proceedings, 1997.]] Google Scholar
Digital Library
- N. Nystrom, M. R. Clarkson, and A. C. Myers. Polyglot: An extensible compiler framework for Java. In Proceedings of CC 2003: 12'th International Conference on Compiler Construction. Springer-Verlag, Apr. 2003.]]Google Scholar
Digital Library
- N. Nystrom, X. Qi, and A. C. Myers. J&: software composition with nested intersection. In OOPSLA Proceedings, 2006.]]Google Scholar
- OVM/J Consortium. The open virtual machine project. http://www.ovmj.org/, 2004.]]Google Scholar
- A. Potanin, J. Noble, D. Clarke, and R. Biddle. Generic ownership for generic Java. In OOPSLA Proceedings, 2006.]] Google Scholar
Digital Library
- M. Shomrat and A. Yehudai. Obvious or not?: regulating architectural decisions using aspect-oriented programming. In AOSD Proceedings, 2002.]] Google Scholar
Digital Library
- M. Tatsubori, S. Chiba, M.-O. Killijiand, and K. Itano. OpenJava: A class-based macro system for Java. In Reflection and Software Engineering, volume 1826 of LNCS, 2000.]] Google Scholar
Digital Library
- M. S. Tschantz and M. D. Ernst. Javari: adding reference immutability to Java. In OOPSLA Proceedings, pages 211--230, New York, NY, USA, 2005. ACM Press.]] Google Scholar
Digital Library
- M. Verbaere, R. Ettinger, and O. de Moor. JunGL: a scripting language for refactoring. In Proceedings of the 28th International Conference on Software Engineering (ICSE), 2006.]] Google Scholar
Digital Library
- J. Vitek and B. Bokowski. Confined types. In OOPSLA Proceedings, 1999.]] Google Scholar
Digital Library
- A. K. Wright and R. Cartwright. A practical soft type system for scheme. TOPLAS, 19(1):87--152, 1997.]] Google Scholar
Digital Library
- T. Zhao, J. Noble, and J. Vitek. Scoped types for real-time Java. In RTSS Proceedings, 2004.]] Google Scholar
Digital Library
Index Terms
A framework for implementing pluggable type systems
Recommendations
A framework for implementing pluggable type systems
OOPSLA '06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applicationsPluggable types have been proposed to support multiple type systems in the same programming language. We have designed and implemented JavaCOP, a program constraint system for implementing practical pluggable type systems for Java. JavaCOP enforces user-...
JavaCOP: Declarative pluggable types for java
Pluggable types enable users to enforce multiple type systems in one programming language. We have developed a suite of tools, called the JavaCOP framework, that allows developers to create pluggable type systems for Java. JavaCOP provides a simple ...
Applying patterns to develop a pluggable protocols framework for ORB middleware
Design patterns in communications softwareTo be an effective platform for performance-sensitive applications, off-the-shelf CORBA middleware must preserve the communication-layer quality of service (QoS) properties of applications end-to-end. However, the standard CORBA GIOP/IIOP ...







Comments