Prévia do material em texto
Java Programming Language
Linguagem de Programação JAVA 1
Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA
The Java Programming Language was developed by Sun
Microsystems in 1991.
Desenvolvida por engenheiros da Sun, 1991-1995, para ser
usada em dispositivos eletrônicos (geladeiras, tv’s, fornos,
videocassetes etc)
Java originou-se como parte de um projeto de pesquisa que visava a criação de um
que atendesse a uma extensa variedade de maquinário de redes e sistemas embutido
O Projeto Green tinha como missão desenvolver aplicativos complexos e avançados
pequenos dispositivos eletrônicos.
Esses dispositivos são sistemas portáveis, distribuídos, confiáveis e incorporado
dirigidos aos consumidores em geral.
O objetivo inicial era desenvolver um ambiente operacional pequeno, confiável, por
que operasse em tempo real.
A primeira tentativa da Sun com esse aplicativos deveria ter sido implementada em C
Em consequência de uma lista cada vez maior de problemas com o C++, principalm
de memória e vários problemas de herança, a Sun enterrou o C++ e implementou um
o Java.
As decisões de arquitetura e desenho da linguagem foram inspiradas em lingua
SmallTalk, Objective C, Modula-3, etc.. Muitas das características desta linguagem n
novas.
Java é uma feliz união de tecnologias testadas por vários centros de pesquisa e d
software.
A sintaxe tem suas raízes claramente definidas em C e C++.
Java foi projetada para atender a vários requisitos desejáveis em uma LP, co
confiabilidade, devido ao seu gerenciamento de memória, o que resulta em um ga
redigibilidade, por eliminar alguns conceitos de C e C++ que dificultavam nesse
código entre outros.
O Java é ao mesmo tempo um ambiente e uma poderosa linguagem de programação
JAVA Programming Language
software avançado
s.
para aplicação em
s em tempo real,
tável, distribuído e
++.
ente vazamentos
a nova linguagem,
gens como Eiffel,
ão são totalmente
esenvolvimento de
mo por exemplo,
nho de eficiência;
sentido, reuso de
.
Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 2
Prof. Newton Gomes
Trata-se de mais uma representante da nova geração de linguagens orientadas a objetos e foi
projetado para resolver os problemas da área de programação cliente-servidor.
Em 1993, a Sun noticiou que a Internet estava ganhando popularidade e começou a desenvolver Java
para rodar nos browsers da Web.
Hoje Java é a linguagem que mais se fortalece com a internet, pois é uma linguagem simples, orientada
a objetos, distribuída, interpretada, robusta, segura, independente de arquitetura, portável, de alto
desempenho multitarefa e dinâmica.
Java poderia ser descrita como uma linguagem com toda a potencialidade do C++, porém sem a
complexidade dos ponteiros que nela existem, mais simples e com maior segurança.
A meta de Java é uma linguagem que seja completamente portável, rodando corretamente em cada
computador que a descarregar.
A maioria das linguagens possui algumas ambigüidades em suas especificações. Por exemplo, um
compilador C++ pode implementar um tipo de dado int como sendo um número binário de 16, 32 ou 64
bits, dependendo da máquina anfitriã. Esta ambigüidade causa problemas de portabilidade entre os
software, uma vez que o Java define um int como sendo de 32 bits em todas as plataformas.
Assim com a especificação da linguagem completa, outras fontes de ambigüidades encontradas em
tipos de dados, avaliação da expressão e sintaxe foram resolvidas.
Os primeiros objetivos alcançados com desenvolvimento desta nova linguagem foram:
Criação de uma linguagem orientada a objetos;
Velocidade no desenvolvimento - eliminando o ciclo de compilar-linkar-carregar-testar;
Portabilidade do Código - com um interpretador que especifica a forma do nível do sistema operacional,
podendo rodar em qualquer tipo de sistema operacional;
Não tem acesso a ponteiros do sistema operacional;
Fornece dinamismo durante a manutenção de programas;
Portabilidade de Java
Quando se utiliza a maioria das linguagens de programação, precisa-se decidir qual o processador e
qual o sistema operacional que usará para processar o programa, pois sempre incluem chamadas de
funções específicas para uma biblioteca associada ao sistema operacional da plataforma específica.
Quando o programa está pronto para ser testado, você envia-se o código-fonte para um compilador que
o transforma em um conjunto de instruções nativas para qualquer processador que a sua máquina
utiliza.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 3
Prof. Newton Gomes
Neste caso o “produto final” é um arquivo executável de instruções binárias nativas.
Vejamos a seguir por que Java é então escolhida por grande parte dos programadores de redes e
sistemas de comunicação.
Imagine o cenário abaixo representando uma rede de comunicação com diferentes computadores,
plataformas e sistemas operacionais:
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 4
Prof. Newton Gomes
Imagine ainda que todos estes computadores estão em uma mesma sala, conectados por uma LAN –
Local Area Network, ou então localizados em diferentes cidades, ou mesmo em mais de um continente
do mundo, conectados via Internet.
O ponto principal é que todos os computadores estão executando diferentes Sistemas Operacionais
(AIX, Windows NT, etc.) e em diferentes plataformas de hardware (PowerPC, Pentium II, etc.)
Suponha agora que se deseja escrever um programa na estação IBM e que o mesmo programa possa
ser executado em todos os computadores conectados na rede.
Para resolver este problema, a linguagem Java provê em sua implementação um compilador e um
sistema de execução chamado Java Virtual Machine (JVM) ou Máquina Virtual Java para cada sistema
(computador).
O compilador Java (javac) traduz o código fonte para uma linguagem intermediária chamada bytecodes
ou código de bytes.
E então a JVM converte o bytecode compilado para a linguagem de máquina própria do sistema e
então executa o resultado. Vejamos a seguir.
Como mostrado, como origem tem-se três arquivos na estação IBM:
O código fontes em Java chamado Hi.Java
O compilador javac
O bytecode chamado Hi.class
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 5
Prof. Newton Gomes
Com Java é então diferente da maioria das linguagens, uma vez que o arquivo de classe contém
bytecodes para a JVM, tendo assim que executar uma implementação da JVM para processar o
programa.
O Software Development Kit (SDK) da Sun inclui um interpretador chamado simplesmente java que
implementa a JVM.
O compilador Java não gera instruções nativas. Ao invés disso, escreve bytecodes para uma máquina
que na verdade não existe, a Máquina Virtual Java – Java Virtual Machine (JVM).
O compilador Java gera arquivos de bytecodes – instruções para a Java Virtual Machine.
Assim tem-se implementação da JVM para quase todo tipo de computador e sistema operacional e
assim esses arquivos de bytecodes são compatíveis com quaisquer aplicações em outras plataformas.
JVM é de fácil portabilidade de uma máquina para outra, por isso você pode esperar que qualquer
processador novo ou sistema operacional venham a ter brevemente uma implementação de JVM.
A arquitetura do Java não é nem radical nem especialmente nova.
Os aplicativos em Java são compilados em um código de bytes independente de arquitetura.
Esse código de bytes pode então ser executado em qualquer plataforma que suporte um interpretador
Java.
O Java requer somente uma fonte e um binário e, mesmo assim, é capaz de funcionar em diversas
plataformas, o que faz dele um sonhode todos os que realizam manutenção em programas.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 6
Prof. Newton Gomes
Muitos Web Browsers (Netscape’s Communicator, Microsoft’s Internet Explorer, etc.) trazem embutidos
uma implementação da JVM, e assim quando se carrega uma página que inclui código de instruções
em Java, o browser habilita automaticamente a JVM, e após carregado o código, executa-o.
O sistema de implementação da JVM é um intrprtador, e isto significa qu a tradução e xecução das
instruçõs do bytecode são realizadas ao memo tempo.
Este fato representa a possibilidade de uma execução mais lenta que um código executável nativo.
A linguagem Java também provê uma forma de compilação completa para código nativo de cada
sistema independente, gerando uma execução mais rápida. Estes compiladores são chamados de
“Just-In-Time” (JIT). Alguns web browsers podem trazer embutidos também estes compiladores JIT.
Os programas Java vêm na forma de applets que são carregados em um browser Web capacitado para
Java.
O termo applet vem da marca <applet> que aparece em um documento HTML, que diz ao browser para
descarregar o código Java apropriado.
Os arquivos fonte do Java são compilados em arquivos .CLASS que possuem código portável.
Máquinas cliente, como browsers Web, rodam o código Java usando um interpretador ou emulador de
máquina virtual.
O lado do cliente deve ficar ainda mais interessante com a utilização de um compilador just-in-time, que
irá converter o código Java verificado em código nativo enquanto a máquina carrega. Isso irá aumentar
bastante o desempenho do applet.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 7
Prof. Newton Gomes
O que torna Java diferente de outras linguagens ?
Independência de plataforma
Portabilidade total (ideal para internet)
Sintaxe similar a C++
Completamente Orientada a Objetos
Possui gerenciamento automático de memória
Possui arrays verdadeiros e não apresenta aritmética de ponteiros
Não possui herança múltipla mas a substitui pela nova noção de interface
Possibilidade de criação de páginas Web interativas
Processa concomitantemente com outras aplicações, com as capacidades de cliente/servidor
Versões: 1, 1.02, 1.1 e 1.2 (ou Java 2), 1.3
Características da linguagem Java
A documentação de Java fornecida pela Sun utiliza algumas palavras para definir a linguagem.
Java é uma linguagem definida como:
Simples
Orientada a objetos
Robusta
Segura
Arquitetura neutra
Portável
Interpretada
Alta performance
Dinâmica
Suporte a concorrência
Suporte a ambiente distribuído
O Java é então um C++ com as seguintes diferenças básicas:
Não tem ponteiros, que além de serem difíceis de usar poderiam comprometer seriamente a segurança
Gerencia memória automaticamente ("garbage collection")
Só tem herança simples
Não permite sobrecarga de operadores e conversões automáticas
Tem um tipo lógico
Possui um conceito de "módulo" bastante forte
Inclui rotinas para interagir com os protocolos da Internet, como TCP/IP, HTTP e FTP
Suporta multihread (múltiplas "linhas" de execução em um mesmo aplicativo).
Java é case sensitive
O código Java é um conjunto de classes
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 8
Prof. Newton Gomes
1) Simples
Uma característica marcante de Java é a simplicidade da linguagem, que pode ser programada sem um
treinamento intenso, ou larga experiência anterior.
Java se esforça por não ter recursos surpreendentes - os métodos para realizar qualquer tarefa são
claros e em número reduzido.
Java foi criada tão unida quanto possível a C++ para se criar sistemas mais compreensíveis.
Um dos principais objetivos do projeto do Java foi criar uma linguagem o mais próxima possível do C++,
para garantir sua rápida aceitação no mundo do desenvolvimento OO.
Java omite muitos termos pouco usados e operações confusas em C++ que trazem mais complicações
que benefícios.
A versão Java é na verdade uma versão mais limpa de C++. Nela não há ponteiros aritméticos,
estruturas, uniões, sobrecarga de operadores, classes básicas virtuais e etc.
Ao mesmo tempo que, é uma linguagem simples, existem aspectos sutis na construção de programas
para o mundo real, dada a atual situação da biblioteca de classes e da não muito avançada
programação visual.
Com o tempo os recursos tendem a aumentar mais e mais com a criação de bibliotecas e
desenvolvimento de ambientes.
Outro objetivo do seu projeto foi eliminar os recursos obscuros e danosos do C++, que fugiam à
compreensão e aumentavam a confusão que poderia ocorrer durante as fases de desenvolvimento,
implementação e manutenção do software.
O Java é simples porque é pequeno.
O interpretador básico do Java ocupa aproximadamente 40k de RAM, excluindo-se o suporte a
multitarefa e as bibliotecas padrão, que ocupam outros 175k.
Mesmo a memória combinada de todos esses elementos é insignificante, se comparada a outras
linguagens e ambientes de programação.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 9
Prof. Newton Gomes
2) Orientada a Objeto
A orientação a objeto é uma técnica que enfoca o modelo do dado (Objeto) e sua interface.
Durante a análise orientada a objeto, você é encorajado a identificar o domínio da aplicação como um
conjunto de classes.
O Java é um membro do paradigma orientado a objetos (OO) das linguagens de programação.
Tudo são objetos (exceção tipos primitivos)
As linguagens que aceitam este paradigma, como Java e C++, seguem a mesma filosofia básica, mas
diferem em sintaxe e estilo.
As linguagens orientadas a objetos oferecem muitas vantagens sobre as linguagens procedurais
tradicionais.
Como os objetos encapsulam dados e funções relacionados em unidades coesas, é fácil localizar
dependências de dados, isolar efeitos de alterações e realizar outras atividades de manutenção, e
talvez o mais importante, as linguagens OO facilitam a reutilização.
As facilidades de orientação objeto de Java são essencialmente as de C++. As operações de OO de
Java são comparáveis com as de C++.
A maior diferença entre Java e C++ está em múltipla herança, pois Java parece ter encontrado uma
solução melhor.
Os programadores podem reutilizar código, utilizar bibliotecas de terceiros com proteção e
encapsulamento, e adicionar funcionalidade às já existentes.
Os projetistas de Java, na Sun Microsystems, eram programadores de C++. Eles entenderam as
características de C++ e o que havia de melhor na linguagem.
Eles também entenderam as limitações dessa linguagem. Ao projetar Java, eles copiaram a sintaxe de
C++ e reutilizaram os melhores elementos do design de C++, inclusive tornando mais fácil a codificação
dos design dos códigos de orientação a objetos.
A portabilidade é uma das características que se inclui nos objetivos almejados por uma linguagem
orientada a objetos.
Em Java ela foi obtida de maneira inovadora com relação ao grupo atual de linguagens orientadas a
objetos.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 10
Prof. Newton Gomes
Java suporta herança, mas não herança múltipla. A ausência de herança múltipla pode ser
compensada pelo uso de herança e interfaces, onde uma classe herda o comportamento de sua
superclasse além de oferecer uma implementação para uma ou mais interfaces.
Java permite a criação de classes abstratas. Outra característica importante em linguagens orientadas
a objetos é a segurança.
3) Robusta
Quanto mais robusto um aplicativo, mais confiável ele será. Isso é desejável tanto paraos
desenvolvedores de software quanto aos consumidores.
O projeto de Java visou a construção de uma linguagem para escrita de programas confiáveis.
Java enfatiza em muito a checagem em tempo de compilação de possíveis problemas, e em tempo de
execução realiza a checagem dinâmica, e eliminação de situações que podem gerar erros.
A maior diferença entre C/C++ e Java é que Java por definição da própria linguagem elimina uma gama
de erros que geralmente surgem em C/C++ quando utilizamos ponteiros.
Java não usa ponteiros, usa referências
Java fornece a funcionalidade de ponteiros sem que seja necessário criar estruturas para tal.
Estas estruturas eliminam a possibilidade de sobreposição de dados na memória corrompendo dados.
Java é designada para operar em ambientes onde segurança é extremamente importante, como o
ambiente de rede.
A maioria das linguagens OO, como o C ++ e Java, possuem tipos bastante fortes. Isso significa que a
maior parte da verificação de tipos de dados é realizada em tempo de compilação, e não em tempo de
execução.
Java é fortemente tipada
Bom gerenciamento de memória - garbagge collection
Tratamento de exceções integrado e orientado à objeto
A maioria dos erros pode ser detectada em tempo de compilação
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 11
Prof. Newton Gomes
4) Segura
Como o Java foi criado para ambientes de rede, os recursos de segurança receberam muita atenção.
A presença de coleta automática de lixo, evita erros comuns que os programadores cometem quando
são obrigados a gerenciar diretamente a memória (C , C++, Pascal ).
A eliminação do uso de ponteiros, em favor do uso de vetores, objetos e outras estruturas substitutivas
traz benefícios em termos de segurança.
O programador é proibido de obter acesso a memória que não pertence ao seu programa, além de não
ter chances de cometer erros comuns tais como “reference aliasing” e uso indevido de aritmética de
ponteiros. Estas medidas são particularmente úteis quando pensarmos em aplicações comerciais
desenvolvidas para a internet.
Ser “strongly typed” também é uma vantagem em termos de segurança, que está aliada a eliminação
de conversões implícitas de tipos de C++.
A presença de mecanismos de tratamento de exceções torna as aplicações mais robustas, não
permitindo que elas abortem, mesmo quando rodando sob condições anormais. O tratamento de
exceções será útil na segunda parte para modelar situações tais como falhas de transmissão e
formatos incompatíveis de arquivos.
Java permite a construção de sistemas livres de vírus
A maioria das maneiras óbvias de “invadir” um sistema não podem ser escritas em Java.
Java não pode ter acesso a rotinas globais nem a recursos arbitrários do sistema.
Se você executar um binário transferido por download da rede, o mesmo poderá estar infectado por
vírus. Os aplicativos Java apresentam garantia de resistência contra vírus e de que não são infectados
por vírus, pois não são capazes de acessar heaps, stacks ou memória do sistema.
No Java, a autenticação do usuário é implementada com um método de chave pública de criptografia.
Isso impede de maneira eficaz que hackers e crakers examinem informações protegidas como nomes e
senhas de contas.
Há duas linhas de defesa para evitar que programas como cavalos de Tróia e vírus infectem outras
máquinas.
Primeiro, você pode autorizar o desenvolvedor a “assinar” o programa com uma assinatura que é
adicionada depois que o programador termina o programa.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 12
Prof. Newton Gomes
Segundo, você pode projetar a linguagem proibindo certas operações, como ler ou escrever no disco
rígido local. Embora estas operações possam ser úteis a alguns programas, elas também são
exploradas por programadores maliciosos.
Se você tem um programa que pode fazer qualquer coisa na máquina do usuário final, você tem uma
vulnerabilidade séria.
Assim, o máximo que uma assinatura eletrônica pode garantir é que, se algo der errado e você puder
determinar a origem do problema, isto é, qual o programa causador do problema, você poderá ter
alguém a quem culpar.
Para garantir a segurança, os designers da Java implementaram um mecanismo chamado sandbox. O
sandbox assegura que aquele não desejado (e possivelmente malicioso) applet tenha um limitado
grupo de operações na máquina do usuário final.
Os arquivos do Java são compilados e são convertidos de arquivos texto para um formato que contém
blocos independentes de bytecodes (Código Intermediário).
Em tempo de execução estes bytecodes são carregados, são verificados através do Byte Code Verifier
(uma espécie de segurança), passam asseguir para o interpretador e são executados.
Caso este código seja acionado diversas vezes, existe um passo chamado JIT Code Generator, que
elimina o utilização por demasia do tráfego da rede.
Runtime
Byte Code
Verifier
Class
T1.class
Javac T1.java
hardware
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 13
Prof. Newton Gomes
5) Arquitetura Neutra
O Java é independente de arquitetura.
A neutralidade do Java em relação à arquitetura é fascinante, mas não se trata de um conceito novo.
Derivado da natureza distribuída de cliente/servidor, um importante recurso de projeto do Java é o
suporte a cliente e servidores em configurações heterogêneas de rede.
O método escolhido para atingir esse objetivo foi uma representação binária de arquitetura neutra para
os programas em Java.
Java é projetada para suportar aplicações que serão distribuídas para os diversos ambientes de
trabalho em rede.
Nas várias plataformas de hardware, aplicações devem executar sobre um universo de sistemas
operacionais e operar interagindo com outras linguagens de programação.
Isto é possível graças à arquitetura idealizada, onde o compilador Java gera um código binário para
uma JVM (Máquina Virtual Java), uma arquitetura neutra e portável.
A natureza "interpretada" de Java resolve ambos os problemas de distribuição binária e de versão.
6) Portável
A característica de neutralidade da arquitetura Java é o grande motivo pelo qual os programas em Java
são portáveis.
Outro aspecto da portabilidade envolve a estrutura ou os tipos de dados inerentes da linguagem, como
inteiro, string e ponto flutuante.
Diferente de C/C++, não há aspectos de implementação dependentes da especificação.
O tamanho dos tipos primitivos são especificados, bem como os seus comportamentos aritméticos. Um
inteiro tem sempre 32 bits, em C/C++ tem o tamanho da palavra da máquina.
O “bytecode” gerado pelo compilador para a sua aplicação específica pode ser transportado entre
plataformas distintas que suportam Java (Solaris 2.3, Windows-NT, Windows-95, Mac/Os etc)
Não é necessário recompilar um programa para que ele rode numa máquina e sistema diferente, ao
contrário do que acontece por exemplo com programas escritos em C e outras linguagens.
Esta portabilidade é importante para a criação de aplicações para a heterogênea internet.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 14
Prof. Newton Gomes
O próprio compilador Java é escrito em Java, de modo que ele é portável para qualquer sistema que
possua o interpretador de “bytecodes”. Um exemplo de programa escrito em Java é o browser Hotjava.
Não existe aspectos dependentes da implementação (como tipos e interfaces)
7) Implementação Híbrida – Compilada e Interpretada
Os programas do Java são compilados em formato binário de código de bytes (bytecodes).E então são interpretados por um ambiente de execução do Java específico da plataforma desejada.
Portanto é ao mesmo tempo compilado e interpretado.
O interpretador Java pode executar o código binário Java diretamente em alguma máquina para o qual
ele tenha sido portado.
Em um ambiente interpretado tal como o sistema Java, a fase de linkagem de um programa é simples,
incremental e leve.
O processo de desenvolvimento pode ser muito mais rápido.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 15
Prof. Newton Gomes
Esta é uma vantagem enquanto desenvolvemos uma aplicação, mas ela é claramente mais lenta que
um código compilado.
Um programa em Java é compilado para o chamado “bytecode”, que é próximo às instruções de
máquina, mas não de uma máquina real.
O “bytecode” é um código de uma máquina virtual idealizada pelos criadores da linguagem. Por isso
Java pode ser mais rápida do que se fosse simplesmente interpretada.
Ambiente (windows, Unix, Solaris, Macintosh)
Máquina Java
Aplicação Java (bytecodes)
8) Alta Performance
Enquanto a performance do código binário interpretado é geralmente adequado, há situações onde
maior performance é requerida. O código binário pode ser traduzido em tempo de execução para outro
código de máquina para ser executado em uma aplicação de uma CPU particular.
Como Java foi criada para ser usada em computadores pequenos, ela exige pouco espaço, pouca
memória.
Java é muito mais eficiente que grande parte das linguagens de “scripting” existentes, embora seja
cerca de 20 vezes mais lenta que C, o que não é um marco definitivo.
Com a evolução da linguagem, serão criados geradores de “bytecodes” cada vez mais otimizados que
trarão as marcas de performance da linguagem mais próximas das de C++ e C.
Além disso um dia Java permitirá a possibilidade de gerar código executável de uma particular
arquitetura “on the fly”, tudo a partir do “bytecode”.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 16
Prof. Newton Gomes
9) Dinâmica
Java é mais dinâmica que C/C++.
O projeto dinâmico permite que os programas Java se adaptem aos ambientes computacionais
mutantes.
Em Java descobrir o tipo de uma instância em tempo de execução é algo extremamente simples.
Por exemplo, a maior parte dos desenvolvimentos típicos em C++ se baseia muito em bibliotecas de
classe que podem ser de propriedade e desenvolvida por terceiros. Muitas bibliotecas de terceiros,
como as distribuídas com sistemas operacionais ou sistemas de janelas, são linkeditadas
dinamicamente e vendidas ou distribuídas separadamente dos aplicativos que delas dependam.
Quando essas bibliotecas são atualizadas, os aplicativos que dependerem dela poderão apresentar
problemas, até que sejam recompilados e redistribuídos. Isso adiciona mais um custo à manutenção do
software.
O Java evita esse problema atrasando a união dos módulos. Isso permite que os programadores tirem
total proveito da orientação a objetos.
É possível adicionar novos métodos e variáveis de instâncias em classes de bibliotecas, sem causar
problemas aos programas, aplicativos ou clientes já existentes.
10) Suporte a concorrência (Threads)
Concorrência é a habilidade para um programa fazer mais de uma coisa por vez.
Os benefícios de multiprocessamento são melhor sensibilidade interativa e comportamento em tempo
real.
Java suporta multiprocessamento no nível de linguagem com a adição de sofisticada sincronização.
A linguagem permite a criação de maneira fácil, de vários “threads” de execução.
Este tópico será útil quando você estudar animações, e é particularmente poderoso nos ambientes em
que aplicações Java são suportadas, ambientes estes que geralmente podem mapear os threads da
linguagem em processamento paralelo real.
A solução da Sun foi integrar os threads à linguagem.
Por que Java é orientada a objeto, restringe o modo como uma aplicação pode comunicar-se com
outra, threads de Java possuem os mesmos processos de segurança, com algum overhead de
memória.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 17
Prof. Newton Gomes
O Java é multitarefa.
Os objetos binários de códigos de bytes do Java são formados por sequências de execução múltiplas e
simultâneas. Essas sequências são conhecidas como contextos de execução ou processos leves. As
liguagens C/C++ são membros de um paradigma de execução em sequência única, por não oferecerem
suporte a sequências no nível de linguagem.
O Java, no entanto, oferece suporte no nível de linguagem para multitarefa, resultando em uma
abordagem de programação mais poderosa e de múltiplas facetas.
11) Suporte a ambiente distribuído
Java fornece facilidades para programação com sockets, remote method call, tcp-ip, etc.
Distribuição de informações para compartilhamento e trabalho conjunto, com a distribuição de carga de
trabalho do procesamento, é uma característica essencial dos aplicativos cliente/servidor.
Java possui uma biblioteca extensa de procedimentos TCP/IP incluída nos códigos-fonte e de
distribuição binária do Java. Isso facilita aos programadores o acesso remoto às informações, usando
protocolos como HTTP e FTP.
Aplicações Java podem abrir e acessar objetos através da rede via URL’s com a mesma facilidade com
que acessa o sistema de arquivos local.
Garbage Collection (Coleta Automática de Lixo)
O Java não segura áreas de memória que não estão sendo utilizadas, isto porque ele tem uma
alocação dinâmica de memória em tempo de execução.
No C e C++ (e em outras linguagens) o programa desenvolvido é responsável pela alocação e
desalocação da memória.
Durante o ciclo de execução do programa o Java verifica se as variáveis de memória estão sendo
utilizadas, caso não estejam o Java libera automaticamente esta área que não esta sendo utilizada.
A desalocação do objeto é feita pela linguagem, (“automatic garbage collection”), você não precisa se
preocupar com ela.
O ambiente da linguagem executa um “thread” em baixa prioridade que libera de tempos em tempos os
espaços inutilizados de memória, tirando proveito por exemplo de eventuais pausas de iteração do
usuário com o programa.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 18
Prof. Newton Gomes
Ambiente de Desenvolvimento com JAVA
Para escrever em Java você precisa do editor, do compilador Java e do Java Runtime Environment.
O modo mais fácil para adquirir um compilador Java e um ambiente de processamento é carregar o Sun
Software Development Kit (SDK).
O SDK também inclui uma variedade de ferramentas para qualquer desenvolvedor de Java (você vai ter
que providenciar seu editor de texto).
O primeiro passo para escrever um programa em Java é adquirir uma cópia do Software Development
Kit (SDK) da Sun.
Embora seja possível escrever Java sem o SDK, não há nenhuma boa razão para fazer isso.
O SDK é grátis e executa na maioria das plataformas mais comuns. Outras companhias, como a IBM,
suprem Java para ambientes de desenvolvimento para uma variedade de computadores.
Bibliotecas básicas
JDK - Java Development Kit
http://java.sun.com
http://www.sun.com
Ambientes de desenvolvimento
Java Workshop - Sun
Jbuilder - Borland
Visual Café - Symantec
Visual Age - IBM
Power J - Powersoft
Visual J++ - Microsoft
A Sun desenvolveu Java para executar em qualquer máquina.
Uma cópia típica do instalador do SDK, requer aproximadamente, 20MB.
Você também vai precisar de outros 30MB de espaço em disco para a documentação.
Quando você carrega o Java 2 Software Development kit (também conhecido como JDK), você acharáum conjunto de arquivos e ferramentas.
JAVA Programming Language Prof. Newton Gomes
http://java.sun.com/
http://www.sun.com/
Java Programming Language
Linguagem de Programação JAVA 19
Prof. Newton Gomes
Examine o diretório no qual você instalou o JDK. Você encontrará as seguintes seis pastas:
bin – as próprias ferramentas executáveis do JDK;
demo – uma variedade de applets, como também código de amostra para Java Foundation Classes
(JFC);
docs – documentação extensa em Java;
include – em C e C++, arquivos cabeçalho, utilizados para construir o ambiente de Java;
lib – bibliotecas e arquivos (em formatos .lib, .zip e .jar) usados pelo JDK;
src – a fonte das bibliotecas Java da Sun. Use esta fonte para aprender como as classes da Sun
trabalham.
A ferramenta mais importante no JDK é o javac, o compilador Java. O javac traduz o código-fonte com
as ilustrações para Java Virtual Machine (JVM).
Para a maior parte do seu trabalho com o JDK, você irá querer executar aplicações usando o iniciador
de aplicações Java, chamado java (em versões anteriores do JDK, chamado interpretador Java, porém,
o nome mais preciso é iniciador de aplicação).
Quando você digitar java MyClass, o iniciador examina a classe chamada MyClass para um método
especial chamado main ( ).
Programas de Java são conhecidos como aplicações, considerando que os programas que trabalham
com a ajuda de outro programa (tipicamente um browser da Web) são conhecidos como applets.
O que é uma APPLET ?
Applet é um programa especial escrito em Java adaptado para instalação e execução dentro de
páginas HTML. Estas páginas podem então ser visualizadas num browser.
O que é uma APLICAÇÃO ?
Aplicação é um programa mais geral escrito na linguagem Java. Não requer um browser para sua
execução. De fato, Java pode ser usada para criar todo tipo de aplicações que usualmente você
implementa com outras linguagens mais convencionais.
O que é o APPLETVIEWER?
Quem criou o Java espera que todos os browsers algum dia suportem as applets, o que não acontece
ainda. Para facilitar o desenvolvimento de aplicações, foi criado o Appletviewer que mostra apenas a
área onde é executada applet. Depois de testar bem seu código com o Appletviewer, você deve então
testá-lo com alguns browsers que suportem Java para ver o efeito final.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 20
Prof. Newton Gomes
O que é APPLET no WWW
As applets são disparadas quando se carrega uma página HTML. A seguir há um exemplo de código
HTML que dispara uma applet.
<HTML>
<HEAD>
<TITLE> Java </TITLE>
</HEAD>
<BODY>
<APPLET CODE=”nome.class” WIDTH=300 HEIGHT=100>
</APPLET>
</BODY>
</HTML>
Criando uma APLICAÇÃO
Para começar, criaremos uma simples aplicação em Java: a clássica “Hello World!”, o exemplo
que todos os livros de linguagens usam.
Como todas as linguagens de programação, o código fonte será criado em um editor de texto
ASCII puro. No Unix alguns exemplos são emacs, pico, vi e outros. No Windows, notepad ou dosedit
também servem.
A seguir, o código da aplicação “Hello World!” (arquivo: HelloWorld.java):
class HelloWorld {
public static void main (String args[]) {
System.out.println(“Hello World!”);
}
}
Criando uma APPLET
Criar uma applet é diferente de criar uma simples aplicação porque uma applet é executada e
visualizada dentro de uma página HTML. Como exemplo, novamente será implementada a clássica
“Hello World!”.
A seguir, o código da aplicação “Hello World!” (arquivo: HelloWorldApplet.java):
import java.awt.Graphics;
public class HelloWorldApplet extends java.applet.Applet {
public void paint (Graphics g) {
g.drawString (“Hello World!”,5,25);
}
}
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 21
Prof. Newton Gomes
Quem precisa de applets?
Por que alguém precisaria trocar o browser por applets? Muitos Web designers querem ir além
da simples exibição de conteúdos estéticos. Eles querem páginas dinâmicas que possam interagir com
o usuário. Freqüentemente, o melhor modo para adicionar conteúdo dinâmico é escrever um programa
em Hipertext Markup Language (HTML), que é usado para escrever páginas da Web.
Os browsers da Netscape e da Microsoft suportam scripts de linguagens como JavaScript. Essas
linguagens permitem adicionar funções a elementos de HTML, como botões, porém você não terá
controle completo sobre o desenho na interface do usuário. Você não pode usar essas linguagens de
script para conectar a máquina do cliente através de uma rede, assim você não pode escrever
verdadeiros programas de cliente-servidor. Às vezes você precisa de uma solução mais poderosa do
que essas linguagens de scripts; você precisa de uma solução que não dependa de um browser em
particular. Nesses momentos, um applet Java é o ideal.
Você adiciona um applet Java na sua página Web, usando o tag HTML, <APPLET>. Como Java
roda em qualquer plataforma, o applet trabalhará como esperado, contanto que o usuário local utilize
um browser que suporte Java.
Applets têm mais restrições de segurança do que as aplicações
Os comentários aqui apresentados sobre segurança são voltados aos applets, não para as
aplicações. Um usuário final pode inicializar um applet simplesmente carregando uma página Web;
assim applets precisam de uma segurança mais rígida. Os usuários finais precisam instalar as
aplicações; assim, somente para as aplicações é permitido executar as capacidades que são negadas
aos applets.
Verificação de JVM
Suponha que você tenha escrito um applet Java e o tenha compilado em um arquivo de classe.
Você usa este applet na sua página Web. Quando um usuário final usa um browser Java para fazer
donwload da página, ele também carrega o applet. Para garantir que o applet não acesse os recursos
de sistema contidos no disco rígido, Java Virtual machine (JVM), anexado ao browser, executa várias
verificações.
Primeiro, o JVM inclui um iniciador de classes (class loader), responsável por localizar e carregar
todas as classes usadas pelo applet. Segundo, antes de o arquivo de classe ter permissão para ser
executado, os conteúdos desse arquivo são testados por um bytecode verifier. Terceiro, as classes
processam sob a supervisão de JVM Security Manager.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 22
Prof. Newton Gomes
Esses três mecanismos trabalham juntos para garantir que:
• só as classes próprias sejam carregadas;
• cada classe esteja no formato adequado;
• classes não desejadas executem instruções perigosas;
• classes não desejadas tenham acesso aos recursos do sistema.
O Security Manager tem que coordenar as tentativas do applet para acessar a qualquer
momento:
• comunicações de rede;
• informações protegidas 9inclusive o disco rígido ou dados pessoais);
• programas e processos que trabalham ao nível do sistema operacional;
• iniciador de classes;
• bibliotecas de classe Java (conhecidas como pacotes).
Níveis de proteção de linguagem
Muitas linguagens, como as Smalltalk, permitem ao programador converter facilmente objetos de
um tipo em objetos de um outro tipo. Esta sintaxe livre permite aos programadores escreverem códigos
mais rapidamente, mas também dá oportunidades ao programador malicioso (para não mencionar as
“deixas’ para defeitos de software).
Linguagens digitadas com mais restrições, como Ada, são pouco mais difíceis de usar, mas
geralmente resultam em programas com menos defeitos e códigos mais cutos. Por isso, linguagens
mais livres de restrições de digitação são populares e freqüentemente usadas na elaboração de
códigos.
Em geral, muito da força de C e de C++ vem da capacidade de essas linguagensusarem
ponteiros – variáveis que armazenam endereços de memória de outros dados. Às vezes você pode ver
descrições de Java que reclamam que a linguagem não tem ponteiro. O fato é que tudo em Java está
em ponteiros – só que eles não são nem um pouco acessíveis ao usuário.A razão pela qual os
ponteiros são “invisíveis” é que os designers de Java removeram a propriedade que permite apontar um
ponteiro para um local arbitrário.
Como gerar a documentação
A Sun deu a solução para o dilema mostrado acima: javadoc. Esta seção mostra a você como o
javadoc gerará páginas HTML para a documentação do seu programa sem requerer que você saiba
mais do que a documentação do código-fonte.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 23
Prof. Newton Gomes
O que é javadoc?
Para criar a documentação para o pacote Java, você usa o javadoc. Mesmo que você não tenha
pensado em incluir comentários em seu código-fonte, você obterá algum uso do javadoc. Entre suas
qualidades, está a geração de uma página HTML para todo arquivo .java e para o pacote como um
todo. Também produz uma hierarquia de classes (tree.html), e um índice (AllNames.html). Para cada
arquivo .Java, o javadoc registra o nome da classe e a assinatura completa de cada método.
As Bibliotecas de Classes do Java
Fornecem um conjunto de classes previamente implementadas pelo desenvolvedor da linguagem.
São as únicas com suporte garantido em todos os ambientes comerciais Java.
Os detalhes de uso e sua implementação são descritos na documentação da API.
Outras bibliotecas podem eventualmente existir em certos ambientes de desenvolvimento comerciais,
mas não há garantia de essas classes extra funcionarem em todos os ambientes comerciais Java.
Essa característica é particularmente importante para o desenvolvimento de applets.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 24
Prof. Newton Gomes
Descrição Sucinta das Bibliotecas de Classes Java
Um dos benefícios dos programas orientados a objeto é achar outra pessoa que já escreveu parte do
nosso programa e simplesmente chamar o seu código.
Biblioteca Descrição
java.lang Classes que contém a linguagem propriamente dita. Inclui as
classes Object, String e System, além das especiais para tipos
primitivos (Integer, Character, Double, etc.
java.util Utilitários em geral, como Date, Vector, Hashtable, etc.
java.io Classes para controle de entrada e saída de dados e manuseio de
arquivos.
java.net Apoio a redes, incluindo Socket e URL
java.awt
Abstract
Window
Toolkit
Contém classes para implementar interfaces gráficas com o
usuário. Inclui classes para janelas, botões, etc. Também possui
classes para o processamento de imagens (java.awt.Image)
java.applet Fornece classes para o apoio à construção de applets, como
Applet, Audio, etc.
Os engenheiros da Sun têm escrito muitos códigos que podemos usar – eles estão empacotados em
bibliotecas que começam com nomes como Java, sun e javax.
A biblioteca padrão de classes do Java começou pequena mas está crescendo a cada dia que passa.
Ela implementa as funções matemáticas de I/O da biblioteca padrão C, um conjunto de tipos de dados
tais como o Integer, String e Tabela Hash com seus métodos servidores, linha ("threads"), sockets e um
sistema GUI chamado AWT.
Programas em JAVA
As fontes dos programas em Java são aquivos-texto normais, como os de qualquer outra linguagem de
alto nível, com extensão ".java".
Depois de escritos, os programas são compilados em um "compilador Java" e gravados em um formato
especial, com extensão ".class".
A arquitetura para a qual o programa é compilado é uma arquitetura hipotética chamada "máquina
virtual Java". O código é a seguir executado na máquina virtual, implementada da mesma forma em
diferentes arquiteturas.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 25
Prof. Newton Gomes
Este esquema, embora complexo, tem várias vantagens.
A performance é melhor e ele não é amarrado a qualquer equipamento ou sistema operacional em
especial.
Para construir uma aplicação, você precisa ter o JDK instalado. Depois disso, você seguirá um
processo de três passos:
Entre no código, em um arquivo de texto.
Compile todas as classes usando o Compilador - javac.
Execute a aplicação usando a JVM - java.
A Sun (empresa responsável pelo projeto Java) sugere várias convenções de nomes quando se
escreve em Java.
O compilador não se preocupa como você chama suas classes e métodos, mas se você seguir os
nomes convencionados, o seu código pode ser um pouco mais flexível na sua manutenção.
Os nomes convencionados são:
Nomes de classe usarão nomes misturados. No início, com uma letra maiúscula. Por exemplo:
NativeHello e HeeloWorld, não nativeHello ou Helloworld;
Métodos usarão casos misturados, com o seu começo com uma letra minúscula. Assim, escreva
sayHello ( ) não SayHello ( ) ou sayhello ( );
Nomes de membros de dados seguirão a mesma convenção, como os métodos. Assim você poderá
querer um membro nomeado como thePoint, ou ThePoint ou thepoint;
Constantes, no geral, são escritas com maiúsculas. Assim, escreva PI e não pi;
Para acesso aos métodos, você utilizará nomes em conjunto como get ou set. Desse modo, para saber
a capacidade de um caminhão, você precisará seguir o método chamado getCapacity ( ). Para saber o
destino, você utilizará setDestination ( );
Se o membro de dados for boleano, é melhor usar is ou has em lugar de get, como um prefixo. Dessa
forma, para ver se um caminhão tem um destino, a chamada será hasDestination ( ). Para saber se o
caminhão está disponível, a chamada será isAvailable ( ).
Convenções adicionais para aumentar a eficácia das leituras
Daremos nomes de classes que começam com um T para indicar tipo. Nós alteraremos uma regra que
inicializa uma classe de uma para uma aplicação ou um applet, de modo a não confundir os usuários
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 26
Prof. Newton Gomes
finais. Esta convenção nos ajuda a distinguir classes que nós construímos daquelas obtidas no Sun
API.
Vamos começar os membros protected e private (métodos e dados) com um sublinhado (_) inicial.
Vamos denotar as constantes com um k minúsculo inicial, assim a taxa de imposto do caminhoneiro
será kTaxRate. (Esta convenção é o contrário da convenção você achará no JDK, no qual as
constantes são todas escritas em maiúsculas).
Vamos dar às variáveis locais e parâmetros nomes que começarão com a ou the.
Vamos evitar as abreviações, se não você teria que adivinhar o método de capacidade dos caminhões:
getCap ( ), getCpcty ( ) ou getCapacity ( ).
Aqui, uma convenção para suas designações: evite usar membros de dados públicos. Force o acesso a
membros de dados para passar por funções de acesso.
Em Java, você define uma classe como o ponto de partida de sua aplicação.
O usuário final chamará o método main ( ), daquela classe, e o seu trabalho se iniciará.
Contanto que você trabalhe em Java, aceite o fato de que todo pedaço de dados e todo método,
inclusive main ( ), pertencerá ao interior de alguma classe.
O Java carrega todo o código dinamicamente em runtime e carrega o código classe por classe. Quando
o compilador Java compila um arquivo fonte, cada classe aparece em um arquivo .class separado.
Todas as funções devem ser métodos de alguma classe. Por exemplo, funções matemáticas, tais como
seno, estão implementadas como métodos da classe Math.
Tudo em um programa Java tem que estar dentro de uma classe
As únicas estruturas que não são classes em Java são os oito tipos primitivos de dados
Um arquivo fonte Java deveter o mesmo nome de sua classe principal e a extensão .java
Um programa Java deve ter seu código traduzido para bytecodes antes da execução
Um programa Java, após a tradução, tem extensão .class
Todas instrução/declaração Java deve ser terminada por “;”
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 27
Prof. Newton Gomes
Primeiro Programa em JAVA
public class Oi
{
public static void main(String args[])
{
System.out.println(“Oi! Eu sou o Java.”);
}
}
javac java
Oi.java Oi.class (Execução)
(texto) (compilador) (bytecode) (JVM)
Ponto e vírgula, Blocos e o espaço em branco
No java, os comandos são terminados com o sinal de ponto e vírgula (;)
Um bloco tem início e tem o seu fim representados pelo uso das chaves {};
O uso do espaço em branco permite uma melhor visualização dos comandos e em conseqüência
facilita a sua manutenção.
Princípios que você usará para escrever qualquer aplicação Java:
A classe é declarada para ser pública.
A classe contém um membro nomeado: main ( ).
O método main ( ) é declarado para ser público estático e retorno como void.
public class Oi
{
class é a palavra reservada que marca o inicio da declaração de uma classe. Public é um
especificador, por enquanto guarde public class como o início da declaração de uma classe. Toda
classes serão declaradas assim até avançarmos em outros conceitos.
Oi é o nome dado à classe. O “abre chaves” marca o início das declarações da classe que são
os atributos e métodos. Esta classe só possui uma declaração, a do método main(). Todo pedaço de
código em Java deve pertencer ao abre chaves, fecha chaves da definição de uma classe.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 28
Prof. Newton Gomes
public static void main (String args[]) {
System.out.println("Oi! Eu sou o Java.");
}
public
É um qualificador do método que indica que este é acessível externamente a esta classe (para
outras classes que eventualmente seriam criadas), não se preocupe com ele agora, apenas declare
todos os métodos como public.
static
É um outro qualificador ou “specifier”, que indica que o método deve ser compartilhado por todos
os objetos que são criados a partir desta classe. Os métodos static podem ser invocados, mesmo
quando não foi criado nenhum objeto para a classe, para tal deve-se seguir a sintaxe:
<NomeClasse>.<NomemetodoStatic>(argumentos);. Retornaremos a esta explicação mais tarde, por
hora você precisa saber que particularmente o método main precisa ter essa qualificação porque ele é
chamado sem que se crie nenhum objeto de sua classe.
void
Semelhante ao void C++ ou C, é o valor de retorno da função, quando a função não retorna
nenhum valor ela retorna void, uma espécie de valor vazio que tem que ser especificado.
main
Este é um nome particular de método que indica para o compilador e a máquina virtual (JVM) o
início do programa, é dentro deste método e através das iterações entre os atributos, variáveis e
argumentos visíveis nele que o programa se desenvolve.
(String args[])
É o argumento de main e por consequência do programa todo, ele é um vetor de Strings que é
formado quando são passados ou não argumentos através da invocação do nome do programa na
linha de comando do sistema operacional, exemplo:
java Oi argumentotexto1 argumentotexto2
{ ... }
“Abre chaves” e “fecha chaves”. Para quem não conhece C ou C++, eles podem ser entendidos
como algo semelhante ao BEGIN e END de Pascal ou Modula-3, ou seja: delimitam um bloco de
código. Os programadores Pascal notarão que variáveis locais dos métodos podem ser declaradas
em qualquer local entre as chaves. Mas por motivos de clareza do código declararemos todas no
início do abre chaves.
System.out.println("Oi! Eu Sou o Java.");
Chamada do método println para o atributo out da classe ou objeto System, o argumento é uma
constante do tipo String. println assim como writeln de Pascal, imprime a String e posiciona o cursor
na linha abaixo , analogamente print não avança linha. Por hora você pode guardar esta linha de
código como o comando para imprimir mensagens na tela, onde o argumento que vem entre aspas é
a String a ser impressa. O ; “ponto e vírgula” separa operações.
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 29
Prof. Newton Gomes
}
Finalmente o fecha chaves termina com a declaração da classe Oi.
Conclusão:
Normalmente o volume de conceitos presentes num primeiro programa de uma linguagem
orientada a objetos como Java ou Eiffel é grande se comparado com o de um primeiro programa em C
ou Pascal. Esses conceitos ainda serão aprofundados e são citados aqui apenas por curiosidade, é
normal que você não tenha entendido tudo.
(*) De agora em diante não explicaremos mais como compilar os programas.
Exercício:
Experimente fazer modificações no programa Oi. Imprima outras mensagens na tela, adicione
comentários, conforme explicação a seguir.
Comentários
Computer programs are read by two kinds of entities: compilers and humans. The compiler
requires the source code text to conform exactly to its syntax rule. For example, the semicolon must
follow the right parenthesis on the third line of the HelloWorld program. Humans are not so particular
about how instructions are given, but they often do need more explanation about what the instructions
mean. Programming languages allow such explanations to be included with source code. They are
called comments, and are ignored by the compiler.
There are two ways to write comments in Java. A C style comment begins with the symbol pair /*
and ends with the symbol pair */. A C++ style comment begins with the symbol pair // and ends with the
end of the text line. The C style comments can be used between compilable code on the same line, like
this:
public /* access */ class /* declaration */ HelloWorld
but this is not recommended. More often, Java programmers use the C style for a multi-line comment,
like this:
/* This program prints the single line of output:
Hello, World!
/*
JAVA Programming Language Prof. Newton Gomes
Java Programming Language
Linguagem de Programação JAVA 30
Prof. Newton Gomes
C++ style comments are often used to annotate declarations and statements, like this:
public class TestFrame // tests the Frame class
{ public static void main (String [] args)
{ Frame frame =new Frame (“Example 9.1”);
frame.setSize(250, 100); // 250 pixels wide and 100 pixels high
frame.setVisible (true); // displays the frame on the screen
}
}
The text shown here in boldface is ignored by the compiler. Multi-line comments can also be done
in the C++ style:
// This program prints the single line of output:
// Hello, World!
Adding comments to your programs is called documenting your code. This should be done
whenever the purpose or meaning of the code might not be clear to human readers. It is also good to
include a header comment at the beginning of every program that identifies the programmer and the
program.
Estes são os três tipos permitidos de comentários nos programas feitos em Java:
// comentário de uma linha
/* comentário de uma ou mais linhas */
/** comentário de documentação */ (Arquivos de documentação)
JAVA Programming Language Prof. Newton Gomes