Introdução a Java

Propaganda
Introdução a Java
Alcides Calsavara
características










orientada a objetos
interpretada
neutra com relação a arquitetura (portável)
dinâmica
distribuída
simples
robusta
segura
alto desempenho
multithreaded
orientada a objetos


classe: dados e métodos
tudo é objeto, exceto:
• numérico primitivo
• caracter
• booleano
OBS: uma string é um objeto!

unidade básica de compilação:
classe
orientada a objetos (cont.)

pacote: coleção de classes
• java.awt : classes para criação de
componentes de interface gráfica
• java.io : classes para input e output
• java.net : classes que suportam
funcionalidades de rede
• java.lang : raiz da hierarquia de
classes Java
interpretada



compilador Java gera byte-codes para a Java
Virtual Machine (JVM), ao invés de código
nativo de máquina
um programa Java é executado através de um
interpretador de byte-code
inclusão dinâmica (sob demanda) de novas
classes, ao invés de ligação estática
neutra com relação a arquitetura
(portável)





byte-code independente de arquitetura
um programa Java pode ser executado em
qualquer arquitetura (Windows, Unix, Mac...)
que suporte a JVM (interpretador e ambiente
de execução)
importante para aplicações distribuídas,
especialmente em redes heterogêneas
evita o desenvolvimento de versões do mesmo
software específicas para cada arquitetura
“Write Once, Run Anywhere” (SUN)
dinâmica


qualquer classe Java pode ser
carregada por um interpretador em
execução, a qualquer momento
bibliotecas de código nativo
também podem ser carregadas
dinamicamente
distribuída


suporte de alto nível para
operações de rede (ex, class URL
permite a leitura de um arquivo
remoto como se fosse local)
devido a carga dinâmica de
classes, um interpretador Java
pode obter um código executável
através da rede e executá-lo
localmente
simples



pequeno número de construções de linguagem
familiar para maioria dos programadores, pois
é similar a C++
eliminado de C++ :
• goto
• header files
• struct e union
• sobrecarga de operador
• herança múltipla
• ponteiros
robusta





fortemente tipada: compilador faz
verificações para evitar potenciais erros
a inexistência de ponteiros evita muitos
erros
acesso a vetor e string é verificado em
tempo de execução
cast de objeto também é verificado em
tempo de execução
garbage collection automática evita
erros de uso de memória
segura




a inexistência de ponteiros evita o acesso
direto a memória
processo de verificação de byte-code: garante
que o código não causa overflow ou underflow
da pilha de execução, por exemplo
sandbox model : um programa suspeito executa
com sérias restrições (ex, sem direito de
acesso a arquivos)
assinatura digital: se a origem de um programa
é alguém confiável (reconhecido pela
assinatura), este não executa em um sandbox
alto desempenho





um programa executa 10 vezes mais rápido em C que em
Java 1.1
porém aplicações baseadas em GUI e rede são
normalmente ociosas, esperando que o usuário cause
algum evento ou esperando dados da rede
interpretador “just in time”: traduz byte-code para código
nativo em tempo de execução
byte-code pode interoperar com código nativo
Java está entre linguagens como Tcl e Unix Shell, que
são boas para prototipagem e portabilidade, mas lentas,
e linguagens como C e C++, que são eficientes, mas de
baixa confiabilidade e portabilidade
multithreaded


uma aplicação pode ter diversas
atividades “simultaneamente” (ex,
um Web browser pode estar
emitindo o som de um clip,
enquanto fazendo scrolling de uma
página e ainda carregando uma
imagem em background )
importante para aplicações
gráficas
aplicação simples
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println (“Hello World!”);
}
}
aplicação simples (cont.)

o programa deve ser salvo em um arquivo com
nome idêntico ao da classe pública e com
extensão .java
% javac HelloWorld.java

esse comando compila o programa, gerando
um arquivo com nome idêntico e extensão
.class
% java HelloWorld

esse comando executa o programa
(ambiente SUN JDK)
applet simples
import java.applet.*;
import java.awt.*;
public class helloworld extends Applet
{
public void paint(Graphics g)
{
g.drawString ("Hello World!", 25, 50);
}
}
applet simples (cont.)
<html>
<head>
<title>helworld</title>
</head>
<body>
<applet
code=helloworld.class
width=320
height=240 >
</applet>
</body>
</html>
Download