Java ME 8 et l'Internet des objets

Les systèmes embarqués sont des systèmes informatiques embarqués dans des dispositifs complets, dont les fonctions dédiées résident dans un système mécanique ou électrique plus grand. Généralement utilisés dans les applications industrielles et grand public, les systèmes embarqués font leur entrée sur le devant de la scène avec l'Internet des objets (IoT). Pour les développeurs qui débutent avec l'IoT, cet article est un guide pour en savoir plus sur les technologies qui composent la plate-forme IoT d'Oracle: Java ME 8, Java ME Embedded, Java SE Embedded et Java Embedded Suite.

En 1991, Mark Weiser, alors directeur du Palo Alto Research Center (PARC) de Xerox, a tenté de saisir l'ère à venir de l'informatique omniprésente. Notant que «[l] es technologies les plus profondes sont celles qui disparaissent», Weiser a décrit les diverses expériences de pensée et techniques menées par ses collègues du PARC, qui cherchaient une nouvelle façon de penser les ordinateurs en tant que systèmes embarqués. Leur vision, qui aurait pu sembler aussi fantastique qu'un aéroglisseur en 1991, est de plus en plus courante aujourd'hui:

Sal se réveille: elle sent le café. Il y a quelques minutes, son réveil, alerté par son roulement agité avant de se réveiller, avait tranquillement demandé: «Café?» Et elle avait marmonné: «Oui». "Oui" et "non" sont les seuls mots qu'il connaît [...]

Au petit déjeuner, Sal lit les nouvelles. Elle préfère toujours le formulaire papier, comme la plupart des gens. Elle repère une citation intéressante d'un chroniqueur dans la section affaires. Elle essuie son stylo sur le nom, la date, la section et le numéro de page du journal, puis encercle la citation. Le stylo envoie un message au journal, qui transmet le devis à son bureau [...]

Une fois que Sal arrive au travail, la vue avant (dans sa voiture) l'aide à trouver rapidement une place de parking. Alors qu'elle entre dans le bâtiment, les machines de son bureau se préparent à la connecter ...

Les appareils intégrés dans le scénario de la journée de travail de Weiser utilisent des capteurs pour suivre les interactions d'un utilisateur humain et une connectivité sans fil pour orchestrer une réponse: le lit, le réveil et la cafetière de Sal sont tous connectés pour s'assurer que sa première tasse de café est en cours avant qu'elle ne roule. hors du lit. Pour Weiser et ses collègues, c'était un calcul calme ; aujourd'hui, nous pourrions l'appeler l'Internet des objets (IoT).

En savoir plus sur le travail de Weiser au PARC et sa théorie de l'informatique ubiquitaire: "Assurer la qualité des services Web à l'ère de l'informatique calme" (Frank Sommers, JavaWorld, avril 2001).

Présentation de l'IoT

S'il y a une caractéristique déterminante de l'IoT, c'est l'interopérabilité ou la coordination de plusieurs appareils. Comme observé dans le scénario ci-dessus, l'IoT utilise des capteurs pour collecter des données (dans ce cas sur les interactions de Sal dans son environnement) et une connectivité sans fil pour orchestrer une réponse. L'IoT repose sur une confluence de technologies, y compris les nouvelles et anciennes plates-formes matérielles, le big data, le cloud computing et le machine-to-machine (M2M). Les API sont la colle nécessaire, rassemblant toutes ces pièces mobiles.

Plus important encore pour les développeurs Java, Java est déjà la clé de nombreuses technologies IoT émergentes, et Oracle s'est engagé à faire de Java une plate-forme de premier plan (sinon la plate - forme) pour l'IoT. Java ME 8 insuffle une nouvelle vie à la technologie des petits appareils Java, en l'étendant avec une gamme différenciée de plates-formes Java intégrées.

Les sections suivantes présenteront les technologies qui composent la plateforme IoT d'Oracle; suivez les liens pour en savoir plus sur Java ME, Java ME 8 et les trois frameworks intégrés: Java ME Embedded, Java SE Embedded et Java Embedded Suite.

