Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

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

Mais conteúdos dessa disciplina