Вы находитесь на странице: 1из 19

25/03/2009

Introdução a Java
Mário Meireles Teixeira
UFMA – DEINF

Tecnologia Java
z Java é tanto uma linguagem de programação de
alto nível quanto uma plataforma de desenvol-
desenvol
vimento de aplicações
z Java como linguagem de programação
z desenvolvimento de aplicações locais, centralizadas e
distribuídas
z desenvolvimento de aplicações cliente/servidor que
executam em browsers
z Java como ambiente de execução
z ambiente neutro (JRE – Java Runtime Environment)
para diferentes plataformas: SOs, browsers, celulares,
palmtops, eletrodomésticos...
Introdução a Java
2

1
25/03/2009

Linguagem Java
z Linguagem de programação orientada a objetos
z Familiar (sintaxe parecida com C)
z Simples e robusta (minimiza bugs, aumenta produtividade)
z Suporte nativo a threads (+ simples, maior portabilidade)
z Dinâmica (módulos, acoplamento em tempo de execução)
z Com coleta de lixo (menos bugs, mais produtividade)
z Independente de plataforma
z Segura (vários mecanismos para controlar segurança)
z Código intermediário de máquina virtual interpretado
(compilação rápida, execução + “lenta”, + produtividade no
desenvolvimento)
z Sintaxe uniforme, rigorosa quanto a tipos (código mais
consistente)

Introdução a Java
3

Linguagens OO: genealogia


ALGOL
1960

SIMULA C
1967 1972
Pascal
1973 SmallTalk
1980

ADA C++
1983 1985
Java
ADA 1995
Introdução a Java
1995
4

2
25/03/2009

Desenvolvimento de
programas

código processador código


fonte da linguagem objeto

código código
objeto executável

Introdução a Java
5

Implementação de LP
z Compilação
z geração de código executável
z dependente da plataforma de execução
z tradução lenta X execução rápida
z Interpretação pura
z sem geração de código
z execução lenta, independente de plataforma
z Híbrida
z geração de código intermediário
z independente de plataforma de execução
z tradução rápida X execução não muito rápida
Introdução a Java
6

3
25/03/2009

Ambiente de compilação e
execução
• Compilação: Programa Java é compilado para um código
intermediário conhecido como bytecode
• Execução: Bytecodes são interpretados pela JVM (Java
Virtual Machine) executada no ambiente hospedeiro –
arquitetura neutra
INTERNET
bytecode
fonte Browser
{HTML}
Interpretador interpretador
Compilador JAVA JAVA
JAVA
plataforma plataforma
Introdução a Java
local remota 7

Compilação x Interpretação
z Problema:
z Para ter flexibilidade e segurança, abre-se mão do tempo
de execução
z Um programa Java típico roda 10 vezes mais lento que um
programa equivalente em linguagem nativa

z Solução: JIT (Just-in-time compiling)


z Compiladores JIT convertem programas Java para
li
linguagem d
de máquina
á i nativati assim
i que os mesmos são ã
lidos
z Penalidade: a leitura dos programas se torna mais lenta
z Vantagem: execuções subseqüentes são mais rápidas

Introdução a Java
8

4
25/03/2009

Ambientes de execução e
desenvolvimento
z Java 2 System Development Kit (J2SDK)
z Coleção de ferramentas de linha de comando para
para, entre
outras tarefas, compilar, executar e depurar aplicações
Java
z Para habilitar o ambiente via linha de comando é preciso
colocar o caminho $JAVA_HOME/bin no PATH do
sistema
z Java Runtime Environment (JRE)
z Ambiente mínimo para executar aplicações Java
z Faz parte do J2SDK e das principais distribuições Linux,
MacOS X, AIX, Solaris, Windows 98/ME/2000 (exceto XP)

z Download: http://java.sun.com/javase/downloads/index.jsp
Introdução a Java
9

Interfaces de Programação de
Aplicações – APIs
z Java possui uma coleção de APIs (bibliotecas) padrão que
podem ser usadas para construir aplicações:
z Organizadas em pacotes (java.*, javax.* e extensões)
z Usadas pelos ambientes de execução (JRE) e de
desenvolvimento (SDK)

z As principais APIs são distribuídas juntamente com os


produtos para desenvolvimento de aplicações:
z Java 2 Standard Edition (J2SE): ferramentas e APIs essenciais
para qualquer aplicação Java (inclusive gráficas)
z Java 2 Enterprise Edition (J2EE): ferramentas e APIs para o
desenvolvimento de aplicações distribuídas
z Java 2 Micro Edition (J2ME): ferramentas e APIs para o
desenvolvimento de aplicações para aparelhos portáteis
Introdução a Java
10

5
25/03/2009

Ambientes Integrados de
Desenvolvimento – IDEs
z Existem diversos IDEs construídos a partir das
f
ferramentas
t básicas
bá i d
de d
desenvolvimento:
l i t
z ambientes baseados em janelas
z editores, visualizadores de classes, prototipação ...

z Exemplos: Eclipse, NetBeans (Sun), Visual Studio


