Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... ·...
Transcript of Programação Orientada a Objetos (DPADF 0063)bruno/disciplinas/poo/slides/aula2_java... ·...
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.
• Em 2009 a Oracle adquire a SUN por US$ 7,4 bilhões e é quem
mantém o Java atualmente.
Duke
um dos símbolos
de Java
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
• Independente, Interpretada e Portável ...
Características (cont.) ...
Arquivo fonte (.c) Compilador
Código objeto
Binário Executável
(Arquitetura
Específica)
Arquivo fonte (.java)
Compilador Código
intermediário bytecode
Interpretador
Interpretador
Interpretador
Interpretador
Etapas do desenvolvimento ...
Editor
Compilador
Carregador de
Classe
Verificador de
Bytecode
disco
disco
disco
Etapa 1 – O programa é criado em
um editor e armazenado no disco
com a extensão .java
Etapa 2 – O compilador cria
bytecodes e os armazena em
disco com a extensão .class
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 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) 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
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
Máquina Virtual Java
MS
Windows Linux
Android
Mac
OS
Solaris
JDK
JRE
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);
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");
}
}
Edite, compile e
execute o código
ao lado.
O que vai
acontecer?
Transporte o
arquivo .class
para outro SO e
execute, qual é o
resultado?