You are on page 1of 20

Unidade 1

Java – Visão Geral

Regis Pires Magalhães


regispiresmag@gmail.com

1
Roteiro

➔ Histórico
➔ Mitos

➔ Principais características

➔ Componentes da plataforma Java

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

➔ 1998 – Java Community Process (JCP)


 Especificação da tecnologia Java passa a ser conduzida
através de processo aberto formado pela Sun e usuários Java
➔ 1999
 Fevereiro
 Java 1.2, renomeado para Java 2.
 Junho
 Ramificação 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

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

**

* Connected Limited Device Configuration


** Mobile Information Device
15
Componentes da plataforma Java

 Java Virtual Machine (Java VM ou JVM)


 Provê suporte para independência de plataforma
 Máquina virtual que interpreta código Java compilado
 Java é uma linguagem compilada e interpretada!!!
 Java Application Programming Interface (Java API)
 Provê suporte para programação de aplicações em geral
 Vasta gama de componentes de software prontos para uso para as mais
diversas funcionalidades

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/insidejava­may00.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

You might also like