LINGUAGEM JAVA - Capítulo 1 - Introdução - DAINF

Propaganda
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
Download