Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Eclipse Science F2F 2016 - JSR 363

261 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Eclipse Science F2F 2016 - JSR 363

  1. 1. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 The First IoT JSR: Units of Measurement JSR-363 Werner Keil @wernerkeil & @UnitAPI https://www.jcp.org/en/jsr/detail?id=363 http://unitsofmeasurement.github.io
  2. 2. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 The First IoT JSR: Units of Measurement Werner Keil •Consultant – Coach •Creative Cosmopolitan •Open Source Evangelist •Software Architect •Spec Lead – JSR363, Eclipse UOMo Project Lead •Individual JCP Executive Committee Member [www.linkedin.com/in/catmedia]
  3. 3. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 What are Units of Measurement? 6,089 ?????? A Measurement A Unit
  4. 4. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 What is the problem, in code? int distance = 6089; //in ??? float speed = airplane.getSpeed(); //in ??? System.out.println(“TTD: “ + (distance/speed) + “ hours”); 6,089 ?????? A Measurement A Unit
  5. 5. @YourTwitterHandle#DVXFR14{session hashtag} @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 LEARNING FROM THE PAST… Some examples of how things can go wrong…
  6. 6. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 Some real-life mishaps… NASA “Star Wars” Initiative, 1985 Sea Level
  7. 7. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 NASA Mars Climate Orbiter, 1999 Some real-life mishaps… [Cost $125M-300M] “Preliminary findings indicate that one team used US/English units (e.g. inches, feet and pounds) while the other used metric units for a key spacecraft operation.”
  8. 8. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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
  9. 9. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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);
  10. 10. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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.
  11. 11. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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
  12. 12. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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
  13. 13. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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!)
  14. 14. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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 … … ∞
  15. 15. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 What is the problem, in code? int distance = 6089; //in ??? float speed = airplane.getSpeed(); //in ??? System.out.println(“TTD: “ + (distance/speed) + “ hours”); 6,089 ?????? A Measurement A Unit
  16. 16. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 What is JSR-363, in code? Airplane airplane = new Airplane(“A380”); QuantityFactory<Length> lengthFactory = provider.getQuantityFactory(Length.class); Quantity<Length> distance = lengthFactory.create(6089d, KILO(METRE)); Quantity<Speed> airplaneSpeed = airplane.getSpeed(); Quantity<Time> timeToDest = distance.divide(airplaneSpeed) .asType(Time.class); System.out.println(“TTD: “ + timeToDest.to(HOUR)); TTD: 6.443381088681372 h
  17. 17. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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
  18. 18. @YourTwitterHandle#DVXFR14{session hashtag} @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016
  19. 19. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 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
  20. 20. @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016 Links to JSR-363 Public mailing list(s) / forum(s) Units-Dev on Google Groups: https://groups.google.com/forum/#!forum/units-dev Units-Users on Google Groups: https://groups.google.com/forum/#!forum/units-users The JSR page on JCP.org: https://jcp.org/en/jsr/detail?id=363 Project website on GitHub: unitsofmeasurement.github.io Get sample code from our GitHub repositories on https://github.com/unitsofmeasurement/uom-demos.
  21. 21. @YourTwitterHandle#DVXFR14{session hashtag} @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016
  22. 22. @YourTwitterHandle#DVXFR14{session hashtag} @wernerkeil | @UnitAPI#JSR363 | #EclipseScience | #ECE2016