Programmering

Java ME 8 og tingenes internet

Indlejrede systemer er computersystemer indlejret i komplette enheder, hvis dedikerede funktioner ligger i et større mekanisk eller elektrisk system. Indbyggede systemer, der typisk bruges i både industrielle og forbrugerapplikationer, kommer ind i rampelyset med tingenes internet (IoT). For udviklere, der lige er kommet i gang med IoT, er denne artikel en guide til at lære mere om de teknologier, der omfatter Oracles IoT-platform: Java ME 8, Java ME Embedded, Java SE Embedded og Java Embedded Suite.

I 1991 forsøgte Mark Weiser, dengang leder af Xeroxs Palo Alto Research Center (PARC), at fange den kommende tidsalder med allestedsnærværende computing. Han bemærkede, at "[de mest dybe teknologier er dem, der forsvinder," Weiser beskrev de forskellige tanker og tekniske eksperimenter udført af hans kolleger på PARC, da de søgte en ny måde at tænke på computere som indlejrede systemer. Deres vision, der måske havde virket lige så fantastisk som svævefly i 1991, bliver hurtigt mere almindelig i dag:

Sal vågner: hun lugter kaffe. For et par minutter siden havde hendes vækkeur, advaret af hendes rastløse rullende inden hun vågnede stille og stille spurgt: "Kaffe?", Og hun havde mumlet, "Ja." "Ja" og "nej" er de eneste ord, den kender [...]

Ved morgenmaden læser Sal nyhederne. Hun foretrækker stadig papirformularen, ligesom de fleste mennesker gør. Hun ser et interessant citat fra en spaltist i forretningsafsnittet. Hun tørrer sin pen over avisens navn, dato, sektion og sidenummer og cirkler derefter citatet. Pennen sender en besked til papiret, som sender sitatet til hendes kontor [...]

Når Sal ankommer på arbejde, hjælper forvisningen (i hendes bil) hende med hurtigt at finde en parkeringsplads. Da hun går ind i bygningen, forbereder maskinerne på sit kontor sig til at logge hende ind ...

De indlejrede enheder i Weizers arbejdsdags morgenscenarie bruger sensorer til at spore en menneskelig brugers interaktioner og trådløs forbindelse til at orkestrere et svar: Sals seng, vækkeur og kaffemaskine er alle forbundet for at sikre, at hendes første kop kaffe er i gang, før hun ruller. ud af sengen. For Weiser og hans kolleger var det sådan rolig computing; i dag kan vi måske kalde det Internet of Things (IoT).

Læs mere om Weisers arbejde på PARC og hans teori om allestedsnærværende databehandling: "Sikre kvaliteten af ​​webtjenester i en tid med rolig computing" (Frank Sommers, JavaWorld, april 2001).

IoT-oversigt

Hvis der er en definerende egenskab ved IoT, er det interoperabilitet eller koordinering af flere enheder. Som observeret i ovenstående scenarie bruger IoT sensorer til at indsamle data (i så fald om Sals interaktioner i hendes miljø) og trådløs forbindelse til at orkestrere et svar. IoT er bygget på en sammenløbning af teknologier, herunder nye og gamle hardwareplatforme, big data, cloud computing og maskine til maskine (M2M) computing. API'er er den nødvendige lim, der bringer alle disse bevægelige dele sammen.

Vigtigst for Java-udviklere er Java allerede nøglen til mange af de nye IoT-teknologier, og Oracle har forpligtet sig til at gøre Java til en førende platform (hvis ikke det platform) til IoT. Java ME 8 puster nyt liv i Java's lille enhedsteknologi og udvider det med en differentieret række integrerede Java-platforme.

De næste sektioner introducerer de teknologier, der omfatter Oracles IoT-platform; følg linkene for at lære mere om Java ME, Java ME 8 og de tre indlejrede rammer: Java ME Embedded, Java SE Embedded og Java Embedded Suite.

Java ME

Java Micro Edition var oprindeligt beregnet til at løse de begrænsninger, der er forbundet med bygningsapplikationer til små enheder. Baseret på Java SE var Java ME (eller J2ME, som vi kendte det i 1999) platformen til Java-applikationer, der kører på små enheder med begrænset hukommelse, skærm og strømkapacitet. I dag bruges det til at udvikle indlejrede systemer, der spænder fra industriel kontrol til mobiltelefoner (især funktionstelefoner) til set-top-bokse og Blu-ray-afspillere.

Udviklere, der arbejder i Java ME, kan vælge mellem flere konfigurationer, profiler og valgfri pakker:

  • EN konfiguration giver det mest basale sæt biblioteker og funktioner til virtuel maskine til en bred vifte af enheder.
  • EN profil er et sæt API'er, der understøtter et snævrere udvalg af enheder.
  • En valgfri pakke er et sæt teknologispecifikke API'er. Wireless Messaging API er et eksempel. Tjek Oracles valgfri pakkeprimer for at lære mere om valgfri pakker.

Konfigurationer og profiler

Med tiden er der kommet to konfigurationer: Connected Limited Device Configuration (CLDC) er konfigurationen for små enheder, og Connected Device Configuration (CDC) er konfigurationen for mere kompatible mobile enheder såsom smartphones og set-top-bokse.

