SlideShare a Scribd company logo
How JSR-385 could have
Saved the Mars Climate
Orbiter
Werner Keil & Thodoris Bais
#jfall19
@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
What went wrong
@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
Lessons Learned
@thodorisbais@wernerkeil
•Read the software specifications
•Use JSR-385 instead of primitives
•Fail-fast
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
Rolling your Own Library
• Development
• Maintenance
• Upgrades & extensions
@thodorisbais@wernerkeil
Werner Keil Thodoris Bais
Spec Lead JSR-385 Expert Group Member JSR-385
Let’s meet
@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. Focussed
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
JFall School 2019
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
JFall School 2019
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
JFall School 2019
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
JFall School 2019
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
JFall School 2019
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
JFall School 2019
October Exam on Maths
Powers
Units
•(m)2 = m2

•(km)2 = km2
•(m2)2 = m4
Quantities
• (3 m)2 = 9 m2
•
@thodorisbais@wernerkeil
JFall School 2019
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
JFall School 2019
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
Setting up a project
<dependencies>
<dependency>
<groupId>tech.units</groupId>
<artifactId>indriya</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
@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

L1 - Energy Systems and Thermofluids 2021-22
L1 - Energy Systems and Thermofluids 2021-22L1 - Energy Systems and Thermofluids 2021-22
L1 - Energy Systems and Thermofluids 2021-22
Keith Vaugh
 
Temperature
TemperatureTemperature
Temperature
MLFGarcia
 
Heat Stress in Livestock and People
Heat Stress in Livestock and PeopleHeat Stress in Livestock and People
Heat Stress in Livestock and People
Katestone
 
Firemaps.net slideshare
Firemaps.net slideshareFiremaps.net slideshare
Firemaps.net slideshare
GernotRuecker
 
Report data-logger full
Report data-logger fullReport data-logger full
Report data-logger full
Qhalilah Radin
 
Motion SCIENCE
Motion SCIENCEMotion SCIENCE
Motion SCIENCE
Snju Lehri
 
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
 
Fire tetrahedron
Fire tetrahedronFire tetrahedron
Fire tetrahedron
UBONG EDET
 
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
 
Lab 12 heat engines and 1st law
Lab 12 heat engines and 1st lawLab 12 heat engines and 1st law
Lab 12 heat engines and 1st law
MidoOoz
 
Chapter 15 thermodynamics
Chapter 15   thermodynamicsChapter 15   thermodynamics
Chapter 15 thermodynamics
Sarah Sue Calbio
 
Unit 14 Power Point
Unit 14 Power PointUnit 14 Power Point
Temperature MEASUREMENT
Temperature MEASUREMENTTemperature MEASUREMENT
Temperature MEASUREMENT
GLA UNIVERSITY MATHURA
 
Fire ppt
Fire pptFire ppt
Fire ppt
priddyal
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
ssusere92e121
 
Thermodynamics
ThermodynamicsThermodynamics
Thermodynamics
Mark Byrron Ilagan
 
#20 Key
#20 Key#20 Key
#20 Key
Lamar1411_SI
 
Measuring mass
Measuring massMeasuring mass
Measuring mass
Lakshmy Subramaniam
 
Thermal Energy PPT
Thermal Energy PPTThermal Energy PPT
Thermal Energy PPT
DARK95
 
OLM Science6_9
OLM Science6_9OLM Science6_9
OLM Science6_9
gosomers
 

What's hot (20)

L1 - Energy Systems and Thermofluids 2021-22
L1 - Energy Systems and Thermofluids 2021-22L1 - Energy Systems and Thermofluids 2021-22
L1 - Energy Systems and Thermofluids 2021-22
 
Temperature
TemperatureTemperature
Temperature
 
Heat Stress in Livestock and People
Heat Stress in Livestock and PeopleHeat Stress in Livestock and People
Heat Stress in Livestock and People
 
Firemaps.net slideshare
Firemaps.net slideshareFiremaps.net slideshare
Firemaps.net slideshare
 
Report data-logger full
Report data-logger fullReport data-logger full
Report data-logger full
 
