{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:41:58Z","timestamp":1750308118971,"version":"3.41.0"},"reference-count":18,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2005,9,5]],"date-time":"2005-09-05T00:00:00Z","timestamp":1125878400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGSOFT Softw. Eng. Notes"],"published-print":{"date-parts":[[2006,3]]},"abstract":"<jats:p>Based on our experiences and those of our peers, we hypothesized that in Java code, the majority of declarations that are of reference types are meant to be non-null. Unfortunately, the Java Modeling Language (JML), like most interface specification and object-oriented programming languages, assumes that such declarations are possibly-null by default. As a consequence, developers need to write specifications that are more verbose than necessary in order to accurately document their module interfaces. In practice, this results in module interfaces being left incompletely and inaccurately specified. In this paper we present the results of a study that confirms our hypothesis. Hence, we propose an adaptation to JML that preserves its language design goals and that allows developers to specify that declarations of reference types are to be interpreted as non-null by default. We explain how this default is safer and results in less writing on the part of specifiers than null-by-default. The paper also reports on an implementation of the proposal in some of the JML tools.<\/jats:p>","DOI":"10.1145\/1118537.1123068","type":"journal-article","created":{"date-parts":[[2006,5,8]],"date-time":"2006-05-08T22:51:53Z","timestamp":1147128713000},"page":"9","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Non-null references by default in the Java modeling language"],"prefix":"10.1145","volume":"31","author":[{"given":"Patrice","family":"Chalin","sequence":"first","affiliation":[{"name":"Concordia University, Montr\u00e9al, Qu\u00e9bec, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Fr\u00e9d\u00e9ric","family":"Rioux","sequence":"additional","affiliation":[{"name":"Concordia University, Montr\u00e9al, Qu\u00e9bec, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2005,9,5]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"M. Barnett K. R. M. Leino and W. Schulte \"The Spec# Programming System: An Overview.\" In Proceedings of the International Workshop on the Construction and Analysis of Safe Secure and Interoperable Smart Devices (CASSIS 2004) Marseille France LNCS vol. 3362 2004.]]  M. Barnett K. R. M. Leino and W. Schulte \"The Spec# Programming System: An Overview.\" In Proceedings of the International Workshop on the Construction and Analysis of Safe Secure and Interoperable Smart Devices (CASSIS 2004) Marseille France LNCS vol. 3362 2004.]]"},{"key":"e_1_2_1_2_1","unstructured":"D. Bonniot. The Nice programming language http:\/\/nice.sourceforge.net\/ June 2005.]]  D. Bonniot. The Nice programming language http:\/\/nice.sourceforge.net\/ June 2005.]]"},{"key":"e_1_2_1_3_1","unstructured":"D. Bonniot. Type safety in Nice: Why programs written in Nice have less bugs http:\/\/nice.sourceforge.net\/safety.html June 2005.]]  D. Bonniot. Type safety in Nice: Why programs written in Nice have less bugs http:\/\/nice.sourceforge.net\/safety.html June 2005.]]"},{"key":"e_1_2_1_4_1","article-title":"An overview of JML tools and applications","author":"Burdy L.","year":"2004","journal-title":"International Journal on Software Tools for Technology Transfer (STTT)"},{"key":"e_1_2_1_5_1","first-page":"004","article-title":"Non-null References by Default in the Java Modeling Language, Dependable Software Research Group, Concordia University","author":"Chalin P.","year":"2005","journal-title":"ENCS-CSE TR"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.976940"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949332"},{"key":"e_1_2_1_8_1","first-page":"500","volume-title":"Proceedings of the International Symposium of Formal Methods Europe","volume":"2021","author":"Flanagan C.","year":"2001"},{"volume-title":"Object Technology Series. Addison-Wesley","year":"1999","author":"Fowler M.","key":"e_1_2_1_9_1"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.5555\/151155"},{"key":"e_1_2_1_11_1","first-page":"175","article-title":"JML: A Notation for Detailed Design,\" in Behavioral Specifications of Businesses and Systems, B. R. Haim Kilov, Ian Simmonds, Ed","author":"Leavens G. T.","year":"1999","journal-title":"Kluwer"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/367845.367996"},{"volume-title":"April, 2005.]]","author":"Leavens G. T.","key":"e_1_2_1_13_1"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2004.05.015"},{"volume-title":"Object-Oriented Series","year":"1991","author":"Meyer B.","key":"e_1_2_1_15_1"},{"volume-title":"Unpublished","year":"2005","author":"Meyer B.","key":"e_1_2_1_16_1"},{"volume-title":"May, 2005.]]","author":"Raghavan A. D.","key":"e_1_2_1_17_1"},{"key":"e_1_2_1_18_1","unstructured":"F. Rioux and P. Chalin \"Improving the Quality of Web-based Enterprise Applications with Extended Static Checking: A Case Study.\" In Proceedings of the 1st International Workshop on Automated Specification and Verification of Web Sites Valencia Spain Electronic Notes in Theoretical Computer Science March 14--15 2005 (to appear).]]  F. Rioux and P. Chalin \"Improving the Quality of Web-based Enterprise Applications with Extended Static Checking: A Case Study.\" In Proceedings of the 1st International Workshop on Automated Specification and Verification of Web Sites Valencia Spain Electronic Notes in Theoretical Computer Science March 14--15 2005 (to appear).]]"}],"container-title":["ACM SIGSOFT Software Engineering Notes"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1118537.1123068","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1118537.1123068","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T16:08:18Z","timestamp":1750262898000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1118537.1123068"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2005,9,5]]},"references-count":18,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2006,3]]}},"alternative-id":["10.1145\/1118537.1123068"],"URL":"https:\/\/doi.org\/10.1145\/1118537.1123068","relation":{"is-identical-to":[{"id-type":"doi","id":"10.1145\/1123058.1123068","asserted-by":"subject"}]},"ISSN":["0163-5948"],"issn-type":[{"type":"print","value":"0163-5948"}],"subject":[],"published":{"date-parts":[[2005,9,5]]},"assertion":[{"value":"2005-09-05","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}