SlideShare a Scribd company logo
1 of 46
Download to read offline
How JSR 385 could have Saved
the Mars Climate Orbiter
Werner Keil & Thodoris Bais
24-25 October, 2019
@thodorisbais@wernerkeil
Mars Climate
Orbiter
• Launched on 11
December 1998

• 338 kilograms

• $125 millions

• To study Martian
climate, atmosphere
and surface changes
@thodorisbais@wernerkeil
Result of the Mission
@thodorisbais@wernerkeil
@thodorisbais@wernerkeil
Mars Climate Orbiter
“The problem here was not the error; it was the
failure of NASA’s systems engineering, and the
checks and balances in our process, to detect the
error. That’s why we lost the spacecraft.”
Edward Weiler

NASA associate administrator of space science,

IEEE Spectrum: Why the Mars Probe went off course
@thodorisbais@wernerkeil
More unit mishaps
@thodorisbais@wernerkeil
Problem Statement
@thodorisbais@wernerkeil
What is the Fundamental
Problem?
Primitive (Java) types are primitive types
@thodorisbais@wernerkeil
What is the Fundamental Problem?
Primitive (Java) types are primitive types
• static final double C = 1079252849;

• static final double SPEED_OF_LIGHT = 1079252849;

• static final double SPEED_OF_LIGHT_IN_KM_PER_H = 1079252849;
static final Quantity<SPEED> SPEED_OF_LIGHT =
Quantities.getQuantity(1079252849, Units.KILOMETRE_PER_HOUR);
@thodorisbais@wernerkeil
Werner Keil Thodoris Bais
Spec Lead JSR-385 Expert Group Member JSR-385
Let’s meet
@thodorisbais@wernerkeil
Rolling your Own Library
• Development
• Maintenance
• Upgrades & extensions
@thodorisbais@wernerkeil
What is JSR-385?
@thodorisbais@wernerkeil
JSR-385: Units of Measurement API 2.0
Description

This JSR is a major evolution of the Unit API 1.0 (JSR 363) specification. Focused
on the SI System redefinition, modularity and support for Java SE 8/9 and above.
JSR 363

This JSR specifies Java packages for modelling and working with measurement
values, quantities and their corresponding units.
@thodorisbais@wernerkeil
JSR-385 Basic Concepts
• Dimensions

• Units

• Quantities

• Prefixes

• Converters

• Formats

• Systems of units
@thodorisbais@wernerkeil
@thodorisbais@wernerkeil
Quantities
–Wikipedia
“A physical quantity is a physical property of a phenomenon, body,
or substance, that can be quantified by measurement.”
–Ibidem
“A physical quantity can be expressed as the combination of a
magnitude expressed by a number - usually a real umber - and a
unit.”
Definition of a Physical Quantity
@thodorisbais@wernerkeil
Speed of Light
c = 299,792,458 m/s
Value Unit
@thodorisbais@wernerkeil
–Wikipedia
“A physical quantity is a physical property of a phenomenon, body, or substance,
that can be quantified by measurement.”
“A physical quantity can be expressed as the combination of a magnitude
expressed by a number - usually a real umber - and a unit.”
Definition of a Physical Quantity
–Ibidem
“The same physical quantity can be represented equivalently in many unit
systems.”
@thodorisbais@wernerkeil
Speed of Light
c = 299,792,458 m/s
= 1,079,252,849 km/h
@thodorisbais@wernerkeil
@thodorisbais@wernerkeil
Units
Base Units
@thodorisbais@wernerkeil
Derived Units
@thodorisbais@wernerkeil
Multiples
• km

• ms

• Mm?

• ks?
@thodorisbais@wernerkeil
@thodorisbais@wernerkeil
Dimensions
Dimensions
• L: length

• T: time

• M: mass

• I: electric current

• Θ: thermodynamic temperature

• N: amount of substance

• J: luminous intensity