Java ME

Java Micro Edition était à l'origine destiné à répondre aux contraintes liées à la création d'applications pour les petits appareils. Basée sur Java SE, Java ME (ou J2ME, tel que nous le connaissions en 1999) était la plate-forme pour les applications Java fonctionnant sur de petits appareils avec une mémoire, un affichage et une capacité d'alimentation limités. Aujourd'hui, il est utilisé pour développer des systèmes embarqués, allant des commandes industrielles aux téléphones mobiles (en particulier les téléphones multifonctions), aux décodeurs et lecteurs Blu-ray.

Les développeurs travaillant dans Java ME peuvent choisir parmi plusieurs configurations, profils et packages facultatifs:

  • Une configuration fournit l'ensemble le plus élémentaire de bibliothèques et de capacités de machine virtuelle pour une large gamme de périphériques.
  • Un profil est un ensemble d'API prenant en charge une gamme plus restreinte d'appareils.
  • Un package facultatif est un ensemble d'API spécifiques à une technologie. L'API de messagerie sans fil en est un exemple. Consultez la présentation des packages optionnels d'Oracle pour en savoir plus sur les packages optionnels.

Configurations et profils

Avec le temps, deux configurations sont apparues: la configuration des appareils limités connectés (CLDC) est la configuration des petits appareils, et la configuration des appareils connectés (CDC) est la configuration des appareils mobiles plus performants tels que les smartphones et les décodeurs.

Les profils Java ME sont placés au-dessus des configurations, définissant des API de niveau supérieur utiles à des applications particulières. Le profil de périphérique d'information mobile (MIDP) , par exemple, se trouve au-dessus du CLDC et fournit une interface utilisateur, un réseau et des API de stockage persistant. Les applications qui s'exécutent dans un environnement CLDC / MIDP (comme les jeux) sont appelées MIDlets .

Programmation d'appareils avec CLDC / MIDP

«Programmation d'appareils avec MIDP» (Michael Cymerman) comprend une démonstration pratique pour les développeurs novices en CLDC / MIDP. Voir aussi "Construire des MIDlets" (Jonathan Knudsen et Sing Li) et "Grands designs pour petits appareils" (Ben Hui).

Pour CDC, il existe trois profils, Fondation, Base personnelle et Personnel:

  • Le profil Foundation est un ensemble d'API Java optimisées pour les périphériques à faible encombrement qui ont des ressources limitées et n'ont pas besoin d'une interface utilisateur graphique (GUI).
  • Le profil de base personnel est un sur-ensemble des API Foundation Profile et prend en charge les appareils avec des exigences d'interface graphique légère. Ce profil est fourni avec un cadre pour la création de composants d'interface graphique légers et prend en charge certaines classes AWT (Abstract Window Toolkit).
  • Le profil personnel étend le profil de base personnel avec une boîte à outils GUI basée sur l'AWT. Il fournit un environnement d'application Java ME complet avec un support AWT complet et est destiné aux appareils haut de gamme tels que les PDA, les décodeurs, les consoles de jeux, etc.

Les applications qui s'exécutent dans un environnement CDC / Foundation / Personal Basis / Personal (comme les menus de films Blu-ray) sont appelées Xlets .

Boîte à outils d'interface utilisateur légère

Utiliser AWT (Abstract Window Toolkit) de Java pour créer des applications mobiles multiplateformes avec un large attrait pour les utilisateurs est un défi! La police, la mise en page et d'autres différences font que la même application se présente et se comporte très différemment sur différents appareils. De plus, les capacités d'interface utilisateur avancées telles que l'animation et les effets sont absentes. Conscient de ces lacunes, Sun Microsystems a développé le Lightweight User Interface Toolkit (LWUIT) [PDF], une boîte à outils d'interface utilisateur inspirée de Swing pour Java ME qui prend en charge CLDC 1.1 avec MIDP 2.0 et CDC avec Personal Basis Profile. Codename One est une implémentation open source populaire du LWUIT original.

Java ME 8