Motion SCIENCE
Motion SCIENCEMotion SCIENCE
Motion SCIENCE
 
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
 
Fire tetrahedron
Fire tetrahedronFire tetrahedron
Fire tetrahedron
 
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
 
Lab 12 heat engines and 1st law
Lab 12 heat engines and 1st lawLab 12 heat engines and 1st law
Lab 12 heat engines and 1st law
 
Chapter 15 thermodynamics
Chapter 15   thermodynamicsChapter 15   thermodynamics
Chapter 15 thermodynamics
 
Unit 14 Power Point
Unit 14 Power PointUnit 14 Power Point
Unit 14 Power Point
 
Temperature MEASUREMENT
Temperature MEASUREMENTTemperature MEASUREMENT
Temperature MEASUREMENT
 
Fire ppt
Fire pptFire ppt
Fire ppt
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
Thermodynamics
ThermodynamicsThermodynamics
Thermodynamics
 
#20 Key
#20 Key#20 Key
#20 Key
 
Measuring mass
Measuring massMeasuring mass
Measuring mass
 
Thermal Energy PPT
Thermal Energy PPTThermal Energy PPT
Thermal Energy PPT
 
OLM Science6_9
OLM Science6_9OLM Science6_9
OLM Science6_9
 

Similar to How JSR 385 could have Saved the Mars Climate Orbiter JFall 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
 
1-Physical-quantities-units.pdf
1-Physical-quantities-units.pdf1-Physical-quantities-units.pdf
1-Physical-quantities-units.pdf
Dr. Syed Haider
 
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
 
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
 
What is energy? Slide share
What is energy?  Slide shareWhat is energy?  Slide share
What is energy? Slide share
ImranAnsari174
 
Energy transfer and storage
Energy transfer and storageEnergy transfer and storage
Energy transfer and storage
mithilan
 
Unit 1 Presentation
Unit 1 PresentationUnit 1 Presentation
Unit 1 Presentation
poags25
 
energy
energy energy
energy
GenelYutuc3
 
Lect1(unit).ppt
Lect1(unit).pptLect1(unit).ppt
Lect1(unit).ppt
LuongTuan15
 
Measurement and matter
Measurement and matterMeasurement and matter
Measurement and matter
MrCram
 
Unit 1 Numbers
Unit 1 NumbersUnit 1 Numbers
Unit 1 Numbers
Josh Macha
 
Sec 4 Chapter 3
Sec 4 Chapter 3Sec 4 Chapter 3
Sec 4 Chapter 3
Cathy Duynisveld
 
Measurements &amp; units
Measurements &amp; unitsMeasurements &amp; units
Measurements &amp; units
ameermudasar
 
Ppt#1 chapters 0+1
Ppt#1 chapters 0+1Ppt#1 chapters 0+1
Ppt#1 chapters 0+1
laubin2000
 
01scientific measurement
01scientific measurement01scientific measurement
01scientific measurement
Dr Ahmad Fahmi
 
0708 energy
0708 energy0708 energy
0708 energy
manman321
 
0708 energy
0708 energy0708 energy
0708 energy
manman321
 
2 matter and mesurement and elements of uncertatinty.ppt
2 matter and mesurement and elements of uncertatinty.ppt2 matter and mesurement and elements of uncertatinty.ppt
2 matter and mesurement and elements of uncertatinty.ppt
IrishPonce2
 

Similar to How JSR 385 could have Saved the Mars Climate Orbiter JFall 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
 
1-Physical-quantities-units.pdf
1-Physical-quantities-units.pdf1-Physical-quantities-units.pdf
1-Physical-quantities-units.pdf
 
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
 
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
 
What is energy? Slide share
What is energy?  Slide shareWhat is energy?  Slide share
What is energy? Slide share
 
Energy transfer and storage
Energy transfer and storageEnergy transfer and storage
Energy transfer and storage
 
Unit 1 Presentation
Unit 1 PresentationUnit 1 Presentation
Unit 1 Presentation
 
energy
energy energy
energy
 
Lect1(unit).ppt
Lect1(unit).pptLect1(unit).ppt
Lect1(unit).ppt
 