• (1)
Force: L · M · T-2
@thodorisbais@wernerkeil
Summary Table
@thodorisbais@wernerkeil
Doing the Maths
@thodorisbais@wernerkeil
Equality and Equivalence
• kΩ ≠ mHz

• kΩ ≠ mΩ

• kΩ ≡ kΩ

• N ≅ kg·m·s-2

• kg·m-2 ≅ mg·mm-2
• 1 kΩ ≠ 1 mHz

• 1 kΩ ≠ 1 mΩ

• 1 kΩ ≡ 1 kΩ

• 1 N ≅ 1 kg·m·s-2

• 1 kg·m-2 ≅ 1 mg·mm-2

• 1 kΩ ≅ 1,000 Ω
Units Quantities
@thodorisbais@wernerkeil
Quantity Addition
• 1 Ω + 1 Ω = 2 Ω

• 1 Ω + 1 mΩ = 1.001 Ω

• 1 mΩ + 1 Ω = 1,001 mΩ

• 1 Ω + 1 m “does not compute”
@thodorisbais@wernerkeil
CodeMotion Milan School
October Exam on Maths
How much is 0 °C + 0 °C?
• 0 °C
• 0 °C
• 273.15 °C
Two absolute temperatures
0 °C + 0 °C = 273.15K + 273.15K
= 546.30K
= 273.15 °C
@thodorisbais@wernerkeil
How much is 0 °C + 0 °C?
• 0 °C
• 0 °C
• 273.15 °C
An absolute temperature and a temperature change
0 °C + 0 °C = 273.15K + 0K
= 273.15K
= 0 °C
@thodorisbais@wernerkeil
CodeMotion Milan School
October Exam on Maths
How much is 0 °C + 0 °C?
• 0 °C
• 0 °C
• 273.15 °C
Two temperature changes
0 °C + 0 °C = 0K + 0K
= 0K
= 0 °C
@thodorisbais@wernerkeil
CodeMotion Milan School
October Exam on Maths
How much is 0 °C + 0 °C?
273.15 °C (546.30 K)
0 °C + 0 °C = 0 °C (273.15 K)
0 °C (0 K)
Answer
@thodorisbais@wernerkeil
CodeMotion Milan School
October Exam on Maths
Multiplication
Units
•kg × m = kg·m
•kg × mm = kg·mm
•g × km = g·km ≟ kg·m
•m × m = m2
•km × km = km2
•mm × km = mm·km ≟ m2
•µm × m = µm·m ≟ mm2
Quantities
•2 kg × 3 m = 6 kg·m
@thodorisbais@wernerkeil
CodeMotion Milan School
October Exam on Maths
Division
Units
•kg / m = kg·m-1
•kg / mm = kg·mm-1
•g / mm = g·mm-1 ≟ kg·m-1
•m2 / m = m
•m / m = 1
•km / km = 1
•km / m = km/m ≟ 1k
Quantities
• 3 kg / 2 m = 1.5 kg·m-1
@thodorisbais@wernerkeil
CodeMotion Milan School
October Exam on Maths
Powers
Units
•(m)2 = m2

•(km)2 = km2
•(m2)2 = m4
Quantities
• (3 m)2 = 9 m2
•
@thodorisbais@wernerkeil
CodeMotion Milan School
October Exam on Maths
Celsius Revisited
Units
•(K)2 = K2

•(°C)2 ≟ (K - 273.15)2
•m × °C ≟ m·(K - 273.15)
Quantities
•0 °C2 ≟ 74,610.9225 K2
•1 m°C ≟ 1 mK or 273.151K
@thodorisbais@wernerkeil
CodeMotion Milan School
October Exam on Maths
Parsing Units & Quantities
•299,792,458 m/s

•299792458 m/s

•299792.458 km/s

•299,792.458 km/s

•299,792,458 km*s-1

• 299,792.458 km×s-1
•299,792.458 km·s-1

