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
- Specificații în timp real pentru Java (RTSJ)
- JSR-1 și JSR-282 - JSR- urile pentru Java în timp real
- IBM WebSphere Real Time - o implementare a Specificației în timp real de la IBM
- Aonix Perc - o VM alternativă în timp real de la Atego, bazată pe Java Standard Edition (nu RTSJ)
- Sun Java Real-Time System - Pagina de pornire Java în timp real
- Timesys RTSJ - implementare de referință și sistem de testare de la timesys
- jRate (Java Real-Time Extension) - o extensie open source a compilatorului GNU GCJ cu suport pentru majoritatea caracteristicilor RTSJ
- JamaicaVM - o implementare a Specificației în timp real de la aicas
- JRockit Real Time (PDF; 62 kB) - Implementarea specificațiilor în timp real de la Oracle
- VM -uri Java în timp real - Listă de VM-uri Java în timp real
- JTRES05 , JTRES06 , JTRES07 JTRES08 , JTRES09 , JTRES10 , JTRES11 - Atelier internațional privind tehnologiile Java pentru sisteme încorporate în timp real și în timp real
Dovezi individuale
- ↑ https://jcp.org/en/jsr/detail?id=282
- ^ [1] Garbage First Garbage Collector Tuning, Monica Beckwith, august 2013
- ↑ Algoritm Metronome GC pentru aplicații Java în timp real; IBM; Adus pe 12 iunie 2014
- ↑ [2] WebSphere Real Time în WebSphere Application Server
- ↑ https://www.azul.com/products/components/pgc/
- ↑ [3] Colectorul de gunoi Z - timpi maximi de pauză sub-milisecundă