Java ME-profiler sidder oven på konfigurationer og definerer højere niveau API'er til brug for bestemte applikationer. Profil for mobil informationsenhed (MIDP)sidder for eksempel oven på CLDC og giver brugergrænseflade, netværk og vedvarende lagrings-API'er. Programmer, der kører i et CLDC / MIDP-miljø (såsom spil), er kendt som MIDlets.

Enhedsprogrammering med CLDC / MIDP

"Enhedsprogrammering med MIDP" (Michael Cymerman) inkluderer en praktisk demonstration for udviklere, der er nye for CLDC / MIDP. Se også "Building MIDlets" (Jonathan Knudsen og Sing Li) og "Big designs for small devices" (Ben Hui).

For CDC er der tre profiler, Foundation, Personal Basis og Personal:

  • Foundation-profilen er et sæt Java API'er, der er indstillet til enheder med lav fodaftryk, der har begrænsede ressourcer og ikke har brug for en grafisk brugergrænseflade (GUI).
  • Den personlige basisprofil er et supersæt af Foundation Profile API'erne og understøtter enheder med lette GUI-krav. Denne profil leveres med en ramme til opbygning af lette GUI-komponenter og understøtter nogle AWT-klasser (Abstract Window Toolkit).
  • Den personlige profil udvider den personlige basisprofil med et GUI-værktøjssæt baseret på AWT. Det giver et komplet Java ME-applikationsmiljø med fuld AWT-understøttelse og er beregnet til avancerede enheder som PDA'er, set-top-bokse, spilkonsoller og så videre.

Programmer, der kører i et CDC / Foundation / Personal Basis / Personal miljø (såsom Blu-ray filmmenuer) er kendt som Xlets.

Letvægts brugergrænseflades værktøjssæt

Brug af Java's AWT (Abstract Window Toolkit) til at oprette platforme mobile applikationer med bred brugerappel er udfordrende! Skrifttype, layout og andre forskelle får den samme applikation til at se og opføre sig meget forskelligt på forskellige enheder. Derudover mangler avancerede brugergrænsefladefunktioner såsom animation og effekter. I erkendelse af disse mangler udviklede Sun Microsystems Lightweight User Interface Toolkit (LWUIT) [PDF], et Swing-inspireret UI-værktøjssæt til Java ME, der understøtter CLDC 1.1 med MIDP 2.0 og CDC med personlig basisprofil. Codename One er en populær open source-implementering af den originale LWUIT.

Java ME 8

