JAVA HISTÓRICO A linguagem de programação Java foi criada em 1991 por James Gosling | Inicialmente I i i l t a linguagem li iria i i chamar-se h O k Oak (Carvalho) em referência a árvore que era visível pela janela de James Gosling. Gosling | A mudança de nome ocorreu pois já existia uma linguagem de programação com este nome, então a linguagem foi rebatizada para Java. | CARACTERÍSTICAS Linguagem de programação orientada a objetos; | Ambiente de desenvolvimento composto pelo compilador, il d interpretador, i t t d gerador d d de documentação e etc.; | Ambiente de execução que pode ser praticamente qualquer máquina que possua Java Runtime Environment (JRE) instalado; | A linguagem Java é muito familiar para os programadores p g C/C++ ; | CARACTERÍSTICAS Aplicações Java são executadas em ambiente próprio (JRE) o que inviabiliza a intrusão de código malicioso; | Programas desenvolvidos nesta linguagem podem ser executados em praticamente qualquer máquina desde que esta possua o JRE instalado; | MÁQUINA VIRTUAL JAVA - JVM A máquina virtual java (JVM) é uma máquina imaginária que emula uma aplicação em uma máquina real. real | É a JVM que permite a portabilidade do código Java isto ocorre porque todo código Java é Java, compilada para um formato intermediário, bytecode, este formato é então interpretado pela JVM. | Cada Sistema Operacional que tenha uma JVM instalada pode executar o código Java | COLETOR DE LIXO – GARBAGE COLLECTION | Em muitas das linguagens de programação, inclusive C e C++, a responsabilidade pela liberação do espaço que não mais será utilizado é do programador nem sempre é fácil gerenciar o que está e o que não está sendo utilizado y a má gerência da memória ocasiona muitas vezes o estouro de d pilha ilh (stack ( k overflow) fl ) entre outros problemas. y | Na linguagem de programação Java a responsabilidade pela gerência da memória é do Coletor de lixo ((Garbage g Collector)) FASES DE UM PROGRAMA JAVA 1. 2. 3. 4. Criação do código fonte (Programa.java); Compilação do código fonte e geração do b t d (Programa.class); bytecode (P l ) Interpretação do bytecode pela máquina virtual; C Conversão d do bytecode b d em li linguagem d de máquina. HOTSPOT | | As informações, f relativas ao ambiente no qual a aplicação está sendo executada, são utilizadas pela JVM para fazer otimizações em tempo de execução e havendo necessidade o código que está sendo interpretado é transformado em instruções nativas do sistema i t operacional i l (código ( ódi de d máquina) á i ) em um processo de compilação dinâmica. Esta transformação em tempo de execução é realizada pelo JIT, Just-in-time compiler. O fato do código (bytecode) ser transformado, em tempo de execução, em código de máquina permite que a JVM mude a estratégia de compilação em busca de um melhor desempenho, em um ciclo de “aprendizado” aprendizado contínuo. JRE E JDK JRE: O Java Runtime Environment contém tudo aquilo que um usuário comum precisa para executar uma aplicação Java (JVM e bibliotecas), bibliotecas) como o próprio nome diz é o “Ambiente de ç Java”;; execução | JDK: O Java Development Kit é composto pelo JRE e um conjunto de ferramentas úteis ao desenvolvedor Java. | VERSÕES DO JAVA | | | | | | | JDK 1.0 1 0 (1996): (1996) Primeira P i i versão; ã JDK 1.1 (1997): Adição das bibliotecas JDBC, RMI e etc; J2SE 1.2 ((1998)) - Playground: yg Ap partir daqui q todas as versões Java foram denominadas de Java 2 Standard Edition e foi adicionado o Framework Collections e etc.; J2SE 1.3 (2000) – Kestrel: Inclusão das bibliotecas JNDI, JNDI JavaSound e etc.; J2SE 1.4 (2002) – Merlin: Palavra reservada “assert”, biblioteca NIO e etc.; etc ; 6. J2SE 5.0 (2004) – Tiger: Apesar da versão ser 1.5, agora é chamada apenas de 5. Adições importantes como: E Enumeração, ã Autoboxing, A t b i g Generics, G i for-each f h e etc; t 7. JSE 6 (2006) – Mustang: Entre outras alterações houveram mudança na nomenclatura (remoção do 2 – J2SE) e melhora lh significativa i ifi ti na performance. f FERRAMENTAS DO JDK jjavac: Compilador C il d da d linguagem li Java; J | java: Interpretador Java; | jdb: jdb Debugador D b d Java; J | java -prof: Interpretador com opção para gerar estatísticas sobre o uso dos métodos; | javadoc: Gerador de documentação; |j jar: Ferramenta q que comprime, p , lista e expande; p ; | appletviewer: Permite a execução e debug de applets sem browser; | javap: Permite ler a interface pública das classes; | extcheck: Detecta conflitos em arquivos Jar. Jar | DEFINIÇÕES | | | | Classe: É a estrutura Cl t t que, quando d construída, t íd produzirá um objeto, dizemos “todo objeto é instância de alguma classe”; Objeto: Em tempo de execução, quando a JVM encontra a palavra reservada new é criada uma instância da classe apropriada; Estado: É definido pelo conjunto de atributos de uma classe, isto é, cada instância da classe possuirá um estado t d independente i d d t dos d d demais i objetos. bj t Comportamento: São os métodos da classe, comportamento p é aquilo q q que uma classe faz (algoritmos), muitas vezes, um determinado comportamento (método) muda o estado do objeto, isto é após a execução do método um ou mais atributos é, mudaram de valor; NOMENCLATURA | Identificadores válidos: Definem as regras para que o compilador identifique o nome como válido. válido 1 1. 2. 3. 4. 5. Devem iniciar com uma letra, letra cifrão ($) ou sublinhado/underscore (_); Após o primeiro caractere podem ter qualquer combinação de letras, caracteres e números; Não possuem limite de tamanho; Nã podem Não d ser palavras l reservadas; d Identificadores são case-sensitive isto é, “Nome” e “nome” nome são identificadores diferentes. NOMENCLATURA - EXEMPLOS CONVENÇÃO Ç DE NOMENCLATURA DA SUN 1. 2. 3. 4. Classes e interfaces: A primeira letra deve ser maiúscula e, caso o nome seja formado por mais de uma palavra palavra, as demais palavras devem ter sua primeira letra maiúscula também ( (camelCase); ); Métodos: A primeira letra deve ser minúscula e após devemos aplicar o camelCase; Variáveis: Da mesma forma que métodos; Constantes: Todas as letras do nome devem ser maiúsculas e caso seja formada por mais de uma palavra separada por underscore. CONVENÇÃO Ç DE NOMENCLATURA DA SUN - EXEMPLOS CONVENÇÃO JAVABEANS: 1. 2. 3. 4. 5. Se o atributo não for um booleano o método getter (utilizado para obter a variável) deve iniciar por “get”; get ; Se o atributo for um booleano o método getter pode iniciar por “get” get ou “is”; is ; O método setter (atribuição) da propriedade sempre deve iniciar por “set”; set ; O restante do nome deve ser o nome do atributo concatenado ao p prefixo ((is,, g get ou set)) em letra maiúscula; O método setter e getter sempre devem ser públicos. INSTALAÇÃO DO JDK | Download: D l d http://www.java.com/pt_BR/download/ JAVA_HOME: Indica o diretório onde foi p frameworks instalado o JDK,, muito utilizado por e por outros programas para localizar o JDK; | PATH: Identifica o local onde encontram-se as f ferramentas t d de d desenvolvimento l i t ((compilador, il d interpretador, gerador de documentação e etc.), devemos adicionar o diretório JAVA_HOME\bin;; | CLASSPATH: Identifica diretório onde o ClassLoader pode encontrar classes que são utilizadas tili d pela l sua aplicação. li ã | CONFIGURAÇÃO DE AMBIENTE | | | | | Clique com o botão direito em cima do ícone “Meu Meu Computador Computador”;; Vá em “Propriedades”; Selecione a aba “Avançado”; Clique q no botão “Variáveis de ambiente”;; Clique no botão “Nova” em “Variáveis do sistema”; y y y | Clique novamente no botão “Nova” em “Variáveis do sistema”; y y y | y y | Nome da variável: CLASSPATH Valor da variável: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME %JAVA HOME%\lib %JAVA HOME%\lib\ l j %JAVA HOME %\lib\dt.jar;%JAVA_HOME%\lib\htmlconverter.jar;%JAVA_HOME%\ jre\lib;%JAVA_HOME%\jre\lib\rt.jar Clique em OK Selecione a váriavel PATH em “Variáveis Variáveis do sistema sistema”;; y | Nome da variável: JAVA_HOME Valor da variável: Coloque aqui o endereço de instalação neste caso = C:\Arquivos de programas\Java\jdk1.5.0_05 Clique em OK Adicione o seguinte endereço ao campo Valor da variável: %JAVA_HOME%\bin Clique em OK; Clique em OK; Clique em OK. CONFIGURAÇÃO DE AMBIENTE CONFIGURAÇÃO DE AMBIENTE PRIMEIRO PROGRAMA TIPOS PRIMITIVOS, OPERADORES E CONTROLE DE FLUXO TIPOS DE DADOS CONVERSÕES ENTRE TIPOS JAVA OPERADORES OPERADORES OPERADORES OPERADORES CONTROLE DE FLUXO CONTROLE DE FLUXO CONTROLE DE FLUXO CONTROLE DE FLUXO | break e continue CONTROLE DE FLUXO | break e continue CONTROLE DE FLUXO ENTRADA DE DADOS //importe a classe Scanner para utilizar a leitura pelo teclado //Similar ao #include do C import java.util.Scanner; public class Leitura { p public static void main(String[] args) { // crie a variável de leitura dos dados Scanner s = new Scanner(System.in); // use os métodos de leitura específicos do tipo desejado System.out.print("digite uma linha: "); String linha = s.nextLine(); // le a linha S t System.out.print("digite t i t("digit um numero: "); ") int i = s.nextInt(); // le um inteiro System.out.print("digite um numero: "); double d = s.nextDouble(); // le um ponto ponto-flutuante flutuante System.out.print(" Primeira linha: "+linha); System.out.print(" Primeiro número: "+i); System.out.print(" Segundo número: « +d); } } EXERCÍCIOS ARRAYS UNIDIMENSIONAIS | | | | Arrays são objetos que armazenam múltiplas variáveis do mesmo tipo ou do mesmo sub-tipo Um array é um objeto que armazena um número pré-definido de elementos, isto é, o seu tamanho é definido no momento da sua construção. Seus elementos são acessados através de índices que iniciam-se sempre por 0 (zero), ou seja, um array de tamanho quatro terá índices 0, 1, 2 e 3. Exemplo: 1. int[] jogoSena; //Declaração 2. 3 jogoSena 3. j S = new int[6]; i t[6] //Criação //C i ã 4. 5. jogoSena[0] = 23; //Inicialização da posição 0 6 jogoSena[1] 6. j S [1] = 12; 12 //Inicialização //I i i li ã da d posição i ã 1 7. jogoSena[2] = 55; //Inicialização da posição 2 8. jogoSena[3] = 02; //Inicialização da posição 3 9 jogoSena[4] 9. j S [4] = 07; 07 //Inicialização //I i i li ã da d posição i ã 4 10.jogoSena[5] = 19; //Inicialização da posição 5 ARRAYS UNIDIMENSIONAIS | O t Outras formas f de d inicialização i i i li ã i t[] outroJogoSena int[] t J S = {23, {23 12, 12 55, 55 02, 02 07, 07 19}; 19} | No exemplo acima, acima acontecem quatro coisas em apenas uma linha: I. Declaração de uma referência a um array de inteiros chamado outroJogoSena; y II. Criação de um array com seis posições; y III.Inicialização III Inicialização das posições com os valores 23, 23 12, 12 55, 02, 07 e 19; y IV. Atribuição do novo objeto (array) a referência outroJogoSena; t J S y ARRAYS UNIDIMENSIONAIS | Para conhecer o tamanho total de um array basta você acessar o atributo length. Primeira P i i posição i ã (índice): (í di ) de d qualquer l array é sempre 0; y Última p posição ç ((índice): ) é sempre p o seu tamanho – 1 (length - 1). y ARRAYS MULTIDIMENSIONAIS | A função destes arrays é a mesma dos seus irmãos unidimensionais porém arrays multidimensionais permitem a construção de estruturas de dados mais ricas.