Java 02 Iniciando Uso Java

2,612 views
2,458 views

Published on

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

No Downloads
Views
Total views
2,612
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
167
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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>

×