SlideShare une entreprise Scribd logo
1  sur  33
Introdução à Plataforma Java




             Nécio de Lima Veras
            necioveras@gmail.com
           necio@ifpiparnaiba.edu.br


1
Royalties



     Estes slides foram inicialmente criados pelo prof. 
    Régis Pires (IFPI­Parnaíba) que gentilmente cedeu  
        para que algumas adaptações fossem feitas.




        Ass. Nécio de Lima Veras (IFPI­Parnaíba).


2
Visão Geral




3
Principais Características

    Orientada a Objetos
    Sintaxe e semântica herdada do C/C++, porém
    com menos recursos (C--);
    Simples;
    A linguagem possui apenas os mecanismos necessários para implementar
    seu conjunto de funcionalidades;
    Códigos limpos, claros e de alto nível;
    Dinâmica;
    Robusta:
        Tipagem de dados forte;
        Checagem automática;
        Tratamento de exceções;
    Independente da arquitetura;
4
Principais Características

    Portável:
         Não existem comportamentos específicos da implementação do
           compilador ou do interpretador.
    Tipos fixos e de tamanhos definidos:
               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.
    Multi-threaded nativo:
         Torna o desenvolvimento do lado servidor mais atrativo;


5
Principais Características

    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;
    Rápida
       O código de bytes Java pode ser traduzido em tempo de execução
         em código de máquina nativo.
       Possui compilador just-in-time;
       Em comparação com outras linguagens interpretadas é bem mais
         rápida;
    Coleta de lixo automática;


6
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(RMI);
    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, ...



7
Plataformas Java

    Epa! Plataforma? Não é uma linguagem?

    A plataforma Java é somente de 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.



8
Componentes da plataforma Java

    Java Virtual Machine (Java VM ou JVM)



    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




9
Plataforma J2SE
     JRE – Java Runtime Environment
     SDK – Software Development Kit




10
Entendendo o Java




11
Java Virtual Machine (JVM)

     Java Virtual Machine (JVM)
     É um computador de mentira. :)
     É o interpretador de código binário java.
     Utilizada para executar o programa já compilado.

     Compilação => Interpretação




                                                    Fonte: Tutorial da Sun

12
Java Virtual Machine (JVM)

     Há implementações da JVM para as mais diversas
     plataformas
     Provê independência de plataforma




                                             Fonte: Tutorial da Sun




13
Como o Java funciona




     Código-fonte                  Saída
                    Compilador   (código)    Máquinas
                                              Virtuais



14
Como o Java funciona




                    Compilador
                                            Máquinas
                                             Virtuais


     Código-fonte
                                   Saída
                                 (código)

15
Funcionamento sem Máquina Virtual




16
Funcionamento com Máquina Virtual

     A aplicação roda sem envolvimento com o Sistema
     Operacional.
     Conversa apenas com a Máquina Virtual.




17
Java Virtual Machine (JVM)

     Mas o que são Bytecodes?
     Código binário gerado pelo compilador Java.
     A origem do nome decorre do fato de que cada código de
     operação da máquina virtual gasta apenas um byte.
     São códigos binários independentes de plataforma e
     executados pela Máquina Virtual Java (JVM).
     Texto contendo código escrito em linguagem Java é
     traduzido em bytecode através do processo de compilação
     e armazenado em um arquivo .class chamado de classe
     Java.
     Detalhe importante:
         Cada arquivo .class é nomeado de acordo com o
           nome correspondente no arquivo .java.

18
Java Virtual Machine (JVM)




                            Fonte: argonavis.com.br




19
Java Virtual Machine (JVM)


     Observe as etapas: Loader, Verifier e Run




                                                 Fonte: argonavis.com.br




20
Carregador de classes (ClassLoader) e CLASSPATH


     ClassLoader
     Realiza o carregamento das classes necessárias para rodar a
     aplicação.
     CLASSPATH
     Variável de ambiente que contém os caminhos onde o
     ClassLoader pode localizar classes.
     Pode ser definido através de parâmetros do comando java.
     Verificação de Bytecodes
     Antecede a execução do código em classes carregadas
     através da rede.
     Usado para verificação de applets e de aplicativos que baixam
     bytecodes de uma rede.
     Testa o formato dos fragmentos de código e verifica a existência
     de algum código ilegal.
