Mathematical statistics (4th ed.)
Mathematical statistics (4th ed.)
ML for the working programmer
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
Static detection of dynamic memory errors
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Java in a nutshell (2nd ed.): a desktop quick reference
Java in a nutshell (2nd ed.): a desktop quick reference
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Effective Java programming language guide
Effective Java programming language guide
Patterns of Enterprise Application Architecture
Patterns of Enterprise Application Architecture
JastAdd: an aspect-oriented compiler construction system
Science of Computer Programming - Special issue: Language descriptions, tools and applications (LDTA'01)
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Houdini, an Annotation Assistant for ESC/Java
FME '01 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods for Increasing Software Productivity
Using Specifications to Check Source Code
Using Specifications to Check Source Code
Declaring and checking non-null types in an object-oriented language
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
ACM SIGPLAN Notices
An overview of JML tools and applications
International Journal on Software Tools for Technology Transfer (STTT) - Special section on formal methods for industrial critical systems
Evaluating and tuning a static analysis to find null pointer bugs
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Non-null references by default in the Java modeling language
SAVCBS '05 Proceedings of the 2005 conference on Specification and verification of component-based systems
Propagation of JML non-null annotations in Java programs
PPPJ '06 Proceedings of the 4th international symposium on Principles and practice of programming in Java
Electronic Notes in Theoretical Computer Science (ENTCS)
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Attached types and their application to three open problems of object-oriented programming
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
An integrated verification environment for JML: architecture and early results
Proceedings of the 2007 conference on Specification and verification of component-based systems: 6th Joint Meeting of the European Conference on Software Engineering and the ACM SIGSOFT Symposium on the Foundations of Software Engineering
Establishing object invariants with delayed types
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Ownership transfer in universe types
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Practical pluggable types for java
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
JML Runtime Assertion Checking: Improved Error Reporting and Efficiency Using Strong Validity
FM '08 Proceedings of the 15th international symposium on Formal Methods
Semantic Foundations and Inference of Non-null Annotations
FMOODS '08 Proceedings of the 10th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
JML4: Towards an Industrial Grade IVE for Java and Next Generation Research Platform for JML
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Masked types for sound object initialization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A non-null annotation inferencer for Java bytecode
Proceedings of the 8th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Is Structural Subtyping Useful? An Empirical Study
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Are We Ready for a Safer Construction Environment?
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
JavaCOP: Declarative pluggable types for java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Faster and More Complete Extended Static Checking for the Java Modeling Language
Journal of Automated Reasoning
Java bytecode verification for @NonNull types
CC'08/ETAPS'08 Proceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction
Combining a verification condition generator for a bytecode language with static analyses
TGC'07 Proceedings of the 3rd conference on Trustworthy global computing
Formalisation and implementation of an algorithm for bytecode verification of @NonNull types
Science of Computer Programming
An Abstract Model of Certificate Translation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software and Systems Modeling (SoSyM)
Freedom before commitment: a lightweight type system for object initialisation
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Abstractions for validation in action
SFM'12 Proceedings of the 12th international conference on Formal Methods for the Design of Computer, Communication, and Software Systems: formal methods for model-driven engineering
Hi-index | 0.00 |
With Java 5 annotations, we note a marked increase in tools that statically detect potential null dereferences. To be effective such tools require that developers annotate declarations with nullity modifiers and have annotated API libraries. Unfortunately, in our experience specifying moderately large code bases, the use of non-null annotations is more labor intensive than it should be. Motivated by this experience, we conducted an empirical study of 5 open source projects totaling 700 KLOC which confirms that on average, 3/4 of declarations are meant to be non-null, by design. Guided by these results, we propose adopting a non-null-by-default semantics. This new default has advantages of better matching general practice, lightening developer annotation burden and being safer. We adapted the Eclipse JDT Core to support the new semantics, including the ability to read the extensive API library specifications written in the Java Modeling Language (JML). Issues of backwards compatibility are addressed.