Professional Documents
Culture Documents
Linguagens de Programao
4.0 ndice
4.1 Programao de Computadores 2 2 2 3 3 5 6 6 8 8 8 12 13 13 13 13 14 14 14 14 15 15 15
4.2 Nveis de Linguagens de Programao 4.2.1 Linguagem de Mquina 4.2.2 Linguagem Hexadecimal 4.2.3 Linguagem Assembly 4.2.4 Linguagem de Alto Nvel 4.2.5 Linguagens estruturadas 4.3 Execuo de Programas
4.4 Desenvolvimento de Programas 4.4.1 Gerao do cdigo fonte (codificao) 4.4.2 Traduo do Cdigo Fonte (cdigo objeto) 4.4.3 Editores de ligao 4.4.4 Depuradores ou debuggers 4.5 Paradigmas de programao 4.5.1 Programao no-estruturada 4.5.2 Programao Procedural 4.5.3 Programao Modular 4.5.4 Programao Orientada a Objetos 4.5.5 Linguagens de programao e seus paradigmas 4.6 Linguagens Interpretadas 4.6.1 Compilador Versus Interpretador 4.6.2 Mquina Virtual 4.6.3 Java
dispositivos) que suporta o processamento da informao; n o software , que corresponde ao conjunto de programas responsveis pela pilotagem do sistema para a execuo das tarefas consideradas. No que diz respeito a esta segunda classe de componentes, pode-se estabelecer uma classificao segundo o tipo de servio por ele realizado. Assim, tem-se as seguintes definies:
n o software de sistema (ou sistema operacional) capaz de oferecer ao usurio,
ou a outros softwares, facilidades de acesso aos recursos do computador, seja atravs de comandos, seja atravs de servios especiais ativados a nvel de um programa. O sistema operacional administra os arquivos, controla perifricos e executa utilitrios. n o software utilitrio, que podem ser programas desenvolvidos por especialistas ou mesmo por usurios experimentados que tem por objetivo facilitar a realizao de determinadas atividades correntes no uso dos computadores (deteco e eliminao de vrus, programas de comunicao em redes de computadores, compresso de arquivos, etc...);
n o software aplicativo, que so os programas desenvolvidos ou adquiridos pelos
usurios para algum fim especfico, seja ele de natureza profissional, educacional ou mesmo de lazer (jogos). Informalmente, uma linguagem de programao pode ser definida como sendo um conjunto limitado de instrues (vocabulrio), associado a um conjunto de regras (sintaxe) que define como as instrues podem ser associadas, ou seja, como se pode compor os programas para a resoluo de um determinado problema. Ao longo dos anos, foram desenvolvidas (e continuam sendo) uma grande quantidade de linguagens de programao, algumas de uso mais geral e outras concebidas para reas de aplicao especficas.
As instrues de linguagem de mquina so representadas por cdigos que correspondem palavras binrias cuja extenso pode variar de 8 a 64 bits ( Figura 1). Dependendo da operao considerada, o cdigo de uma instruo pode simbolizar a operao a ser executada e os dados envolvidos na operao (ou uma referncia localizao dos dados).
1 0 1 0
0 0 0 0
0 1 0 0
1 0 0 1
1 1 0 0
0 0 1 1
1 1 0 1
0 1 1 0
1 0 1 0
1 0 0 1
0 1 1 1
0 0 0 1
1 1 0 0
0 1 1 0
1 0 1 1
0 0 1 0
Figura 1.
Por uma questo de custo a nvel do hardware, as operaes representadas pelas instrues de linguagem de mquina so bastante elementares, como por exemplo, a transferncia de dados entre memria e registro da CPU, a adio de dois valores, o teste de igualdade entre dois valores, etc... A linguagem de mquina impraticvel para escrita ou leitura. invivel escrever ou ler um programa codificado na forma de uma string de bits.
A linguagem hexadecimal portanto apenas uma simplificao de notao da linguagem de mquina. Apesar disto, a programao e leitura usando a linguagem hexadecimal continua impraticvel.
MOVE) e dois registradores como parmetros: R1 e R2. Quando o processador executa esta instruo, ele comanda o movimento do contedo de R2 para R1 (equivalente a instruo Pascal R1:=R2, sendo R1 e R2 equivalente a duas variveis); n ADD R1, R2 nesta instruo identifica-se o mnemnico ADD (abreviao de ADDITION) e dois registradores como parmetros: R1 e R2. Quando o processador executa esta instruo, ele comanda a adio do contedo de R1 ao contedo de R2 e o resultado armazenado e m R1 (equivalente a instruo Pascal R1:=R1+R2). Escolhendo nomes descritivos para as posies de memria, e usando mnemnicos para representar cdigos de operao, a linguagem assembly facilitou significativamente
a leitura de seqncias de instruo de mquina. Como exemplo, supomos a operao de dois nmeros inteiros: A:=B+C. Esta operao, em um PC, em notao hexadecimal ficaria: A1000203060202A30402. Se associarmos o nome B posio de memria 200h, C posio 202h e A posio 204h, usando a tcnica mnemnica, a mesma rotina poder ser expressa da seguinte forma:
MOV AX,B ADD AX,C MOV A,AX ; registro AX recebe o valor de memria contida na varivel B ; AX recebe a soma de AX (valor de B) com o valor de C ; varivel A recebe valor de AX
A maioria concorda que a segunda forma, embora ainda incompleta, melhor que a primeira para representar a rotina. Apesar de oferecer uma representao mais prxima do que o programador est acostumado a manipular, a linguagem Assembly apresenta certas dificuldades para a realizao dos programas, tais como a necessidade de definio de um conjunto relativamente grande de instrues para a realizao de tarefas que seriam relativamente simples (se representadas atravs de outras linguagens) e a exigncia do conhecimento de detalhes do hardware do sistema (arquitetura interna do processador, endereos e modos de operao de dispositivos de hardware, etc...). Por outro lado, a utilizao da linguagem Assembly proporciona um maior controle sobre os recursos do computador, permitindo tambm obter-se bons resultados em termos de otimizao de cdigo Como a linguagem Assembly apenas uma verso legvel da linguagem de mquina, a passagem de um programa escrito em Assembly para a linguagem de mquina quase sempre direta, no envolvendo muito processamento. Esta passagem de um programa Assembly para linguagem de mquina chamada de Montagem, e o programa que realiza esta operao chamado de montador (Assembler ). A linguagem Assembly orientada para mquina (ou melhor, para processador), necessrio conhecer a estrutura do processador para poder programar em Assembly. A linguagem Assembly utiliza instrues de baixo nvel que operam com registros e memrias diretamente. Assim ela muito orientada s instrues que so diretamente executadas pelo processador. Na seqncia da evoluo das linguagens de programao, procurou-se aproximar mais a linguagem de programao linguagem natural que utilizamos no dia-a-dia: surgiram ento as linguagens de alto nvel, tipo Pascal, C, C++, etc.
tipo operaes de movimentao de dados em memria, para registros e para memrias, e operaes lgicas e aritmticas bem simples. Estas instrues so de baixa expressividade, isto , elas so de baixo nvel. O programador deve programar num nvel de detalhamento muito maior para fazer a mesma coisa que em um programa escrito em linguagem de alto nvel. n Como o programador utiliza diretamente os recursos do processador e memria, ele deve conhecer muito bem a mquina onde ele est programando.
n Um programa escrito em linguagem Assembly no muito legvel, por isso ele
uma famlia de processadores. Por exemplo, diferente de um programa C, ele no pode ser executado em PCs e estaes de trabalho. n Devido a sua baixa expressividade, ilegibilidade e exigncia do conhecimento sobre a mquina faz a programao Assembly ter um custo de desenvolvimento
maior, requerendo um maior nmero de homens/hora comparado com a programao utilizando linguagens de alto nvel. Apesar das desvantagens acima citadas, a utilizao da linguagem Assembly tem algumas vantagens que so listados abaixo:
n Ela permite o acesso direto ao programa de mquina. Utilizando uma linguagem
de alto nvel, no tem-se o controle do cdigo de mquina gerado pelo compilador (alguns compiladores permite a otimizao de tamanho e de velocidade do programa). Devido a este acesso, o programador pode gerar um programa mais compacto e eficiente que o cdigo gerado pelo compilador. Um programa escrito em linguagem Assembly pode ser 0 ou 300 % menor e mais rpido que um programa compilado. n Alm disso, esta linguagem permite o controle total do hardware, por exemplo, permitindo a programao de portas seriais e paralela de um PC.
gerar programas mais eficientes. Neste tipo de aplicao, geralmente o processador deve executar um conjunto de instrues em um tempo limitado. Por exemplo, a cada 10 milisegundos o processador deve ler um dado, process-lo e emitir um resultado. n Comunicao e transferncia de dados, devido a possibilidade de acessar diretamente o hardware, a linguagem Assembly utilizada para a implementao de programas de comunicao ou transferncia de dados. n Otimizao de subtarefas da programao de alto nvel, um programa no precisa somente ser escrito em linguagem Assembly ou linguagem de alto nvel. Ns podemos ter programas de alto nvel com subtarefas escritas em linguagem Assembly. Sendo assim, ns podemos otimizar partes de programas, no caso de tarefas tempo-real ou para a programao do hardware do computador.
registrador e as clulas de memria de uma mquina limitam o tamanho mximo dos inteiros que nela podem ser convenientemente manipulados. Disso resulta o fato de que, em diferentes mquinas, uma mesma linguagem pode apresentar diferentes caractersticas, ou dialetos. Conseqentemente, em geral necessrio fazer ao menos pequenas modificaes no programa antes de move-lo de uma mquina para outra. A causa deste problema de portabilidade , em alguns casos, a falta de concordncia em relao correta composio da definio de uma linguagem em particular. Para auxiliar nesta questo, o American National Standards Institute (ANSI) e a International Organization for Standardization (ISO) adotaram e publicaram padres para muitas das linguagens mais populares. Em outros casos, surgiram padres informais, devido popularidade de um dados dialeto de uma linguagem e ao desejo, por parte de alguns autores de compiladores, de oferecerem produtos compatveis.
de programas com as mais diversas caractersticas e independente da rea de aplicao considerada; encaixam-se nesta categoria linguagens como Pascal, Modula-2 e C; n as linguagens especializadas, as quais so orientadas ao desenvolvimento de aplicaes especficas; a lgumas das linguagens que ilustram esta categoria so Prolog, Lisp e Forth; n as linguagens orientadas a objeto, que oferecem mecanismos sintticos e semnticos de suporte aos conceitos da programao orientada a objetos; alguns exemplos destas linguagens so Smalltalk, Eiffel, C++ e Delphi.
Figura 3. Carga e execuo do programa FORMAT.COM O sistema operacional responsvel pela leitura do arquivo FORMAT.COM e a execuo. O MS-DOS um exemplo de sistema operacional. O WINDOWS tambm pode ser considerado uma espcie de sistema operacional. Uma das vrias funes do sistema operacional permanecer o tempo todo ativo na memria principal, esperando que o usurio comande a execuo de a lgum programa. Portanto, quando se usa um comando como "FORMAT A:", o que ocorrer na verdade o seguinte:
n Inicialmente o sistema operacional checa se voc fornece algum comando. n Voc digita o comando "FORMAT A:". n O sistema operacional procura no disco o arquivo FORMAT.COM e carrega-o na
memria RAM. n O sistema operacional momentaneamente transfere o controle da CPU para o programa FORMAT.COM, que a essa altura j est carregado na memria principal. n A CPU executa o programa FORMAT.COM n Ao terminar a execuo do FORMAT.COM, o sistema operacional volta a ter o controle da CPU. Fica ento aguardando que voc envie um novo comando. Podemos entender ento que nenhum programa chega at a memria por mgica, e sim, atravs do controle feito pelo sistema operacional. Algum mais observador pode ento ficar com a seguinte dvida: "Se o sistema operacional quem l para a memria principal todos os programas a serem executados, como ento que o prprio sistema operacional chegou nesta memria?". No instante em que ligamos o computador, a memria principal no contm programa algum. Nesse instante, o sistema operacional est armazenado no disco (normalmente no disco rgido, no caso dos PCs), e precisa ser carregado na memria. Quem faz a carga do sistema operacional para a memria um programa chamado BIOS, que fica gravado em memria ROM. Lembre-se que a memria ROM no perde seus dados quando o computador desligado. Portanto, no instante em que ligamos o computador, o BIOS j est na memria, e imediatamente processado pela CPU. O processamento do BIOS comea com uma contagem de memria, seguido de alguns testes rpidos no hardware, e finalmente a leitura do sistema operacional do disco para a memria principal. Esse processo, ou seja, a carga do sistema operacional na memria RAM, chamado de BOOT. A Figura 4 mostra o processo de BOOT para a carga do sistema operacional DOS: 1) No instante em que o computador ligado, o sistema operacional est armazenado em disco, a RAM est "vazia", e a CPU executa o BIOS. 2) Mostra o instante em que termina a operao de BOOT. O sistema operacional j est carregado na memria e j est sendo executado pela CPU.
3) Mostra o que ocorre imediatamente antes da execuo do programa FORMAT.COM. O sistema operacional recebe um comando do usurio para que leia o arquivo FORMAT.COM do disco para a memria RAM. 4) O programa FORMAT.COM est sendo executado pela CPU.
como os Montadores (ou Assemblers que, como o nome indica, so orientados para traduzir programas escritos na linguagem Assembly) e os Compiladores, construdos para gerar o cdigo de programas originalmente escritos em linguagens de alto nvel como Pascal, C, Fortran e outras. O cdigo gerado por estas ferramentas representado segundo o sistema de numerao binria e denominado cdigo-objeto. O cdigo-objeto o cdigo produzido pelo compilador. Ele se trata de uma forma intermediria similar a linguagem de mquina do computador. O cdigo-objeto, apesar de estar representado em binrio, no auto-contido, ou seja, no executvel diretamente pelos processadores. A principal razo disto que o cdigo-objeto caracterizado normalmente por referncias a partes de programa que no esto necessariamente definidas no mesmo arquivo que gerou o aquele arquivo objeto. Estas outras partes do cdigo do programa podem ter sido geradas a partir de outros arquivos de cdigo-fonte concebidos pelo mesmo programador ou existirem sob a forma de arquivos de bibliotecas de sub-rotinas. O processo de traduo do cdigo fonte em cdigo objeto compreende trs atividades: anlise lxica, anlise sinttica e gerao de cdigo, que so processadas pelos mdulos do tradutor conhecidos como analisador lxico, sinttico e gerador de cdigo. Anlise lxica o processo de reconhecer quais cadeias de smbolos do programa-fonte representam entidades indivisveis. Por exemplo, os trs smbolos 153 no devem ser interpretados como 1, seguido por 5, seguido por 3, mas so reconhecidos como um valor numrico apenas. Do mesmo modo, as palavras que aparecem no programa, embora compostas de caracteres individuas, devem ser interpretadas cada qual como uma unidade inseparvel. A maioria dos seres humanos executa a atividade de anlise lxica com um esforo consciente pequeno. Quando solicitados a ler em voz alta, pronunciamos palavras completas, em vez de caracteres individuais. Dado que o analisador lxico identifica um grupo de smbolos que representam uma nica entidade, ele a classifica como sendo ou um valor numrico, ou uma palavra, ou um operador aritmtico, e assim por diante, e gera um padro de bits conhecido como tomo (token), indicativo da classe do elemento. Esses tomos so os dados de entrada do analisador sinttico. Anlise sinttica o processo de identificao da estrutura gramatical do programa, e de reconhecimento do papel de cada um dos seus componentes. O processo de anlise sinttica feito com base em um conjunto de regras sintticas, que definem a sintaxe da linguagem de programao. Uma forma de expressar tais regras travs de diagramas de sintaxe, representaes grficas da estrutura gramatical de um programa. A Figura 5 apresenta um diagrama de sintaxe do comando if-then-else existente em muitas linguagens de programao. Este diagrama indica que uma estrutura if-then-else comea com a palavra if, seguida de uma Expresso Booleana, seguida pela palavra then e, finalmente, por um Comando. Esta combinao pode ser ou no seguida por uma palavra else e outro Comando. Note que os termos de fato contidos num comando if-then-else so representados em uma elipse, enquanto os que exigem explicao adicional, tal como Expresso Booleana e Comando, esto em retngulo. Termos que exigem explicao adicional (aqueles nos retngulos) so chamados no-terminais; aqueles contidos nas elipses so os terminais. Na descrio completa da sintaxe de uma linguagem, os no terminais so descritos por meio de diagramas adicionais.
if
Expresso Booleana
then
Comando
else
Comando
Figura 5. Diagrama de sintaxe do comando if-then-else A Figura 6 apresenta um diagrama de sintaxe que descreve a sintaxe de uma estrutura chamada Expresso. Ela formada por um Termo que pode aparecer isolado ou ento seguido pelos smbolos +, e de outra Expresso. O segundo diagrama descreve um Termo como sendo, na sua forma mais simples, uma varivel, e em sua forma mais
10
Varivel
Figura 6. Diagrama de sintaxe descrevendo a estrutura de uma expresso algbrica simples Pode-se representar, de forma grfica, a maneira pela qual uma cadeia adere sintaxe descrita por um conjunto de diagramas de sintaxe, atravs de uma rvore sinttica, como ilustrado na Figura 7, que apresenta uma rvore sinttica para a cadeia x+y*z com base no diagrama da figura acima. Note-se que a raiz da rvore o no-terminal Expresso, e que cada nvel mostra a maneira como os no-terminais daquele nvel vo sendo decompostos, at que finalmente sejam obtidos os smbolos da prpria cadeia analisada.
Expresso
Termo
Expresso
Termo
Termo
Expresso
Termo
Figura 7. rvore sinttica da cadeia x+y*z O processo de anlise sinttica de um programa consiste, essencialmente, em construir uma rvore de sintaxe para o programa-fonte. Por isso, as regras de sintaxe que descrevem a estrutura gramatical de um programa no devem propiciar que duas ou mais rvores de sintaxe distintas possam ser construdas para a mesma cadeia, dado que isto levaria a ambigidades no analisador sinttico. Esta falha pode ser bastante sutil. Com efeito, a prpria regra da Figura 8 contm esse defeito, pois aceita as duas rvores de sintaxe mostradas na figura para o nico comando seguinte:
11
if
Expresso booleana
then
Comando
else
Comando
S2
B2
S1
Comando
if
Expresso booleana
then
Comando
B2
S1
S2
Figura 8. Duas rvores de sintaxe distintas para o comando if B1 then B2 then S1 else S2 Note-se que as duas interpretao so significativamente diferentes. A primeira implica que o comando S2 ser executado se B1 for falso, enquanto a segunda implica que S2 s ser executado se B1 for verdadeiro e B2, falso. As definies de sintaxe para linguagens formais de programao so projetadas para evitar tais ambigidades. Em muitas linguagens, evita-se tais problemas usando chaves, ou ento Begin-End. Em particular, escreveramos:
If B1 then Begin End else S2 if B2 then S1
e
If B1 then Begin End;
if B2 then S1 else S2
para distinguir as duas possibilidades. medida que um analisador sinttico recebe tomos do analisador lxico, ele vai analisando os comandos e ignorando os comentrios. As informaes extradas das declaraes so tabeladas em uma estrutura conhecida como tabela de smbolos. Dessa forma, a tabela de smbolos guarda informaes sobre as variveis declaradas, os tipos
12
de dados e as estruturas de dados associadas a tais variveis. O analisador sinttico, ento, utiliza como base estas informaes ao analisar comandos tais como:
Total:=Custo+Imposto;
De fato, para determinar o significado do smbolo +, o analisador sinttico dever saber qual o tipo de dados associados s variveis Custo e Imposto. Se Custo for do tipo real e Imposto for do tipo caractere, esto somar Custo e Imposto faz pouco sentido e dever ser considerado um erro. Se Custo e Imposto forem ambos de tipo inteiro ento o analisador sinttico solicitar ao gerador de cdigo a construo de uma instruo em linguagem de mquina que utilize o cdigo de operao correspondente adio de inteiros. Se, porm, ambos forem de tipo real, o analisador solicitar o uso do cdigo de operao correspondente adio de valores em ponto flutuante. O comando acima tambm tem sentido quando os dados envolvidos no forem do mesmo tipo. Por exemplo, se Custo for inteiro e Imposto for real, o conceito de adio ainda ser aplicvel. Neste caso, o analisador sinttico poder decidir que o gerador de cdigo construa as instrues necessrias para converter um dado de um tipo para outro, antes de executar a adio. Tal converso implcita entre tipos denominada coero. As operaes de coero so mal-vistas por muitos projetistas de linguagens. Eles argumentam que a necessidade da coero um sintoma de falha no projeto do programa, no devendo, pois, ser contornada pelo analisador sinttico. O resultado que a maioria das linguagens modernas so fortemente tipadas, o que significa que todas as aes solicitadas por um programa devem envolver dados de tipos compatveis, sem coero. Analisadores sintticos para estas linguagens consideram como erros quaisquer incompatibilidade de tipo. A gerao de cdigo, ao f inal do processo de traduo, o processo de construo das instrues, em linguagem de mquina. Este processo envolve numerosos problemas, um dos quais o da construo de um cdigo eficiente. Por exemplo, consideremos a tarefa de traduzir a seguinte seqncia de dois comandos:
x:=y+x; w:=x+z;
Estes comandos poderiam ser traduzidos como comandos independentes. Todavia, esta interpretao tende a no produzir um cdigo eficiente. O gerador de cdigo deve ser construdo de tal forma que seja capaz de identificar que, ao ser completado o primeiro comando, os valores de x e de z j se encontram em registradores de propsito geral do processador, no necessitando, pois, serem carregados a partir da memria para o clculo do valor de w. Melhorias como essa constituem a otimizao de cdigo, cuja realizao constitui importante tarefa do gerador de cdigo. Note-se que as anlises lxica e sinttica e a gerao de cdigo no so efetuadas em ordem estritamente seqencial, mas de forma intercalada. O analisador lxico comea identificando o primeiro tomo e fornecendo-o ao analisador sinttico. J com esta pista sobre a estrutura que vem a seguir, o analisador sinttico solicita ao analisador lxico o prximo tomo. medida que o analisador sinttico reconhece sentenas ou comandos completos, vai ativando o gerador de cdigo, para que este possa produzir as correspondentes instrues de mquina.
13
Cdigo Fonte
Cdigo Fonte
Cdigo Fonte
Cdigo Fonte
Cdigo Objeto
Cdigo Objeto
Cdigo Objeto
Cdigo Objeto
Biblioteca
Programa executvel
contedos dos registros internos do processador; n alterao em tempo de execuo de contedos de memria ou de variveis ou de instrues do programa; n etc...
14
de procedimento usada para invocar o procedimento, podendo ser passado alguns parmetros (por exemplo, o nmero cuja raiz quadrada deve ser calculada). Aps a seqncia ser executada, o controle retorna justo aps o ponto de chamada do procedimento. Introduzindo parmetros to bem quanto procedimentos de procedimentos (sub-procedimentos), programas podem ser escritos mais em mais estruturados e livres de erro. Por exemplo, se um procedimento correto, toda vez que ele usado ele produz um resultado correto. Conseqentemente, no caso de erros voc pode direcionar sua busca queles lugares que no so livres de erros.
15
linguagem de mquina do processador. Portanto, as instrues definidas pelo programador usando uma linguagem de alto nvel sero traduzidas para as instruo na linguagens de mquina. Existe outra forma de execuo de um programa, que a sua interpretao por um outro programa, chamado interpretador. So as ditas linguagens interpretadas. A linguagem Java a linguagem de programao interpretada mais conhecida atualmente. Ela interpretada por uma mquina virtual chamada JVM (Java Virtual Machine). Um interpretador um programa que executa as instrues escritas em linguagem de alto nvel. Geralmente, o interpretador translada as instrues de alto nvel em uma forma intermediria, que executada. Ao contrrio do compilador que traduz as instrues de alto nvel em uma linguagem de mquina.
mquina virtual, sem se preocupar com o hardware e software dando suporte ao sistema.
n Segurana: como a mquina virtual no tem contato com o sistema operacional,
existem poucas possibilidade de um programa interpretado danifique outros arquivos ou aplicaes. Esta vantagem trs consigo uma limitao: os programas executando em uma mquina virtual no pode tomar vantagem das funcionalidades do sistema operacional
4.6.3 Java
Java uma das linguagens interpretadas mais conhecidas no momento. Ela uma linguagem de programao de alto nvel, desenvolvida pela Syn Microsystems. Ela uma linguagem orientada a objetos similar ao C++, mas simplificada para eliminar caractersticas que causam erros comuns de programao. Cdigos fontes de Java (arquivos com a extenso .java) so traduzidos na forma de um cdigo intermedirio chamado bytecode (arquivos com a extenso .class), que podem ser executados por um interpretador Java. O bytecode pode ser transferido atravs de uma rede e executada por uma Mquina Virtual Java (JVM).
16
Existem vrias implementaes de JVMs para diversos sistemas operacionais, incluindo UNIX, Macintosh OS e Windows. Alm disso, o bytecode pode ser convertido diretamente em instrues de linguagem de mquina, usando o compilador JIT (Just-Intime Compiler). Java uma linguagem de programao de propsito geral com um nmero de caractersticas que fazer ela muito interessante para ser usada na World Wide Web. Aplicaes Java menores, chamadas applets, podem ser baixadas de um servidor Web e executar no seu navegador por um navegador compatvel com o Java, tal como o Netscape Navigator ou o Microsoft Internet Explorer.