Introdução a linguagem Java Prof: Leo Cabral - Larback E-mail: [email protected] Esta apresentação foi elaborada pelo professor Thiago Moreira - [email protected] A História de Java Muitas pessoas acreditam que os microprocessadores terão um grande impacto nos dispositivos eletrônicos destinados ao consumidor final. Reconhecendo isso a Sun Microsystems financiou uma pesquisa corporativa interna com o codinome Green em 1991. A História de Java O Projeto resultou no desenvolvimento de um linguagem baseada em C e C++ Seu criador James Goling, chamou de Oak (carvalho) – Homenagem a uma árvore que dava para a janela do seu escritório da Sun. Na época já existia uma linguagem de programação chamada Oak. Até que uma equipe da Sun visitou uma cafeteria local, o nome Java (cidade de origem de um tipo de café importado) foi sugerido e pegou. A História de Java O projeto Green atravessava grandes dificuldades. Na época o mercado para dispositivos eletrônicos inteligentes não vingava. Pior ainda, um contrato importante pela qual a Sun competia fora concedido a outra empresa. O projeto corria sério risco de cancelamento. A História de Java A World Wide Web explodiu em popularidade em 1993. Possibilidade para a Sun explorar o potencial de utilizar Java para criar páginas da web com o chamado conteúdo dinâmico. Em maio 1995, a Sun anunciou Java formalmente em uma conferência importante. Java gerou um interesse imediato na comunidade comercial por causa do fenomenal interesse pela World Wide Web. A História de Java Devido ao sucesso da linguagem java hoje em dia ela é utilizada para: Criar páginas da Web com conteúdo dinâmico e interativo. Desenvolvimento de aplicativo corporativos de grande porte Aprimoramento de funcionalidades de servidores da World Wide Web. Fornecer aplicativos para dispositivos destinados ao consumidor (como telefones celulares, pagers e assistentes pessoais digitais) e para muitas outras finalidades. A História de Java 1998 1997 1994 1991 Surge o JDK 1.02 totalmente gratuíto Lançamento do Netscape Navigator 2.0 com suporte ao Java 1996 1995 Surge o Java 2 totalmente reformulado, novas Classes Apresentada a Comunidade no SunWorld 95 Grande crescimento da Internet, oportunidade de lançar o Java Grupo de pesquisa “Green”, na Sun Microsystems Aceitação de Java no mercado Aplicações embarcadas no mercado automotivo. Jogos eletrônicos para celulares. Aplicações em equipamentos para deficientes físicos. Internet Aplicações Desktop (Ganharam força) Diversos tipos de dispositivos móveis Aceitação de Java no mercado Percebendo o potencial do Java as gigantes IBM , ORACLE e obviamente a Sun investem pesado em Java. A IBM investiu 40 milhões no desenvolvimento do projeto Eclipse, ferramenta opensource para desenvolvimento JAVA. Da mesma maneira, a IBM investe na utilização do Linux. A Sun também criou sua ferramenta de desenvolvimento Java opensource. O NetBeans. A Oracle possibilita que stored procedures sejam totalmente escritas em Java. Criou a IDE de desenvolvimento JDeveloper para desenvolvimento em Java. Microsoft x Sun A Microsoft cria o J++, e o anuncia como a ferramenta Java da Microsoft. Segundo a Microsoft, o J++ reúne o poder da plataforma Windows à produtividade do Java. O J++ porém, utilizava a API do Windows para e feria a característica multiplataforma do Java. Os programas feitos para J++ não “rodariam” em outras plataformas, afinal era necessário a API do Win32. Microsoft x Sun A Sun processa a Microsoft por uso indevido da linguagem e ganha a causa. A Microsoft não pode mais utilizar o selo de compatibilidade do J++ com o Java. Microsoft x Sun A Microsoft, como sempre, sabe reconhecer uma boa idéia e resolve lançar sua própria plataforma de desenvolvimento. A plataforma .Net Baseada na sintaxe Java, a Microsoft cria uma nova linguagem, o chamado C#. A idéia é garantir uma migração de programadores Java para seu ambiente. Microsoft x Sun Os conceitos do .Net e Java são bastante diferentes e ambos bastante interessantes. Enquanto a plataforma Java prega: Uma linguagem para vários ambientes. A plataforma .Net prega várias linguagens em um único ambiente. A Microsoft está fazendo um grande esforço para que seus usuários migrem para a nova plataforma. E o Futuro ? A utilização de Java nas aplicações desktops e não apenas servidores está em franca expansão, fato que deixou James Gosling muito feliz no último JavaOne. Celulares e PDA´s utilizando Java estão concretizando a idéia da Sun de 14 anos atrás, isto é, a utilização em dispositivos eletrônicos. E o Futuro ? A Sun mudou sutilmente a estratégia da plataforma de modo que esta se torne conhecida também do homem comum, e não apenas dos desenvolvedores. E o Futuro ? A versão 1.5. do Java privilegia a facilidade de codificação para o programador, as novas características tornarão o desenvolvedor mais feliz. A impressão é que o consórcio que desenvolve o Java sabe que sua força vem principalmente do programador. Se souber respeitálo acredita-se que a meta de 15 milhões de desenvolvedores será alcançada. Plataforma Java J2SE - Java 2 Standard Edition Focado em aplicações para Desktop, conectividade com Banco de dados, interface gráfica etc... J2EE - Java 2 Enterprise Edition Focado em aplicações Corporativas, Aplicações Web distribuídas, Servlets, JSP, web-services etc... J2ME - Java 2 Micro Edition Focado em aplicações embarcadas(embutidas), PDA´s, celulares, além Java Card etc... Plataforma Java Certificações Java Fonte: http://www.sun.com/training/certification/java/java_progj2se.html Ferramentas de Desenvolvimento em Java Os desenvolvedores na tecnologia Java contam com diversas boas opções de software para ambiente de desenvolvimento integrado (IDE - integrated development environment), que vão do simples ao sofisticado, do gratuito ao caríssimo. NetBeans, Sun Java Studio, Borland JBuilder, IntelliJ IDEA, Oracle JDeveloper, Eclipse, etc... Recursos necessários para o desenvolvimento em Java Java Developer’s Kit; Compilador (Javac) Máquina Virtual Java (JVM) Visualizador de applets (appletviewer) Bibliotecas de desenvolvimento, API Javadoc - Gerador de documentação da API Editor de textos Onde encontrar http://java.sun.com/j2se/index.jsp Java Virtual Machine Java Virtual Machine A CDC (Connected Device Configuration) é voltada para aparelhos que possuem uma maior capacidade de processamento e armazenamento, como set-top boxes e sistemas automotivos. KVM (K Virtual Machine) => máquina virtual para CLDC Java HotSpot => ganhos de performance A CLDC (Connected Limited Device Configuration) é utilizada em aparelhos com capacidade de processamento e armazenamento reduzidos, como PDAs, pager´s e telefones celulares. Possui, geralmente, restrições quanto o consumo de energia, conexão à rede e telas de tamanho reduzido. Bibliotecas de classes Java Os programas em Java consistem em partes chamadas classes. As classes são compostas de métodos que realizam tarefas e retornam ou não informações ao completarem suas tarefas. Permite programar cada pedaço que talvez seja necessário para criar um programa em Java. Classe: unidade de compilação Arquivo fonte : Nome1.java Arquivos executáveis: class Nome1.class public class Nome1 { bytecodes Nome2.class class Nome2 {... bytecodes Um primeiro programa em Java: Imprimindo uma linha de texto 1. // Um primeiro programa Java. 2. 3. 4. public class BemVindo { 5. 6. 7. 8. 9. // O método main inicia a execução do aplicativo Java public static void main( String [ ] args ) { System.out.println( “Bem vindo a Programação em Java!" ); 10. 11. } // fim do método main 12. 13. } // fim da classe O que eu fiz? O programa feito anteriormente foi feito para exibir uma linha de texto. Java utiliza notações estranhas para os não programadores. A linha 9 faz o trabalho real do programa 9. System.out.println( “Bem vindo a Programação em Java!" ); Revisando meu primeiro programa 1. // Um primeiro programa Java. // Indica que o restante da linha é um comentário /*Esse é um comentário de múltiplas linhas ele pode ser dividido em várias linhas*/ Revisando meu primeiro programa 4. public class BemVindo { Inicia uma definição de classe para a classe Bem Vindo. Cada programa Java consiste em pelo menos uma definição de classe que é definida por você – programador. A chave a esquerda {, inicia o corpo da definição da classe. A chave direita (na linha 13 desse programa), }, termina a definição da classe. Revisando meu primeiro programa 7. public static void main( String [ ] args ) A linha 7 faz parte de todo o aplicativo Java. Os aplicativos Java começam a execução por main. Os parênteses depois de main indicam que main é um bloco de construção de programa denominado método. A chave a esquerda na linha 8 {, inicia o corpo da definição do método. A chave direita (na linha 11 desse programa), }, termina a definição do método. Revisando meu primeiro programa 9. System.out.println( “Bem vindo a Programação em Java!" ); A linha 9 instrui o computador a realizar uma ação, a saber, imprimir o String de caracteres contido entre aspas duplas. System.out é conhecido como objeto de saída padrão. O método System.out.println exibe (ou imprime) uma linha de texto na janela de comando. 11. } // fim do método main 12. 13. } // fim da classe Compilando e executando seu primeiro aplicativo Java Compilando javac BemVindo.java Executando java BemVindo Saída esperada: Bem vindo a Programação em Java!" Estrutura de um programa em Java Composto por uma ou mais classes Cada classe é escrita em um arquivo fonte separado O arquivo fonte deve ter o mesmo nome da classe, com o sufixo .java Ex.: a classe BemVindo deve ser armazenada no arquivo BemVindo.java Em geral na plataforma J2SE, todas as classes que compõem um programa deverão estar no mesmo diretório Convenção para nomes Java, como C/C++ distingue entre letras maiúsculas e minúsculas Exemplo: bemvindo difere de Bemvindo (case sensitive) Nomes de classes iniciam com maiúscula Exemplo: class Bemvindo Nomes de variáveis iniciam com minúsculas Exemplo: int peso; Nomes de métodos são verbos que iniciam com minúscula e após usam maiúsculas Exemplo: alteraPeso Representação: Unicode (16 bits - 65.536 caracteres) Membros de classes Uma classe possui como membros os campos de dados e os métodos. Uma classe pode conter apenas dados. Uma classe pode conter apenas métodos. Se uma classe possui um método main com a assinatura padrão, ela é considerada um programa. Nomeando Variáveis Os nomes de variáveis não podem começar com um número; Não se pode fazer: int 8position; O que se pode fazer: int position8; Exemplos de declaração de variáveis int ano = 1998; boolean sair; int idade, altura, largura; String nome = “Pedro”; Tipos Primitivos Tipo boolean char byte short int long bits 8 16 8 16 32 64 float double 32 64 Valores true ou false ‘\u0000’ a ‘\uFFFF’ -128 a +127 -32768 a +32767 -2.147.483.648 a +2.147.483.647 -9.223.372.036.854.775.808 +9.223.372.036.854.775.807 0.2329, -654.213, 78.9 35423.4589, 9999999 Operadores Aritméticos Operador + * / % + ++ -- significado exemplo Adição a+b Subtração a-b Multiplicação a*b Divisão a/b Resto da divisão inteira a % Sinal negativo -a Sinal positivo +a Incremento unitário a++ Decremento unitário a -- Operadores Relacionais Operador == != > >= < <= significado Igual Diferente Maior que Maior ou igual a Menor que Menor ou igual a exemplo a == b a != b a>b a >= b a<b a <= b Operadores Lógicos Operador && || ! significado E lógico (and) OU lógico (or) Negação (not) exemplo a && b a || b !a Operadores de Atribuição Suponha que c = 10. Expressão de Exemplo Explicação Atribui c += 7 c -= 4 e *= 2 c /= 5 g %= 3 c=c+7 c=c-4 c=c*2 c=c/5 c=c%3 17 a c 6ac 20 a c 2ac 1ac Operadores de Incremento e Decremento Operador Chamado de ++ ++ --- Expressão de exemplo pré-incremento pós-incremento pré-decremento pós-decremento ++a a++ --b b-- Operadores de Incremento e Decremento Suponha que c = 5. System.out.println(c); System.out.println(c++); System.out.println(c); System.out.println(++c); System.out.println(c); //imprime 5 //imprime 5 depois pós-incrementa //imprime 6 //imprime 7 depois pré-incrementa //imprime 7 Estrutura de seleção if /else if (condição){ instruções } if (x < y){ System.out.println(“ x é menor que y”); }else{ System.out.println(“ x não é menor que y”); } if (x == y ){ System.out.println(“x é igual a y”); } Estrutura de controle switch switch (teste){ case ‘A’: resultUm; break; case ‘B’: resultDois; break; default: defaultresult; } Estrutura de repetição for for (int i = 0; i < str.length(); i++){ System.out.println(“Satisfaz condição”); } Estrutura de repetição while while (condição){ corpo do Loop; } int i = 0; boolean sair = false; while (!sair){ System.out.println(“Ficar...”); i++; if ( i >= 10 ){sair = true;} } Estrutura de repetição do/while //Sem chaves do instrução while (condição); //Com chaves do { instrução }while (condição); //Exemplo do{ System.out.println(“Ficar...”); i++; if ( i >= 10 ){sair = true;} }while (!sair); Instruções rotuladas break e continue //Exemplo de stop stop:{ for (condição){ if (condiçao){ break stop; //pula para o fim do bloco stop } } } //Exemplo de continue for (int contador = 1; contador <= 10; contador++){ if (contador == 5){ continue; //pula o código restante do laço } System.out.println(“O contador está em:” + contador); } Exercício 1.1 Escreva uma instrução Java para realizar cada uma das seguintes tarefas. Declarar que as variáveis sum e x são de tipo int. Atribuir 1 à variável x. Atribuir 0 à variável sum. Adicionar a variável x à variável sum e atribua o resultado a variável sum. Imprimir “A soma é:” e depois o valor da variável sum. Respostas do exercício 1.1 Declarar que as variáveis sum e x são de tipo int. Atribuir 1 à variável x. sum = 0; Adicionar a variável x à variável sum e atribua o resultado a variável sum. x = 1; Atribuir 0 à variável sum. int sum, x; sum += x ; ou sum = sum + x; Imprimir “A soma é:” e depois o valor da variável sum. System.out.println(“A soma é:” + sum); Exercício 1.2 Combine as instruções que você escreveu no exercício 1.1 em um aplicativo Java que calcula e imprime a soma dos inteiros de 1 a 10. Utilize a estrutura while para repetir as instruções de cálculo e incremento. O laço deve terminar quando o valor de x se tornar 11. Respostas do exercício 1.2 //Calcula a soma dos inteiros de 1 a 10 public class Calculadora { public static void main( String [ ] args) { int sum, x; x = 1; sum = 0; while ( x < = 10){ sum += x; ++x; } System.out.println(“ A soma é:” + sum); } }