With IoT it’s all about things and sensors. And when representing a temperature, for example, we normally have it as a float. But is this float in Celsius? Kelvin? This is one of the problems JSR 363 wants to solve: have all “real world” value and unit data represented in a standard way. This JSR is also very suitable for scientific applications, where data representation, conversion, and formatting are very important. In this session, you’ll see how developers as well as platform providers can leverage this JSR, coding a smart gas pump that reports its values by using Java standards. Come to meet JSR 363, Units of Measurement.
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
The First IoT JSR: Units of Measurement JSR-363 [BOF5981]
1. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
The First IoT JSR: Units of Measurement
JSR-363 [BOF5981]
Leonardo Lima & Otávio Santana & Werner Keil
@leomrlima & @otaviojava & @wernerkeil & @UnitAPI
https://www.jcp.org/en/jsr/detail?id=363
http://unitsofmeasurement.github.io
2. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
The First IoT JSR: Units of Measurement
Leonardo Lima
•Computer engineer, server & embedded SW developer
•From São Paulo, Brasil, now in Austin, TX
•CTO at
•Spec Lead – JSR363
•V2COM’s Representative at JCP Executive Committee
[www.linkedin.com/in/leomrlima]
3. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
The First IoT JSR: Units of Measurement
Otávio Santana
•Software engineer, Tomitribe
•From Salvador, Brazil
•Java Champion, SouJava JUG Leader
•Apache and OpenJDK Committer
•JSR 363 Expert Group member
•Representative at JCP EC for SouJava
[about.me/otaviojava]
4. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
The First IoT JSR: Units of Measurement
Werner Keil
•Consultant – Coach
•Creative Cosmopolitan
•Open Source Evangelist
•Software Architect
•Spec Lead – JSR363
•Individual JCP Executive Committee Member
[www.linkedin.com/in/catmedia]
5. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
What are Units of Measurement?
10,427 ??????
A Measurement
A Unit
San Francisco
São Paulo
6. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
What is the problem, in code?
int distance = 10427; //in ???
float speed = airplane.getSpeed(); //in ???
System.out.println(“TTD: “ + (distance/speed) + “
hours”);
10,427 ??????
A Measurement
A Unit
8. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
Some real-life mishaps…
NASA “Star Wars” Initiative, 1985
Sea Level
9. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
2001: Escape of the 250Kg tortoise
Los Angeles Zoo lent Clarence, a 250-kilogram, 75-
year-old Galapagos tortoise, to the Exotic Animal
Training and Management Program at Moorpark
College in Moorpark CA.
The first night in his new home, Clarence wrecked it:
“He just pushed one of the fence poles right
over,” said Moorpark's Chuck Brinkman.
The L.A. Zoo warned that Clarence was big, and
needed an enclosure for an animal that “weighs
in at about 250”, so that's what the college
built.
Unfortunately, they thought the zoo meant 250
pounds, so the enclosure wasn't adequate for
holding a 250-kilogram (552 lbs) beast.
Clarence
10. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
Why do we need a specification?
There are no specifications or standards for handling units in Java.
The current solution is to use primitives, that don’t provide any Type
Safety.
The errors are difficult to find using unit testing:
Interface and Internationalization (e.g. radian/degree, meters/feet);
Arithmetic operations (e.g. overflow);
Conversion between units (e.g. from same domain);
11. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
What is JSR-363?
Interfaces and abstract classes supporting unit operations including:
Checking of unit compatibility;
Expression of measurement in various units; and
Arithmetic operations on units.
Concrete classes implementing standard unit types (base, derived) and
unit conversion.
13. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
What is a Unit?
c. (a) Any determinate quantity, dimension, or magnitude adopted as a
basis or standard of measurement for other quantities of the same kind
and in terms of which their magnitude is calculated or expressed.
Oxford English Dictionary
Or … A well defined standard we all know?
Unit Definition
Second The duration of 9,192,631,770 periods of the radiation corresponding to the
transition between the two hyperfine levels of the ground state of caesium 133 atom
Kilogram The mass of the international prototype kilogram [a very special lump of metal]
metre The distance travelled by light in a vacuum in
3.3356409519815204957557671447492e-9 seconds
14. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
A Standard Measurement …
“The nice thing about standards is that you have so many to choose
from.”
Andrew S. Tanenbaum,
Computer Networks 2nd ed., p. 254
Foot
Mile
Yard Chain
Fathom
Furlong
InchNautical Mile
Statute Mile
astronomical unit (AU)
Light year
Parsec(or meter)
Passus (roman)
Hand
ångström
Scots/Welsh/English Mile
Metre fermi micron
Thou (or mil)League
rod/perch/pole
nail
Barleycorn
link
ell Cubitfinger
palm
Poppyseed
Milli Centi Kilo
15. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
Dimension
Allows analysis of a quantity by the rational powers of the 7 fundamental
dimensions (quantities are compatible when they have the same
dimensions):
length (L), mass (M), time (T), electric charge (I), absolute temperature
(Θ), amount of substance (N) and luminous intensity (J)
Examples:
Speed = length/time - it’s dimensions are L=1,T=-1 (rest 0) (e.g. metre/second - ms-1)
Acceleration is speed/time (m/s/s or ms-2) L=1, T=-2
Force is mass x acceleration M x ((length/time)/time) or M=1, L=1, T=-2
Molar Entropy: M=1 L=2 T=−2 Θ=−1 N=−1 (trust me!)
16. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
Quantity
A physical attribute of a thing. Something that can be measured and has
units. Compatible quantities have the same dimension…
Examples:
• Time
• Length
• Speed
• Amount of Substance
• Luminous Intensity
• Volume
• Mass
• Force
• Power
• Electrical Current
• Magnetic Flux Density
• Volumetric Flow Rate
• Fuel Economy*
• Percentage
• Eggs per carton
• Sheep per hour
• Bits and bytes …
… ∞
18. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
What is the problem, in code?
int distance = 10427; //in ???
float speed = airplane.getSpeed(); //in ???
System.out.println(“TTD: “ + (distance/speed) + “
hours”);
10,427 ??????
A Measurement
A Unit
19. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
What is JSR-363, in code?
Airplane airplane = new Airplane(“A380”);
QuantityFactory<Length> lengthFactory =
provider.getQuantityFactory(Length.class);
Quantity<Length> distance = lengthFactory.create(10427,
KILO(METRE));
Quantity<Speed> airplaneSpeed = airplane.getSpeed();
Quantity<Time> timeToDest = distance.divide(airplaneSpeed)
.asType(Time.class);
System.out.println(“TTD: “ + timeToDest.to(HOUR));
TTD: 11.033853606779548 h
20. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
Who is going to use JSR-363?
Java developers who work with physical quantities need to handle
measurements in their programs.
Inadequate models of physical measurements can lead to significant
programmatic errors.
Platform providers and developers can provide and use a better defined
API
Embedded developers can have less error-prone, more self-
documented code
24. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
JSR-363 timeline
March 11, 2014: Submitted
April 7, 2014: Creation approved
Dec 2014 – Jan 2015: Early Draft (approved)
Nov 2015 – Jan 2016: Public Review (approved)
Q3/2016 : Final Draft
Q3/2016: Final Release
25. @leomrlima & @otaviojava & @wernerkeil#JSR363JavaOne
Links to JSR-363
Public mailing list(s) and/or forum(s)
Units-Dev on Google Groups
Units-Users on Google Groups
The JSR page on JCP.org…
And two other “JSR project websites”:
Main project website is on GitHub (unitsofmeasurement)
Java.net site is used for JIRA (deprecated, use GitHub!)
And you can get sample code at our GitHub.