Java ME 8 e Internet of Things

I sistemi embedded sono sistemi informatici incorporati in dispositivi completi, le cui funzioni dedicate risiedono all'interno di un sistema meccanico o elettrico più ampio. Tipicamente utilizzati in applicazioni sia industriali che consumer, i sistemi embedded stanno entrando in scena con l'Internet of Things (IoT). Per gli sviluppatori che hanno appena iniziato con l'IoT, questo articolo è una guida per saperne di più sulle tecnologie che compongono la piattaforma IoT di Oracle: Java ME 8, Java ME Embedded, Java SE Embedded e Java Embedded Suite.

Nel 1991, Mark Weiser, allora capo del Palo Alto Research Center (PARC) di Xerox, ha tentato di catturare l'era imminente dell'ubiquità informatica. Notando che "le tecnologie più profonde sono quelle che scompaiono", Weiser ha descritto i vari esperimenti tecnici e di pensiero condotti dai suoi colleghi al PARC, mentre cercavano un nuovo modo di pensare ai computer come sistemi incorporati. La loro visione, che avrebbe potuto sembrare fantastica come un hovercraft nel 1991, sta rapidamente diventando più comune oggi:

Sal si sveglia: sente l'odore del caffè. Qualche minuto prima la sua sveglia, allertata dal suo movimento irrequieto prima di svegliarsi, aveva chiesto piano: "Caffè?" E lei aveva borbottato: "Sì". "Sì" e "no" sono le uniche parole che conosce [...]

A colazione Sal legge le notizie. Preferisce ancora il modulo cartaceo, come la maggior parte delle persone. Individua una citazione interessante di un editorialista nella sezione affari. Passa la penna sul nome, la data, la sezione e il numero di pagina del giornale e poi cerchia la citazione. La penna invia un messaggio al giornale, che trasmette la citazione al suo ufficio [...]

Una volta che Sal arriva al lavoro, la visuale (nella sua macchina) la aiuta a trovare rapidamente un parcheggio. Mentre entra nell'edificio, le macchine nel suo ufficio si preparano a registrarla ...

I dispositivi incorporati nello scenario mattutino della giornata lavorativa di Weiser utilizzano sensori per tracciare le interazioni di un utente umano e connettività wireless per orchestrare una risposta: il letto di Sal, la sveglia e la caffettiera sono tutti collegati per garantire che la sua prima tazza di caffè sia in corso prima che lei rotoli fuori dal letto. Per Weiser e i suoi colleghi, questo era un calcolo tranquillo ; oggi potremmo chiamarlo Internet of Things (IoT).

Ulteriori informazioni sul lavoro di Weiser al PARC e sulla sua teoria dell'ubiquitous computing: "Garantire la qualità dei servizi Web nell'era del computer calmo" (Frank Sommers, JavaWorld, aprile 2001).

Panoramica IoT

Se esiste una caratteristica distintiva dell'IoT, è l'interoperabilità o il coordinamento di più dispositivi. Come osservato nello scenario precedente, l'IoT utilizza sensori per raccogliere dati (in quel caso sulle interazioni di Sal nel suo ambiente) e connettività wireless per orchestrare una risposta. L'IoT si basa su una confluenza di tecnologie, tra cui piattaforme hardware nuove e vecchie, big data, cloud computing e computing machine-to-machine (M2M). Le API sono il collante necessario, riunendo tutte queste parti mobili.

Soprattutto per gli sviluppatori Java, Java è già la chiave per molte delle tecnologie IoT emergenti e Oracle si è impegnata a rendere Java una piattaforma leader (se non la piattaforma) per IoT. Java ME 8 dà nuova vita alla tecnologia dei piccoli dispositivi Java, estendendola con una linea differenziata di piattaforme Java integrate.

Le sezioni successive introdurranno le tecnologie che compongono la piattaforma IoT di Oracle; segui i link per saperne di più su Java ME, Java ME 8 e sui tre framework incorporati: Java ME Embedded, Java SE Embedded e Java Embedded Suite.

Java ME

