SlideShare a Scribd company logo
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

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
Sarah Sue Calbio
 
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
Sarah Sue Calbio
 
Chapter 15 thermodynamics
Chapter 15   thermodynamicsChapter 15   thermodynamics
Chapter 15 thermodynamics
Sarah Sue Calbio
 
Project[1]
Project[1]Project[1]
Project[1]
guest19b5f7
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
ssusere92e121
 
Carlisle Heat Presentation
Carlisle Heat PresentationCarlisle Heat Presentation
Carlisle Heat Presentation
TeddiCarlisle
 
Heat in changes of state
Heat in changes of stateHeat in changes of state
Heat in changes of state
Currituck County High School
 
#22 Key
#22 Key#22 Key
#22 Key
Lamar1411_SI
 
#20
#20#20
Thermodynamics
ThermodynamicsThermodynamics
Thermodynamics
Mark Byrron Ilagan
 
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
Dr.Raja R
 
Unit 14 Power Point
Unit 14 Power PointUnit 14 Power Point

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

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
Werner Keil
 
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
Werner Keil
 
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
 
1-Physical-quantities-units.pdf
1-Physical-quantities-units.pdf1-Physical-quantities-units.pdf
1-Physical-quantities-units.pdf
Dr. Syed Haider
 
Lect1(unit).ppt
Lect1(unit).pptLect1(unit).ppt
Lect1(unit).ppt
LuongTuan15
 
Ppt#1 chapters 0+1
Ppt#1 chapters 0+1Ppt#1 chapters 0+1
Ppt#1 chapters 0+1
laubin2000
 
Physics Chapter No 1
Physics Chapter No 1Physics Chapter No 1
Physics Chapter No 1
AqibJaved89
 
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
NurulhayahMarhamahMa
 
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
nitinagarwal634
 
Unit 1 Presentation
Unit 1 PresentationUnit 1 Presentation
Unit 1 Presentation
poags25
 
What is energy? Slide share
What is energy?  Slide shareWhat is energy?  Slide share
What is energy? Slide share
ImranAnsari174
 
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 Numbers
Unit 1 NumbersUnit 1 Numbers
Unit 1 Numbers
Josh Macha
 
Energy-transfer-conductionconvectionradiation.ppt
Energy-transfer-conductionconvectionradiation.pptEnergy-transfer-conductionconvectionradiation.ppt
Energy-transfer-conductionconvectionradiation.ppt
BernardoVargasBerrue
 
Unit 1 notes_pp_12_13
Unit 1 notes_pp_12_13Unit 1 notes_pp_12_13
Unit 1 notes_pp_12_13
sdieker
 
energy
energy energy
energy
GenelYutuc3
 
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

EclipseCon 2021 NoSQL Endgame
EclipseCon 2021 NoSQL EndgameEclipseCon 2021 NoSQL Endgame
EclipseCon 2021 NoSQL Endgame
Thodoris Bais
 
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
Thodoris Bais
 
NoSQL Endgame LWJUG 2021
NoSQL Endgame LWJUG 2021NoSQL Endgame LWJUG 2021
NoSQL Endgame LWJUG 2021
Thodoris Bais
 
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
Thodoris Bais
 
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
Thodoris Bais
 
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
Thodoris Bais
 
NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020NoSQL Endgame DevoxxUA Conference 2020
NoSQL Endgame DevoxxUA Conference 2020
Thodoris Bais
 
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
Thodoris Bais
 
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
Thodoris Bais
 
NoSQL Endgame JCON Conference 2020
NoSQL Endgame JCON Conference 2020NoSQL Endgame JCON Conference 2020
NoSQL Endgame JCON Conference 2020
Thodoris Bais
 
NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020NoSQL Endgame Percona Live Online 2020
NoSQL Endgame Percona Live Online 2020
Thodoris Bais
 
Utrecht JUG meetup September 2020
Utrecht JUG meetup September 2020Utrecht JUG meetup September 2020
Utrecht JUG meetup September 2020
Thodoris Bais
 
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
Thodoris Bais
 
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
Thodoris Bais
 
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
Thodoris Bais
 
Utrecht JUG meetup February 2020
Utrecht JUG meetup February 2020Utrecht JUG meetup February 2020
Utrecht JUG meetup February 2020
Thodoris Bais
 
Developer Career: Own it - Adorsys 2020
Developer Career: Own it - Adorsys 2020Developer Career: Own it - Adorsys 2020
Developer Career: Own it - Adorsys 2020
Thodoris Bais
 
Utrecht JUG Meetup January 2020
Utrecht JUG Meetup January 2020Utrecht JUG Meetup January 2020
Utrecht JUG Meetup January 2020
Thodoris Bais
 
Developer Career: Own it - Java2Days 2019
Developer Career: Own it - Java2Days 2019Developer Career: Own it - Java2Days 2019
Developer Career: Own it - Java2Days 2019
Thodoris Bais
 
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
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

E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Envertis Software Solutions
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
Ayan Halder
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 

Recently uploaded (20)

E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 

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