Fin 2012, Oracle s'est lancé dans un projet ambitieux visant à fournir une mise à jour majeure du standard de la plate-forme Java ME. Deux demandes de spécification Java (JSR) ont été conçues pour répondre aux exigences actuelles du marché pour les périphériques embarqués et préparer Java ME aux futures spécifications de la plate-forme Java: JSR 360 (CLDC 8), une mise à jour évolutive de CLDC 1.1.1, apporterait la machine virtuelle, Java et les bibliothèques à jour avec Java SE 8. JSR 361 (Java ME Embedded Profile / MEEP 8) mettrait à jour Information Module Profile - Next Generation (IMP-NG).

CLDC 8 et MEEP 8

CLDC 8 est basé sur JSR 139 (CLDC 1.1) et aligne la machine virtuelle Java ME, la prise en charge du langage, les bibliothèques et d'autres fonctionnalités avec Java SE 8:

  • La machine virtuelle a été mise à jour pour se conformer à la version 2 de la spécification JVM.
  • Les nouvelles fonctionnalités du langage Java SE telles que les génériques, les assertions, les annotations et l'essai avec des ressources sont désormais prises en charge.
  • Les nouvelles bibliothèques telles que les collections, le sous-ensemble NIO et le sous-ensemble de l'API de journalisation sont désormais prises en charge.
  • Une structure de connexion générique consolidée et améliorée pour les E / S multi-protocoles est prise en charge.

MEEP 8 met à jour la spécification IMP-NG d'origine pour fournir un environnement d'application puissant et flexible pour les petites plates-formes Java embarquées. La spécification s'appuie sur CLDC 8 avec les fonctionnalités suivantes:

  • Un nouveau modèle de composants et de services léger
  • Bibliothèques partagées
  • Accès concurrentiel multi-applications, communication inter-applications et système d'événements
  • Gestion des applications
  • Option API pour répondre aux cas d'utilisation à faible encombrement

MEEP 8 offre aux développeurs d'applications embarquées un environnement d'application moderne qui facilite le développement et le déploiement de solutions embarquées qui sont des solutions modulaires, robustes et sophistiquées qui ont été optimisées pour un large éventail de cas d'utilisation et d'appareils.

En savoir plus sur Java ME 8

L'introduction de Terrence Barr à ses 10 principales fonctionnalités Java ME 8 identifie les composants inclus dans la version d'avril 2014. Consultez également la page de téléchargement de Java ME SDK 8 pour plus de documentation.

Java intégré

Java Embedded est une conséquence de Java ME et Java SE, une suite de trois plates-formes qui ciblent spécifiquement les périphériques embarqués. Chacun de ces produits fournit une machine virtuelle Java très spécialisée et optimisée et fournit les moyens de mettre à jour les logiciels et services installés (par exemple en utilisant OSGi). Ci-dessous, je décris Java ME Embedded, Java SE Embedded et Java Embedded Suite.

Java pour les systèmes embarqués?

Bien que cela ne soit pas couvert dans cet article, des défis et des techniques spécifiques sont associés à la programmation intégrée. Tous les développeurs ne conviennent pas que Java est le meilleur moyen de les résoudre.

Java ME intégré

Java ME Embedded se compose en fait de deux versions: Java ME Embedded et Java ME Embedded Client.

Java ME Embedded est une implémentation Java ME CLDC qui fournit une plate-forme d'application robuste et flexible avec des fonctionnalités intégrées dédiées pour les appareils connectés en permanence, sans tête (c'est-à-dire sans interface graphique / utilisateur). Les concepteurs de systèmes et les développeurs peuvent utiliser Java ME Embedded pour créer de petites solutions intégrées sophistiquées qui tirent parti des avantages du langage, de l'environnement d'exécution et de l'écosystème Java tout en atteignant des objectifs de ressources système serrés. Oracle Java ME Embedded peut être utilisé par des périphériques avec moins d'un mégaoctet de mémoire.