21
Hotspot e JIT

     Hotspot
     Tecnologia para detecção de “pontos quentes” da
     aplicação, ou seja, código que é bastante executado.
     JIT – Just In Time Compiler
     Compilador que é usado “bem na hora” que precisamos, ou
     seja, quando um “ponto quente” é detectado.
     Pode-se durante a execução, mudar a
     estratégia de compilação para melhorar a
     performance.
     É possível que, em aplicações que rodem por um certo
     tempo, tenhamos compilações Java com performance
     melhor que compilações em C.

22
Estrutura do programa Java

     Pode conter os seguintes elementos:
     Especificação de pacote (package);
     Especificação de importação (import);
     Declaração de classe (class);
     Declaração de interface (interface).

      // HelloWorld.java
      public class HelloWorld {
          public static void main(String args[]) {
              System.out.println("Hello, World!");
          }
      }




23
Estrutura do programa Java

     Classe
     Classe é uma coleção de dados e métodos que operam sobre esses dados
     Palavra reservada class seguida do nome da classe
     O arquivo .java deve ter nome idêntico ao de uma classe contida nele
     Classes não são os objetos que representam
     A planta de uma casa não é uma casa



                                            // Loja.java
                                            class Loja
               Classe                       {
                                              // Atributos
               Atributos
                                              ...
                                              // Métodos
               Métodos
                                              ...
                                            }

24
Estrutura do programa Java

     Atributos


                                class Loja
          Loja                  {
                                  // Atributos
      id : int
                                  int id;
      sigla : String
                                  String sigla, descricao;
      descricao : String
                                    // Métodos
     stringLoja() : String          String stringLoja() { ... }

                                }




25
Estrutura do programa Java

     Métodos
     Tipo de retorno do método seguido do nome do método e,
     então, de sua lista de parâmetros
                                Class Loja
          Loja                  {
     id : int
                                  // Atributos
     sigla : String               int id;
     descricao : String           String sigla, descricao;

                                    // Métodos
     stringLoja() : String          String stringLoja() {
                                       return id + " " +
                                               sigla + " " +
                                               descricao;
                                    }

                                }

26
Estrutura do programa Java

     Método main( )
     Permite execução direta através da linha de comando;
     Deve obrigatoriamente ter a assinatura:
        public static void main(String[] args)

     O retorno do método main é do “tipo” void.
     O argumento é um Array formado por Strings
      passadas na linha de comando:




27
Estrutura do programa Java

     Método main( )
     Exemplo:


      public class OlaMundo {
         public static void main(String[] args) {
            System.out.println("Olá, Mundo!");
         }
      }




28
Compilando e executando o programa


     Compilando:
     Use o java compiler (javac)
     javac NomedaClasse.java




     Executando:
     Use o interpretador java (faz parte do JRE)
     java NomedaClasse


29
Coleta de Lixo

                      Conhecida como garbage collection.
     Ao contrário de C++, em Java o programador não precisa destruir de
     forma explícita os objetos que não serão mais necessários.

     Gerenciamento de memória explícito é tedioso e muito suscetível a erros.

     Garbage collection é responsável pela destruição de todos os
     objetos que não estão sendo utilizados.

     Um objeto está pronto para a coleta de lixo quando não existir mais
     nenhuma referência para ele.

     A capacidade de desalocar memória automaticamente exige uma
     complexidade muito superior à de gerenciadores manuais.

30
Funcionamento da Coleta de Lixo
     O interpretador verifica periodicamente quais objetos alocados
     não estão mais sendo referenciados e os destrói;

     É capaz de detectar e destruir ciclos de objetos que se referenciam
     mutuamente, mas que não são referenciados por nenhum outro objeto;

     É executado como uma thread de baixa prioridade.

     Geralmente realiza sua tarefa quando o sistema está ocioso;
     Exceto quando o interpretador fica sem memória.




31
Coleta de Lixo
     (imagens valem mais que mil palavras)
                           ...
                           m =   "A";
     ...                   n =   m;
     m = "A";              p =   "B";
     n = m;                n =   null;
     p = "B";              p =   "C";
     ...                   ...




32                                       Fonte: argonavis.com.br
Exercício

     Vamos preparar nosso ambiente de
      desenvolvimento!
     É preciso instalar:

       Nosso SDK (JDK) – Que já vem com: JRE e JVM;
       http://java.sun.com/javase/downloads/index.jsp

       Nosso ambiente (IDE) – Para isso temos duas grandes
        opções:
          Netbeans (Sun);
          Eclipse (Eclipse Foundation);
          http://www.eclipse.org/downloads/