•299,792.458 km·s⁻¹

•299,792.458 km*s^-1

•1,079,252,849 km/h

•1,079,252,849 km/t
• 670,616,629 mph
Speed of Light
@thodorisbais@wernerkeil
Systems of Unit
Systems of UnitSystems of Unit
• Metric System
• Imperial System
• US customary units
• Roman units of measurement
•Norwegian Units of Measurement
@thodorisbais@wernerkeil
Demo Time
@thodorisbais@wernerkeil
What Was the Fundamental
Problem Again?
Primitive (Java) types are primitive types
@thodorisbais@wernerkeil
JSR-385 Current Status
• JCP page

• https://jcp.org/en/jsr/detail?id=385

• GitHub repositories

• https://github.com/unitsofmeasurement

• Current status

• Final Release
@thodorisbais@wernerkeil
Java Community Process
@thodorisbais@wernerkeil
@thodorisbais@wernerkeil
We’re running for an Associate Seat!
Becoming a JCP Member
@thodorisbais@wernerkeil
@thodorisbais@wernerkeil

More Related Content

What's hot (12)

Chapter 14 heat and heat transfer methods
Chapter 14   heat and heat transfer methodsChapter 14   heat and heat transfer methods
Chapter 14 heat and heat transfer methods
 
Chapter 13 temperature kinetic theory and the gas laws
Chapter 13   temperature kinetic theory and the gas lawsChapter 13   temperature kinetic theory and the gas laws
Chapter 13 temperature kinetic theory and the gas laws
 
Chapter 15 thermodynamics
Chapter 15   thermodynamicsChapter 15   thermodynamics
Chapter 15 thermodynamics
 
Project[1]
Project[1]Project[1]
Project[1]
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Carlisle Heat Presentation
Carlisle Heat PresentationCarlisle Heat Presentation
Carlisle Heat Presentation
 
Heat in changes of state
Heat in changes of stateHeat in changes of state
Heat in changes of state
 
#22 Key
#22 Key#22 Key
#22 Key
 
#20
#20#20
#20
 
Thermodynamics
ThermodynamicsThermodynamics
Thermodynamics
 
Electrical Drives and Control Heating and Cooling Curves
Electrical Drives and Control Heating and Cooling CurvesElectrical Drives and Control Heating and Cooling Curves
Electrical Drives and Control Heating and Cooling Curves
 
Unit 14 Power Point
Unit 14 Power PointUnit 14 Power Point
Unit 14 Power Point
 

Similar to How JSR 385 could have Saved the Mars Climate Orbiter CodeMotion Milan October 2019

New chm 151 unit 1 powerpoints sp13 s
New chm 151 unit 1 powerpoints sp13 sNew chm 151 unit 1 powerpoints sp13 s
New chm 151 unit 1 powerpoints sp13 s
caneman1
 
New chm-151-unit-1-20powerpoints-20sp13s-140227172225-phpapp01
New chm-151-unit-1-20powerpoints-20sp13s-140227172225-phpapp01New chm-151-unit-1-20powerpoints-20sp13s-140227172225-phpapp01
New chm-151-unit-1-20powerpoints-20sp13s-140227172225-phpapp01
Cleophas Rwemera
 
Chpt 2 introduction to chemistry
Chpt  2   introduction to chemistryChpt  2   introduction to chemistry
Chpt 2 introduction to chemistry
phspsquires
 
01scientific measurement
01scientific measurement01scientific measurement
01scientific measurement
Dr Ahmad Fahmi
 
measurements
measurementsmeasurements
measurements
2010kreem
 
Unit 1 notes_pp_12_13
Unit 1 notes_pp_12_13Unit 1 notes_pp_12_13
Unit 1 notes_pp_12_13
sdieker
 
Measurement and matter
Measurement and matterMeasurement and matter
Measurement and matter
MrCram
 

