Reaaliaikainen Java
Reaaliaikainen Java on kokoelma ohjelmointirajapintoja, joka laajentaa Java-tekniikkaa kovilla reaaliaikaisilla ominaisuuksilla. Tämä reaaliaikainen Java-määritys (RTSJ) kehitettiin Java-määrityspyynnönä 1 osana Java-yhteisöprosessia ja otettiin käyttöön standardina marraskuussa 2001. RTSJ: n laajennetun version työ on parhaillaan käynnissä osana JSR 282: ta.
taustat
Jotkut Java-vahvuuksina tavallisesti pidetyistä ominaisuuksista, kuten kieleen erottamattomasti liittyvä roskasäiliö , sekä ketjujen ja samanaikaisuuden natiivi tuki , tekivät Javan suoran käytön kovissa reaaliaikaisissa järjestelmissä mahdottomiksi:
- Java, kuten suurin osa Java-käyttöjärjestelmistä, ei tue tiukkaa prioriteettipohjaista ketjutusta. Java- lukitusmekanismit eivät täten tue mitään mekanismeja prioriteetin kääntämisen välttämiseksi , kuten prioriteettirajat tai prioriteettiperintö .
- Tiettyjen Java-jätteiden keräilijöiden käyttäytyminen voi aiheuttaa määrittelemättömiä taukoja laskelmissa ja siten heikentää kaikkia Java-ohjelmien reaaliaikaisia takuita.
Näiden vaikeuksien voittamiseksi Real-Time Specification for Java (RTSJ) kehitettiin Java-määrityspyynnöksi . Java-ohjelmassa se mahdollistaa edellä mainittujen esteiden kiertämisen ottamalla käyttöön vastaavan ketjutusmallin ja mahdollistamalla Java-virtuaalikoneen laajentamisen uusilla kierteitysmalleilla. Lisäksi se määrittelee erityiset muistialueet, joita ei puhdisteta tavanomaisella roskakorilla, vaan reaaliaikaisilla säikeillä, joita ei voida keskeyttää roskien keräyksellä.
RTSJ: n nykyisten toteutusten avulla on mahdollista kehittää kovia ja pehmeitä reaaliaikaisia Java-sovelluksia. Tunnetuimpia toteutuksia ovat Timesysin, IBM: n WebSphere Real Time-, Sun Microsystems Java SE Real-Time Systems-, Aonix PERC- ja JamaicaVM-referenssitoteutus aicasilta.
kehitystä
"Garbage first Garbage Collector" (G1GC), jota on käytetty vakiona palvelimilla Java 9: n jälkeen, on asettanut taukojen enimmäispituudelle tavoitteet, jotka se saavuttaa harvoilla poikkeuksilla. Tämä mahdollistaa pehmeät reaaliaikaiset sovellukset Java-sovelluksessa.
Roskakeräilijöitä on myös ollut olemassa jo kauan, jotka käyttävät algoritmeja, joiden käyttäytyminen ajan myötä on ennustettavissa ja mahdollistavat siten myös kovat reaaliaikaiset sovellukset Javalassa.
kirjallisuus
- Eric J. Bruno, Greg Bollella: Reaaliaikainen Java ™ -ohjelmointi Java RTS: llä . Prentice Hall, 2009, ISBN 978-0-13-714298-9 (englanti, bvdep.com [käytetty 6. joulukuuta 2011]).
- Peter C. Dibble: Reaaliaikainen Java-alustan ohjelmointi . Prentice Hall, 2002, ISBN 978-0-13-028261-3 (englanti).
- Andrew Wellings: Samanaikainen ja reaaliaikainen ohjelmointi Javalla . John Wiley & Sons, 2004, ISBN 978-0-470-84437-3 (englanti).
- Benjamin Brosgol, James Gosling, Peter Dibble, Steve Furr, David Hardin, Mark Turnbull: Reaaliaikainen Java-määritys . Toim.: Gregory Bollella. Addison-Wesley Longman, 2000, ISBN 0-201-70323-8 (englanti).
nettilinkit
- Reaaliaikainen Java-määritys (RTSJ)
- JSR-1 ja JSR-282 - reaaliaikaisen Javan JSR: t
- IBM WebSphere Real Time - IBM : n reaaliaikaisen erittelyn toteutus
- Aonix Perc - vaihtoehtoinen reaaliaikainen Atego-virtuaalikone, joka perustuu Java Standard Editioniin (ei RTSJ)
- Sun Java Real-Time System - reaaliaikainen Java-kotisivu
- Timesys RTSJ - viitetoteutus ja testausjärjestelmä Timesysista
- jRate (Java Real-Time Extension) - GNU GCJ-kääntäjän avoimen lähdekoodin laajennus, joka tukee useimpia RTSJ: n ominaisuuksia
- JamaicaVM - kutsun reaaliaikaisen määrittelyn toteutus
- JRockit Real Time (PDF; 62 kB) - Reaaliaikaisen määrittelyn toteutus Oraclesta
- Reaaliaikaiset Java-virtuaalikoneet - Luettelo reaaliaikaisista Java-virtuaalikoneista
- JTRES05 , JTRES06 , JTRES07 JTRES08 , JTRES09 , JTRES10 , JTRES11 - Java-tekniikoiden kansainvälinen työpaja reaaliaikaisille ja sulautetuille järjestelmille
Yksittäiset todisteet
- ↑ https://jcp.org/fi/jsr/detail?id=282
- ^ [1] Garbage First Garbage Collector Tuning, Monica Beckwith, elokuu 2013
- ↑ Metronome GC -algoritmi koville reaaliaikaisille Java-sovelluksille; IBM; Haettu 12. kesäkuuta 2014
- ↑ [2] WebSphere Real Time WebSphere Application Server -palvelimessa
- ↑ https://www.azul.com/products/components/pgc/
- ↑ [3] Z Garbage Collector - alle millisekunnin taukoajat