Java Micro Edition era originariamente concepito per affrontare i vincoli associati alla creazione di applicazioni per piccoli dispositivi. Basato su Java SE, Java ME (o J2ME, come lo conoscevamo nel 1999) era la piattaforma per applicazioni Java eseguite su piccoli dispositivi con memoria, visualizzazione e capacità di alimentazione limitate. Oggi viene utilizzato per sviluppare sistemi embedded, che vanno dai controlli industriali ai telefoni cellulari (in particolare i feature phone), ai set-top box e ai lettori Blu-ray.

Gli sviluppatori che lavorano in Java ME possono scegliere tra più configurazioni, profili e pacchetti opzionali:

  • Una configurazione fornisce il set più elementare di librerie e funzionalità della macchina virtuale per un'ampia gamma di dispositivi.
  • Un profilo è un insieme di API che supportano una gamma più ristretta di dispositivi.
  • Un pacchetto opzionale è un insieme di API specifiche della tecnologia. L'API di messaggistica wireless è un esempio. Dai un'occhiata al primer sui pacchetti opzionali di Oracle per saperne di più sui pacchetti opzionali.

Configurazioni e profili

Nel tempo sono emerse due configurazioni: Connected Limited Device Configuration (CLDC) è la configurazione per piccoli dispositivi e Connected Device Configuration (CDC) è la configurazione per dispositivi mobili più capaci come smartphone e set-top box.

I profili Java ME si trovano in cima alle configurazioni, definendo API di livello superiore da utilizzare per particolari applicazioni. Mobile Information Device Profile (MIDP) , ad esempio, si trova su CLDC e fornisce API di interfaccia utente, networking e storage persistente. Le applicazioni eseguite in un ambiente CLDC / MIDP (come i giochi) sono note come MIDlet .

Programmazione del dispositivo con CLDC / MIDP

"Programmazione del dispositivo con MIDP" (Michael Cymerman) include una dimostrazione pratica per gli sviluppatori che non conoscono CLDC / MIDP. Vedi anche "Costruire MIDlet" (Jonathan Knudsen e Sing Li) e "Grandi progetti per piccoli dispositivi" (Ben Hui).

Per CDC, ci sono tre profili, Foundation, Personal Basis e Personal:

  • Il Foundation Profile è un insieme di API Java ottimizzate per dispositivi a impatto ridotto che dispongono di risorse limitate e non richiedono un'interfaccia utente grafica (GUI).
  • Il Personal Basis Profile è un superset delle API Foundation Profile e supporta dispositivi con requisiti GUI leggeri. Questo profilo viene fornito con un framework per la creazione di componenti GUI leggeri e supporta alcune classi Abstract Window Toolkit (AWT).
  • Il profilo personale estende il profilo di base personale con un toolkit GUI basato su AWT. Fornisce un ambiente applicativo Java ME completo con supporto AWT completo ed è destinato a dispositivi di fascia alta come PDA, set-top box, console di gioco e così via.

Le applicazioni che vengono eseguite in un ambiente CDC / Foundation / Personal Basis / Personale (come i menu dei film Blu-ray) sono note come Xlet .

Toolkit dell'interfaccia utente leggero

Utilizzare l'AWT (Abstract Window Toolkit) di Java per creare applicazioni mobili multipiattaforma con un ampio appeal per l'utente è una sfida! Caratteri, layout e altre differenze fanno sì che la stessa applicazione abbia un aspetto e un comportamento molto diversi su dispositivi diversi. Inoltre, le funzionalità avanzate dell'interfaccia utente come animazioni ed effetti sono assenti. Riconoscendo queste carenze, Sun Microsystems ha sviluppato il Lightweight User Interface Toolkit (LWUIT) [PDF], un toolkit UI ispirato a Swing per Java ME che supporta CLDC 1.1 con MIDP 2.0 e CDC con Personal Basis Profile. Codename One è una popolare implementazione open source del LWUIT originale.

Java ME 8