Similar to How JSR 385 could have Saved the Mars Climate Orbiter CodeMotion Milan October 2019 (20)

How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
 
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
 
New chm 151 unit 1 powerpoints sp13 s
New chm 151 unit 1 powerpoints sp13 sNew chm 151 unit 1 powerpoints sp13 s
New chm 151 unit 1 powerpoints sp13 s
 
New chm-151-unit-1-20powerpoints-20sp13s-140227172225-phpapp01
New chm-151-unit-1-20powerpoints-20sp13s-140227172225-phpapp01New chm-151-unit-1-20powerpoints-20sp13s-140227172225-phpapp01
New chm-151-unit-1-20powerpoints-20sp13s-140227172225-phpapp01
 
1-Physical-quantities-units.pdf
1-Physical-quantities-units.pdf1-Physical-quantities-units.pdf
1-Physical-quantities-units.pdf
 
Lect1(unit).ppt
Lect1(unit).pptLect1(unit).ppt
Lect1(unit).ppt
 
Ppt#1 chapters 0+1
Ppt#1 chapters 0+1Ppt#1 chapters 0+1
Ppt#1 chapters 0+1
 
Physics Chapter No 1
Physics Chapter No 1Physics Chapter No 1
Physics Chapter No 1
 
Chapter_1_Study_of_Change-edited.pptx
Chapter_1_Study_of_Change-edited.pptxChapter_1_Study_of_Change-edited.pptx
Chapter_1_Study_of_Change-edited.pptx
 
Chapter 12 ~ Work and Energy Transformation of energy ~ Nitin Agarwal
Chapter 12 ~ Work and Energy Transformation of energy ~ Nitin Agarwal Chapter 12 ~ Work and Energy Transformation of energy ~ Nitin Agarwal
Chapter 12 ~ Work and Energy Transformation of energy ~ Nitin Agarwal
 
Unit 1 Presentation
Unit 1 PresentationUnit 1 Presentation
Unit 1 Presentation
 
What is energy? Slide share
What is energy?  Slide shareWhat is energy?  Slide share
What is energy? Slide share
 
Chpt 2 introduction to chemistry
Chpt  2   introduction to chemistryChpt  2   introduction to chemistry
Chpt 2 introduction to chemistry
 
01scientific measurement
01scientific measurement01scientific measurement
01scientific measurement
 
measurements
measurementsmeasurements
measurements
 
Unit 1 Numbers
Unit 1 NumbersUnit 1 Numbers
Unit 1 Numbers
 
Energy-transfer-conductionconvectionradiation.ppt
Energy-transfer-conductionconvectionradiation.pptEnergy-transfer-conductionconvectionradiation.ppt
Energy-transfer-conductionconvectionradiation.ppt
 
Unit 1 notes_pp_12_13
Unit 1 notes_pp_12_13Unit 1 notes_pp_12_13
Unit 1 notes_pp_12_13
 
energy
energy energy
energy
 
Measurement and matter
Measurement and matterMeasurement and matter
Measurement and matter
 

More from Thodoris Bais

More from Thodoris Bais (20)

EclipseCon 2021 NoSQL Endgame
EclipseCon 2021 NoSQL EndgameEclipseCon 2021 NoSQL Endgame
EclipseCon 2021 NoSQL Endgame
 
You Graduated Now What ECE UoWM 2021
You Graduated Now What ECE UoWM 2021You Graduated Now What ECE UoWM 2021
You Graduated Now What ECE UoWM 2021
 
NoSQL Endgame LWJUG 2021
NoSQL Endgame LWJUG 2021NoSQL Endgame LWJUG 2021
NoSQL Endgame LWJUG 2021
 
Be the Leader of Your Own Career Global Summit for Java Devs 21
Be the Leader of Your Own Career Global Summit for Java Devs 21Be the Leader of Your Own Career Global Summit for Java Devs 21
Be the Leader of Your Own Career Global Summit for Java Devs 21
 
