Java în timp real

Real-Time Java este o colecție de interfețe de programare care extinde tehnologia Java cu capabilități hard -time în timp real . Această specificație în timp real pentru Java (RTSJ) a fost dezvoltată ca cerere de specificație Java  1 ca parte a procesului comunitar Java și adoptată ca standard în noiembrie 2001. În prezent se lucrează la o versiune extinsă a RTSJ ca parte a JSR 282.

medii

Unele dintre proprietățile văzute de obicei ca puncte forte ale Java, cum ar fi colectarea gunoiului legată indisolubil de limbaj , precum și suportul nativ al firelor și concurenței , au făcut imposibilă utilizarea directă a Java în sistemele hard-time în timp real:

  • Java, la fel ca majoritatea sistemelor de operare pentru care este oferit Java, nu acceptă un model strict de threading bazat pe priorități . Prin urmare, mecanismele de blocare Java nu acceptă niciun mecanism pentru evitarea inversării priorității, cum ar fi limitele prioritare sau moștenirea prioritară .
  • Comportamentul anumitor colectoare de gunoi Java poate provoca pauze nedeterminate în calcule și astfel subminează toate garanțiile în timp real ale programelor Java.

Pentru a depăși aceste dificultăți, Specificația în timp real pentru Java (RTSJ) a fost dezvoltată ca o cerere de specificație Java . În Java, acesta permite eludarea obstacolelor menționate mai sus prin introducerea unui model de filetare corespunzător și făcând posibilă extinderea mașinii virtuale Java cu modele de filetare suplimentare. În plus, definește zonele de memorie speciale care nu sunt curățate de colectarea obișnuită a gunoiului, ci de fire în timp real care nu pot fi întrerupte de colectarea gunoiului.

Implementările actuale ale RTSJ fac posibilă dezvoltarea de aplicații hard și soft în timp real în Java. Cele mai cunoscute implementări includ implementarea de referință de la Timesys, WebSphere Real Time IBM , Sun Microsystems Java SE Real-Time Systems, Aonix PERC și JamaicaVM de la aicas.

dezvoltare

"Primul colector de gunoi" (G1GC), care a fost utilizat ca standard pe servere de la Java 9, are obiective pentru lungimea maximă a pauzelor, pe care le atinge cu rare excepții. Aceasta permite aplicații soft în timp real în Java.

Colectorii de gunoi există, de asemenea, pentru o lungă perioadă de timp, care utilizează algoritmi al căror comportament în timp este previzibil și astfel permit, de asemenea, aplicații în timp real în Java.

literatură

  • Eric J. Bruno, Greg Bollella: Programare Java ™ în timp real cu Java RTS . Prentice Hall, 2009, ISBN 978-0-13-714298-9 (engleză, bvdep.com [accesat la 6 decembrie 2011]).
  • Peter C. Dibble: Programare în timp real a platformei Java . Prentice Hall, 2002, ISBN 978-0-13-028261-3 (engleză).
  • Andrew Wellings: Programare simultană și în timp real în Java . John Wiley & Sons, 2004, ISBN 978-0-470-84437-3 (engleză).
  • Benjamin Brosgol, James Gosling, Peter Dibble, Steve Furr, David Hardin, Mark Turnbull: Specificația în timp real pentru Java . Ed.: Gregory Bollella. Addison-Wesley Longman, 2000, ISBN 0-201-70323-8 (engleză).

Link-uri web

Dovezi individuale

  1. https://jcp.org/en/jsr/detail?id=282
  2. ^ [1] Garbage First Garbage Collector Tuning, Monica Beckwith, august 2013
  3. Algoritm Metronome GC pentru aplicații Java în timp real; IBM; Adus pe 12 iunie 2014
  4. [2] WebSphere Real Time în WebSphere Application Server
  5. https://www.azul.com/products/components/pgc/
  6. [3] Colectorul de gunoi Z - timpi maximi de pauză sub-milisecundă