Professional Documents
Culture Documents
1
Roteiro
➔ Histórico
➔ Mitos
➔ Principais características
2
Histórico
➔ 1991 – O projeto Green
Projeto conduzido por: Mike Sheridan (negócio), Patrick Naughton (sistema
gráfico) and James Gosling (linguagem de programação).
O objetivo do projeto descobrir a “nova onda” da computação.
Eles chegaram a conclusão de que uma das ondas seria a convergência
entre dispositivos eletrônicos “inteligentes” e computadores.
O projeto vislumbrou a criação de um ambiente de execução flexível
Capaz de rodar nos mais diversos tipos de dispositivos
• Primariamente em pequenos dispositivos (móveis ou não)
A implementação inicial do runtime era em C++
James Gosling viu que C++ não era adequada para o projeto e suas
extensões e modificações ao C++ foram os primeiros passos para o
desenvolvimento de uma linguagem independente apropriada ao projeto.
A linguagem foi inicialmente chamada Oak, mas o nome foi mudado devido
à existência de uma patente já registrada para outra linguagem de
programação.
Para dispositivos com pouca memória era necessária uma linguagem
pequena com código bastante otimizado para poupar espaço.
Como os fabricantes de dispositivos poderiam usar diferentes CPUs era
importante não ficar preso a nenhuma arquitetura em particular.
3
Histórico
➔ 1991 – O projeto Green
Os requisitos de código pequeno e independente de plataforma fez a
equipe ressuscitar o modelo de algumas implementações do Pascal dos
primeiros dias do PC, baseadas em um código intermediário para uma
máquina virtual.
A inspiração do nome Java surgiu em uma cafeteria local, cujo conteúdo
do café vinha de uma ilha da Indonésia chamada Java.
O projeto Green ainda criou o personagem Duke, que seria o ajudante
usado na interface gráfica.
O projeto estava à beira do cancelamento. Não conseguiu vender nada
em 93 e até metade de 94. O mercado de dispositivos “inteligentes” não
estava se desenvolvendo como a Sun previa.
O rápido crescimento da Internet por volta de 1994 deu um novo
impulso ao projeto. A Sun voltou seus esforços para acelerar a
conclusão da sua linguagem.
O objetivo era aproveitar a flexibilidade da linguagem para prover maior
dinamismo na Web.
Não havia nenhum concorrente no horizonte na nova era digital que se abria
com a Web.
4
Histórico
➔ 1994 – Browser
Na metade de 94 a equipe percebeu que um browser
independente de arquitetura, confiável e seguro seria
importante e, então, construiu um browser.
O browser HotJava foi feito para mostrar o poder do Java,
mas os idealizadores também tinham em mente o poder
do que chamamos applets. Assim, fizeram um browser
capaz de executar código Java em páginas web.
➔ 1995 – Lançamento da tecnologia Java
Em 23 de maio de 95 o browser com suporte a applets foi
apresentado na SunWorld.
➔ Jan/1996 – Netscape decide dar suporte a Java ao seu
browser Navigator
➔ 1996 – Disponibilização da primeira release
Java Development Kit (JDK) 1.0
➔ 1997 – JDK 1.1
5
Histórico
6
Mitos
➔ Java é lento
A distância entre Java e C/C++ está diminuindo graças a melhores
máquinas virtuais e compiladores JIT que convertem bytecode para código
nativo em tempo de execução.
➔ Java só serve para rodar em geladeira
Java só serve para programação WEB
Java só roda em browser
Applets são programas Java executados em browsers.
No entanto, Java permite aplicações empresariais robustas WEB (com ou
sem o uso de applets) e desktop, bem como jogos e outras aplicações.
➔ Java e JavaScript são a mesma coisa
São linguagens bem diferentes. JavaScript é uma linguagem de script que
pode ser usada em páginas Web e tem uma sintaxe baseada na sintaxe de
Java.
➔ Um applet pode ler o disco rígido e apagar arquivos
Um applet comum não pode acessar o HD. Um applet com assinatura digital
pode permitir tal acesso para usuários com esse privilégio.
7
Principais Características
➔ Orientada a Objetos
Implementa os conceitos definidos no paradigma de Programação
Orientada a Objetos (POO);
Foco nos dados (objetos) e métodos utilizados para manipulá-los;
Sintaxe e semântica herdadas de C e C++.
➔ Simples
A linguagem possui apenas os mecanismos necessários para
implementar seu conjunto de funcionalidades;
A forma com que o código é escrito é muito clara e de fácil
aprendizado;
Omite características raramente usadas e/ou que causam confusão
do C++ (arquivos header, aritmética de ponteiros, sobrecarga de
operadores, etc.).
➔ Dinâmica
Permite a carga de classes em tempo de execução;
Permite a criação dinâmica de objetos.
8
Principais Características
➔ Robusta
A tipagem de dados é forte, fazendo com que os tipos devam ser
declarados no código fonte e checados em tempo de
compilação;
Também faz checagem dinâmica em tempo de execução.
Não possui ponteiros, evitando a corrupção de dados em
memória;
Possui um mecanismo que libera automaticamente a memória
que não é mais utilizada;
Tem mecanismo para tratamento de exceções, evitando, por
exemplo, términos abruptos da aplicação.
➔ Independente de arquitetura
Qualquer que seja a plataforma em que o compilador Java é
executado, o formato do código de bytes gerado é independente
de arquitetura de hardware e software.
O conjunto de instruções da máquina virtual Java funciona para
a maioria das arquiteturas de computadores.
9
Principais Características
➔ Portável
Tanto a sintaxe quanto a semântica da linguagem são
muito bem definidas.
Não existem comportamentos específicos da implementação do
compilador ou do interpretador.
Todas implementações devem seguir exatamente as
regras da linguagem.
Ter tamanhos fixos para os tipos evita muita dor de
cabeça em termos de portabilidade.
Tipos inteiros
• byte, short, int, long => 8, 16, 32, 64 bits respectivamente
Tipos de ponto flutuante
• float e double => 32 e 64 bits
• Seguem o padrão IEEE 754
Tipo caractere
• char é de 16 bits Unicode
Strings usam um formato Unicode padrão.
10
Principais Características
➔ Multi-threaded
Threads são uma parte integrante da linguagem Java;
Permite a execução concorrente de código;
Essencial para processamento em segundo plano;
Implementação muitíssimo mais simples que em outras
linguagens;
Torna Java muito atrativa para desenvolvimento no lado
servidor.
➔ Segura
Java foi projetada tendo em mente a transmissão de
código através de uma rede;
O sistema de execução (runtime) faz as checagens
necessárias para garantir a integridade do sistema;
Pontos clássicos de vulnerabilidade explorados por vírus
e cavalos de tróia não podem ser atingidos.
11
Principais Características
➔ Rápida
O código de bytes Java pode ser traduzido em tempo de
execução em código de máquina nativo.
O compilador just-in-time pode monitorar código freqüentemente
usado e otimizá-lo para ficar extremamente veloz.
Apesar de ser uma linguagem interpretada, Java possui um
desempenho muito melhor do que outras linguagens interpretadas
e de alto nível, como TCL e Perl.
Existem compiladores de runtime que compilam o código de bytes
Java, gerando um código nativo da plataforma em que a aplicação
é executada.
Com o uso de compiladores JIT, a performance é muito superior a
um código exclusivamente interpretado.
➔ Com coleta de lixo automática
A coleta de lixo permite que a memória alocada para objetos seja
recuperada. Java faz isso automaticamente, aumentando a
produtividade e reduzindo o número de bugs.
12
Principais Características
➔ Distribuída
A linguagem possui um vasto conjunto de classes
para o gerenciamento de comunicação de rede de
baixo nível;
Permite o acesso a objetos remotos através da rede
como se fossem objetos locais.
➔ Rica
A linguagem possui um vasto conjunto de APIs
padronizadas para as mais diversas funções.
Acesso a bancos de dados;
Interface gráfica;
Acesso ao sistema de arquivos;
Compressão, E-mail, ...
13
Plataformas Java
➔ Plataforma
Ambiente de hardware e/ou software no qual um programa é
executado
➔ A plataforma Java é somente de software
Esta plataforma de execução funciona sobre outras
plataformas de hardware e software
➔ Plataformas Java
JME – Java Platform, Micro Edition
Plataforma de desenvolvimento para dispositivos com suporte à
Java como Palms, celulares, pagers, etc.
JSE – Java Platform, Standard Edition
Contém serviços padrão para aplicações e applets.
JEE – Java Platform, Enterprise Edition
Plataforma de desenvolvimento completa para aplicações
empresariais robustas e escaláveis.
14
Plataformas Java
**
16
Plataforma J2SE
JRE – Java Runtime Environment
SDK – Software Development Kit
17
Resumo
➔ Plataforma Java
Principais Características
Orientada a Objeto
Simples
Dinâmica
Robusta
Independente de Plataforma
Portável
Multi-threaded
Segura
Rápida
Distribuída
Rica
Arquitetura
JVM + Java API
18
Referências e Recursos
➔ Web
The Source for Java Technology (Sun)
http://java.sun.com
http://java.sun.com/j2se
http://java.sun.com/j2ee
http://java.sun.com/j2me
http://java.sun.com/features
Tutorials & Short Courses by Sun
http://developer.java.sun.com/developer/onlineTraining
Documentation, Tutorials & Courses
http://java.web.cern.ch/java/tutorials.html
Jguru: Your view of the Java universe
http://www.jguru.com
argonavis.com.br
http://www.argonavis.com.br
Java Myths
http://cdsmith.twu.net/professional/java/myths.html
http://www.javacoffeebreak.com/articles/inside_java/insidejavamay00.html
19
Referências e Recursos
➔ Livros
Core Java 2 – Volume I – Cay S. Horstmann e Gary
Cornell.
Thinking in Java (3rd Edition)
http://www.bruceeckel.com
Java in a Nutshell (4th Edition) – David Flanagan
Java – Como Programar (4ª Edição) – Deitel & Deitel
20