Java ME Embedded Client est une implémentation Java ME CDC qui a été réduite pour s'adapter aux limitations des périphériques à ressources limitées et optimisée pour les systèmes embarqués bas à moyen. Bien que ce produit offre un faible encombrement, il fournit toujours la plupart du langage Java et des fonctionnalités d'exécution que les développeurs Java connaissent et auxquels sont habitués avec Java SE. Java ME Embedded Client peut être utilisé par des périphériques avec moins de 10 mégaoctets de mémoire et sans graphiques.

Obtenez Java ME 8 intégré

Vous pouvez télécharger Java ME Embedded 8 pour divers périphériques ARM ou Java ME Embedded Client 1.1.1 pour les environnements ARM, MIPS et x86. Vous devrez installer Java ME SDK 8 pour exécuter cette plate-forme. Consultez également le guide de migration Oracle's Java ME CDC vers Java SE Embedded 8.

Java SE intégré

Java SE Embedded est une implémentation complète de la plate-forme Java SE optimisée pour les systèmes embarqués. La version 8, la dernière version actuelle de cette plate-forme, comprend les fonctionnalités suivantes:

  • Nouvelles fonctionnalités du langage Java SE 8 pour améliorer la productivité des développeurs
  • Profils et outils compacts pour créer des machines virtuelles personnalisées et optimisées pour l'espace
  • 50% de meilleures performances que les versions précédentes grâce à Java SE 8
  • De superbes applications GUI avec JavaFX accéléré par GPU
  • Outils pour une surveillance détaillée de l'exécution et une analyse des incidents après coup

Notez que Java SE Embedded 8 peut être utilisé par des périphériques avec un minimum de 11 mégaoctets de stockage. Téléchargez Java SE Embedded 8 pour les plates-formes ARM, Power Architecture et x86.

Intégrateur de plateforme Java

Oracle a lancé le programme Java Platform Integrator pour fournir aux partenaires la possibilité de personnaliser les produits Java Embedded, notamment Java ME Embedded, Java ME Embedded Client et Java SE Embedded pour atteindre différents types de périphériques et segments de marché.

Suite intégrée Java

Java Embedded Suite est la dernière offre de la famille Java Embedded. Cette suite d'outils ajoute des fonctionnalités de type entreprise à l'environnement d'exécution Java SE Embedded, permettant aux applications d'effectuer les opérations suivantes:

  • Stockez les données dans une base de données relationnelle Java DB.
  • Hébergez des applications Web basées sur des servlets GlassFish, par exemple, pour donner un accès distant sécurisé aux données et aux opérations de l'appareil.
  • Hébergez et accédez aux services Web RESTful avec l'implémentation d'Oracle Jersey de la spécification JAX-RS.

Essentiellement, Java Embedded Suite combine Java SE Embedded 7 (qui fournit un runtime pour les applications Java) avec Java DB (qui fournit une base de données pour stocker le contenu local en toute sécurité), GlassFish pour Embedded Suite (qui fournit un serveur d'applications pour les pages Web), Jersey Web Services Framework (pour l'hébergement et l'accès aux services Web) et Event Processing for Java Embedded (qui gère le traitement des événements en temps réel et qui est un composant facultatif).

Téléchargez Java Embedded Suite pour ARM ou x86.

Conclusion

Oracle a positionné Java ME et les technologies associées pour relever les défis du développement de dispositifs embarqués, avec l'IoT comme objectif ultime. Cet article présentait une brève introduction à Java ME, puis vous présentait les produits Oracle Java ME 8, Java ME Embedded, Java SE Embedded et Java Embedded Suite.

Pour des didacticiels de programmation et des bonnes pratiques qui vous aideront à démarrer avec les principes de base de l'IoT, visitez les pages de programmation Java ME, MIDP et Embedded Java sur JavaWorld. Pour en savoir plus sur la stratégie d'Oracle pour l'IoT et la place de Java dans cette stratégie, consultez les différents articles, vidéos, livres blancs et brochures sur la page d'informations d'Oracle Internet of Things.

Cette histoire, "Java ME 8 et l'Internet des objets" a été initialement publiée par JavaWorld.