(Microsoft), JBuilder (Borland), Visual Café
(S
(Symantec),
t ) JCreator,
JC t BlueJ,
Bl J jGRASP...
jGRASP

Introdução a Java
11

Programa Java: Classe


• Uma classe é um arquivo fonte (texto)

CLASSE Nome1

CLASSE
CLASSE
Nome
Nome1
mesmo Nome
N
CLASSE
Nome2
Nome.java
Um arquivo pode conter
várias classes Nome1.java
Introdução a Java
12

6
25/03/2009

Arquivos fonte e executáveis

Arquivo fonte : Escola.java Arquivos executáveis: class

Escola.class

public class Escola {{ bytecodes

Aluno class
Aluno.class

class Aluno { bytecodes

Introdução a Java
13

Convenção para Nomes


z Java, como C/C++, distingue entre letras maiúsculas e
minúsculas
z Exemplo: escola é diferente de Escola
z Nomes de classes iniciam com maiúscula
z Exemplo: class Bemvindo
z Nomes de variáveis iniciam com minúsculas
z Exemplo: int peso;
z Nomes de métodos são verbos que iniciam com minúscula e
depois usam
sam maiúsc
maiúsculas
las
z Exemplo: alteraPeso
z Representação: Unicode (16 bits - 65.536 caracteres)

Introdução a Java
14

7
25/03/2009

Compilação e Execução:
SDK – linha de comando
z Compilação: javac z Execução: java
z A partir do diretório local: z A partir do diretório local:
javac Nome.java java Nome
z Vai produzir: sendo Nome = nome do arquivo
z arquivos .class separados para .class que contém o main()
cada classe no arquivo .java z Executa a partir de main()
z coloca arquivos no diretório z ou com argumentos:
corrente
java Nome arg1,arg2, ...
z Lembrete: Autoexec.bat
SET PATH=C:\jdk1.5\bin z Lembrete: Autoexec.bat
SET CLASSPATH= C:\jdk1.5\lib

Introdução a Java
15

Execução de programas Java


HelloWorld.java

javac

Introdução a Java
16

8
25/03/2009

Verificação de bytecode
z Etapa que antecede a execução do código em
classes carregadas através da rede
z Class Loader distingue classes locais (seguras) de classes
remotas (potencialmente inseguras)

z Verificação garante:
z Aderência à especificação da JVM
z Não-violação de políticas de acesso estabelecidas pela
aplicação
z Não-violação da integridade do sistema
z Ausência de estouros de pilha
z Tipos de parâmetros corretamente especificados
z Ausência de conversões ilegais de tipos
Introdução a Java
17

Programa é criado em um
Editor editor e armazenado no
disco
disco
sso de Execução

Compilador gera os
Compilador bytecodes e os armazena no
disco
disco

_________ O carregador de classes –


Carregador de _________ Class Loader – coloca os
classes _________ bytecodes na memória
___

memória
disco

O verificador de bytecodes –
_________ Bytecodes Verifier –
Verificador de _________ confirma se todos os
bytecodes
y _________ bytecodes estão corretos e
Proces

___ não violam as restrições de


segurança da linguagem
Java
memória

_________
Interpretador _________ O interpretador lê os
_________ bytecodes e executa o
___ programa

Introdução a Java memória


18

9
25/03/2009

Programas JAVA
z Aplicações (puras)
z são
ã programas carregadosd e executados
t d
localmente pelo interpretador Java
z possuem acesso a todos os recursos do
ambiente local: diretórios, arquivos
z sempre contêm um método principal (main), de
onde se inicia a execução do programa
z podem fazer chamadas a programas em código
nativo (outras linguagens, como C, C++)

Introdução a Java
19

Programas Cliente/Servidor
z Applets: cliente
z são programas inseridos em páginas HTML e
executados pelo browser (interpretador Java)
z programas (classes) podem ser carregados
remotamente
z restrições de segurança: não podem acessar
recursos locais, só podem comunicar-se com o
servidor de onde foram “baixados”
z Servlets: servidor
z executados sob o controle do servidor
z classe carregada dinamicamente por requisição de
um cliente
Introdução a Java
20

10
25/03/2009

Applets Java X JavaScript


z Ambos são códigos executáveis inseridos em
páginas HTML
z Código Java: classes compiladas e carregadas
remotamente
z Código JavaScript: instruções fisicamente
dispersas ao longo da página HTML
z Java é uma LP de uso geral, orientada a objetos:
classes objetos
classes, objetos, encapsulamento
encapsulamento, herança e
polimorfismo
z JavaScript: linguagem script sem classes, sem
herança e sem polimorfismo
Introdução a Java
21

Primeiros passos

11
25/03/2009

Classe Java: apenas o método


main()
Atenção a maiúsculas
e minúsculas!

class Bemvindo {
public static void main (String[] args) {
System.out.println(“Bem-vindo!”);
}
}

Método main(): onde se inicia a execução


Introdução a Java
23

Exemplo de chamada de
métodos

System.out.println (“Bem-vindo!”);
objeto método parâmetro

System.out.print
y p ((“Bem-vindo!”);
);
objeto método parâmetro

Introdução a Java
24

12
25/03/2009

Chamada parametrizada

class
l B
Bemvindo
i d {
public static void main (String[] args) {
System.out.println(“Bem-vindo ” +
args[0]);
}
}

Método main(): aceita argumentos para execução

Linha de comando: java Bemvindo Pedro


Introdução a Java
25

Classe Java: dois métodos


class Bemvindo2 {
static void imprime() {
System.out.println(“Bem-vindo!”);
}

public static void main (String[] args) {


imprime();
p ();
}
}

método static: método de classe, não aplicável sobre objetos


Introdução a Java
26

13
25/03/2009

Classe Java: instanciando um


objeto
class Bemvindo3 {
void
id imprime(){
i i (){
System.out.println(“Bem-vindo!”);
}

public static void main (String[] args) {


Bemvindo3 obj = new Bemvindo3();
// imprime();
i i () // erro!!
obj.imprime();
}}

método de instância, somente aplicável sobre objetos


Introdução a Java
27

Duas classes: composição


class Bemvindo3{
void imprime(){
S stem o t println("Bem indo!")
System.out.println("Bem-vindo!");
}
public static void main(String[] args){
Bemvindo3 obj=new Bemvindo3();
Welcome outro=new Welcome();
obj.imprime();
outro.imprime();
} // main class Bemvindo3{ class Welcome{
} // Bemvindo3 imprime() imprime()
main(...) } }

class Welcome{
void imprime(){
System.out.println("Welcome!");
Introdução a Java
}} // Welcome 28

14
25/03/2009

Streams de entrada/saída
z Em um programa, dados são lidos/gravados através de
streams (fluxos) de E/S
z Fontes e destinos: console, arquivos, rede...
z Um programa pode gerenciar diversos streams

Introdução a Java
29

Chamada Parametrizada X
Entrada/Saída via Console
z Chamada parametrizada:
z programa inicia
i i i com valores
l armazenados
d em um array
de Strings
z não é uma forma usual de entrada de dados

z Ao iniciar a execução de um programa, são criados


automaticamente os seguintes streams:
z System.in - standard input (teclado)
z System.out - standard output (vídeo)
z System.err - standard error (vídeo)
z Podem ser redirecionados para disco, por exemplo

Introdução a Java
30

15
25/03/2009

Entrada via Console


z Classe BufferedReader
z usada para leitura de um stream de caracteres para um
buffer
z definida no pacote java.io

z Método readLine()
z definido em BufferedReader
z faz a leitura de uma linha de texto até um caracter ‘\n’
z causa uma exceção se ocorrer um erro enquanto lê os
dados da entrada

Introdução a Java
31

Entendendo Entrada via


Console
String msg = stdin.readLine();
72 101 108 108 111 13
InputStream
leitura de bytes
72 101 108 108 111 13
InputStreamReader

buffer de caracteres msg


H e l l o \n Hello
BufferedReader String

Introdução a Java
32

16
25/03/2009

Entendendo Saída via Console

System out println(“Linha


System.out.println( Linha informada = ”+
+ msg);
L i n h a i n f o r m a d a = H e l l o
PrintStream

vídeo

Introdução a Java
33

Entrada via Console: String


import java.io.*;

class Leitura {
public static void main(String[] args) throws
IOException{

BufferedReader stdin = new BufferedReader(


new InputStreamReader(System.in));

System.out.println(“Entre uma linha:”);


String msg = stdin.readLine();
System.out.println(“Linha informada = ”+ msg);
}
} Introdução a Java
34

17
25/03/2009

Entrada via Console: int


import java.io.*;

class Leitura {
public static void main(String[] args) throws
IOException{

BufferedReader stdin = new BufferedReader(


new InputStreamReader(System.in));

System.out.println(“Entre um número:”);
int i = Integer.parseInt(stdin.readLine());
System.out.println(“Número = ”+ i);
}
} Introdução a Java
35

Usando Scanner() e printf()


JDK 1.5
import java.io.*;
import java.util.Scanner;
java util Scanner;

public class LeScanner {


public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Digite seu nome: ");
String nome = input.next();
System.out.print("Digite sua idade: ");
int idade = input.nextInt();

System.out.printf("%s tem %d anos\n", nome, idade);


}}
Introdução a Java
36

18
25/03/2009

Usando Caixas de Diálogo


public class Addition
{
public static void main( String args[] )
{
// obtain user input from JOptionPane input dialogs
String firstNumber =
JOptionPane.showInputDialog( "Enter first integer" );
String secondNumber =
JOptionPane.showInputDialog( "Enter second integer" );

// convert String inputs to int values for use in a calculation


int number1 = Integer.parseInt( firstNumber );
int number2 = Integer.parseInt( secondNumber );

int sum = number1 + number2; // add numbers

// display result in a JOptionPane message dialog


JOptionPane.showMessageDialog( null, "The sum is " + sum,
"Sum of Two Integers", JOptionPane.INFORMATION_MESSAGE );
} // end method main
} // end class Addition

Introdução a Java
37

19