Java em tempo real

Real-Time Java é uma coleção de interfaces de programação que estende a tecnologia Java com recursos hard real-time . Esta especificação em tempo real para Java (RTSJ) foi desenvolvida como Java Specification Request  1 como parte do Java Community Process e adotada como padrão em novembro de 2001. O trabalho está em andamento em uma versão estendida do RTSJ como parte do JSR 282.

fundos

Algumas das propriedades normalmente vistas como pontos fortes do Java, como a coleta de lixo inextricavelmente ligada à linguagem , bem como o suporte nativo de threads e simultaneidade , tornaram impossível o uso direto do Java em sistemas de tempo real rígidos:

  • Java, como a maioria dos sistemas operacionais para os quais Java é oferecido, não oferece suporte a um modelo de threading baseado em prioridade estrita . Os mecanismos de bloqueio Java, portanto , não oferecem suporte a nenhum mecanismo para evitar a inversão de prioridade, como limites de prioridade ou herança de prioridade .
  • O comportamento de certos coletores de lixo Java pode causar pausas indefinidas nos cálculos e, assim, prejudicar todas as garantias em tempo real dos programas Java.

Para superar essas dificuldades, a Especificação em Tempo Real para Java (RTSJ) foi desenvolvida como uma Solicitação de Especificação Java . Em Java, ele permite que os obstáculos mencionados acima sejam contornados, introduzindo um modelo de threading correspondente e tornando possível expandir a máquina virtual Java com modelos de threading adicionais. Além disso, ele define áreas de memória especiais que não são limpas pela coleta de lixo convencional, mas por encadeamentos em tempo real que não podem ser pausados ​​pela coleta de lixo.

As implementações atuais do RTSJ possibilitam o desenvolvimento de aplicativos hard e soft em tempo real em Java. As implementações mais conhecidas incluem a implementação de referência da Timesys, IBM WebSphere Real Time, Sun Microsystems Java SE Real-Time Systems, Aonix PERC e JamaicaVM da aicas.

desenvolvimento

O "Garbage first Garbage Collector" (G1GC), que tem sido usado como padrão em servidores desde Java 9, tem metas para a duração máxima das pausas, o que ele atinge com raras exceções. Isso permite aplicativos soft em tempo real em Java.

Os coletores de lixo também existem há muito tempo e usam algoritmos cujo comportamento ao longo do tempo é previsível e, portanto, também permitem aplicativos de tempo real em Java.

literatura

  • Eric J. Bruno, Greg Bollella: Programação Java em tempo real com Java RTS . Prentice Hall, 2009, ISBN 978-0-13-714298-9 (inglês, bvdep.com [acessado em 6 de dezembro de 2011]).
  • Peter C. Dibble: Programação da plataforma Java em tempo real . Prentice Hall, 2002, ISBN 978-0-13-028261-3 (inglês).
  • Andrew Wellings: Programação simultânea e em tempo real em Java . John Wiley & Sons, 2004, ISBN 978-0-470-84437-3 (inglês).
  • 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 (inglês).

Links da web

Evidência individual

  1. https://jcp.org/en/jsr/detail?id=282
  2. ^ [1] Garbage First Garbage Collector Tuning, Monica Beckwith, agosto de 2013
  3. Algoritmo Metronome GC para aplicativos Java em tempo real; IBM; Recuperado em 12 de junho de 2014
  4. [2] WebSphere Real Time no WebSphere Application Server
  5. https://www.azul.com/products/components/pgc/
  6. [3] O Coletor de Lixo Z - Tempos de pausa máximos de submilissegundos