I slutningen af ​​2012 påbegyndte Oracle et ambitiøst projekt for at levere en større opdatering af Java ME-platformstandarden. To Java-specifikationsanmodninger (JSR'er) blev designet til at imødekomme de nuværende markedskrav for indlejrede enheder og forberede Java ME til fremtidige Java-platformspecifikationer: JSR 360 (CLDC 8), en evolutionær opdatering til CLDC 1.1.1, ville bringe den virtuelle maskine, Java sprog og biblioteker opdateret med Java SE 8. JSR 361 (Java ME Embedded Profile / MEEP 8) opdaterer informationsmodulprofil - næste generation (IMP-NG).

CLDC 8 og MEEP 8

CLDC 8 er baseret på JSR 139 (CLDC 1.1) og tilpasser kernen til Java ME virtuel maskine, sprogstøtte, biblioteker og andre funktioner med Java SE 8:

  • Den virtuelle maskine er blevet opdateret til at overholde version 2 af JVM-specifikationen.
  • Nyere Java SE-sprogfunktioner såsom generiske, påstande, annoteringer og prøv-med-ressourcer understøttes nu.
  • Nye biblioteker såsom samlinger, NIO-undersæt og logning-API-undersæt understøttes nu.
  • En konsolideret og forbedret generisk forbindelsesramme til multi-protokol I / O understøttes.

MEEP 8 opdaterer den originale IMP-NG-specifikation for at give et kraftfuldt og fleksibelt applikationsmiljø til små indlejrede Java-platforme. Specifikationen bygger på CLDC 8 med følgende funktioner:

  • En ny, let komponent- og servicemodel
  • Delte biblioteker
  • Multi-applikations samtidighed, kommunikation mellem applikationer og begivenhedssystem
  • Applikationsadministration
  • API-mulighed for at tackle brugssager med lavt fodaftryk

MEEP 8 giver integrerede applikationsudviklere et moderne applikationsmiljø, der letter udvikling og implementering af indlejrede løsninger, der er modulære, robuste, sofistikerede løsninger, der er optimeret til en lang række brugssager og enheder.

Mere om Java ME 8

Terrence Barrs introduktion til sine top 10 Java ME 8-funktioner identificerer de komponenter, der er inkluderet i udgivelsen fra april 2014. Se også downloadsiden Java ME SDK 8 for yderligere dokumentation.

Java integreret

Java Embedded er en udvækst af Java ME og Java SE, en pakke med tre platforme, der specifikt er målrettet mod indlejrede enheder. Hvert af disse produkter leverer en meget specialiseret og optimeret Java virtuel maskine og giver mulighed for at opdatere den installerede software og tjenester (for eksempel ved hjælp af OSGi). Nedenfor beskriver jeg Java ME Embedded, Java SE Embedded og Java Embedded Suite.

Java til indlejrede systemer?

Selvom det ikke er dækket af denne artikel, er specifikke udfordringer og teknikker forbundet med integreret programmering. Ikke alle udviklere er enige om, at Java passer bedst til at løse dem.

Java ME Integreret

Java ME Embedded består faktisk af to versioner: Java ME Embedded og Java ME Embedded Client.

Java ME Embedded er en Java ME CLDC-implementering, der giver en robust og fleksibel applikationsplatform med dedikeret integreret funktionalitet til altid tændt, hovedløs (betyder ingen grafik / brugergrænseflade) og tilsluttede enheder. Systemdesignere og -udviklere kan bruge Java ME Embedded til at skabe sofistikerede, små integrerede løsninger, der udnytter fordelene ved Java-sprog, runtime og økosystem, samtidig med at de opfylder stramme systemressourcemål. Oracle Java ME Embedded kan bruges af enheder med mindre end en megabyte hukommelse.

Java ME Embedded Client er en Java ME CDC-implementering, der er blevet nedskaleret for at passe til begrænsningerne for ressourcebegrænsede enheder og optimeret til lav-til-mellem-interval indlejrede systemer. Selv om dette produkt har et lille fodaftryk, leverer det stadig det meste af Java-sprog- og runtime-funktioner, som Java-udviklere kender og er vant til med Java SE. Java ME Embedded Client kan bruges af enheder med mindre end 10 megabyte hukommelse og uden grafik.

Få Java ME 8 integreret

Du kan downloade Java ME Embedded 8 til forskellige ARM-enheder eller Java ME Embedded Client 1.1.1 til ARM-, MIPS- og x86-miljøer. Du bliver nødt til at installere Java ME SDK 8 for at køre denne platform. Se også Oracles Java ME CDC til Java SE Embedded 8 Migration Guide.

Java SE Integreret

Java SE Embedded er en komplet implementering af Java SE-platformen, der er optimeret til indlejrede systemer. Version 8, den seneste udgivelse af denne platform, indeholder følgende funktioner:

  • Nye Java SE 8-sprogfunktioner for at forbedre udviklerens produktivitet
  • Kompakte profiler og værktøjer til at skabe tilpassede, pladsoptimerede virtuelle maskiner
  • 50% bedre ydelse end tidligere versioner takket være Java SE 8
  • Flotte GUI-applikationer med GPU-accelereret JavaFX
  • Værktøjer til detaljeret runtime-overvågning og faktisk hændelsesanalyse

Bemærk, at Java SE Embedded 8 kan bruges af enheder med mindst 11 megabyte lagerplads. Download Java SE Embedded 8 til ARM-, Power Architecture- og x86-platforme.

Java Platform Integrator

Oracle har introduceret Java Platform Integrator-programmet for at give partnere muligheden for at tilpasse Java Embedded-produkter, herunder Java ME Embedded, Java ME Embedded Client og Java SE Embedded for at nå forskellige enhedstyper og markedssegmenter.

Java Embedded Suite

Java Embedded Suite er det sidste tilbud i Java Embedded-familien. Denne pakke med værktøjer tilføjer virksomhedstypefunktioner til Java SE Embedded runtime, hvilket gør det muligt for applikationer at gøre følgende:

  • Gem data i en Java DB-relationsdatabase.
  • Host GlassFish servletbaserede webapplikationer, for eksempel for at give sikker fjernadgang til enhedsdata og operationer.
  • Vær og få adgang til RESTful webtjenester med Oracle's Jersey implementering af JAX-RS specifikationen.

I det væsentlige kombinerer Java Embedded Suite Java SE Embedded 7 (som giver en runtime til Java-applikationer) med Java DB (som giver en database til at gemme lokalt indhold sikkert), GlassFish for Embedded Suite (som giver en applikationsserver til websider), Jersey Web Services Framework (til hosting og adgang til webtjenester) og Event Processing for Java Embedded (som håndterer realtidsbehandling af begivenheder, og som er en valgfri komponent).

Download Java Embedded Suite til ARM eller x86.

Konklusion

Oracle har positioneret Java ME og relaterede teknologier til at imødekomme udfordringerne ved at udvikle til indlejrede enheder med IoT som det ultimative mål. Denne artikel præsenterede en kort primer på Java ME og introducerede dig derefter til Oracle's Java ME 8, Java ME Embedded, Java SE Embedded og Java Embedded Suite produkter.

For programmeringsvejledninger og bedste praksis, der hjælper dig med at komme i gang med IoT-grundlæggende, skal du besøge Java ME-, MIDP- og Embedded Java-programmeringssiderne på JavaWorld. Hvis du vil lære mere om Oracles strategi for IoT og Java's plads i denne strategi, kan du tjekke de forskellige artikler, videoer, hvidbøger og brochurer på informationssiden om Oracle Internet of Things.

Denne historie, "Java ME 8 og tingenes internet" blev oprindeligt udgivet af JavaWorld.