How to grow an amazing community - JavaLand 2021
How to grow an amazing community - JavaLand 2021How to grow an amazing community - JavaLand 2021
How to grow an amazing community - JavaLand 2021
 
Securing eHealth, eGovernment and eBanking with Java - IT-Tage 2020 Conference
Securing eHealth, eGovernment and eBanking with Java - IT-Tage 2020 ConferenceSecuring eHealth, eGovernment and eBanking with Java - IT-Tage 2020 Conference
Securing eHealth, eGovernment and eBanking with Java - IT-Tage 2020 Conference
 
NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020
 
Securing eHealth, eGovernment and eBanking with Java - JCON Conference
 Securing eHealth, eGovernment and eBanking with Java - JCON Conference Securing eHealth, eGovernment and eBanking with Java - JCON Conference
Securing eHealth, eGovernment and eBanking with Java - JCON Conference
 
Be the Leader of Your Own Career JCON Conference 2020
Be the Leader of Your Own Career JCON Conference 2020Be the Leader of Your Own Career JCON Conference 2020
Be the Leader of Your Own Career JCON Conference 2020
 
NoSQL Endgame JCON Conference 2020
NoSQL Endgame JCON Conference 2020NoSQL Endgame JCON Conference 2020
NoSQL Endgame JCON Conference 2020
 
NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020
 
Utrecht JUG meetup September 2020
Utrecht JUG meetup September 2020Utrecht JUG meetup September 2020
Utrecht JUG meetup September 2020
 
Developer Career: Own it - SouJava April 2020
Developer Career: Own it - SouJava April 2020Developer Career: Own it - SouJava April 2020
Developer Career: Own it - SouJava April 2020
 
Securing eHealth and eGovernment with Java - AllTheTalksOnline 2020
Securing eHealth and eGovernment with Java - AllTheTalksOnline 2020Securing eHealth and eGovernment with Java - AllTheTalksOnline 2020
Securing eHealth and eGovernment with Java - AllTheTalksOnline 2020
 
How to pitch an innovative idea in a corporate environment
How to pitch an innovative idea in a corporate environmentHow to pitch an innovative idea in a corporate environment
How to pitch an innovative idea in a corporate environment
 
Utrecht JUG meetup February 2020
Utrecht JUG meetup February 2020Utrecht JUG meetup February 2020
Utrecht JUG meetup February 2020
 
Developer Career: Own it - Adorsys 2020
Developer Career: Own it - Adorsys 2020Developer Career: Own it - Adorsys 2020
Developer Career: Own it - Adorsys 2020
 
Utrecht JUG Meetup January 2020
Utrecht JUG Meetup January 2020Utrecht JUG Meetup January 2020
Utrecht JUG Meetup January 2020
 
Developer Career: Own it - Java2Days 2019
Developer Career: Own it - Java2Days 2019Developer Career: Own it - Java2Days 2019
Developer Career: Own it - Java2Days 2019
 
Securing eHealth and eGovernment with Java - Java2Days 2019
Securing eHealth and eGovernment with Java - Java2Days 2019Securing eHealth and eGovernment with Java - Java2Days 2019
Securing eHealth and eGovernment with Java - Java2Days 2019
 

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
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
Alluxio, Inc.
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
Max Lee
 

Recently uploaded (20)

Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdf
 
5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand
 
The Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionThe Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion Production
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 
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
 
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
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and Prevention
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 
Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptx
 
how-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdfhow-to-download-files-safely-from-the-internet.pdf
how-to-download-files-safely-from-the-internet.pdf
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024
 
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
 
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
 
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
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.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)
 

