SlideShare a Scribd company logo
1 of 8
Download to read offline
Handle The Billion-Dollar
Mistake In Java
Help tools understand your code
Baptiste Mathus – MiPih
EclipseCon France 2014
Baptiste Mathus - EclipseCon France 2014 - @bmathus
http://batmat.net
Agenda
•Null – a billion-dollar mistake?
•@Nonnull, @Nullable… @WTF?
•Tooling
•Alternatives
Baptiste Mathus - EclipseCon France 2014 - @bmathus
The null concept: a billion-dollar mistake?
His creator, Sir Charles Antony Richard Hoare, says yes! :-)
[...] languages designs is serious scientific
engineering activity. And we should begin to
take responsibility for the mistakes our
users make in the use of our languages.
– Tony Hoare
Baptiste Mathus - EclipseCon France 2014 - @bmathus
Baptiste Mathus - EclipseCon France 2014 - @bmathus
Unexpected…
JSR305 : Annotations for software detections
Why @Nonnull… annotations?
« they express design decisions that may be implicit, or described in
documentation, but not easily available to tools »
Baptiste Mathus - EclipseCon France 2014 - @bmathus
Code talks, slides walks…
Baptiste Mathus - EclipseCon France 2014 - @bmathus
References
• Null References: The Billion Dollar Mistake
• http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-
Tony-Hoare
• Eclipse Help For Using Null Analysis
• http://eclip.se/2f
• JSR 308: Annotations on Java Types
• https://www.jcp.org/en/jsr/detail?id=308
• To go further: the Checker Framework
• http://types.cs.washington.edu/checker-framework/
• Experiment: runtime report of non-compliant calls (WIP)
• https://github.com/Batmat/jsr305reporter
Baptiste Mathus - EclipseCon France 2014 - @bmathus

More Related Content

Similar to Handle the billion-dollar mistake in Java

Economics of Open Source Software
Economics of Open Source SoftwareEconomics of Open Source Software
Economics of Open Source Software
Ray Toal
 

Similar to Handle the billion-dollar mistake in Java (20)

Highcharts wrapper for Seaside by Mariano Martinez Peck
Highcharts wrapper for Seaside by Mariano Martinez PeckHighcharts wrapper for Seaside by Mariano Martinez Peck
Highcharts wrapper for Seaside by Mariano Martinez Peck
 
Artificial intelligence training in hyderabad
Artificial intelligence training in hyderabadArtificial intelligence training in hyderabad
Artificial intelligence training in hyderabad
 
Disruption is Change is Future
Disruption is Change is FutureDisruption is Change is Future
Disruption is Change is Future
 
Will your intranet be replaced with a (chat) bot?
Will your intranet be replaced with a (chat) bot?Will your intranet be replaced with a (chat) bot?
Will your intranet be replaced with a (chat) bot?
 
Horacio Gonzalez | Hey people, have you looked at Flutter yet? | Codemotion M...
Horacio Gonzalez | Hey people, have you looked at Flutter yet? | Codemotion M...Horacio Gonzalez | Hey people, have you looked at Flutter yet? | Codemotion M...
Horacio Gonzalez | Hey people, have you looked at Flutter yet? | Codemotion M...
 
Building Bots Using IBM Watson
Building Bots Using IBM WatsonBuilding Bots Using IBM Watson
Building Bots Using IBM Watson
 
How Mistral AI raised €105m with no pitch deck or product
How Mistral AI raised €105m with no pitch deck or productHow Mistral AI raised €105m with no pitch deck or product
How Mistral AI raised €105m with no pitch deck or product
 
Mistral AI Strategic Memo.pdf
Mistral AI Strategic Memo.pdfMistral AI Strategic Memo.pdf
Mistral AI Strategic Memo.pdf
 
Horacio Gonzalez - Monitoring OVH - Codemotion Amsterdam 2019
Horacio Gonzalez - Monitoring OVH - Codemotion Amsterdam 2019Horacio Gonzalez - Monitoring OVH - Codemotion Amsterdam 2019
Horacio Gonzalez - Monitoring OVH - Codemotion Amsterdam 2019
 
210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...
 
Human-in-the-loop in IoT Systems
Human-in-the-loop in IoT SystemsHuman-in-the-loop in IoT Systems
Human-in-the-loop in IoT Systems
 
Economics of Open Source Software
Economics of Open Source SoftwareEconomics of Open Source Software
Economics of Open Source Software
 
