skip to main content
10.1145/1882291.1882356acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
demonstration

Building and using pluggable type systems

Published:07 November 2010Publication History

ABSTRACT

Are you a practitioner who is tired of null pointer exceptions, unintended side effects, SQL injections, concurrency errors, mistaken equality tests, and other run-time errors that appear during testing or in the field? A pluggable type system can guarantee the absence of these errors, and many more.

Are you a researcher who wants to be able to quickly and easily implement a type system, giving you the ability to evaluate it in practice and to field it? You need a framework that supports these essential activities.

This demo is aimed at both audiences. It describes both the theory of pluggable types and also the practice of implementing them. A simple pluggable type-checker can be implemented in 2 minutes, and can be enhanced thereafter. A type checkers is easy to create, easy for programmers to use, and effective in finding real, important bugs.

The demo uses the Checker Framework, which enables you to create pluggable type systems for Java, while your code remains backward-compatible with all versions of Java. The ideas translate to other languages and toolsets. The tools are freely available at http://types.cs.washington.edu/checker-framework/.

References

  1. Chris Andreae, James Noble, Shane Markstrum, and Todd Millstein. A framework for implementing pluggable type systems. In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2006), pages 57--74, Portland, OR, USA, October 24-26, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Torbjörn Ekman and Görel Hedin. The JastAdd extensible Java compiler. In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2007), pages 1--18, Montréal, Canada, October 23--25, 2007. Google ScholarGoogle Scholar
  3. Torbjörn Ekman and Görel Hedin. Pluggable checking and inferencing of non-null types for Java. Journal of Object Technology, 6(9):455--475, October 2007.Google ScholarGoogle ScholarCross RefCross Ref
  4. Michael D. Ernst. Type Annotations specification (JSR 308). http://types.cs.washington.edu/jsr308/, September 12, 2008.Google ScholarGoogle Scholar
  5. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea. Java Concurrency in Practice. Addison-Wesley, 2006.Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. David Greenfieldboyce and Jeffrey S. Foster. Type qualifier inference for Java. In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2007), pages 321--336, Montréal, Canada, October 23--25, 2007. Google ScholarGoogle Scholar
  7. David Hovemeyer, Jaime Spacco, and William Pugh. Evaluating and tuning a static analysis to find null pointer bugs. In ACM SIGPLAN/SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE 2005), pages 13--19, Lisbon, Portugal, September 5-6, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Matthew M. Papi, Mahmood Ali, Telmo Luis Correa Jr., Jeff H. Perkins, and Michael D. Ernst. Practical pluggable types for Java. In ISSTA 2008, Proceedings of the 2008 International Symposium on Software Testing and Analysis, pages 201--212, Seattle, WA, USA, July 22-24, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Research Triangle Institute. The economic impacts of inadequate infrastructure for software testing. NIST Planning Report 02-3, National Institute of Standards and Technology, May 2002.Google ScholarGoogle Scholar
  10. Matthew S. Tschantz and Michael D. Ernst. Javari: Adding reference immutability to Java. In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2005), pages 211--230, San Diego, CA, USA, October 18-20, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Building and using pluggable type systems

              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

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader