SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Introdução à Plataforma Java




                  
                                    Prof. Nécio de Lima Veras
                     http://lattes.cnpq.br/8284657916723590
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 (IFCE-Tianguá).



                                       Prof. Nécio Veras
Visão Geral




          
                            Prof. Nécio de Lima Veras
             http://lattes.cnpq.br/8284657916723590
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;                            Prof. Nécio Veras
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;

                                                                          Prof. Nécio Veras
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;


                                                          Prof. Nécio Veras
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, ...

                                                 Prof. Nécio Veras
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.

                                                                 Prof. Nécio Veras
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




                                                 Prof. Nécio Veras
Plataforma J2SE


JRE – Java
Runtime
Environment



SDK –
Software
Development
Kit




                                Prof. Nécio Veras
Entendendo o Java




             
                               Prof. Nécio de Lima Veras
                http://lattes.cnpq.br/8284657916723590
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

                                                 Prof. Nécio Veras
Java Virtual Machine (JVM)


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




                                           Fonte: Tutorial da Sun



                                               Prof. Nécio Veras
Como o Java funciona




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



                                       Prof. Nécio Veras
Como o Java funciona




               Compilador
                                             Máquinas
                                              Virtuais


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


                                       Prof. Nécio Veras
Funcionamento sem Máquina Virtual




                        Prof. Nécio Veras
Funcionamento com Máquina Virtual


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




                                          Prof. Nécio Veras
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.
                                               Prof. Nécio Veras
Java Virtual Machine (JVM)




                        Fonte: argonavis.com.br




                     Prof. Nécio Veras
Java Virtual Machine (JVM)



Observe as etapas: Loader, Verifier e Run




                                            Fonte: argonavis.com.br




                                            Prof. Nécio Veras
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.                         Prof. Nécio Veras
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.

                                                  Prof. Nécio Veras
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!");
      }
  }


                                               Prof. Nécio Veras
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
                                               ...
                                             }

                                                          Prof. Nécio Veras
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() { ... }

                               }




                                                Prof. Nécio Veras
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;
                                     }

                                 }               Prof. Nécio Veras
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:




                                           Prof. Nécio Veras
Estrutura do programa Java


Método main( )
Exemplo:


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




                                           Prof. Nécio Veras
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


                                   Prof. Nécio Veras
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.
                                                          Prof. Nécio Veras
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.




                                                          Prof. Nécio Veras
Coleta de Lixo
     (imagens valem mais que mil palavras)

                             ...
...                          m =     "A";
m = "A";                     n =     m;
n = m;                       p =     "B";
p = "B";                     n =     null;
...                          p =     "C";
                             ...




                                   Prof. Nécio Veras
                                           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/
                                                   Prof. Nécio Veras

Mais conteúdo relacionado

Mais procurados

Unidade iii aula 02 - introdução ao java
Unidade iii   aula 02 - introdução ao javaUnidade iii   aula 02 - introdução ao java
Unidade iii aula 02 - introdução ao javaNécio de Lima Veras
 
Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipseFilipe Bezerra Sousa
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
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)Luis Borges Gouveia
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java BasicoJoel Lobo
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVMWilliam Gouvea
 
classes_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_javaclasses_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_javaBel Arts
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01Daniel Alves
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaRegis Magalhães
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBAdriano Teixeira de Souza
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma javaJunior Souza
 

Mais procurados (18)

Unidade iii aula 02 - introdução ao java
Unidade iii   aula 02 - introdução ao javaUnidade iii   aula 02 - introdução ao java
Unidade iii aula 02 - introdução ao java
 
Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipse
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
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)
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Curso Java Basico
Curso Java BasicoCurso Java Basico
Curso Java Basico
 
Aula1
Aula1Aula1
Aula1
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
classes_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_javaclasses_objetos_ e_cia_em_java
classes_objetos_ e_cia_em_java
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Manual
ManualManual
Manual
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJB
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 

Destaque

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 JaCaMoNé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 agentsNécio de Lima Veras
 
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...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-agentesNécio de Lima Veras
 

Destaque (9)

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
 
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
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
 
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...
 
Fundamentos do java
Fundamentos do javaFundamentos do java
Fundamentos do java
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
 

Semelhante a Introdução à Plataforma Java

Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01rollbackpt
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebCícero Quarto
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Aécio Costa
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Javaarmeniocardoso
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com JavaTI Infnet
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ideHeider Lopes
 

Semelhante a Introdução à Plataforma Java (20)

POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
Java 01
Java 01Java 01
Java 01
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
[OFICINA JAVA] - Conhecendo Java
[OFICINA JAVA] - Conhecendo Java[OFICINA JAVA] - Conhecendo Java
[OFICINA JAVA] - Conhecendo Java
 
Fundamentos Java - 01
Fundamentos Java - 01Fundamentos Java - 01
Fundamentos Java - 01
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Aula 1a.ppt
Aula 1a.pptAula 1a.ppt
Aula 1a.ppt
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide Web
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
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
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Java
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com Java
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ide
 

Mais de Nécio de Lima Veras

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 algoritmosNé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 inteligentesNécio de Lima Veras
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
Introdução aos Sistemas operacionais
Introdução aos Sistemas operacionaisIntrodução aos Sistemas operacionais
Introdução aos Sistemas operacionaisNécio de Lima Veras
 
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Nécio de Lima Veras
 
Conceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeConceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeNécio de Lima Veras
 
Fundamentos do java: estruturas de controle
Fundamentos do java: estruturas de controleFundamentos do java: estruturas de controle
Fundamentos do java: estruturas de controleNécio de Lima Veras
 

Mais 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
 
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
 
Introdução aos Sistemas operacionais
Introdução aos Sistemas operacionaisIntrodução aos Sistemas operacionais
Introdução aos Sistemas operacionais
 
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
 
Classes abstratas e interfaces
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfaces
 
Desenvolvimento ágil de software
Desenvolvimento ágil de softwareDesenvolvimento ágil de software
Desenvolvimento ágil de software
 
Internet: conceitos e segurança
Internet: conceitos e segurançaInternet: conceitos e segurança
Internet: conceitos e segurança
 
Conceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeConceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidade
 
Fundamentos do java: estruturas de controle
Fundamentos do java: estruturas de controleFundamentos do java: estruturas de controle
Fundamentos do java: estruturas de controle
 
Noções de Design Gráfico
Noções de Design GráficoNoções de Design Gráfico
Noções de Design Gráfico
 

Introdução à Plataforma Java

  • 1. Introdução à Plataforma Java     Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590
  • 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 (IFCE-Tianguá). Prof. Nécio Veras
  • 3. Visão Geral     Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590
  • 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; Prof. Nécio Veras
  • 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; Prof. Nécio Veras
  • 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; Prof. Nécio Veras
  • 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, ... Prof. Nécio Veras
  • 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. Prof. Nécio Veras
  • 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 Prof. Nécio Veras
  • 10. Plataforma J2SE JRE – Java Runtime Environment SDK – Software Development Kit Prof. Nécio Veras
  • 11. Entendendo o Java     Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590
  • 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 Prof. Nécio Veras
  • 13. Java Virtual Machine (JVM) Há implementações da JVM para as mais diversas plataformas Provê independência de plataforma Fonte: Tutorial da Sun Prof. Nécio Veras
  • 14. Como o Java funciona Código-fonte Saída Compilador (código) Máquinas Virtuais Prof. Nécio Veras
  • 15. Como o Java funciona Compilador Máquinas Virtuais Código-fonte Saída (código) Prof. Nécio Veras
  • 16. Funcionamento sem Máquina Virtual Prof. Nécio Veras
  • 17. Funcionamento com Máquina Virtual A aplicação roda sem envolvimento com o Sistema Operacional. Conversa apenas com a Máquina Virtual. Prof. Nécio Veras
  • 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. Prof. Nécio Veras
  • 19. Java Virtual Machine (JVM) Fonte: argonavis.com.br Prof. Nécio Veras
  • 20. Java Virtual Machine (JVM) Observe as etapas: Loader, Verifier e Run Fonte: argonavis.com.br Prof. Nécio Veras
  • 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. Prof. Nécio Veras
  • 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. Prof. Nécio Veras
  • 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!"); } } Prof. Nécio Veras
  • 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 ... } Prof. Nécio Veras
  • 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() { ... } } Prof. Nécio Veras
  • 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; } } Prof. Nécio Veras
  • 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: Prof. Nécio Veras
  • 28. Estrutura do programa Java Método main( ) Exemplo: public class OlaMundo { public static void main(String[] args) { System.out.println("Olá, Mundo!"); } } Prof. Nécio Veras
  • 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 Prof. Nécio Veras
  • 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. Prof. Nécio Veras
  • 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. Prof. Nécio Veras
  • 32. Coleta de Lixo (imagens valem mais que mil palavras) ... ... m = "A"; m = "A"; n = m; n = m; p = "B"; p = "B"; n = null; ... p = "C"; ... Prof. Nécio Veras 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/ Prof. Nécio Veras