Projeto conduzido por: Mike Sheridan (negcio), Patrick Naughton
(sistema grfico) and James Gosling (linguagem de programao).
O objetivo do projeto descobrir a nova onda da computao.
Eles chegaram a concluso de que uma das ondas seria a
convergncia entre dispositivos eletrnicos inteligentes e
computadores.
O projeto vislumbrou a criao de um ambiente de execuo
flexvel
Capaz de rodar nos mais diversos tipos de dispositivos
Primariamente em pequenos dispositivos (mveis ou no)
A implementao inicial do runtime era em C++
James Gosling viu que C++ no era adequada para o projeto e suas
extenses e modificaes 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 existncia de uma patente j registrada para outra linguagem
de programao.
Para dispositivos com pouca memria era necessria uma linguagem
pequena com cdigo bastante otimizado para poupar espao.
Como os fabricantes de dispositivos poderiam usar diferentes
CPUs era importante no ficar preso a nenhuma arquitetura em
particular.
4. Histrico
1991 O projeto Green
Os requisitos de cdigo pequeno e independente de plataforma fez
a equipe ressuscitar o modelo de algumas implementaes do Pascal dos
primeiros dias do PC, baseadas em um cdigo intermedirio para uma
mquina virtual.
A inspirao do nome Java surgiu em uma cafeteria local, cujo
contedo do caf vinha de uma ilha da Indonsia chamada Java.
O projeto Green ainda criou o personagem Duke, que seria o
ajudante usado na interface grfica.
O projeto estava beira do cancelamento. No conseguiu vender
nada em 93 e at metade de 94. O mercado de dispositivos
inteligentes no estava se desenvolvendo como a Sun previa.
O rpido crescimento da Internet por volta de 1994 deu um novo
impulso ao projeto. A Sun voltou seus esforos para acelerar a
concluso da sua linguagem.
O objetivo era aproveitar a flexibilidade da linguagem para
prover maior dinamismo na Web.
No havia nenhum concorrente no horizonte na nova era digital
que se abria com a Web.
5. Histrico
1994 Browser
Na metade de 94 a equipe percebeu que um browser independente
de arquitetura, confivel e seguro seria importante e, ento,
construiu um browser.
O browser HotJava foi feito para mostrar o poder do Java, mas
os idealizadores tambm tinham em mente o poder do que chamamos
applets. Assim, fizeram um browser capaz de executar cdigo Java em
pginas web.
1995 Lanamento 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 Disponibilizao da primeira release
Java Development Kit (JDK) 1.0
1997 JDK 1.1
6. Histrico
1998 Java Community Process (JCP)
Especificao da tecnologia Java passa a ser conduzida atravs de
processo aberto formado pela Sun e usurios Java
1999
Fevereiro
Java 1.2, renomeado para Java 2.
Junho
Ramificao da plataforma: J2SE, J2ME e J2EE
Dezembro
Primeira release J2EE
Primeira release J2SE para Linux
2000 J2SE 1.3
2002 J2SE 1.4
2004 J2SE 1.5 Java 5
7. Mitos
Java lento
A distncia entre Java e C/C++ est diminuindo graas a melhores
mquinas virtuais e compiladores JIT que convertem bytecode para
cdigo nativo em tempo de execuo.
Java s serve para rodar em geladeira Java s serve para
programao WEB Java s roda em browser
Applets so programas Java executados em browsers.
No entanto, Java permite aplicaes empresariais robustas WEB
(com ou sem o uso de applets) e desktop, bem como jogos e outras
aplicaes.
Java e JavaScript so a mesma coisa
So linguagens bem diferentes. JavaScript uma linguagem de
script que pode ser usada em pginas Web e tem uma sintaxe baseada
na sintaxe de Java.
Um applet pode ler o disco rgido e apagar arquivos
Um applet comum no pode acessar o HD. Um applet com assinatura
digital pode permitir tal acesso para usurios com esse
privilgio.
8. Principais Caractersticas
Orientada a Objetos
Implementa os conceitos definidos no paradigma de Programao
Orientada a Objetos (POO);
Foco nos dados (objetos) e mtodos utilizados para
manipul-los;
Sintaxe e semntica herdadas de C e C++.
Simples
A linguagem possui apenas os mecanismos necessrios para
implementar seu conjunto de funcionalidades;
A forma com que o cdigo escrito muito clara e de fcil
aprendizado;
Omite caractersticas raramente usadas e/ou que causam confuso
do C++(arquivos header, aritmtica de ponteiros, sobrecarga de
operadores, etc.).
Dinmica
Permite a carga de classes em tempo de execuo;
Permite a criao dinmica de objetos.
9. Principais Caractersticas
Robusta
A tipagem de dados forte, fazendo com que os tipos devam ser
declarados no cdigo fonte e checados em tempo de compilao;
Tambm faz checagem dinmica em tempo de execuo.
No possui ponteiros, evitando a corrupo de dados em
memria;
Possui um mecanismo que libera automaticamente a memria que no
mais utilizada;
Tem mecanismo para tratamento de excees, evitando, por exemplo,
trminos abruptos da aplicao.
Independente de arquitetura
Qualquer que seja a plataforma em que o compilador Java
executado, o formato do cdigo de bytes gerado independente de
arquitetura de hardware e software.
O conjunto de instrues da mquina virtual Java funciona para a
maioria das arquiteturas de computadores.
10. Principais Caractersticas
Portvel
Tanto a sintaxe quanto a semntica da linguagem so muito bem
definidas.
No existem comportamentos especficos da implementao do
compilador ou do interpretador.
Todas implementaes devem seguir exatamente as regras da
linguagem.
Ter tamanhos fixos para os tipos evita muita dor de cabea em
termos de portabilidade.
Threads so uma parte integrante da linguagem Java;
Permite a execuo concorrente de cdigo;
Essencial para processamento em segundo plano;
Implementao muitssimo mais simples que em outras
linguagens;
Torna Java muito atrativa para desenvolvimento no lado
servidor.
Segura
Java foi projetada tendo em mente a transmisso de cdigo atravs
de uma rede;
O sistema de execuo (runtime) faz as checagens necessrias para
garantir a integridade do sistema;
Pontos clssicos de vulnerabilidade explorados por vrus e
cavalos de tria no podem ser atingidos.
12. Principais Caractersticas
Rpida
O cdigo de bytes Java pode ser traduzido em tempo de execuo em
cdigo de mquina nativo.
O compilador just-in-time pode monitorar cdigo freqentemente
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 nvel, como TCL e Perl.
Existem compiladores de runtime que compilam o cdigo de bytes
Java, gerando um cdigo nativo da plataforma em que a aplicao
executada.
Com o uso de compiladores JIT, a performance muito superior a
um cdigo exclusivamente interpretado.
Com coleta de lixo automtica
A coleta de lixo permite que a memria alocada para objetos seja
recuperada. Java faz isso automaticamente, aumentando a
produtividade e reduzindo o nmero debugs .
13. Principais Caractersticas
Distribuda
A linguagem possui um vasto conjunto de classes para o
gerenciamento de comunicao de rede de baixo nvel;
Permite o acesso a objetos remotos atravs da rede como se
fossem objetos locais.
Rica
A linguagem possui um vasto conjunto de APIs padronizadas para
as mais diversas funes.
Acesso a bancos de dados;
Interface grfica;
Acesso ao sistema de arquivos;
Compresso, E-mail, ...
14. Plataformas Java
Plataforma
Ambiente de hardware e/ou software no qual um programa
executado
A plataforma Java somente de software
Esta plataforma de execuo 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
Contm servios padro para aplicaes e applets.
JEE Java Platform, Enterprise Edition
Plataforma de desenvolvimento completa para aplicaes
empresariais robustas e escalveis.
15. Plataformas Java *Connected Limited Device Configuration **
Mobile Information Device * ** 16. Componentes da plataforma
Java
Java Virtual Machine (Java VM ou JVM)
Prov suporte para independncia de plataforma
Mquina virtual que interpreta cdigo Java compilado
Java uma linguagem compilada e interpretada!!!
Java Application Programming Interface (Java API)
Prov suporte para programao de aplicaes em geral
Vasta gama de componentes de software prontos para uso para as
mais diversas funcionalidades