33

Contenu connexe

Tendances

Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
Regis Magalhães
 
classes_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_javaclasses_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_java
Bel Arts
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
Natanael Fonseca
 

Tendances (20)

Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Java 01
Java 01Java 01
Java 01
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
Java: Introduction
Java: IntroductionJava: Introduction
Java: Introduction
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Linguagem Java OO | Curso 3WAY Networks
Linguagem Java OO | Curso 3WAY NetworksLinguagem Java OO | Curso 3WAY Networks
Linguagem Java OO | Curso 3WAY Networks
 
Introdução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection APIIntrodução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection API
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Java Day 2011 - Reflection: Maximizando a produtividade em Java
Java Day 2011 - Reflection: Maximizando a produtividade em JavaJava Day 2011 - Reflection: Maximizando a produtividade em Java
Java Day 2011 - Reflection: Maximizando a produtividade em Java
 
classes_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_javaclasses_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_java
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Curso de Java (Parte 1)
Curso de Java (Parte 1)Curso de Java (Parte 1)
Curso de Java (Parte 1)
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Reflections
ReflectionsReflections
Reflections
 

En vedette

Seguranca da Informação - Introdução - Novo
Seguranca da Informação - Introdução - NovoSeguranca da Informação - Introdução - Novo
Seguranca da Informação - Introdução - Novo
Luiz Arthur
 
Seguranca da Informação - Conceitos
Seguranca da Informação - ConceitosSeguranca da Informação - Conceitos
Seguranca da Informação - Conceitos
Luiz Arthur
 
Redes de computadores
Redes de computadoresRedes de computadores
Redes de computadores
Aron Sporkens
 

En vedette (18)

Banco de Dados II - Unimep/Pronatec - Aula 3
Banco de Dados II - Unimep/Pronatec - Aula 3Banco de Dados II - Unimep/Pronatec - Aula 3
Banco de Dados II - Unimep/Pronatec - Aula 3
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EE
 
Banco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - ApresentaçãoBanco de Dados II Aula 01 - Apresentação
Banco de Dados II Aula 01 - Apresentação
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Curso Java #02 - Variáveis, Tipos e Estruturas de Controle
Curso Java #02 - Variáveis, Tipos e Estruturas de ControleCurso Java #02 - Variáveis, Tipos e Estruturas de Controle
Curso Java #02 - Variáveis, Tipos e Estruturas de Controle
 
Seguranca da Informação - Introdução - Novo
Seguranca da Informação - Introdução - NovoSeguranca da Informação - Introdução - Novo
Seguranca da Informação - Introdução - Novo
 
A História da Segurança da Informação
A História da Segurança da InformaçãoA História da Segurança da Informação
A História da Segurança da Informação
 
Topologias Fisicas de rede
Topologias Fisicas de redeTopologias Fisicas de rede
Topologias Fisicas de rede
 
Banco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de DadosBanco de Dados II Projeto Final de Banco de Dados
Banco de Dados II Projeto Final de Banco de Dados
 
Seguranca da Informação - Conceitos
Seguranca da Informação - ConceitosSeguranca da Informação - Conceitos
Seguranca da Informação - Conceitos
 
Segurança da Informação
Segurança da InformaçãoSegurança da Informação
Segurança da Informação
 
Redes de computadores
Redes de computadoresRedes de computadores
Redes de computadores
 
Redes de Computadores
Redes de ComputadoresRedes de Computadores
Redes de Computadores
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
 
Redes de Computadores - Modelo de Referência OSI/ISO
Redes de Computadores - Modelo de Referência OSI/ISORedes de Computadores - Modelo de Referência OSI/ISO
Redes de Computadores - Modelo de Referência OSI/ISO
 

Similaire à Unidade iii aula 02 - introdução ao java

Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
Wilson Lima
 

Similaire à Unidade iii aula 02 - introdução ao java (20)

Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
Manual
ManualManual
Manual
 
Aula1
Aula1Aula1
Aula1
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
ptt
pttptt
ptt
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Linguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem JavaLinguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem Java
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagem
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
Aula2
Aula2Aula2
Aula2
 
