LINGUAGEM DE PROGRAMAÇÃO JAVA Curso de Especialização em Tecnologia Java – UTFPR Linguagem de Programação Java Capítulo 1 – Parte 1 Introdução à tecnologia Java Ambiente de desenvolvimento Java Linguagem de Programação Java Introdução à Tecnologia Java O que é “Java”? Java é uma iniciativa da Sun (meados da década de 1990) ⇒ criar uma plataforma para equipamentos eletrônicos simples (aparelhos domésticos, portáteis, etc.) Java é uma linguagem de programação orientada a objetos ⇒ paradigma de programação muito utilizado atualmente Java possui um extenso conjunto de bibliotecas de classes para desenvolvimento de aplicações Linguagem de Programação Java Introdução à Tecnologia Java Java é um conjunto de tecnologias voltadas para diversos tipos de aplicações Aplicações “desktop” ⇒ Java Standard Edition (Java SE) Aplicações corporativas ⇒ Java Enterprise Edition (Java EE), Enterprise Java Beans (EJB) Aplicações web ⇒ Java Server Pages, servlets, struts, JSF, etc. Aplicações móveis ⇒ Java Micro Edition (Java ME) Suporte a aplicações de banco de dados ⇒ JDBC, etc. Linguagem de Programação Java Introdução à Tecnologia Java Quais são as características/vantagens de Java? Independência de plataforma ⇒programas Java são executados sobre uma máquina virtual Java (JVM), que faz a ponte entre código Java compilado e código nativo da máquina-alvo Plataforma Java (JVM + API) isola o programa do hardware Linguagem de Programação Java Introdução à Tecnologia Java Linguagem de Programação Java Linguagem de Programação Java Java apresenta evolução do código OO em relação a C++ Coleta de lixo automática Verificação da integridade de arrays ⇒ sem aritmética de ponteiros Processo de compilação mais rigoroso Noção de interface em substituição à herança múltipla ⇒ evitando o “diamante da morte”… Linguagem de Programação Java Linguagem de Programação Java Portabilidade JVM isola as especificidades da plataforma, permitindo que o código Java seja razoavelmente genérico Tipos primitivos são independentes de plataforma Suporte nativo a múltiplas linhas de execução Linguagem de Programação Java Linguagem de Programação Java Características da linguagem Orientada a objetos Interpretada (mas também compilada) Neutra em relação à arquitetura Portável Alto desempenho ⇒ com o apoio de técnicas tais como JIT (Just in Time Compiling) Multi-threaded Dinâmica ⇒ carga dinâmica de classes, etc. … Linguagem de Programação Java Ambiente de desenvolvimento Java O que é estritamente necessário para desenvolver um aplicativo em Java? JDK (Java Development Kit) ⇒ conjunto de ferramentas e bibliotecas (API) para desenvolvimento JRE (Java Runtime Environment) ⇒ ambiente de execução (classes e JVM) A instalação do JDK já inclui um JRE Linguagem de Programação Java Java 2 Platform, Standard Edition (Java SE) Ambiente completo para desenvolvimento de aplicações para desktops ⇒ especificado e fornecido pela Sun Microsystems Versão atual : Java 6 Update 18 What’s new in Java SE 6? http://java.sun.com/developer/technicalArticles/J2 SE/Desktop/javase6/beta2.html Informações e download em http://java.sun.com/javase/6 Instalação ⇒ seguir o wizard. Linguagem de Programação Java Etapas do desenvolvimento Java Edição de código fonte Pode ser utilizado qualquer editor Preferência por editores com syntax highlighting ⇒ Crimson Editor, Notepad ++, … Editores de IDEs ⇒ Eclipse, NetBeans, JBuilder, JDeveloper, BlueJ ⇒, … IDEs normalmente fornecem suporte muito mais sofisticado à programação (code completion, remoção de erros, editor para apps gráficas, depuração, etc.) Durante as aulas ⇒ Eclipse Europa ou NetBeans 6.x Recomenda-se o uso de um IDE ⇒ apresenta um ganho de produtividade em relação às ferramentas de linha de comando Linguagem de Programação Java Etapas do desenvolvimento Java Exigências básicas para edição Java Aplicação deve possuir uma classe principal ⇒ ponto de partida do programa Classe principal deve ser pública e ter o mesmo nome (case sensitive) do arquivo .java no qual está contida Exemplo: digitação de uma aplicação simples em Java ⇒ arquivo Exemplo1.java Linguagem de Programação Java Etapas do desenvolvimento Java - Edição public class Exemplo1 { public static void main (String[] args) { System.out.println(“Uma mensagem”); System.exit(0); } } Linguagem de Programação Java Etapas do desenvolvimento Java Compilação em linha de comando Utiliza-se o compilador javac.exe presente em {DIR J2SE}\bin Compilação disparada a partir do diretório do código-fonte, em linha de comando javac -cp . Exemplo1.java Arquivo Exemplo1.class é gerado ⇒ bytecode Java Opção -cp está relacionada à configuração do ambiente ⇒ caminho das classes pode ser definido com a variável de ambiente CLASSPATH Compilação em IDE Disparar o comando correspondente no sistema de menus Linguagem de Programação Java Etapas do desenvolvimento Java Execução / teste Em IDE Comando correspondente no menu. IDEs geralmente apresentam um depurador integrado Em linha de comando JVM deve ser disparada para execução do bytecode Exemplo1.class ⇒ executável java.exe No diretório do código-fonte java –cp . Exemplo1 Dependendo da conf. do ambiente ⇒ necessário opção –cp para configurar caminho das classes! Linguagem de Programação Java Etapas do desenvolvimento Java - Teste Linguagem de Programação Java Etapas do desenvolvimento Java Erros de compilação Em IDE Geralmente exibidos em janela (vista) apropriada Geralmente permitem chegar diretamente à linha com erro e, em alguns casos, possuem opções para correção automática do erro Em linha de comando Compilador exibe mensagens no console, mapeadas por linha do arquivo fonte Exemplo: substituir void no Exemplo1.java por Void. Linguagem de Programação Java Etapas do desenvolvimento Java Linguagem de Programação Java Etapas do desenvolvimento Java Depuração Em IDE Depuradores integrados com vários recursos Uma das principais vantagens sobre linha de comando Em linha de comando Pode-se utilizar o JDB (Java debugger) ⇒ uso difícil em linha de comando Linguagem de Programação Java Outras questões relativas ao ambiente Caminho das aplicações Incluir {DIR JAVASE}\bin no PATH do sistema operacional Caminho das classes Para o compilador e a JVM encontrarem outras classes, duas alternativas: incluir seu caminho na variável de ambiente CLASSPATH Utilizar opção –cp na linha de comando, seguido de caminhos separados por ; (: em Linux) Instalação de IDEs geralmente efetua as configurações automaticamente Linguagem de Programação Java Capítulo 1 – Parte 2 Fundamentos básicos de linguagem de programação Java Linguagem de Programação Java Tipos de dados básicos Identificador Tamanho (bits) Valores byte 8 -128…127 short 16 -215…215-1 int 32 -231…231-1 long 64 -263…263-1 char 16 Unicode float 32 IEEE 754 double 64 IEEE 754 boolean - true, false int tem sempre 32 bits, independente de arquitetura Alinhamento é sempre big-endian ⇒ padronização na troca de dados entre arquiteturas diferentes Linguagem de Programação Java Constantes Tipo Representação Numérica Algarismo numérico (decimal) ou valor hexa com 0x 8 3.1415 6.7E+9 0x4C String Entre aspas “teste” “xyz” “?>*” Boolean true ou false Caracter (Unicode) Entre aspas simples ou valor hexa com \u ‘A’ ‘8’ \uA815 Linguagem de Programação Java Operadores Tipo Representação Aritméticos + - / * % += -= /= *= (funcionam somente com tipos primitivos) Atribuição = (atribui valor para tipos primitivos) = (iguala referência para objetos) Incremento e decremento ++ -- Relacionais == != >= <= > < (não funcionam para boolean) Linguagem de Programação Java Operadores Tipo Representação Lógicos || && ! If-else ternário ? (Ex: return (a==b)? true: false; )e Concatenação + (funciona somente para String) Criação de objetos new Linguagem de Programação Java Operadores Conversão automática de tipo Se um dos operandos for double ⇒ resultado é double Se um dos operandos é float ⇒ resultado é float Se um dos operandos é long ⇒ resultado é long Possíveis perdas de precisão impedem a compilação ⇒ ex: atribuir um double a um int Linguagem de Programação Java Não é possível converter boolean para outro tipo Operadores Conversão explícita de tipo Ignora qualquer possível perda de precisão Sintaxe (novo tipo) dado Números de ponto flutuante são truncados para valores inteiros, não arredondados Exemplo ⇒ Teste03 Linguagem de Programação Java Elementos básicos de uma aplicação Java Toda aplicação Java tem uma classe principal ⇒ mesmo nome do arquivo que a contém A classe principal deve implementar o método (função) main ⇒ ponto de entrada de uma aplicação Java public static void main (String[] args) Linguagem de Programação Java Elementos básicos de uma aplicação Java Outras funções podem ser implementadas em uma classe ⇒ métodos Sintaxe de declaração de função ⇒ semelhante a linguagem C tipo_de_retorno nome (tipo1 p1, tipo2 p2, …, tipoN pN) Linguagem de Programação Java Elementos básicos de uma aplicação Java Chamada de métodos Se for na mesma classe ⇒ semelhante a C / C++ nome (arg1, arg2, …, argN) Se for de outra classe Métodos estáticos (não dependem de um objeto existir): classe.nome (arg1, arg2, …, argN) Métodos não estáticos (executados a partir de um objeto): objeto.nome(arg1, arg2, …, argN) Linguagem de Programação Java Elementos básicos de uma aplicação Java Classes da API Java ⇒ devem ser importadas import nome_da_classe Classes são organizadas em pacotes ⇒ níveis hierárquicos são separados por ponto (.) API Java? Documentação online em http://java.sun.com/javase/6/docs/api/inde x.html Linguagem de Programação Java Strings Define-se a classe String ⇒ não é tipo primitivo Operações importantes de String: Atribuição ⇒ operador = Concatenação ⇒ operador + Substring ⇒ método substring(i, n) Detalhe: primeiro índice da string é zero! Comparação de conteúdo ⇒ método equals(str) Outras operações length, toLowerCase, toUpperCase,… Exemplo ⇒ Teste04 Exemplo de referências para strings ⇒ Teste06 Linguagem de Programação Java Controle de fluxo if – else while do – while for break Linguagem de Programação Java Entrada via teclado Java não apresenta objeto padrão preparado para tratar entradas via teclado Uma alternativa Converter objeto System.in (entrada) para um objeto InputStreamReader Encapsular este objeto através de um BufferedReader Utilizar o método readLine para ler linhas fornecidas via teclado Exemplo ⇒ Teste02 Outra alternativa ⇒ utilizar classe Scanner ⇒ Teste02c Outra alternativa ⇒ classe Console Linguagem de Programação Java Exercício Conversor de intervalo de tempo (1 da lista) Números primos (2 da lista) Contador de palavras e de vogais (7 da lista) Sorteio (8 da lista) Torre de Hanói (9 da lista) ⇒ recursivo Linguagem de Programação Java Arrays Arrays são objetos em Java ⇒ instanciados com o operador new Arrays podem ser instanciados com tamanho dependente de uma variável ⇒ diferente de C/C++ Índices válidos vão de 0 a tam-1 ⇒ como em C/C++ Tamanho do array é obtido a partir da propriedade length Declaração de array tipo [] nome; Instanciação de array nome = new tipo[tamanho]; Linguagem de Programação Java Arrays Classe java.util.Arrays possui funções (métodos) úteis para manipulação de arrays: sort ⇒ classifica o array de acordo com um critério binarySearch ⇒ efetua busca binária de acordo com uma chave de busca fill ⇒ preenche um array com um valor equals ⇒ compara dois arrays Arrays podem ser argumentos de funções ⇒ passados por referência Arrays podem ser retorno de métodos (funções) Exemplo: método que calcula os números primos e os retorna em um array ⇒ Teste05 Linguagem de Programação Java Exercício Distâncias relativas entre cidades (3 da lista) Bubble-sort (4 da lista) Média da turma (10 da lista) Linguagem de Programação Java