LINGUAGEM DE PROGRAMAÇÃO JAVA Curso de Especialização em Tecnologia Java UTFPR
Capítulo 1 Parte 1 Introdução à tecnologia Java Ambiente de desenvolvimento 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
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.
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
Introdução à Tecnologia 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
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
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.
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
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.
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
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
Etapas do desenvolvimento Java - Edição public class Exemplo1 { public static void main (String[] args) { System.out.println( Uma mensagem ); System.exit(0); } }
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
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!
Etapas do desenvolvimento Java - Teste
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.
Etapas do desenvolvimento 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
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
Capítulo 1 Parte 2 Fundamentos básicos de linguagem de programação Java
Tipos de dados básicos Identificador byte short int long char float double boolean Tamanho (bits) 8 16 32 64 16 32 64 - Valores -128 127-2 15 2 15-1 -2 31 2 31-1 -2 63 2 63-1 Unicode IEEE 754 IEEE 754 true, false in tem sempre 32 bits, independente de arquitetura Alinhamento é sempre big-endian padronização na troca de dados entre arquiteturas diferentes
Constantes Tipo Numérica String Boolean Caracter (Unicode) Representação Algarismo numérico (decimal) ou valor hexa com 0x 8 3.1415 6.7E+9 0x4C Entre aspas teste xyz?>* true ou false Entre aspas simples ou valor hexa com \u A 8 \ua815
Operadores Tipo Aritméticos Atribuição Incremento e decremento Relacionais Representação + - / * % += -= /= *= (funcionam somente com tipos primitivos) = (atribui valor para tipos primitivos) = (iguala referência para objetos) ++ -- ==!= >= <= > < (não funcionam para boolean)
Operadores Tipo Lógicos If-else ternário Concatenação Criação de objetos Representação &&!? (Ex: return (a==b)? true: false; )e + (funciona somente para String) new
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 Não é possível Linguagem converter de Programação Java 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
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)
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)
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)
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
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
Controle de fluxo if else while do while for break
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
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
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 Instanciação de array tipo [] nome; nome = new tipo[tamanho];
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
Exercício Distâncias relativas entre cidades (3 da lista) Bubble-sort (4 da lista) Média da turma (10 da lista)