1707331929 ltp iv java original
1707331929 ltp iv   java original1707331929 ltp iv   java original
1707331929 ltp iv java original
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 

Plus de Nécio de Lima Veras

Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
Nécio de Lima Veras
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
Nécio de Lima Veras
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
Nécio de Lima Veras
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
Nécio de Lima Veras
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
Nécio de Lima Veras
 

Plus de Nécio de Lima Veras (20)

Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
 
Revisão de matemática
Revisão de matemáticaRevisão de matemática
Revisão de matemática
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
 
Notas sobre agentes inteligentes
Notas sobre agentes inteligentesNotas sobre agentes inteligentes
Notas sobre agentes inteligentes
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Relacionamentos do mapeamento OR
Relacionamentos do mapeamento ORRelacionamentos do mapeamento OR
Relacionamentos do mapeamento OR
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Java swing
Java swingJava swing
Java swing
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 

Unidade iii aula 02 - introdução ao java

  • 1. Introdução à Plataforma Java Nécio de Lima Veras necioveras@gmail.com necio@ifpiparnaiba.edu.br 1
  • 2. Royalties Estes slides foram inicialmente criados pelo prof.  Régis Pires (IFPI­Parnaíba) que gentilmente cedeu   para que algumas adaptações fossem feitas. Ass. Nécio de Lima Veras (IFPI­Parnaíba). 2
  • 4. Principais Características Orientada a Objetos Sintaxe e semântica herdada do C/C++, porém com menos recursos (C--); Simples; A linguagem possui apenas os mecanismos necessários para implementar seu conjunto de funcionalidades; Códigos limpos, claros e de alto nível; Dinâmica; Robusta: Tipagem de dados forte; Checagem automática; Tratamento de exceções; Independente da arquitetura; 4
  • 5. Principais Características Portável: Não existem comportamentos específicos da implementação do compilador ou do interpretador. Tipos fixos e de tamanhos definidos: 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. Multi-threaded nativo: Torna o desenvolvimento do lado servidor mais atrativo; 5
  • 6. Principais Características 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; Rápida O código de bytes Java pode ser traduzido em tempo de execução em código de máquina nativo. Possui compilador just-in-time; Em comparação com outras linguagens interpretadas é bem mais rápida; Coleta de lixo automática; 6
  • 7. 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(RMI); 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, ... 7
  • 8. Plataformas Java Epa! Plataforma? Não é uma linguagem? A plataforma Java é somente de 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. 8
  • 9. Componentes da plataforma Java Java Virtual Machine (Java VM ou JVM) 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 9
  • 10. Plataforma J2SE JRE – Java Runtime Environment SDK – Software Development Kit 10
  • 12. Java Virtual Machine (JVM) Java Virtual Machine (JVM) É um computador de mentira. :) É o interpretador de código binário java. Utilizada para executar o programa já compilado. Compilação => Interpretação Fonte: Tutorial da Sun 12
  • 13. Java Virtual Machine (JVM) Há implementações da JVM para as mais diversas plataformas Provê independência de plataforma Fonte: Tutorial da Sun 13
  • 14. Como o Java funciona Código-fonte Saída Compilador (código) Máquinas Virtuais 14
  • 15. Como o Java funciona Compilador Máquinas Virtuais Código-fonte Saída (código) 15
  • 17. Funcionamento com Máquina Virtual A aplicação roda sem envolvimento com o Sistema Operacional. Conversa apenas com a Máquina Virtual. 17
  • 18. Java Virtual Machine (JVM) Mas o que são Bytecodes? Código binário gerado pelo compilador Java. A origem do nome decorre do fato de que cada código de operação da máquina virtual gasta apenas um byte. São códigos binários independentes de plataforma e executados pela Máquina Virtual Java (JVM). Texto contendo código escrito em linguagem Java é traduzido em bytecode através do processo de compilação e armazenado em um arquivo .class chamado de classe Java. Detalhe importante: Cada arquivo .class é nomeado de acordo com o nome correspondente no arquivo .java. 18
  • 19. Java Virtual Machine (JVM) Fonte: argonavis.com.br 19
  • 20. Java Virtual Machine (JVM) Observe as etapas: Loader, Verifier e Run Fonte: argonavis.com.br 20
  • 21. Carregador de classes (ClassLoader) e CLASSPATH ClassLoader Realiza o carregamento das classes necessárias para rodar a aplicação. CLASSPATH Variável de ambiente que contém os caminhos onde o ClassLoader pode localizar classes. Pode ser definido através de parâmetros do comando java. Verificação de Bytecodes Antecede a execução do código em classes carregadas através da rede. Usado para verificação de applets e de aplicativos que baixam bytecodes de uma rede. Testa o formato dos fragmentos de código e verifica a existência de algum código ilegal. 21
  • 22. Hotspot e JIT Hotspot Tecnologia para detecção de “pontos quentes” da aplicação, ou seja, código que é bastante executado. JIT – Just In Time Compiler Compilador que é usado “bem na hora” que precisamos, ou seja, quando um “ponto quente” é detectado. Pode-se durante a execução, mudar a estratégia de compilação para melhorar a performance. É possível que, em aplicações que rodem por um certo tempo, tenhamos compilações Java com performance melhor que compilações em C. 22
  • 23. Estrutura do programa Java Pode conter os seguintes elementos: Especificação de pacote (package); Especificação de importação (import); Declaração de classe (class); Declaração de interface (interface). // HelloWorld.java public class HelloWorld { public static void main(String args[]) { System.out.println("Hello, World!"); } } 23
  • 24. Estrutura do programa Java Classe Classe é uma coleção de dados e métodos que operam sobre esses dados Palavra reservada class seguida do nome da classe O arquivo .java deve ter nome idêntico ao de uma classe contida nele Classes não são os objetos que representam A planta de uma casa não é uma casa // Loja.java class Loja Classe { // Atributos Atributos ... // Métodos Métodos ... } 24
  • 25. Estrutura do programa Java Atributos class Loja Loja { // Atributos id : int int id; sigla : String String sigla, descricao; descricao : String // Métodos stringLoja() : String String stringLoja() { ... } } 25
  • 26. Estrutura do programa Java Métodos Tipo de retorno do método seguido do nome do método e, então, de sua lista de parâmetros Class Loja Loja { id : int // Atributos sigla : String int id; descricao : String String sigla, descricao; // Métodos stringLoja() : String String stringLoja() { return id + " " + sigla + " " + descricao; } } 26
  • 27. Estrutura do programa Java Método main( ) Permite execução direta através da linha de comando; Deve obrigatoriamente ter a assinatura: public static void main(String[] args) O retorno do método main é do “tipo” void. O argumento é um Array formado por Strings passadas na linha de comando: 27
  • 28. Estrutura do programa Java Método main( ) Exemplo: public class OlaMundo { public static void main(String[] args) { System.out.println("Olá, Mundo!"); } } 28
  • 29. Compilando e executando o programa Compilando: Use o java compiler (javac) javac NomedaClasse.java Executando: Use o interpretador java (faz parte do JRE) java NomedaClasse 29
  • 30. Coleta de Lixo Conhecida como garbage collection. Ao contrário de C++, em Java o programador não precisa destruir de forma explícita os objetos que não serão mais necessários. Gerenciamento de memória explícito é tedioso e muito suscetível a erros. Garbage collection é responsável pela destruição de todos os objetos que não estão sendo utilizados. Um objeto está pronto para a coleta de lixo quando não existir mais nenhuma referência para ele. A capacidade de desalocar memória automaticamente exige uma complexidade muito superior à de gerenciadores manuais. 30
  • 31. Funcionamento da Coleta de Lixo O interpretador verifica periodicamente quais objetos alocados não estão mais sendo referenciados e os destrói; É capaz de detectar e destruir ciclos de objetos que se referenciam mutuamente, mas que não são referenciados por nenhum outro objeto; É executado como uma thread de baixa prioridade. Geralmente realiza sua tarefa quando o sistema está ocioso; Exceto quando o interpretador fica sem memória. 31
  • 32. Coleta de Lixo (imagens valem mais que mil palavras) ... m = "A"; ... n = m; m = "A"; p = "B"; n = m; n = null; p = "B"; p = "C"; ... ... 32 Fonte: argonavis.com.br
  • 33. Exercício Vamos preparar nosso ambiente de desenvolvimento! É preciso instalar: Nosso SDK (JDK) – Que já vem com: JRE e JVM; http://java.sun.com/javase/downloads/index.jsp Nosso ambiente (IDE) – Para isso temos duas grandes opções: Netbeans (Sun); Eclipse (Eclipse Foundation); http://www.eclipse.org/downloads/ 33