Java w czasie rzeczywistym

Java czasu rzeczywistego to zbiór interfejsów programistycznych, które rozszerzają technologię Java o twarde możliwości czasu rzeczywistego . Niniejsza specyfikacja czasu rzeczywistego dla języka Java (RTSJ) została opracowana jako żądanie specyfikacji języka Java  1 w ramach procesu społeczności Java i przyjęta jako standard w listopadzie 2001 r. Obecnie trwają prace nad rozszerzoną wersją RTSJ w ramach JSR 282.

tła

Niektóre z właściwości, które są zwykle postrzegane jako mocne strony Javy, takie jak zbieranie śmieci nierozerwalnie związane z językiem , a także natywne wsparcie wątków i współbieżności , uniemożliwiły bezpośrednie użycie Javy w trudnych systemach czasu rzeczywistego:

  • Java, podobnie jak większość systemów operacyjnych, dla których oferowana jest Java, nie obsługuje ściśle opartego na priorytetach modelu wątków. Dlatego mechanizmy blokowania Java nie obsługują żadnych mechanizmów unikania odwrócenia priorytetów, takich jak ograniczenia priorytetów lub dziedziczenie priorytetów .
  • Zachowanie niektórych modułów odśmiecania pamięci w języku Java może powodować nieokreślone przerwy w obliczeniach, a tym samym podważać wszystkie gwarancje programów Java w czasie rzeczywistym.

Aby przezwyciężyć te trudności, opracowano specyfikację czasu rzeczywistego dla języka Java (RTSJ) jako żądanie specyfikacji języka Java . W Javie umożliwia ominięcie wyżej wymienionych przeszkód poprzez wprowadzenie odpowiedniego modelu wątków i umożliwienie rozszerzenia wirtualnej maszyny Java o dodatkowe modele wątków. Ponadto definiuje specjalne obszary pamięci, które nie są czyszczone przez konwencjonalne wyrzucanie elementów bezużytecznych, ale przez wątki działające w czasie rzeczywistym, których nie można wstrzymać przez wyrzucanie elementów bezużytecznych.

Obecne implementacje RTSJ umożliwiają tworzenie twardych i miękkich aplikacji czasu rzeczywistego w Javie. Najbardziej znane implementacje obejmują implementację referencyjną firmy Timesys, IBM WebSphere Real Time, Sun Microsystems Java SE Real-Time Systems, Aonix PERC i JamaicaVM firmy aicas.

rozwój

„Garbage first Garbage Collector” (G1GC), który jest standardowo używany na serwerach od wersji Java 9, ma cele dotyczące maksymalnej długości przerw, które osiąga z rzadkimi wyjątkami. Umożliwia to miękkie aplikacje czasu rzeczywistego w Javie.

Od dłuższego czasu istniały również zbieracze elementów bezużytecznych, które wykorzystują algorytmy, których zachowanie w czasie jest przewidywalne, a tym samym umożliwiają również trudne aplikacje w czasie rzeczywistym w Javie.

literatura

  • Eric J. Bruno, Greg Bollella: Programowanie w czasie rzeczywistym w języku Java z wykorzystaniem Java RTS . Prentice Hall, 2009, ISBN 978-0-13-714298-9 (w języku angielskim, bvdep.com [dostęp 6 grudnia 2011]).
  • Peter C. Dibble: Programowanie platform Java w czasie rzeczywistym . Prentice Hall, 2002, ISBN 978-0-13-028261-3 (angielski).
  • Andrew Wellings: Programowanie współbieżne i czasu rzeczywistego w Javie . John Wiley & Sons, 2004, ISBN 978-0-470-84437-3 (angielski).
  • Benjamin Brosgol, James Gosling, Peter Dibble, Steve Furr, David Hardin, Mark Turnbull: The Real-Time Specification for Java . Ed.: Gregory Bollella. Addison-Wesley Longman, 2000, ISBN 0-201-70323-8 (angielski).

linki internetowe

Indywidualne dowody

  1. https://jcp.org/en/jsr/detail?id=282
  2. ^ [1] Garbage First Garbage Collector Tuning, Monica Beckwith, sierpień 2013
  3. Algorytm metronomu GC dla trudnych aplikacji Java w czasie rzeczywistym; IBM; Źródło 12 czerwca 2014 r
  4. [2] Czas rzeczywisty WebSphere na serwerze WebSphere Application Server
  5. https://www.azul.com/products/components/pgc/
  6. [3] Zbieracz śmieci Z - maksymalne czasy pauzy poniżej milisekundy