Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java 02 Iniciando Uso Java

2,691 views

Published on

  • Be the first to comment

Java 02 Iniciando Uso Java

  1. 1. Iniciando o uso do Java <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
  2. 2. Roteiro <ul><li>Java Virtual Machine (JVM) </li></ul><ul><li>Carregador de classes (ClassLoader) e CLASSPATH </li></ul><ul><li>Verificador de bytecodes </li></ul><ul><li>Instalação do Kit de Desenvolvimento Java (J2SDK) </li></ul><ul><li>Estrutura do programa Java </li></ul><ul><ul><li>Classe </li></ul></ul><ul><ul><li>Atributos </li></ul></ul><ul><ul><li>Métodos </li></ul></ul><ul><ul><li>Método main() </li></ul></ul><ul><li>Compilando o programa </li></ul><ul><li>Executando o programa </li></ul><ul><li>Coleta de lixo </li></ul>
  3. 3. Java Virtual Machine (JVM) <ul><li>Java Virtual Machine (JVM) </li></ul><ul><ul><li>É um computador de mentira. </li></ul></ul><ul><ul><li>É o interpretador de código binário java. </li></ul></ul><ul><ul><li>Utilizada para executar o programa já compilado. </li></ul></ul><ul><ul><li>Mapeia as instruções do bytecode para código específico da plataforma em que ele está sendo executado. </li></ul></ul><ul><li>Compilação => Interpretação </li></ul>Fonte: Tutorial da Sun
  4. 4. Java Virtual Machine (JVM) <ul><ul><li>Há implementações da JVM para as mais diversas plataformas </li></ul></ul><ul><ul><ul><li>Provê independência de plataforma </li></ul></ul></ul>Fonte: Tutorial da Sun
  5. 5. Funcionamento sem Máquina Virtual
  6. 6. Funcionamento com Máquina Virtual <ul><li>A aplicação roda sem envolvimento com o Sistema Operacional. </li></ul><ul><ul><li>Conversa apenas com a Máquina Virtual. </li></ul></ul>
  7. 7. Java Virtual Machine (JVM) <ul><li>Bytecodes </li></ul><ul><ul><li>Código binário gerado pelo compilador Java. </li></ul></ul><ul><ul><li>A origem do nome decorre do fato de que cada código de operação da máquina virtual gasta apenas um byte. </li></ul></ul><ul><ul><ul><li>Há menos de 256 operações possíveis. </li></ul></ul></ul><ul><ul><li>São códigos binários independentes de plataforma e executados pela Máquina Virtual Java (JVM). </li></ul></ul><ul><ul><li>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 . </li></ul></ul><ul><ul><li>Cada arquivo .class é nomeado de acordo com o nome correspondente no arquivo .java . </li></ul></ul>
  8. 8. Java Virtual Machine (JVM) Fonte: argonavis.com.br
  9. 9. Java Virtual Machine (JVM) <ul><ul><li>A forma de execução de uma aplicação depende: </li></ul></ul><ul><ul><ul><li>da origem do código a ser executado (remoto ou local) </li></ul></ul></ul><ul><ul><ul><li>da forma como foi implementada a JVM pelo fabricante </li></ul></ul></ul>Fonte: argonavis.com.br
  10. 10. Carregador de classes (ClassLoader) e CLASSPATH <ul><li>ClassLoader </li></ul><ul><ul><li>Realiza o carregamento das classes necessárias para rodar a aplicação. </li></ul></ul><ul><li>CLASSPATH </li></ul><ul><ul><li>Variável de ambiente que contém os caminhos onde o ClassLoader pode localizar classes. </li></ul></ul><ul><ul><li>Pode ser definido através de parâmetros do comando java . </li></ul></ul><ul><li>Verificação de Bytecodes </li></ul><ul><ul><li>Antecede a execução do código em classes carregadas através da rede. </li></ul></ul><ul><ul><ul><li>Usado para verificação de applets e de aplicativos que baixam bytecodes de uma rede. </li></ul></ul></ul><ul><ul><ul><li>Testa o formato dos fragmentos de código e verifica a existência de algum código ilegal. </li></ul></ul></ul>
  11. 11. Hotspot e JIT <ul><li>Hotspot </li></ul><ul><ul><li>Tecnologia para detecção de “pontos quentes” da aplicação, ou seja, código que é bastante executado. </li></ul></ul><ul><li>JIT – Just In Time Compiler </li></ul><ul><ul><li>Compilador que é usado “bem na hora” que precisamos, ou seja, quando um “ponto quente” é detectado. </li></ul></ul><ul><li>Pode-se durante a execução, mudar a estratégia de compilação para melhorar a performance. </li></ul><ul><ul><li>É possível que, em aplicações que rodem por um certo tempo, tenhamos compilações Java com performance melhor que compilações em C. </li></ul></ul>
  12. 12. Estrutura do programa Java <ul><li>Pode conter os seguintes elementos: </li></ul><ul><ul><ul><li>Especificação de pacote (package); </li></ul></ul></ul><ul><ul><ul><li>Especificação de importação (import); </li></ul></ul></ul><ul><ul><ul><li>Declaração de classe (class); </li></ul></ul></ul><ul><ul><ul><li>Declaração de interface (interface). </li></ul></ul></ul>
  13. 13. Estrutura do programa Java <ul><li>Classe </li></ul><ul><ul><li>Classe é uma coleção de dados e métodos que operam sobre esses dados </li></ul></ul><ul><ul><li>Palavra reservada class seguida do nome da classe </li></ul></ul><ul><ul><li>O arquivo .java deve ter nome idêntico ao de uma classe contida nele </li></ul></ul><ul><ul><li>Classes não são os objetos que representam </li></ul></ul><ul><ul><ul><li>A planta de uma casa não é uma casa </li></ul></ul></ul>Atributos Métodos Classe // Loja.java class Loja { // Atributos ... // Métodos ... }
  14. 14. Estrutura do programa Java <ul><li>Classe </li></ul>
  15. 15. Estrutura do programa Java <ul><li>Membros </li></ul><ul><ul><li>Membros são os dados e métodos de uma classe </li></ul></ul><ul><ul><li>Membros de dados também são chamados atributos </li></ul></ul><ul><ul><li>Atributos normalmente são declarados antes de métodos </li></ul></ul><ul><li>Atributos </li></ul><ul><ul><li>Exceto dentro do corpo de métodos, os atributos podem ser declarados em qualquer lugar do corpo da classe </li></ul></ul><ul><ul><li>Tipo do atributo seguido do nome do atributo e “;” </li></ul></ul><ul><ul><ul><li>Exemplos: int x; float f; char c; </li></ul></ul></ul>
  16. 16. Estrutura do programa Java <ul><li>Atributos </li></ul>Loja id : int sigla : String descricao : String stringLoja() : String
  17. 17. Estrutura do programa Java <ul><li>Métodos </li></ul><ul><ul><li>Corpo de Método </li></ul></ul><ul><ul><ul><li>Variáveis internas ao método (locais) </li></ul></ul></ul><ul><ul><ul><li>Estruturas de controle </li></ul></ul></ul><ul><ul><ul><ul><li>Desvio </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>if-else / switch </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Loops </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>while / for </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>Tratamento de exceções </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>try-catch-finally </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Retorno do método </li></ul></ul></ul><ul><ul><ul><ul><li>Palavra-chave return seguida do tipo de retorno. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Se o método retorna void => Simplesmente return; ou nada. </li></ul></ul></ul></ul>
  18. 18. Estrutura do programa Java <ul><li>Métodos </li></ul>
  19. 19. Estrutura do programa Java <ul><li>Métodos </li></ul><ul><ul><li>Tipo de retorno do método seguido do nome do método e, então, de sua lista de parâmetros </li></ul></ul>Loja id : int sigla : String descricao : String stringLoja() : String
  20. 20. Estrutura do programa Java <ul><li>Método main( ) </li></ul><ul><ul><li>Permite execução direta através da linha de comando. </li></ul></ul><ul><ul><li>Deve obrigatoriamente ter a assinatura: </li></ul></ul><ul><ul><ul><li>public static void main(String[] args) </li></ul></ul></ul><ul><ul><li>O parâmetro args contém a lista de parâmetros passados através da linha de comando. </li></ul></ul>
  21. 21. Estrutura do programa Java <ul><li>Método main( ) </li></ul><ul><ul><li>O retorno do método main é do “tipo” void . </li></ul></ul><ul><ul><li>O argumento é um Array formado por Strings passadas na linha de comando: </li></ul></ul>Fonte: argonavis.com.br
  22. 22. Estrutura do programa Java <ul><li>Método main( ) </li></ul><ul><ul><li>Exemplo: </li></ul></ul>
  23. 23. Compilando o programa <ul><ul><li>Use o java c ompiler ( javac ) </li></ul></ul><ul><ul><ul><li>javac NomedaClasse.java </li></ul></ul></ul>
  24. 24. Executando um programa <ul><ul><li>Use o interpretador java (faz parte do JRE) </li></ul></ul><ul><ul><ul><li>java NomedaClasse </li></ul></ul></ul>
  25. 25. Coleta de Lixo <ul><ul><li>Conhecida como garbage collection . </li></ul></ul><ul><ul><li>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. </li></ul></ul><ul><ul><ul><li>Gerenciamento de memória explícito é tedioso e muito suscetível a erros. </li></ul></ul></ul><ul><ul><ul><li>Permite que o programador se concentre nos algoritmos que desenvolve. </li></ul></ul></ul><ul><ul><li>Garbage collection é responsável pela destruição de todos os objetos que não estão sendo utilizados. </li></ul></ul><ul><ul><li>Um objeto está pronto para a coleta de lixo quando não existir mais nenhuma referência para ele. </li></ul></ul><ul><ul><li>A capacidade de desalocar memória automaticamente exige uma complexidade muito superior à de gerenciadores manuais. </li></ul></ul>
  26. 26. Coleta de Lixo <ul><ul><li>O interpretador verifica periodicamente quais objetos alocados não estão mais sendo referenciados e os destrói </li></ul></ul><ul><ul><li>O Coletor de Lixo de Java </li></ul></ul><ul><ul><ul><li>É capaz de detectar e destruir ciclos de objetos que se referenciam mutuamente, mas que não são referenciados por nenhum outro objeto; </li></ul></ul></ul><ul><ul><ul><li>É executado como uma thread de baixa prioridade. </li></ul></ul></ul><ul><ul><ul><ul><li>Geralmente realiza sua tarefa quando o sistema está ocioso; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Exceto quando o interpretador fica sem memória. </li></ul></ul></ul></ul><ul><ul><li>A coleta de lixo juntamente com a ausência de manipulação de ponteiros são fatores de segurança, pois evitam que crashes e leaks ocorram pelo uso indevido da memória, tornando a aplicação mais robusta. A coleta ainda é fator de produtividade, eliminando o esforço de liberação manual de memória. </li></ul></ul>
  27. 27. Coleta de Lixo Fonte: argonavis.com.br
  28. 28. Coleta de Lixo
  29. 29. Coleta de Lixo Fonte: http://java.sun.com/developer/technicalArticles/ALT/RefObj/ Java Heap
  30. 30. Por que Java? <ul><li>Aplicações de médio e grande porte. </li></ul><ul><li>Uso em ambientes heterogêneos multi-plataforma. </li></ul><ul><li>Enorme quantidade de bibliotecas gratuitas para os mais diversos trabalhos: </li></ul><ul><ul><li>Relatórios; </li></ul></ul><ul><ul><li>Gráficos; </li></ul></ul><ul><ul><li>Sistemas de busca; </li></ul></ul><ul><ul><li>Geração de código de barras; </li></ul></ul><ul><ul><li>Manipulação de XML; </li></ul></ul><ul><ul><li>Tocadores de áudio/vídeo; </li></ul></ul><ul><ul><li>Impressão; </li></ul></ul><ul><ul><li>Etc. </li></ul></ul>
  31. 31. Resumo <ul><li>Fases de um programa Java: </li></ul><ul><ul><li>Edição </li></ul></ul><ul><ul><li>Compilação ( javac ) </li></ul></ul><ul><ul><li>Execução ( java ) </li></ul></ul><ul><ul><ul><li>Carregamento de classes </li></ul></ul></ul><ul><ul><ul><li>Verificação de bytecodes (classes remotas) </li></ul></ul></ul><ul><ul><ul><li>Interpretação ou Tradução JIT </li></ul></ul></ul>Fonte: argonavis.com.br
  32. 32. Resumo <ul><li>Estrutura de um programa Java: </li></ul><ul><ul><li>Classe </li></ul></ul><ul><ul><li>Atributos </li></ul></ul><ul><ul><li>Métodos </li></ul></ul><ul><li>A coleta de lixo em Java é automática </li></ul>Class Loja { // Atributos int id; String sigla, descricao; // Métodos String stringLoja() { ... } } Loja id : int sigla : String descricao : String stringLoja() : String
  33. 33. Referências e Recursos <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>Thinking in Java (3rd Edition) </li></ul></ul><ul><ul><ul><li>http://www.bruceeckel.com </li></ul></ul></ul><ul><ul><li>Core Java 2 – Volume I – Cay S. Horstmann e Gary Cornell. </li></ul></ul><ul><ul><li>Computer Organization </li></ul></ul><ul><ul><ul><li>http://www.dickinson.edu/~braught/courses/cs251f00/classes/notes04.html </li></ul></ul></ul><ul><ul><li>The Java Virtual Machine </li></ul></ul><ul><ul><ul><li>http://occs.cs.oberlin.edu/faculty/jdonalds/210/lecture25.html </li></ul></ul></ul><ul><ul><li>The lean, mean, virtual machine </li></ul></ul><ul><ul><ul><li>http://www.javaworld.com/javaworld/jw-06-1996/jw-06-vm_p.html </li></ul></ul></ul>

×