Measurement and matter
Measurement and matterMeasurement and matter
Measurement and matter
 
Unit 1 Numbers
Unit 1 NumbersUnit 1 Numbers
Unit 1 Numbers
 
Sec 4 Chapter 3
Sec 4 Chapter 3Sec 4 Chapter 3
Sec 4 Chapter 3
 
Measurements &amp; units
Measurements &amp; unitsMeasurements &amp; units
Measurements &amp; units
 
Ppt#1 chapters 0+1
Ppt#1 chapters 0+1Ppt#1 chapters 0+1
Ppt#1 chapters 0+1
 
01scientific measurement
01scientific measurement01scientific measurement
01scientific measurement
 
0708 energy
0708 energy0708 energy
0708 energy
 
0708 energy
0708 energy0708 energy
0708 energy
 
2 matter and mesurement and elements of uncertatinty.ppt
2 matter and mesurement and elements of uncertatinty.ppt2 matter and mesurement and elements of uncertatinty.ppt
2 matter and mesurement and elements of uncertatinty.ppt
 

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

原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
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
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
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
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
YousufSait3
 
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
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
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
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
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
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 

Recently uploaded (20)

原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
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
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
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?
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
 
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...
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
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
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
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
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 

How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019

  • 1. How JSR-385 could have Saved the Mars Climate Orbiter Werner Keil & Thodoris Bais #jfall19 @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
  • 6. 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
  • 7. Lessons Learned @thodorisbais@wernerkeil •Read the software specifications •Use JSR-385 instead of primitives •Fail-fast
  • 10. What is the Fundamental Problem? Primitive (Java) types are primitive types @thodorisbais@wernerkeil
  • 11. 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
  • 12. Rolling your Own Library • Development • Maintenance • Upgrades & extensions @thodorisbais@wernerkeil
  • 13. Werner Keil Thodoris Bais Spec Lead JSR-385 Expert Group Member JSR-385 Let’s meet @thodorisbais@wernerkeil
  • 15. JSR-385: Units of Measurement API 2.0 Description This JSR is a major evolution of the Unit API 1.0 (JSR 363) specification. Focussed 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
  • 16. JSR-385 Basic Concepts • Dimensions • Units • Quantities • Prefixes • Converters • Formats • Systems of units @thodorisbais@wernerkeil
  • 18. –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
  • 19. Speed of Light c = 299,792,458 m/s Value Unit @thodorisbais@wernerkeil
  • 20. –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
  • 21. Speed of Light c = 299,792,458 m/s = 1,079,252,849 km/h @thodorisbais@wernerkeil
  • 25. Multiples • km • ms • Mm? • ks? @thodorisbais@wernerkeil
  • 27. 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
  • 30. 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
  • 31. Quantity Addition • 1 Ω + 1 Ω = 2 Ω • 1 Ω + 1 mΩ = 1.001 Ω • 1 mΩ + 1 Ω = 1,001 mΩ • 1 Ω + 1 m “does not compute” @thodorisbais@wernerkeil
  • 32. JFall School 2019 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
  • 33. 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 JFall School 2019 October Exam on Maths
  • 34. 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 JFall School 2019 October Exam on Maths
  • 35. 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 JFall School 2019 October Exam on Maths
  • 36. 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 JFall School 2019 October Exam on Maths
  • 37. 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 JFall School 2019 October Exam on Maths
  • 38. Powers Units •(m)2 = m2
 •(km)2 = km2 •(m2)2 = m4 Quantities • (3 m)2 = 9 m2 • @thodorisbais@wernerkeil JFall School 2019 October Exam on Maths
  • 39. 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 JFall School 2019 October Exam on Maths
  • 40. 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
  • 41. 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
  • 43. What Was the Fundamental Problem Again? Primitive (Java) types are primitive types @thodorisbais@wernerkeil
  • 44. Setting up a project <dependencies> <dependency> <groupId>tech.units</groupId> <artifactId>indriya</artifactId> <version>2.0</version> </dependency> </dependencies> @thodorisbais@wernerkeil
  • 45. 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
  • 48. Becoming a JCP Member @thodorisbais@wernerkeil