1 / 27

CLDC 8 and Java SE 8: Modern platform choices for the embedded developer

CLDC 8 and Java SE 8: Modern platform choices for the embedded developer . Alan.Bateman@oracle.com Shiva.Govindarajapuram@oracle.com. A word from our lawyers….

elda
Télécharger la présentation

CLDC 8 and Java SE 8: Modern platform choices for the embedded developer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CLDC 8 and Java SE 8: Modern platform choices for the embedded developer Alan.Bateman@oracle.comShiva.Govindarajapuram@oracle.com

  2. A word from our lawyers… The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

  3. Agenda • Java SE 8 and Compact Profiles • Java ME 8 and CLDC 8 • Trade-offs and differences • Demo • Wrap-up

  4. Java SE 8 / JDK 8 • JSR 337, currently inEarly Draft Review, GA expectedMarch 2014 • Main features • JSR 335: Lambda Expressions • JSR 310: Date and Time API • JSR 308: Annotations on Java Types • Embedded features: • Compact Profiles: well-defined subsets of the Java SE Platform • Allows for Stripped Implementations

  5. Compact Profiles • Interim step on the road to a fully modular Platform • Enables applications that use only a subset of the Java SE platform to run on resource constrained devices • Java ME Connected Device Configuration (CDC) and Java SE convergence • Defines three profiles compact1 < compact2 < compact3 < complete Java SE

  6. Compact Profiles Names and rationale • compact1 • Smallest set of API packages without omitting classes • Provides migration path for applications that target CDC/FP today • compact2 • compact1 + XML, RMI and JDBC • Provides migration path for applications that target CDC standalone APIs • compact3 • compact2 + everything except Desktop, JAX-WS/JAXB and CORBA • Intended for applications that require most of Java SE.

  7. Compact Profiles Constraints • A Profile must implement the entire JVMS and JLS • Defined by a set of API packages • API packages for all types referenced in the JLS are in compact1 • A larger Profile must contain all API packages defined in smaller Profile • With some minor exceptions, contents of each API package is identical to that of the complete Java SE platform

  8. Compact Profiles compact3 compact1 compact2 java.io java.lang java.lang.annotation java.lang.invoke java.lang.ref java.lang.reflect java.math java.net java.nio java.nio.channels java.nio.channels.spi java.nio.charset java.nio.charset.spi java.nio.file java.nio.file.attribute java.nio.file.spi java.security java.security.cert java.security.interfaces java.security.spec java.text java.text.spi java.time java.time.chrono java.time.format java.time.temporal java.time.zone java.util java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks java.util.function java.util.jar java.util.logging java.util.regex java.util.spi java.util.stream java.util.zip javax.net javax.net.ssl javax.script javax.security.auth javax.security.auth.callback javax.security.auth.login javax.security.auth.spi javax.security.auth.x500 javax.security.cert java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server java.sql javax.rmi.ssl javax.sql javax.transaction javax.transaction.xa javax.xml javax.xml.datatype javax.xml.namespace javax.xml.parsers javax.xml.stream javax.xml.stream.events javax.xml.stream.util javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax javax.xml.transform.stax javax.xml.transform.stream javax.xml.validation javax.xml.xpath org.w3c.dom org.w3c.dom.bootstrap org.w3c.dom.events org.w3c.dom.ls org.xml.sax org.xml.sax.ext org.xml.sax.helpers javax.xml.crypto.dsig javax.xml.crypto.dsig.dom javax.xml.crypto.dsig.keyinfo javax.xml.crypto.dsig.spec org.ietf.jgss java.lang.instrument java.lang.management java.security.acl java.util.prefs javax.annotation.processing javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax.management javax.management.loading javax.management.modelmbean javax.management.monitor javax.management.openmbean javax.management.relation javax.management.remote javax.management.remote.rmi javax.management.timer javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi javax.security.auth.kerberos javax.security.sasl javax.sql.rowset javax.sql.rowset.serial javax.sql.rowset.spi javax.tools javax.xml.crypto javax.xml.crypto.dom

  9. Java ME 8 • Connected Limited Device Configuration (CLDC) 8, JSR 360 • Java ME Embedded Profile, JSR 361 • Other value-add and enhanced APIs and features for embedded

  10. Java ME 8 Platform Overview Protocols and Data Conversion AdditionalOptional APIs Security and Management Wireless Communication Messaging AdditonalAPIs (Examples) AdditionalOptional JSRs Sensors Web Services Vertical Specific APIs Location Security and Trust Services Application Platform On-Device I/O Access Java ME Embedded Profile (MEEP 8, JSR 361) SATSA Device I/O API Java VM CLDC 8 (JSR 360, aligned with Java SE 8)

  11. CLDC 8 • Evolutionary update from CLDC 1.1.1 • CLDC 1.1 original defined by JSR 139, FAB 2003 • Modernized to align with newer releases of Java SE • Strict subset of Java SE 8 • New features and protocols for the Generic Connection Framework • Binary compatible with CLDC 1.1.1 • JSR 360 currently in Public Review

  12. CLDC 8 Java Virtual Machine • JSR 360 not final yet • Currently planned to move to Java SE 7 Edition of JVMS • Some Differences • No finalizers (same as CLDC 1.1) • Noinvokedynamic • Class file versions • Support version 51 (Java SE 7) and 52 (Java SE 8) class files • Version 49 and 50 not supported • Version <= 48 optional with CLDC type checking verifier

  13. CLDC 8 Java Language • Big leap from CLDC 1.1 • Java Language features added in Java SE 5, 7 and upcoming 8 • Generics, enums, enhanced for-loop, autoboxing, … • Strings in switch, try-with-resources, multi-catch, … • Lambda expressions, default and static methods in interfaces, method references, ... • Code compiled to invokedynamicrequires post-processing to run.

  14. CLDC 8 • Many APIs and features omitted to keep footprint low • Reflection • Serialization • JNI • Custom class loaders • Only partial support for annotations • Thread groups and daemon threads • Collections (partial) • Security APIs • Concurrency APIs

  15. CLDC 8 APIs • Like CLDC 1.1, memory constraints force a minimum set of APIs • CLDC 8 defines two sets of APIs • CLDC Full APIs • CLDC Compact APIs • Significant sub-setting of Java SE 8 APIs, no super-setting

  16. CLDC 8 CLDC Compact API CLDC Full API java.io java.lang java.lang.annotation java.lang.ref java.net java.nio java.nio.channels java.nio.file java.nio.file.attribute java.security java.util java.util.logging java.io java.lang java.lang.annotation java.lang.ref java.net java.nio java.security java.util Significant sub-setting in each API package, CLDC 8 spec has details

  17. The story so far • Compact Profiles enable applications that use only a subset of the Java SE platform to run on resource constrained devices • Significant update of Java ME to modernize and align with Java SE • Alignment should enable much more software portability • Together they address a wide range of use-cases and target markets • Java ME vs. Java SE is mostly a footprint/feature trade-off

  18. Footprint/feature trade-off Footprint Features compact1 compact3 compact2 MEEP 8 Full JRE CLDC 8 18MB dynamic, 12MB static and up 128K dynamic, 1MB static and up

  19. Areas of difference • CLDC uses Generic Connection Framework • Updated in JSR 360 • New protocols • New Access Point API • Not included in Java SE but usable as extension (JSR 197) • Application on CLDC will likely make use of MEEP APIs • May not make sense on Java SE

  20. Convergence going forward • Java SE and Java ME will keep releases and schedules in sync • Need to move to a fully modular Platform • Project Jigsaw • Divide the Platform’s API packages into well-specified and finer grain interdependent modules • Should allow Platform implementer to build runtime that is assembled from a subset of the modules

  21. Demo

  22. Demo Architecture LED Strip Servo Driver LCD Plate ForcePressure Sensor Peripheral Access API (Abstraction Layer) PeripheralAcesss using PI4J PeripheralAcesss Using DAAPI Java ME Java SE

  23. Conclusion • Main messages • Java ME 8 modernized and updated to align with Java SE • Together support a very wide range of devices and use-cases • Leverage Java technology and huge ecosystem to address traditional embedded environments • Will likely see further convergence in the future

  24. Questions?

  25. More Opportunities for Questions • Today @ 1-3pm • Java SE Embedded/OEP-E booth

More Related