Unidade 1 Java – Visão Geral <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
Roteiro <ul><li>Histórico </li></ul><ul><li>Mitos </li></ul><ul><li>Principais características </li></ul><ul><li>Component...
Histórico <ul><li>1991 – O projeto Green </li></ul><ul><ul><li>Projeto conduzido por: Mike Sheridan (negócio), Patrick Nau...
Histórico <ul><li>1991 – O projeto Green </li></ul><ul><ul><li>Os requisitos de código pequeno e independente de plataform...
Histórico <ul><li>1994 – Browser </li></ul><ul><ul><li>Na metade de 94 a equipe percebeu que um browser independente de ar...
Histórico <ul><li>1998 – Java Community Process (JCP) </li></ul><ul><ul><li>Especificação da tecnologia Java passa a ser c...
Mitos <ul><li>Java é lento </li></ul><ul><ul><li>A distância entre Java e C/C++ está diminuindo graças a melhores máquinas...
Principais Características <ul><li>Orientada a Objetos </li></ul><ul><ul><li>Implementa os conceitos definidos no paradigm...
Principais Características <ul><li>Robusta </li></ul><ul><ul><li>A tipagem de dados é forte, fazendo com que os tipos deva...
Principais Características <ul><li>Portável </li></ul><ul><ul><li>Tanto a sintaxe quanto a semântica da linguagem são muit...
Principais Características <ul><li>Multi-threaded </li></ul><ul><ul><li>Threads são uma parte integrante da linguagem Java...
Principais Características <ul><li>Rápida </li></ul><ul><ul><li>O código de bytes Java pode ser traduzido em tempo de exec...
Principais Características <ul><li>Distribuída </li></ul><ul><ul><li>A linguagem possui um vasto conjunto de classes para ...
Plataformas Java <ul><li>Plataforma </li></ul><ul><ul><li>Ambiente de hardware e/ou software no qual um programa é executa...
Plataformas Java *  Connected Limited Device Configuration ** Mobile Information Device * **
Componentes da plataforma Java <ul><ul><li>Java Virtual Machine (Java VM ou JVM) </li></ul></ul><ul><ul><ul><li>Provê supo...
Plataforma J2SE <ul><ul><li>JRE – Java Runtime Environment </li></ul></ul><ul><ul><li>SDK – Software Development Kit </li>...
Resumo <ul><li>Plataforma Java </li></ul><ul><ul><li>Principais Características </li></ul></ul><ul><ul><ul><li>Orientada a...
Referências e Recursos <ul><li>Web </li></ul><ul><ul><li>The Source for Java Technology (Sun) </li></ul></ul><ul><ul><ul><...
Referências e Recursos <ul><li>Livros </li></ul><ul><ul><li>Core Java 2 – Volume I – Cay S. Horstmann e Gary Cornell. </li...
Upcoming SlideShare
Loading in …5
×

Java 01 Java Visao Geral