How JSR 385 could have Saved the Mars Climate Orbiter CodeMotion Milan October 2019

  • 1. How JSR 385 could have Saved the Mars Climate Orbiter Werner Keil & Thodoris Bais 24-25 October, 2019 @thodorisbais@wernerkeil
  • 2. Mars Climate Orbiter • Launched on 11 December 1998
 • 338 kilograms
 • $125 millions
 • To study Martian climate, atmosphere and surface changes @thodorisbais@wernerkeil
  • 3. Result of the Mission @thodorisbais@wernerkeil
  • 5. Mars Climate Orbiter “The problem here was not the error; it was the failure of NASA’s systems engineering, and the checks and balances in our process, to detect the error. That’s why we lost the spacecraft.” Edward Weiler
 NASA associate administrator of space science,
 IEEE Spectrum: Why the Mars Probe went off course @thodorisbais@wernerkeil
  • 8. What is the Fundamental Problem? Primitive (Java) types are primitive types @thodorisbais@wernerkeil
  • 9. What is the Fundamental Problem? Primitive (Java) types are primitive types • static final double C = 1079252849;
 • static final double SPEED_OF_LIGHT = 1079252849;
 • static final double SPEED_OF_LIGHT_IN_KM_PER_H = 1079252849; static final Quantity<SPEED> SPEED_OF_LIGHT = Quantities.getQuantity(1079252849, Units.KILOMETRE_PER_HOUR); @thodorisbais@wernerkeil
  • 10. Werner Keil Thodoris Bais Spec Lead JSR-385 Expert Group Member JSR-385 Let’s meet @thodorisbais@wernerkeil
  • 11. Rolling your Own Library • Development • Maintenance • Upgrades & extensions @thodorisbais@wernerkeil
  • 13. JSR-385: Units of Measurement API 2.0 Description This JSR is a major evolution of the Unit API 1.0 (JSR 363) specification. Focused on the SI System redefinition, modularity and support for Java SE 8/9 and above. JSR 363 This JSR specifies Java packages for modelling and working with measurement values, quantities and their corresponding units. @thodorisbais@wernerkeil
  • 14. JSR-385 Basic Concepts • Dimensions • Units • Quantities • Prefixes • Converters • Formats • Systems of units @thodorisbais@wernerkeil
  • 16. –Wikipedia “A physical quantity is a physical property of a phenomenon, body, or substance, that can be quantified by measurement.” –Ibidem “A physical quantity can be expressed as the combination of a magnitude expressed by a number - usually a real umber - and a unit.” Definition of a Physical Quantity @thodorisbais@wernerkeil
  • 17. Speed of Light c = 299,792,458 m/s Value Unit @thodorisbais@wernerkeil
  • 18. –Wikipedia “A physical quantity is a physical property of a phenomenon, body, or substance, that can be quantified by measurement.” “A physical quantity can be expressed as the combination of a magnitude expressed by a number - usually a real umber - and a unit.” Definition of a Physical Quantity –Ibidem “The same physical quantity can be represented equivalently in many unit systems.” @thodorisbais@wernerkeil
  • 19. Speed of Light c = 299,792,458 m/s = 1,079,252,849 km/h @thodorisbais@wernerkeil
  • 23. Multiples • km • ms • Mm? • ks? @thodorisbais@wernerkeil
  • 25. Dimensions • L: length • T: time • M: mass • I: electric current • Θ: thermodynamic temperature • N: amount of substance • J: luminous intensity • (1) Force: L · M · T-2 @thodorisbais@wernerkeil
  • 28. Equality and Equivalence • kΩ ≠ mHz • kΩ ≠ mΩ • kΩ ≡ kΩ • N ≅ kg·m·s-2 • kg·m-2 ≅ mg·mm-2 • 1 kΩ ≠ 1 mHz • 1 kΩ ≠ 1 mΩ • 1 kΩ ≡ 1 kΩ • 1 N ≅ 1 kg·m·s-2 • 1 kg·m-2 ≅ 1 mg·mm-2 • 1 kΩ ≅ 1,000 Ω Units Quantities @thodorisbais@wernerkeil
  • 29. Quantity Addition • 1 Ω + 1 Ω = 2 Ω • 1 Ω + 1 mΩ = 1.001 Ω • 1 mΩ + 1 Ω = 1,001 mΩ • 1 Ω + 1 m “does not compute” @thodorisbais@wernerkeil
  • 30. CodeMotion Milan School October Exam on Maths How much is 0 °C + 0 °C? • 0 °C • 0 °C • 273.15 °C Two absolute temperatures 0 °C + 0 °C = 273.15K + 273.15K = 546.30K = 273.15 °C @thodorisbais@wernerkeil
  • 31. How much is 0 °C + 0 °C? • 0 °C • 0 °C • 273.15 °C An absolute temperature and a temperature change 0 °C + 0 °C = 273.15K + 0K = 273.15K = 0 °C @thodorisbais@wernerkeil CodeMotion Milan School October Exam on Maths
  • 32. How much is 0 °C + 0 °C? • 0 °C • 0 °C • 273.15 °C Two temperature changes 0 °C + 0 °C = 0K + 0K = 0K = 0 °C @thodorisbais@wernerkeil CodeMotion Milan School October Exam on Maths
  • 33. How much is 0 °C + 0 °C? 273.15 °C (546.30 K) 0 °C + 0 °C = 0 °C (273.15 K) 0 °C (0 K) Answer @thodorisbais@wernerkeil CodeMotion Milan School October Exam on Maths
  • 34. Multiplication Units •kg × m = kg·m •kg × mm = kg·mm •g × km = g·km ≟ kg·m •m × m = m2 •km × km = km2 •mm × km = mm·km ≟ m2 •µm × m = µm·m ≟ mm2 Quantities •2 kg × 3 m = 6 kg·m @thodorisbais@wernerkeil CodeMotion Milan School October Exam on Maths
  • 35. Division Units •kg / m = kg·m-1 •kg / mm = kg·mm-1 •g / mm = g·mm-1 ≟ kg·m-1 •m2 / m = m •m / m = 1 •km / km = 1 •km / m = km/m ≟ 1k Quantities • 3 kg / 2 m = 1.5 kg·m-1 @thodorisbais@wernerkeil CodeMotion Milan School October Exam on Maths
  • 36. Powers Units •(m)2 = m2
 •(km)2 = km2 •(m2)2 = m4 Quantities • (3 m)2 = 9 m2 • @thodorisbais@wernerkeil CodeMotion Milan School October Exam on Maths
  • 37. Celsius Revisited Units •(K)2 = K2
 •(°C)2 ≟ (K - 273.15)2 •m × °C ≟ m·(K - 273.15) Quantities •0 °C2 ≟ 74,610.9225 K2 •1 m°C ≟ 1 mK or 273.151K @thodorisbais@wernerkeil CodeMotion Milan School October Exam on Maths
  • 38. Parsing Units & Quantities •299,792,458 m/s
 •299792458 m/s
 •299792.458 km/s
 •299,792.458 km/s
 •299,792,458 km*s-1
 • 299,792.458 km×s-1 •299,792.458 km·s-1
 •299,792.458 km·s⁻¹
 •299,792.458 km*s^-1
 •1,079,252,849 km/h
 •1,079,252,849 km/t • 670,616,629 mph Speed of Light @thodorisbais@wernerkeil
  • 39. Systems of Unit Systems of UnitSystems of Unit • Metric System • Imperial System • US customary units • Roman units of measurement •Norwegian Units of Measurement @thodorisbais@wernerkeil
  • 41. What Was the Fundamental Problem Again? Primitive (Java) types are primitive types @thodorisbais@wernerkeil
  • 42. JSR-385 Current Status • JCP page • https://jcp.org/en/jsr/detail?id=385 • GitHub repositories • https://github.com/unitsofmeasurement • Current status • Final Release @thodorisbais@wernerkeil
  • 45. Becoming a JCP Member @thodorisbais@wernerkeil