Alla fine del 2012, Oracle ha intrapreso un progetto ambizioso per fornire un importante aggiornamento dello standard della piattaforma Java ME. Due Java Specification Requests (JSR) sono state progettate per soddisfare gli attuali requisiti di mercato per i dispositivi embedded e preparare Java ME per le future specifiche della piattaforma Java: JSR 360 (CLDC 8), un aggiornamento evolutivo a CLDC 1.1.1, porterebbe la macchina virtuale, Java linguaggio e librerie aggiornate con Java SE 8. JSR 361 (Java ME Embedded Profile / MEEP 8) aggiornerà Information Module Profile - Next Generation (IMP-NG).

CLDC 8 e MEEP 8

CLDC 8 è basato su JSR 139 (CLDC 1.1) e allinea la macchina virtuale principale Java ME, il supporto del linguaggio, le librerie e altre funzionalità con Java SE 8:

  • La macchina virtuale è stata aggiornata per essere conforme alla versione 2 della specifica JVM.
  • Le nuove funzionalità del linguaggio Java SE come generici, asserzioni, annotazioni e risorse di prova sono ora supportate.
  • Sono ora supportate nuove librerie come raccolte, sottoinsieme NIO e sottoinsieme API di registrazione.
  • È supportato un framework di connessione generico consolidato e migliorato per I / O multiprotocollo.

MEEP 8 aggiorna la specifica originale IMP-NG per fornire un ambiente applicativo potente e flessibile per piccole piattaforme Java integrate. La specifica si basa su CLDC 8 con le seguenti caratteristiche:

  • Un nuovo modello leggero di componenti e servizi
  • Biblioteche condivise
  • Concorrenza multi-applicazione, comunicazione tra applicazioni e sistema di eventi
  • Gestione delle candidature
  • Opzionalità API per affrontare casi d'uso a basso impatto

MEEP 8 offre agli sviluppatori di applicazioni embedded un ambiente applicativo moderno che facilita lo sviluppo e la distribuzione di soluzioni embedded che sono soluzioni modulari, robuste e sofisticate che sono state ottimizzate per un'ampia gamma di casi d'uso e dispositivi.

Ulteriori informazioni su Java ME 8

L'introduzione di Terrence Barr alle sue 10 principali funzionalità di Java ME 8 identifica i componenti inclusi nella versione di aprile 2014. Vedere anche la pagina di download di Java ME SDK 8 per ulteriore documentazione.

Java incorporato

Java Embedded è una conseguenza di Java ME e Java SE, una suite di tre piattaforme che si rivolge specificamente ai dispositivi embedded. Ciascuno di questi prodotti fornisce una macchina virtuale Java molto specializzata e ottimizzata e fornisce i mezzi per aggiornare il software ei servizi installati (ad esempio utilizzando OSGi). Di seguito descrivo Java ME Embedded, Java SE Embedded e Java Embedded Suite.

Java per sistemi embedded?

Sebbene non trattate in questo articolo, le sfide e le tecniche specifiche sono associate alla programmazione incorporata. Non tutti gli sviluppatori concordano sul fatto che Java sia la soluzione migliore per risolverli.

Java ME integrato

Java ME Embedded consiste in realtà di due versioni: Java ME Embedded e Java ME Embedded Client.

Java ME Embedded è un'implementazione Java ME CLDC che fornisce una piattaforma applicativa robusta e flessibile con funzionalità integrate dedicate per dispositivi sempre attivi, headless (ovvero senza grafica / interfaccia utente) e connessi. I progettisti e gli sviluppatori di sistemi possono utilizzare Java ME Embedded per creare piccole soluzioni integrate sofisticate che sfruttano i vantaggi del linguaggio, del runtime e dell'ecosistema Java, soddisfacendo al contempo gli obiettivi di risorse di sistema ristretti. Oracle Java ME Embedded può essere utilizzato da dispositivi con meno di un megabyte di memoria.

