Aula 2 - Java como ferramenta de experimentação

Propaganda
Programação Orientada a Objetos
(DPADF 0063)
Aula 2 – Java como ferramenta de experimentação
Universidade Federal de Santa Maria
Colégio Agrícola de Frederico Westphalen
Curso Superior de Tecnologia em Sistemas para Internet
Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno
Write once, compile once and run anywhere!
Um pouco de história ...
• Em 1991 a Sun Microsystems, de olho no crescente mercado de
dispositivos eletrônicos inteligentes, voltados ao consumidor
financiou um projeto interno (Green Project);
• A ideia era produzir uma linguagem de computador reduzida e
simples e que gerasse um código eficiente para ser utilizada em
dispositivos com algumas restrições:
▫ Pouca memória;
▫ Diferentes CPUs;
 O software produzido não poderia se limitar a uma única arquitetura.
• James Gosling (chefe da equipe) batizou a linguagem de Oak.
Mais um pouco de história ...
• O nome Oak já era patenteado então a linguagem foi batizada de
Java em homenagem a Ilha de Java que produzia o café que a equipe
da Sun consumia.
• O mercado de dispositivos eletrônicos não teve um crescimento tão
interessante conforme previsto e o Green Project perder força;
• Na mesma época há uma explosão de popularidade da World Wide
Web e este parece ser um mercado potencial para a linguagem Java;
• Em 1995 Java é anunciado formalmente.
Duke
um dos símbolos
de Java
• Em 2009 a Oracle adquire a SUN por US$ 7,4 bilhões e é quem
mantém o Java atualmente.
Características ...
• Linguagem simples e orientada a objetos;
• Subconjunto de C++
▫ Reduzido número de palavras reservadas e grande poder de
expressão;
▫ Construções complexas e desnecessárias que não fazem
parte do núcleo mínimo exigido para uma linguagem
orientada a objetos são inicialmente eliminadas ...




Instruções pré-processadas;
Herança múltipla;
Sobrecarga de operadores;
Programação genérica
Características (cont.) ...
• Fortemente tipada
▫ Ampla verificação e erros e checagem de tipos em tempo de
compilação;
• Inexistência do conceito de ponteiros
▫ O que existem são referências a objetos;
• Gerenciamento automático de memória
▫ Garbage Collection – Coletor de Lixo
Características (cont.) ...
• Independente, Interpretada e Portável ...
Arquivo fonte (.c)
Compilador
Código objeto
Binário
Executável
(Arquitetura
Específica)
Interpretador
Arquivo fonte (.java)
Compilador
Código
intermediário
bytecode
Interpretador
Interpretador
Interpretador
Etapas do desenvolvimento ...
Etapa 1 – O programa é criado em
um editor e armazenado no disco
com a extensão .java
Editor
disco
Compilador
disco
Etapa 2 – O compilador cria
bytecodes e os armazena em
disco com a extensão .class
Carregador de
Classe
disco
Verificador de
Bytecode
Etapa 3 – O carregador de
classe lê arquivos .class
que contém bytecodes a
partir de um disco e coloca
estes bytecodes na
memória.
Etapa 5 – Para executar o programa, a JVM lê
os bytecodes e os traduz para uma linguagem
de baixo nível específica para a plataforma
onde o mesmo está sendo executado
Etapa 4 – O verificador de
bytecodes confirma que todos
os bytecodes são válidos e
não violam restrições de
segurança do Java
Java Virtual
Machine (JVM)
Antes de começar...
• .java = código fonte
• .class = código intermediário (bytecodes)
• JRE = Java Runtime Environment
▫ Máquina Virtural Java (JVM = Java Virtual Machine)
• JDK = Java Development Kit (Kit de Desenvolvimento)
▫
▫
▫
▫
▫
▫
javac – compilador
java – interpretador de bytecodes
javadoc – gerador de documentação
jdb – debugger
jar – ferramenta para gerência de Java Archives
javap – disassembler (fornece um protótipo das classes encontradas no
arquivo .class);
JDK x JRE...
Desenvolvimento de Aplicações Java
JDK
JRE
Máquina Virtual Java
MS
Windows
Linux
Google
Android
Mac
OS
Solaris
Exercícios para fixação
Edite, compile e execute
import javax.swing.*;
public class Janela extends JFrame {
private static String labelPrefix = "No. de clicks:";
private int nClicks=0;
final JLabel lblMsg = new JLabel(labelPrefix+"0 ");
final JButton btnOk = new JButton("Ok");
JPanel painel = new JPanel();
public Janela(String titulo) {
setTitle(titulo);
setSize(250,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
painel.add(btnOk);
painel.add(lblMsg);
add(painel);
Edite, compile e
execute o código
ao lado.
O que vai
acontecer?
setVisible(true);
btnOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
btnOk_actionPerformed(e);
}
});
}
public void btnOk_actionPerformed(java.awt.event.ActionEvent e) {
nClicks++;
lblMsg.setText(labelPrefix + nClicks);
}
public static void main(String[] args){
Janela app = new Janela("Aplicação com Botao");
}
}
Transporte o
arquivo .class
para outro SO e
execute, qual é o
resultado?
Download