Documente Academic
Documente Profesional
Documente Cultură
Abstract— Este trabalho1 aborda a especificação de dos Estados Unidos, iniciando em junho de 1998 e cul-
JAVA para programação em Tempo-Real(RTSJ), que tem minando em novembro de 20012 com a publicação da es-
sido um processo realizado pela comunidade Java, patroci- pecificação de Java para Tempo Real – Real Time Spe-
nado pela empresa Sun Microsystems. Nele são sumariza- cification for Java (RTSJ). A Sun não vai produzir uma
dos aspectos ligados à modificações na especificação da lin-
implementação da especificação – esta tarefa ficou a cabo
guagem (necessárias para atender os requisitos de progra-
mação para sistemas em Tempo-Real e distribuídos). Neste da empresa americana TimeSys (www.timesys.com).
trabalho são apresentadas ainda a definição de termos li-
gados a sistemas de Tempo-Real, as motivações que impul- Um mérito especial desse grupo foi ter definido, de
sionaram a escolha da linguagem, e o estado atual de sua forma clara e precisa, um vocabulário para Tempo-Real,
disponibilidade comercial. com conceitos antes usados pela comunidade de usuários
e vendedores (practitioners) de forma contraditória, e as
vezes até errônea.
I. I NTRODUÇÃO
II. D IFICULDADES NO D ESENVOLVIMENTO PARA
T EMPO -R EAL
portátil entre todas essas arquiteturas, mantendo uma ver- ¯ Java empresta das linguagens C e C++ a sintaxe fa-
são única de seus sistemas. miliar. Tal como C++, Java é orientada para objetos,
embora seja mais simples que C++ por decisão inten-
Adaptabilidade Dinâmica: Outra dificuldade cional de seus projetistas em descartar características
freqüente na manutenção de sistemas em tempo-real em- que, segundo [9], estavam presentes primeiramente
barcados é que os refinamentos de software incrementais para dar suporte à retrocompatibilidade com código
tem de ser instalados sem que o sistema seja desligado legado. Um benefício adicional da sua simplicidade
para uma reinicialização completa. Isso inclui aplicações é o tamanho pequeno do seu sistema de tempo-de-
que tem de prover serviços ininterruptos para sua comu- execução. Existem relatos da Sun alegando que o
nidade de usuários (ex.: controle de tráfego aéreo, cen- interpretador básico tem cerca de 40 Kbytes, e a bi-
trais comutadoras de telefonia, e reconhecimento militar), blioteca básica e o suporte à thread somam aproxi-
e aplicações para as quais o custo de desligamento (down- madamente 175 Kbytes [11].
time) são proibitivos (ex.: controle de reatores nucleares, ¯ O ciclo de desenvolvimento tende a ser mais rápido
e sistemas de automação de manufatura). devido ao fato de Java suportar implementações in-
Tolerância à Falhas: Na presença de falhas no nó terpretadas e compiladas através do método just-in-
ou na rede, freqüentemente torna-se necessário redistri- time. Durante o desenvolvimento e prototipação rá-
buir informações e carga de trabalho. Seria bastante de- pida os desenvolvedores podem economizar tempo
sejável poder dispor de um ambiente de execução no qual usando o interpretador.
¯ Os softwares aplicativos são mais portáteis porque o
fosse permitido, de forma transparente (ou o mais sim-
ples possível), realizar essa transferência, mesmo consi- ambiente Java especifica cuidadosamente uma repre-
derando que os outros nós podem conter arquiteturas e sentação intermediária baseada em byte-code inde-
sistemas operacionais heterogêneos, tornando-os capazes pendente de máquina a qual pode ser transferida en-
de executar quaisquer das tarefas que precisem ser execu- tre nós heterogêneos de rede e interpretada ou compi-
tadas. lada sob demanda para código-nativo pelo ambiente
local de tempo-de-execução Java.
¯ Os softwares aplicativos são mais robustos devido ao
III. P OR QUE JAVA ? fato de o ambiente de tempo-de-execução prover ge-
rência de memória (garbage-collection) automática.
O que poucas pessoas sabem, ou lembram, é que ori- Embora essa seja uma característica bastante dese-
ginalmente a linguagem Java foi criada como parte de jável por eliminar a possibilidade de ocorrência de
um projeto de pesquisa para desenvolvimento de software ponteiros perdidos e vazamento de memória, para
avançado para uma larga variedade de “dispositivos” in- sistemas em tempo-real essa gerência deve ser re-
terconectados em rede e sistemas “embarcados” (embed- pensada devido às implicações que ela causa devido
ded systems). O objetivo era desenvolver um ambiente a sua natureza não determinística no modelo inicial
operacional pequeno, confiável, portátil, distribuído, e de proposto pela Sun Microsystems.
tempo–real [11], uma resposta aos desafios de desenvolvi- ¯ Aplicações são adaptáveis à ambientes em mudança
mento de aplicações dentro do contexto de ambientes dis- já que é possível baixar (download) dinamicamente
tribuídos em redes, e heterogêneos. Dentre os desafios, a módulos de código a partir de outros nós da rede sem
entrega segura de aplicações que consumissem o mínimo necessidade de reiniciar o sistema.
de recursos, fossem capazes de rodar em qualquer plata- ¯ A segurança é imposta por proteções embutidas no
forma de harware e software, e pudessem ser estendidas ambiente contra vírus e outras tentativas indevidas de
dinamicamente eram as de maior relevância [11]. interferência. Essa proteção é implementada através
de simples “provadores de teoremas” que analisam
O projeto de pesquisa inicialmente escolheu usar C++
módulos de byte-code baixados através da rede antes
para o desenvolvimento.Subseqüentemente os desenvol-
de tentar executá-los.
vedores encontraram tantas dificuldades com C++ até o
ponto de decidirem que seria melhor projetar um ambi-
Resumindo, o Grupo de Requerimentos considerou as
ente de linguagem totalmente novo. Passando por alguns
pontuações abaixo como sendo uma base para os reque-
percalços iniciais, Java surge a partir dessa decisão.
rimentos e motivações para uso de Java pela comunidade
Java oferece um certo número de melhoras em rela- de Tempo–Real [4]:
ção ao desenvolvimento de software em linguagens popu-
lares como C e C++ [9]: ¯ O alto nível de abstração presente em Java conduz
3
a uma melhora na produtividade dos programadores pela criação da especificação de Java para Programação
(embora reconheça que o compromisso (trade–off) em Tempo-Real:
comprometa a eficiência de tempo de execução (run-
time efficiency). ¯ Advanced Logic Corp.
¯ Java é relativamente mais fácil de ser dominada do ¯ Bay Networks / Bay Architecture Lab
que C++. ¯ Hewlett-Packard Company
¯ Java é relativamente segura, mantendo componentes ¯ Honeywell Inc.
3
de software (incluindo a própria JVM ) protegidos ¯ IBM Corp.
entre si. ¯ Lexmark International, Inc.
¯ Java suporta o carregamento dinâmico de novas clas- ¯ Microsoft
ses. ¯ The Mitre Corporation
¯ Java é altamente dinâmica, oferecendo suporte à cri- ¯ Mitsubishi Electric Corporation
ação de objetos e dethreads em tempo de execução. ¯ Motorola, Inc.
¯ Java foi projetada para dar suporte à integração de ¯ Nokia Research
componentes e reutilização. ¯ Nortel
¯ As tecnologias ligadas à Java foram desenvolvidas ¯ QNX Software Systems, Ltd.
com considerações criteriosas, utilizando conceitos e ¯ Rockwell Collins
técnicas que foram escrutinizadas pela comunidade. ¯ Siemens AG, A&D
¯ A linguagem de programação Java e a plataforma ¯ Sony
Java dão suporte à portabilidade de aplicações. ¯ SRI International
¯ As tecnologias ligadas à Java dão suporte a criação ¯ Sun Microsystems, Inc.
de aplicações distribuídas. ¯ The MITRE Corporation
¯ Java oferece uma semântica de execução bem- ¯ The Open Group
definida. ¯ Xerox Corporation
Um indicador do grau de importância de uma dada Retrocompatibilidade: O RTSJ não deverá impedir
tecnologia é o número de empresas (especialmente gran- que programas Java já existentes, escritos de forma apro-
des empresas) interessadas nela. Cada uma das empre- priada e sem a característica de Tempo-Real, sejam exe-
sas listadas abaixo participou diretamente, através de um cutados em implementações do RTSJ.
ou mais representantes, do grupo de trabalho responsável
Write Once, Run Anyware: O RTSJ deve reco-
Java Virtual Machine nhecer a importância do paradigma “Write Once, Run
4
Anywhere” – (WORA) (escreva uma vez, execute em qual- ser entregues dentro de um intervalo de tempo bem defi-
quer lugar), mas também deverá reconhecer a dificuldade nido. Um resultado entregue fora desse tempo (tarde de-
de se alcançar WORA para programas de tempo-real, e mais) é tão ruim quanto, ou até mesmo pior do que, um
não tentar aumentar ou manter portabilidade binária às resultado que não é entregue. Os aspectos de temporali-
custas de presibilidade. dade de aplicações para Tempo-Real fazem com que estes
sistemas sejam notoriamente complexos.
Práticas Atuais versus Características Avançadas:
O RTSJ deve considerar as práticas correntes usadas em Os termos chave de computação de Tempo-Real, tais
sistemas de tempo-real, assim como permitir futuras im- como real–time, hard real–time, soft real–time, determi-
plementações para inclusão de características avançadas. nismo, e predisível são freqüentemente usados na comuni-
dade de Tempo–Real de forma mal definida, indefinida ou
Execução Predizível: O RTSJ referenciará a capa- contraditória. Nessa comunidade não existe um consenso
cidade de execução predizível como sua primeira priori- quanto ao significado de “hard” real-time (embora as pes-
dade em todos os compromissos (tradeoffs); Isto poderá soas pareçam acreditar que sabem o significado quando
acontecer, algumas vezes, às custas de medidas típicas de vêem), e “soft real–time” normalmente tido como sendo
performance computacional de propósito geral. do tipo “o que será, será” (um conceito que normalmente
se aplica à sistemas que não sejam de tempo–real).
Nenhuma Extensão Sintática: Objetivando facilitar
o trabalho dos desenvolvedores de ferramentas, e assim
aumentar as chances de se ter implementações dentro de VII. RTSJ E AS Á REAS A MPLIADAS DE JAVA
prazos razoáveis, o RTSJ não introduzirá novas palavras
reservadas (keywords) ou fará outras extensões sintáticas
A especificação final, fruto dos encontros do grupo de
na linguagem Java.
trabalho de paritos (RTJEG), resultou no que ficou conhe-
cido como Real-Time Specification for Java (RTSJ) [3], e
Permitir Variação nas Decisões de Implementa-
nela são feitas algumas ampliações na definição original
ção: O RTJEG reconhece que as implementações do
da linguagem Java, as quais são descritas abaixo:
RTSJ podem variar em um número de decisões de imple-
mentação, tais como o uso de algoritmos eficientes ou não,
compromissos entre eficiência de tempo ou de espaço, in-
clusão de algoritmos de escalonamento não requisitados A. Escalonamento de Thread e Despacho:
na implementação mínima, e variação no comprimento do
caminho para o código para execução de byte-codes. O Projeto: Em face da significante diversidade de mo-
RTSJ não deve obrigar algoritmos ou constantes de tempo delos de escalonamento e despacho, e do reconhecimento
específicas para tal, mas requerer que a semântica da im- de que cada modelo tem ampla aplicabilidade na diversa
plementação seja atingida. O RTSJ oferece aos implemen- indústria de sistemas de tempo-real, ficou definido que
tadores a flexibilidade de criar implementações adequadas deveria haver um mecanismo interno de escalonamento,
para atender os requisitos de seus clientes. mas não seria especificada previamente a natureza de to-
dos (ou mesmo de alguns) possíveis mecanismos de esca-
lonamento. A especificação foi construída permitindo às
implementações proverem algoritmos de escalonamento
VI. C ONCEITOS DE T EMPO -R EAL
não antecipados. As implementações devem permitir a
designação através de programa de parâmetros apropri-
Software para aplicações de Tempo-Real reage a es- ados para o mecanismo de escalonamento subjacente, as-
tímulos de seu ambiente. O estado da aplicação é deter- sim bem como prover quaisquer métodos necessários para
minado pelo ambiente, enquanto que o estado do ambi- a criação, gerenciamento, admissão, e término de threads
ente, a sua vez, é determinado pelo estado da aplicação. Java. Bastante flexibilidade foi deixada no arcabouço de
A aplicação de controle de processo freqüentemente inte- escalonamento de thread objetivando permitir que futu-
rage fortemente com algum processo físico (processo este ras versões da especificação pudessem ser construídas a
sob controle). partir desta versão e permitir o carregamento dinâmico de
módulos de políticas de escalonamento. Um escalonador
Os resultados de uma aplicação para Tempo-Real não base é requerido em todas as implementações, e este deve
somente tem de ser funcionalmente corretos, eles têm de ser familiar aos programadores de tempo-real. Ele será
5
baseado em prioridades, preemptivo, e deve ter no mínimo usada (tal como atraso médio) e pode aceitar vários valo-
28 prioridades únicas. res para a métrica em uso.
Especificação: Uma das preocupações de programa- Muitos sistemas usam prioridade de thread em uma
ção para tempo-real é a garantia da execução em tempo, tentativa de determinar uma escala. Prioridade tipica-
ou previsível, de seqüências de instruções de máquina. mente é um número inteiro associado com a thread. Es-
Vários esquemas de escalonamento nomeiam diferente- ses inteiros informam ao sistema a ordem na qual as thre-
mente essas seqüências de instruções. Nomes comumente ads devem ser executadas. A generalização do conceito
usados incluem threads, tarefas, módulos, e blocos. O de prioridade é a elegibilidade de execução. Usa-se o
RTSJ introduz o conceito de objeto escalonável. Qual- termo despachar dispatching para referir-se à porção do
quer instância de qualquer classe que implemente a inter- sistema que seleciona a thread com a mais alta elegibi-
face Schedulable é um objeto escalonável e seu escalo- lidade de execução do conjunto de threads que estejam
namento e despacho serão gerenciados pela instância de prontas para serem executadas. Na prática corrente de sis-
Scheduler da qual ele tenha uma referência. O RTSJ re- temas de tempo-real, a atribuição de prioridades está tipi-
quer três classes que são objetos escalonáveis: camente sob controle do programador em oposto ao con-
trole do sistema. No RTSJ cabe ao programador também
¯ RealtimeThread, a atribuição de prioridades.
¯ NoHeapRealtimeThread,
O RTSJ requer um número de classes com nomes no
¯ AsyncEventHandler.
formato <string>Parameters (tais como Scheduling-
Parameters). Uma instância de uma dessas classes de
Por execução temporalmente adequada de thread
parâmetros contém uma característica de demanda por re-
subentende-se que o programador pode determinar por
curso em particular para ser usada por um ou mais ob-
análise do programa, teste do programa em uma imple-
jetos escalonáveis. Por exemplo, a subclasse PriorityPa-
mentação particular, ou ambos, se threads particulares
rameters contém a métrica de elegibilidade de execução
sempre completarão sua execução antes de alguma res-
do escalonador básico, ou seja, prioridade. Em algumas
trição temporal. Essa é a essência da programação para
momentos (tempo de criação ou configuração (ou recon-
tempo-real:
figuração) de thread), outras instâncias de classes de pa-
râmetros são ligadas à um objeto escalonável. O objeto
A adição de restrições temporais às condições escalonável então assume as características dos valores
de corretude para a computação. presentes no objeto parâmetro. Por exemplo, se uma ins-
tância de PriorityParameter que tinha em seu campo de
Por exemplo, para que um programa compute a soma prioridade o valor representante da mais alta prioridade
de dois números, não poderá mais ser aceitável compu- disponível for ligada a um objeto escalonável, então esse
tar apenas a resposta aritmeticamente correta, mas a res- objeto assumirá a característica de que ele executará sem-
posta deverá ser computada antes de um tempo particular. pre que estiver pronto preferencialmente à todos os outros
Tipicamente, restrições temporais são prazos (deadlines) objetos escalonáveis ( exceto, é claro, àqueles que tam-
expressos em tempo relativo ou absoluto. bém possuirem a mais alta prioridade).
Usa-se o termo escalonamento (scheduling) ou algo- O RTSJ especifica ao menos um algoritmo de escalo-
ritmo de escalonamento para referir-se à produção de uma namento e mudança semântica na JVM que suporta exe-
seqüência, ou ordenação, para a execução de uma con- cução previsível, e este deve estar disponível em todas as
junto de threads, uma escala (schedule). Essa escala tenta implementações de RTSJ. O algoritmo de escalonamento
otimizar uma métrica particular ( uma métrica que possa inicial e default é prioridade-fixa preemptiva com pelo
medir quão bem o sistema está atingindo as restrições menos 28 níveis únicos, e será representado em todas as
temporais). Uma análise de realização (feasibility analy- implementações pela classe PriorityScheduler subclasse
sis) determina se uma escala tem um valor aceitável para de Scheduler.
a métrica.
importante do ambiente de programação Java, e foi bus- definido pelo escopo sintático (o tempo de vida dos
cada uma direção que permitisse, tanto quanto possível, objetos no heap).
que o serviço de gerencia automática de memória pudesse 2) Physical Memory: permite que objetos sejam cri-
ser implementado automaticamente pelo sistema subja- ados em regiões de específicas de memória física
cente e não se intrometesse na tarefa de programação. que tenham características particulares importantes,
tais como memória que tenha velocidade de acesso
Existem diversos algoritmos de gerenciamento auto- substancialmente mais rápida, ou áreas de memória
mático de memória, também conhecidos como garbage destinadas a mapeamento de dispositivos.
collection (GC), e muitos deles acomodam-se a certas 3) Immortal Memory: representa uma área de me-
classes de estilos e sistemas de programação para tempo- mória que contém objetos que, uma vez alocados,
real. Em uma tentativa de acomodar um conjunto diverso passam a existir durante toda a execução da apli-
de algoritmos de GC foi buscado definir-se uma especifi- cação, ou seja, os objetos são imortais. Imortal-
cação alocação e retomada de memória que: Memory é um recurso de memória compartilhado
entre todas as threads em uma aplicação. Obje-
¯ fosse independente de qualquer algoritmo de GC em tos alocados em ImortalMemory só são liberados
particular, quando o ambiente de execução Java (Java run-time
¯ permitisse o programa caracterizar de forma precisa environment) termina, e nunca são alvo de garbage-
o efeito de um algoritmo implementado de GC no collecting ou de movimentação.
tempo de execução, preempção, e despacho de thre- 4) Heap Memory: representa uma área de memória
ads Java de tempo- real, e que é o heap. O RTSJ não muda o determinante
¯ permitisse a alocação e retomada de objetos fora de do tempo de vida dos objetos presentes no heap.
qualquer interferência de qualquer algoritmo de GC. O tempo de vida ainda é determinado pela visibi-
lidade.
Especificação: Garbage-collected memory heaps
sempre foram considerados um obstáculo para programa-
ção para tempo-real devido às latências imprevisíveis in- C. Sincronização e Compartilhamento de Recursos:
troduzidas pelo garbage-collector. O RTSJ responde essa
questão provendo várias extensões ao modelo de memó- Projeto: A lógica de programação freqüentemente
ria as quais dêem suporte ao gerenciamento de memória necessita compartilhar recursos serializáveis. Sistemas
de uma forma que não interfira com a habilidade do có- para tempo-real introduzem uma complexidade adicio-
digo de tempo-real prover comportamento determinístico. nal: inversão de prioridade. Foi decidido que a especi-
Este objetivo é alcançado através da permissão da aloca- ficação menos intrusiva para permitir sincronização se-
ção de objetos fora do heap do garbage-collector tanto gura em tempo-real é requerer qua as implementações de
para objetos de curto quanto de longo tempo de vida: synchronized (palavra reservada da linguagem Java)
inclua um ou mais algoritmos que previnam inversão de
Memory Areas: O RTSJ introduz o conceito de área prioridade entre threads Java de tempo-real que compar-
de memória. Uma área de memória representa uma área tilhem o recurso serializado. Foi notado também que em
da memória que pode ser usada para alocação de obje- alguns casos o uso da palavra reservada synchronized
tos. Algumas áreas de memória existem fora do heap e implementando o algoritmo requerido de inversão de pri-
impõem restrições sobre o que o sistema e o garbage- oridade não é suficiente nem para prevenir inversão de pri-
collector podem com os objetos alocados nestas áreas. oridade nem permitir uma thread ter uma elegibilidade de
Objetos em algumas áreas de memória nunca são co- execução logicamente mais alta que o carbage collector.
letados pelo garbage-collector, entretanto, o garbage- É provido um conjunto de classes de filas livres de espera
collector tem de ser capaz de vasculhar essas áreas de me- (wait-free queue classes) a serem usadas em tais situações.
mória em busca de referências a quaisquer objetos dentro
do heap para preservar a integridade do heap. Especificação: Em particular o termo highest
priority thread indica meramente a thread mais elegível,
Existem quatro tipos básicos de áreas de memó- ou seja, a thread a qual o despachante (ıdispatcher)
ria: escolheria entre todas as threads que estão prontas
para serem executadas, e não presume necessariamente
1) Scoped Memory: provê mecanismos para tratar um mecanismo de despacho baseado estritamente em
com classes de objetos que tem um tempo de vida prioridade.
7
Uma instância de AsyncEventHandler pode ser pensada do mecanismo tradicional, inseguro, e obsoleto da lingua-
como bastante similar a uma thread. Quando um evento é gem Java de parar threads, o mecanismo do RTSJ para
disparado, os handlers são executados assincronamente, tratamento de eventos assíncronos e transferência de con-
escalonados de acordo com os ReleaseParameters e trole é seguro.
SchedulingParameters de uma forma que parece como
se o handler tenha assumido a sua própria thread.
G. Acesso à Memória Física:
Pretende-se que o sistema possa lidar bem com si-
tuações onde haja um grande número de instâncias de Embora não seja diretamente uma questão de tempo-
AsyncEvent e AsyncEventHandler (dezenas de milha- real, acesso à memória física é algo desejável para mui-
res). O número de handlers disparados (em processo) deve tas das aplicações que pudessem produtivamente fazer uso
ser menor. Uma forma especializada de AsyncEvent é a de uma implementação do RTSJ. Foi definida então uma
classe Timer a qual representa um evento cuja ocorrên- classe que permite aos programadores acesso à memória
cia é dirigida pelo tempo. Existem dois tipos de Timers: física ao nível dos bytes, assim bem como uma classe que
O tipo OneShotTimer e o PeriodicTimer. Instancias de permite a construção de objetos na memória física.
OneShotTimer disparam uma vez, em um momento es-
pecífico. Timers periódicos disparam em momentos espe-
cíficos e então periodicamente de acordo com um inter- VIII. R EAL -T IME JAVA EM AÇÃO
valo especificado.
Recentemente (26 de março de 2002) a revista Ja-
Os Timers são dirigidos por objetos do vaWorld realizou uma reportagem sobre o uso de Java para
tipo Clock. Existe um objeto Clock especial, programação para tempo-real. No artigo Tim Rohaly [10]
Clock.getRealtimeClock( ) que representa o reló- faz referência a uma apresentação feita durante a SunOne4
gio de tempo-real. A classe Clock pode ser extendida de uma aplicação projetada para “capturar a imaginação”
para representar outros clocks que o sistema possa do público e enfatizar a integração de várias tecnologias
tornar disponíveis (tais como um soft clock com alguma chave da Sun (Web Services, Java para Tempo-Real, e
granularidade). aplicações Wireless).
Os robôs também podiam transmitir vídeo a partir de maduro e portátil de desenvolvimento de aplicações den-
câmeras instaladas sobre si, transmitido através de wire- tro do espaço de aplicação intrinsecamente complexo e
less Ethernet para apresentação ao público. Já que os dispendioso como são as aplicações de tempo-real.
robôs eram autônomos, toda a estratégia e as ações tem
de ser preprogramadas. Este esforço foi bem sucedido em seu intento de criar
uma especificação (RTJEG), posteriormente uma padro-
nização (RTSJ), e por último uma implementação para o
padrão, mas se o RTSJ sobreviverá e onde ele se encai-
xará dentro das teconologias da Sun ainda é algo a ser
visto. Experiências passadas nesta área sugerem que a
Sun MicroSystems tem um bom caminho a trilhar antes
que as “forças de mercado” em última instância tornem
RTSJ bem sucedida.
R EFERENCES
Fig. 1. Corrida de robôs programados com diversas tecnologias Java. [1] Allen, D., Standards for Real-Time Distributed Object Compu-
ting. The Edge. MITRE Corporation, 2000.
[2] Bollella, G., Real-Time Java: Status and Architecture.
IX. C ONCLUSÕES (www.rtj.org/rtas99/rtas.htm), 1999.
[3] Bollella, G., et. al., The Real-Time Specification for Java - The
Real-Time for Java Expert Group. Addison-Wesley,Upper Sad-
Aplicações como as do robô lutador de sumo citadas dle River, NJ, 2000.
anteriormente deixam claro que a linguagem Java pode [4] Carnahan, L.,Ruark, M. (eds.), Requirements
ser aplicada fim-a-fim, do banco de dados, através do ser- for Real-Time Extensions for the Java Platform.
(www.nist.gov/itl/div897/ctg/real-time/rt-doc/rtj-final-draft.pdf),
vidor de aplicações, web services, conectividade sem fio, National Institute of Standards and Technology, 1999.
até o interfaceamento Java com o mundo real através de [5] Hilderink, G., Bakkers, A., Broenink, J., A Distributed Real-Time
J2ME/real-time acomodando diversos clientes fim-a-fim. Java System Based on CSP. 3rd IEEE International Symposium
on Object-Oriented Real-Time Distributed Computing, pp. 400-
Embora muitas companhias5 ofereçam soluções de 407, California, 2000.
tempo-real para Java, neste momento apenas uma (aJile [6] Interoperable Objects for Distributed Real
Time Systems. Embedded Systems Programming
Systems6 ) oferece suporte à RTSJ em seus produtos. A (www.embedded.com/97/feat9703.htm), 2002.
maioria das empresas que vendem máquinas vituais em- [7] Jensen, E., The Distributed Real-Time Specification for Java - A
barcadas (embedded VM) e hardware parecem estar con- Proposed Initial Approach.(www.drtsj.org), Real-Time and Per-
centrando seus esforços mais em J2ME7 e não tem planos formance Engineering Section The MITRE Corporation,2000.
[8] Lamport, L. - LATEX A Document Preparation System – User´s
para embarcarem em Java de Tempo-Real. Uma das ra-
Guide & Reference Manual. Addison-Wesley, Reading, Massa-
zões para isso é que todas elas já oferecem alguma capa- chusetts, 1986.
cidade de tempo-real, portanto não identificam qualquer [9] Nilsen, K., Issues in the Design and Implementation of Real-
razão que as obrigue ou motive para dar suporte imediato Time Java.1996.
[10] Rohaly, T., Real-Time Java takes the Stage. JavaWorld,
à nova especificação RTSJ. Muitas estão considerando dar
march,2002.
suporte ao RTSJ para o futuro (nos próximos 12-18 me- [11] Sun Microsystems Inc., The Java Language Environment: A
ses), mas a maioria está esperando para ver a demanda de White Paper. Sun Microsystems Inc.:Mountain View, CA, 1995.
mercado antes de se comprometer com esta nova API.