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/.
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarCross Ref
- Michael D. Ernst. Type Annotations specification (JSR 308). http://types.cs.washington.edu/jsr308/, September 12, 2008.Google Scholar
- Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea. Java Concurrency in Practice. Addison-Wesley, 2006.Google ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
Index Terms
- Building and using pluggable type systems
Recommendations
Building and using pluggable type-checkers
ICSE '11: Proceedings of the 33rd International Conference on Software EngineeringThis paper describes practical experience building and using pluggable type-checkers. A pluggable type-checker refines (strengthens) the built-in type system of a programming language. This permits programmers to detect and prevent, at compile time, ...
Practical pluggable types for java
ISSTA '08: Proceedings of the 2008 international symposium on Software testing and analysisThis paper introduces the Checker Framework, which supports adding pluggable type systems to the Java language in a backward-compatible way. A type system designer defines type qualifiers and their semantics, and a compiler plug-in enforces the ...
A type system for object initialization in the Java bytecode language
In the standard Java implementation, a Java language program is compiled to Java bytecode. This bytecode may be sent across the network to another site, where it is then executed by the Java Virtual Machine. Since bytecode may be written by hand, or ...
Comments