1,677 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,677
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
109
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java 01 Java Visao Geral

  1. 1. Unidade 1 Java – Visão Geral <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
  2. 2. Roteiro <ul><li>Histórico </li></ul><ul><li>Mitos </li></ul><ul><li>Principais características </li></ul><ul><li>Componentes da plataforma Java </li></ul>
  3. 3. Histórico <ul><li>1991 – O projeto Green </li></ul><ul><ul><li>Projeto conduzido por: Mike Sheridan (negócio), Patrick Naughton (sistema gráfico) and James Gosling (linguagem de programação). </li></ul></ul><ul><ul><li>O objetivo do projeto descobrir a “nova onda” da computação. </li></ul></ul><ul><ul><li>Eles chegaram a conclusão de que uma das ondas seria a convergência entre dispositivos eletrônicos “inteligentes” e computadores. </li></ul></ul><ul><ul><li>O projeto vislumbrou a criação de um ambiente de execução flexível </li></ul></ul><ul><ul><ul><li>Capaz de rodar nos mais diversos tipos de dispositivos </li></ul></ul></ul><ul><ul><ul><ul><li>Primariamente em pequenos dispositivos (móveis ou não) </li></ul></ul></ul></ul><ul><ul><li>A implementação inicial do runtime era em C++ </li></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul><ul><ul><ul><li>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. </li></ul></ul></ul><ul><ul><li>Para dispositivos com pouca memória era necessária uma linguagem pequena com código bastante otimizado para poupar espaço. </li></ul></ul><ul><ul><li>Como os fabricantes de dispositivos poderiam usar diferentes CPUs era importante não ficar preso a nenhuma arquitetura em particular. </li></ul></ul>
  4. 4. Histórico <ul><li>1991 – O projeto Green </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>O projeto Green ainda criou o personagem Duke, que seria o ajudante usado na interface gráfica. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><ul><li>O objetivo era aproveitar a flexibilidade da linguagem para prover maior dinamismo na Web. </li></ul></ul></ul><ul><ul><ul><li>Não havia nenhum concorrente no horizonte na nova era digital que se abria com a Web. </li></ul></ul></ul>
  5. 5. Histórico <ul><li>1994 – Browser </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><li>1995 – Lançamento da tecnologia Java </li></ul><ul><ul><li>Em 23 de maio de 95 o browser com suporte a applets foi apresentado na SunWorld. </li></ul></ul><ul><li>Jan/1996 – Netscape decide dar suporte a Java ao seu browser Navigator </li></ul><ul><li>1996 – Disponibilização da primeira release </li></ul><ul><ul><li>Java Development Kit (JDK) 1.0 </li></ul></ul><ul><li>1997 – JDK 1.1 </li></ul>
  6. 6. Histórico <ul><li>1998 – Java Community Process (JCP) </li></ul><ul><ul><li>Especificação da tecnologia Java passa a ser conduzida através de processo aberto formado pela Sun e usuários Java </li></ul></ul><ul><li>1999 </li></ul><ul><ul><li>Fevereiro </li></ul></ul><ul><ul><ul><li>Java 1.2, renomeado para Java 2. </li></ul></ul></ul><ul><ul><li>Junho </li></ul></ul><ul><ul><ul><li>Ramificação da plataforma: J2SE, J2ME e J2EE </li></ul></ul></ul><ul><ul><li>Dezembro </li></ul></ul><ul><ul><ul><li>Primeira release J2EE </li></ul></ul></ul><ul><ul><ul><li>Primeira release J2SE para Linux </li></ul></ul></ul><ul><li>2000 – J2SE 1.3 </li></ul><ul><li>2002 – J2SE 1.4 </li></ul><ul><li>2004 – J2SE 1.5 – Java 5 </li></ul>
  7. 7. Mitos <ul><li>Java é lento </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>Java só serve para rodar em geladeira Java só serve para programação WEB Java só roda em browser </li></ul><ul><ul><li>Applets são programas Java executados em browsers. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><li>Java e JavaScript são a mesma coisa </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>Um applet pode ler o disco rígido e apagar arquivos </li></ul><ul><ul><li>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. </li></ul></ul>
  8. 8. Principais Características <ul><li>Orientada a Objetos </li></ul><ul><ul><li>Implementa os conceitos definidos no paradigma de Programação Orientada a Objetos (POO); </li></ul></ul><ul><ul><li>Foco nos dados (objetos) e métodos utilizados para manipulá-los; </li></ul></ul><ul><ul><li>Sintaxe e semântica herdadas de C e C++. </li></ul></ul><ul><li>Simples </li></ul><ul><ul><li>A linguagem possui apenas os mecanismos necessários para implementar seu conjunto de funcionalidades; </li></ul></ul><ul><ul><li>A forma com que o código é escrito é muito clara e de fácil aprendizado; </li></ul></ul><ul><ul><li>Omite características raramente usadas e/ou que causam confusão do C++ (arquivos header, aritmética de ponteiros, sobrecarga de operadores, etc.). </li></ul></ul><ul><li>Dinâmica </li></ul><ul><ul><li>Permite a carga de classes em tempo de execução; </li></ul></ul><ul><ul><li>Permite a criação dinâmica de objetos. </li></ul></ul>
  9. 9. Principais Características <ul><li>Robusta </li></ul><ul><ul><li>A tipagem de dados é forte, fazendo com que os tipos devam ser declarados no código fonte e checados em tempo de compilação; </li></ul></ul><ul><ul><li>Também faz checagem dinâmica em tempo de execução. </li></ul></ul><ul><ul><li>Não possui ponteiros, evitando a corrupção de dados em memória; </li></ul></ul><ul><ul><li>Possui um mecanismo que libera automaticamente a memória que não é mais utilizada; </li></ul></ul><ul><ul><li>Tem mecanismo para tratamento de exceções, evitando, por exemplo, términos abruptos da aplicação. </li></ul></ul><ul><li>Independente de arquitetura </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>O conjunto de instruções da máquina virtual Java funciona para a maioria das arquiteturas de computadores. </li></ul></ul>
  10. 10. Principais Características <ul><li>Portável </li></ul><ul><ul><li>Tanto a sintaxe quanto a semântica da linguagem são muito bem definidas. </li></ul></ul><ul><ul><ul><li>Não existem comportamentos específicos da implementação do compilador ou do interpretador. </li></ul></ul></ul><ul><ul><li>Todas implementações devem seguir exatamente as regras da linguagem. </li></ul></ul><ul><ul><li>Ter tamanhos fixos para os tipos evita muita dor de cabeça em termos de portabilidade. </li></ul></ul><ul><ul><ul><li>Tipos inteiros </li></ul></ul></ul><ul><ul><ul><ul><li>byte, short, int, long => 8, 16, 32, 64 bits respectivamente </li></ul></ul></ul></ul><ul><ul><ul><li>Tipos de ponto flutuante </li></ul></ul></ul><ul><ul><ul><ul><li>float e double => 32 e 64 bits </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Seguem o padrão IEEE 754 </li></ul></ul></ul></ul><ul><ul><ul><li>Tipo caractere </li></ul></ul></ul><ul><ul><ul><ul><li>char é de 16 bits Unicode </li></ul></ul></ul></ul><ul><ul><li>Strings usam um formato Unicode padrão. </li></ul></ul>
  11. 11. Principais Características <ul><li>Multi-threaded </li></ul><ul><ul><li>Threads são uma parte integrante da linguagem Java; </li></ul></ul><ul><ul><li>Permite a execução concorrente de código; </li></ul></ul><ul><ul><li>Essencial para processamento em segundo plano; </li></ul></ul><ul><ul><li>Implementação muitíssimo mais simples que em outras linguagens; </li></ul></ul><ul><ul><li>Torna Java muito atrativa para desenvolvimento no lado servidor. </li></ul></ul><ul><li>Segura </li></ul><ul><ul><li>Java foi projetada tendo em mente a transmissão de código através de uma rede; </li></ul></ul><ul><ul><li>O sistema de execução (runtime) faz as checagens necessárias para garantir a integridade do sistema; </li></ul></ul><ul><ul><li>Pontos clássicos de vulnerabilidade explorados por vírus e cavalos de tróia não podem ser atingidos. </li></ul></ul>
  12. 12. Principais Características <ul><li>Rápida </li></ul><ul><ul><li>O código de bytes Java pode ser traduzido em tempo de execução em código de máquina nativo. </li></ul></ul><ul><ul><li>O compilador just-in-time pode monitorar código freqüentemente usado e otimizá-lo para ficar extremamente veloz. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>Com o uso de compiladores JIT, a performance é muito superior a um código exclusivamente interpretado. </li></ul></ul><ul><li>Com coleta de lixo automática </li></ul><ul><ul><li>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 . </li></ul></ul>
  13. 13. Principais Características <ul><li>Distribuída </li></ul><ul><ul><li>A linguagem possui um vasto conjunto de classes para o gerenciamento de comunicação de rede de baixo nível; </li></ul></ul><ul><ul><li>Permite o acesso a objetos remotos através da rede como se fossem objetos locais. </li></ul></ul><ul><li>Rica </li></ul><ul><ul><li>A linguagem possui um vasto conjunto de APIs padronizadas para as mais diversas funções. </li></ul></ul><ul><ul><ul><li>Acesso a bancos de dados; </li></ul></ul></ul><ul><ul><ul><li>Interface gráfica; </li></ul></ul></ul><ul><ul><ul><li>Acesso ao sistema de arquivos; </li></ul></ul></ul><ul><ul><ul><li>Compressão, E-mail, ... </li></ul></ul></ul>
  14. 14. Plataformas Java <ul><li>Plataforma </li></ul><ul><ul><li>Ambiente de hardware e/ou software no qual um programa é executado </li></ul></ul><ul><li>A plataforma Java é somente de software </li></ul><ul><ul><li>Esta plataforma de execução funciona sobre outras plataformas de hardware e software </li></ul></ul><ul><li>Plataformas Java </li></ul><ul><ul><li>JME – Java Platform, Micro Edition </li></ul></ul><ul><ul><ul><li>Plataforma de desenvolvimento para dispositivos com suporte à Java como Palms, celulares, pagers, etc. </li></ul></ul></ul><ul><ul><li>JSE – Java Platform, Standard Edition </li></ul></ul><ul><ul><ul><li>Contém serviços padrão para aplicações e applets. </li></ul></ul></ul><ul><ul><li>JEE – Java Platform, Enterprise Edition </li></ul></ul><ul><ul><ul><li>Plataforma de desenvolvimento completa para aplicações empresariais robustas e escaláveis. </li></ul></ul></ul>
  15. 15. Plataformas Java * Connected Limited Device Configuration ** Mobile Information Device * **
  16. 16. Componentes da plataforma Java <ul><ul><li>Java Virtual Machine (Java VM ou JVM) </li></ul></ul><ul><ul><ul><li>Provê suporte para independência de plataforma </li></ul></ul></ul><ul><ul><ul><li>Máquina virtual que interpreta código Java compilado </li></ul></ul></ul><ul><ul><ul><li>Java é uma linguagem compilada e interpretada!!! </li></ul></ul></ul><ul><ul><li>Java Application Programming Interface (Java API) </li></ul></ul><ul><ul><ul><li>Provê suporte para programação de aplicações em geral </li></ul></ul></ul><ul><ul><ul><li>Vasta gama de componentes de software prontos para uso para as mais diversas funcionalidades </li></ul></ul></ul>
  17. 17. Plataforma J2SE <ul><ul><li>JRE – Java Runtime Environment </li></ul></ul><ul><ul><li>SDK – Software Development Kit </li></ul></ul>
  18. 18. Resumo <ul><li>Plataforma Java </li></ul><ul><ul><li>Principais Características </li></ul></ul><ul><ul><ul><li>Orientada a Objeto </li></ul></ul></ul><ul><ul><ul><li>Simples </li></ul></ul></ul><ul><ul><ul><li>Dinâmica </li></ul></ul></ul><ul><ul><ul><li>Robusta </li></ul></ul></ul><ul><ul><ul><li>Independente de Plataforma </li></ul></ul></ul><ul><ul><ul><li>Portável </li></ul></ul></ul><ul><ul><ul><li>Multi-threaded </li></ul></ul></ul><ul><ul><ul><li>Segura </li></ul></ul></ul><ul><ul><ul><li>Rápida </li></ul></ul></ul><ul><ul><ul><li>Distribuída </li></ul></ul></ul><ul><ul><ul><li>Rica </li></ul></ul></ul><ul><ul><li>Arquitetura </li></ul></ul><ul><ul><ul><li>JVM + Java API </li></ul></ul></ul>
  19. 19. Referências e Recursos <ul><li>Web </li></ul><ul><ul><li>The Source for Java Technology (Sun) </li></ul></ul><ul><ul><ul><li>http://java.sun.com </li></ul></ul></ul><ul><ul><ul><li>http://java.sun.com/j2se </li></ul></ul></ul><ul><ul><ul><li>http://java.sun.com/j2ee </li></ul></ul></ul><ul><ul><ul><li>http://java.sun.com/j2me </li></ul></ul></ul><ul><ul><ul><li>http://java.sun.com/features </li></ul></ul></ul><ul><ul><li>Tutorials & Short Courses by Sun </li></ul></ul><ul><ul><ul><li>http://developer.java.sun.com/developer/onlineTraining </li></ul></ul></ul><ul><ul><li>Documentation, Tutorials & Courses </li></ul></ul><ul><ul><ul><li>http://java.web.cern.ch/java/tutorials.html </li></ul></ul></ul><ul><ul><li>Jguru: Your view of the Java universe </li></ul></ul><ul><ul><ul><li>http://www.jguru.com </li></ul></ul></ul><ul><ul><li>argonavis.com.br </li></ul></ul><ul><ul><ul><li>http://www.argonavis.com.br </li></ul></ul></ul><ul><ul><li>Java Myths </li></ul></ul><ul><ul><ul><li>http://cdsmith.twu.net/professional/java/myths.html </li></ul></ul></ul><ul><ul><ul><li>http://www.javacoffeebreak.com/articles/inside_java/insidejava-may00.html </li></ul></ul></ul>
  20. 20. Referências e Recursos <ul><li>Livros </li></ul><ul><ul><li>Core Java 2 – Volume I – Cay S. Horstmann e Gary Cornell. </li></ul></ul><ul><ul><li>Thinking in Java (3rd Edition) </li></ul></ul><ul><ul><ul><li>http://www.bruceeckel.com </li></ul></ul></ul><ul><ul><li>Java in a Nutshell (4th Edition) – David Flanagan </li></ul></ul><ul><ul><li>Java – Como Programar (4ª Edição) – Deitel & Deitel </li></ul></ul>

×