IRJET- A Survey to Chatbot System with Knowledge Base Database by using Artif...
IRJET- A Survey to Chatbot System with Knowledge Base Database by using Artif...IRJET- A Survey to Chatbot System with Knowledge Base Database by using Artif...
IRJET- A Survey to Chatbot System with Knowledge Base Database by using Artif...
 
AI & Robotics PPT For Schools Students.pptx
AI & Robotics PPT For Schools Students.pptxAI & Robotics PPT For Schools Students.pptx
AI & Robotics PPT For Schools Students.pptx
 
What Every Programmer has to know about AI ?
What Every Programmer has to know about AI ?What Every Programmer has to know about AI ?
What Every Programmer has to know about AI ?
 
Bluemix Paris Meetup- #10 - Développer des applications cognitives avec IBM ...
Bluemix Paris Meetup- #10 - Développer des applications cognitives avec IBM ...Bluemix Paris Meetup- #10 - Développer des applications cognitives avec IBM ...
Bluemix Paris Meetup- #10 - Développer des applications cognitives avec IBM ...
 
Bluemix Paris Meetup - session #10 Watson - Développer des applications cogn...
Bluemix Paris Meetup - session #10 Watson - Développer des applications cogn...Bluemix Paris Meetup - session #10 Watson - Développer des applications cogn...
Bluemix Paris Meetup - session #10 Watson - Développer des applications cogn...
 
CAA2014 Community Archaeology and Technology: Making community-driven, open s...
CAA2014 Community Archaeology and Technology: Making community-driven, open s...CAA2014 Community Archaeology and Technology: Making community-driven, open s...
CAA2014 Community Archaeology and Technology: Making community-driven, open s...
 
APIs are for humans (defrag-con)
APIs are for humans   (defrag-con)APIs are for humans   (defrag-con)
APIs are for humans (defrag-con)
 
From Makerspace to MarketSpace - Trondheim MakerFaire 2015
From Makerspace to MarketSpace - Trondheim MakerFaire 2015From Makerspace to MarketSpace - Trondheim MakerFaire 2015
From Makerspace to MarketSpace - Trondheim MakerFaire 2015
 

Recently uploaded

Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
mbmh111980
 

Recently uploaded (20)

How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with StrimziStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
iGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockiGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by Skilrock
 
OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024
 
A Guideline to Gorgias to to Re:amaze Data Migration
A Guideline to Gorgias to to Re:amaze Data MigrationA Guideline to Gorgias to to Re:amaze Data Migration
A Guideline to Gorgias to to Re:amaze Data Migration
 
IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024
 
INGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignINGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by Design
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdf
 
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdf
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdfImplementing KPIs and Right Metrics for Agile Delivery Teams.pdf
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdf
 
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 

Handle the billion-dollar mistake in Java

  • 1. Handle The Billion-Dollar Mistake In Java Help tools understand your code Baptiste Mathus – MiPih EclipseCon France 2014
  • 2. Baptiste Mathus - EclipseCon France 2014 - @bmathus http://batmat.net
  • 3. Agenda •Null – a billion-dollar mistake? •@Nonnull, @Nullable… @WTF? •Tooling •Alternatives Baptiste Mathus - EclipseCon France 2014 - @bmathus
  • 4. The null concept: a billion-dollar mistake? His creator, Sir Charles Antony Richard Hoare, says yes! :-) [...] languages designs is serious scientific engineering activity. And we should begin to take responsibility for the mistakes our users make in the use of our languages. – Tony Hoare Baptiste Mathus - EclipseCon France 2014 - @bmathus
  • 5. Baptiste Mathus - EclipseCon France 2014 - @bmathus Unexpected…
  • 6. JSR305 : Annotations for software detections Why @Nonnull… annotations? « they express design decisions that may be implicit, or described in documentation, but not easily available to tools » Baptiste Mathus - EclipseCon France 2014 - @bmathus
  • 7. Code talks, slides walks… Baptiste Mathus - EclipseCon France 2014 - @bmathus
  • 8. References • Null References: The Billion Dollar Mistake • http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake- Tony-Hoare • Eclipse Help For Using Null Analysis • http://eclip.se/2f • JSR 308: Annotations on Java Types • https://www.jcp.org/en/jsr/detail?id=308 • To go further: the Checker Framework • http://types.cs.washington.edu/checker-framework/ • Experiment: runtime report of non-compliant calls (WIP) • https://github.com/Batmat/jsr305reporter Baptiste Mathus - EclipseCon France 2014 - @bmathus