Cldc 8 and java se 8 modern platform choices for the embedded developer
This presentation is the property of its rightful owner.
Sponsored Links
1 / 27

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


  • 49 Views
  • Uploaded on
  • Presentation posted in: General

CLDC 8 and Java SE 8: Modern platform choices for the embedded developer . [email protected] [email protected] A word from our lawyers….

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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

[email protected]@oracle.com


A word from our lawyers

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.


Agenda

Agenda

  • Java SE 8 and Compact Profiles

  • Java ME 8 and CLDC 8

  • Trade-offs and differences

  • Demo

  • Wrap-up


Java se 8 jdk 8

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


Compact profiles

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


Compact profiles1

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.


Compact profiles2

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


Compact profiles3

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


Java me 8

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


Java me 8 platform overview

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)


Cldc 8

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


Cldc 81

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


Cldc 82

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.


Cldc 83

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


Cldc 84

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


Cldc 85

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


The story so far

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


Footprint feature trade off

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


Areas of difference

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


Convergence going forward

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


Cldc 8 and java se 8 modern platform choices for the embedded developer

Demo


Demo architecture

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


Conclusion

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


Cldc 8 and java se 8 modern platform choices for the embedded developer

Questions?


More opportunities for questions

More Opportunities for Questions

  • Today @ 1-3pm

    • Java SE Embedded/OEP-E booth


  • Login