Java ME Embedded Client è un'implementazione Java ME CDC che è stata ridotta per adattarsi ai limiti dei dispositivi con risorse limitate e ottimizzata per sistemi embedded di fascia medio-bassa. Sebbene questo prodotto offra un ingombro ridotto, fornisce comunque la maggior parte del linguaggio Java e delle funzionalità di runtime che gli sviluppatori Java conoscono ea cui sono abituati con Java SE. Java ME Embedded Client può essere utilizzato da dispositivi con meno di 10 megabyte di memoria e senza grafica.

Ottieni Java ME 8 integrato

È possibile scaricare Java ME Embedded 8 per vari dispositivi ARM o Java ME Embedded Client 1.1.1 per ambienti ARM, MIPS e x86. Sarà necessario installare Java ME SDK 8 per eseguire questa piattaforma. Vedere anche la Guida alla migrazione da Java ME CDC a Java SE Embedded 8 di Oracle.

Java SE integrato

Java SE Embedded è un'implementazione completa della piattaforma Java SE ottimizzata per i sistemi embedded. La versione 8, l'ultima versione corrente di questa piattaforma, include le seguenti funzionalità:

  • Nuove funzionalità del linguaggio Java SE 8 per migliorare la produttività degli sviluppatori
  • Profili e strumenti compatti per creare macchine virtuali personalizzate e ottimizzate per lo spazio
  • Prestazioni migliori del 50% rispetto alle versioni precedenti grazie a Java SE 8
  • Applicazioni GUI dall'aspetto eccezionale con JavaFX accelerato dalla GPU
  • Strumenti per il monitoraggio dettagliato del runtime e l'analisi degli incidenti a posteriori

Tieni presente che Java SE Embedded 8 può essere utilizzato da dispositivi con un minimo di 11 megabyte di spazio di archiviazione. Scarica Java SE Embedded 8 per piattaforme ARM, Power Architecture e x86.

Java Platform Integrator

Oracle ha introdotto il programma Java Platform Integrator per fornire ai partner la possibilità di personalizzare i prodotti Java Embedded, compresi Java ME Embedded, Java ME Embedded Client e Java SE Embedded per raggiungere diversi tipi di dispositivi e segmenti di mercato.

Java Embedded Suite

Java Embedded Suite è l'offerta finale della famiglia Java Embedded. Questa suite di strumenti aggiunge funzionalità di tipo aziendale al runtime Java SE Embedded, consentendo alle applicazioni di eseguire le seguenti operazioni:

  • Archivia i dati in un database relazionale Java DB.
  • Ospita applicazioni Web basate su servlet GlassFish, ad esempio, per fornire un accesso remoto sicuro ai dati e alle operazioni del dispositivo.
  • Ospita e accedi ai servizi Web RESTful con l'implementazione Jersey di Oracle della specifica JAX-RS.

In sostanza, Java Embedded Suite combina Java SE Embedded 7 (che fornisce un runtime per applicazioni Java) con Java DB (che fornisce un database per archiviare i contenuti locali in modo sicuro), GlassFish for Embedded Suite (che fornisce un server applicazioni per pagine Web), Jersey Web Services Framework (per l'hosting e l'accesso ai servizi Web) e Event Processing per Java Embedded (che gestisce l'elaborazione degli eventi in tempo reale e che è un componente opzionale).

Scarica Java Embedded Suite per ARM o x86.

Conclusione

Oracle ha posizionato Java ME e le tecnologie correlate per affrontare le sfide dello sviluppo per dispositivi embedded, con IoT come obiettivo finale. Questo articolo ha presentato una breve introduzione su Java ME e quindi ha introdotto i prodotti Oracle Java ME 8, Java ME Embedded, Java SE Embedded e Java Embedded Suite.

Per tutorial di programmazione e best practice che ti aiuteranno a iniziare con i fondamenti dell'IoT, visita le pagine di programmazione Java ME, MIDP e Embedded Java su JavaWorld. Per saperne di più sulla strategia di Oracle per IoT e il ruolo di Java in questa strategia, controlla i vari articoli, video, white paper e opuscoli nella pagina informativa di Oracle Internet of Things.

Questa storia, "Java ME 8 e Internet of Things" è stata originariamente pubblicata da JavaWorld.