Você está na página 1de 51

Programação Orientada a Objetos

Professor Raimundo Osvaldo


Departamento de Computação
IFMA/ Campus São Luís – Monte Castelo
Aula 03 OBJETIVOS
1. Conceituar e Caracterizar a
Introdução à Plataforma plataforma Java.
2. Descrever as características
Java da tecnologia Java como a
JVM - Máquina Virtual Java
Referências
SCHILDT, Herberth. Java para Iniciantes. Porto Alegre: Bookman,
2013.
HORSTMANN, Cay; CORNELL, Gary. CoreJava: fundamentos. São
Paulo: Pearson Prentice Hall, 2010.
K19. K – 11: Orientação a Objetos em Java, 2012.
CAELUM. FJ-11: Java e Orientação a Objetos. 2018.
Java e a Computação
A Internet e a Web
reformularam a computação
Java: Motivação Original
Necessidade de uma linguagem independente de
plataforma que pudesse ser utilizada em diversos produtos
eletrônicos.
Green Project

Oak
Star Seven
Evolução do Java
Nº de Classes
Versão Ano Novos Recursos da Linguagem
e Interfaces
1.0 1996 A própria linguagem 211
1.1 1997 Classes Internas 477
1.2 1998 Nenhum 1.524
1.3 2000 Nenhum 1.840
1.4 2002 Assertivas. Encadeamento de Exceções 2.723
Classes genéricas, loop “for each”, autoboxing,
5.0 2004 3.279
metadados, enumerações, importação estática
6 2006 Nenhum 3.777
Suporte ao uso de strings no switch,
7 2011 aprimoramento no tratamento de exceções, 4.024
operador diamante,
Expressões lambdas, Interfaces com métodos
8 2014 4.240
default, novas bibliotecas de streams e data/ hora
Evolução do Java

Java 9
2017
Read-Eval-Print-Loop (REPL) – Jshell
“Ambiente simples e interativo onde você pode facilmente
executar códigos, oferecendo uma forma bastante efetiva de
experimentar novos recursos e APIs”
[ http://blog.caelum.com.br/java-9-na-pratica-repl/ ]

“Você pode digitar comandos Java em um terminal e obter retorno


real-time, sem ter que criar uma classe, arquivo ou algo do tipo”
[ https://www.concrete.com.br/2017/10/09/introducao-ao-java-9-quais-sao-as-principais-novidades/ ]
Evolução do Java

Java 9
Modularização – Jigsaw
“Cria um sistema de módulos, que poderemos usar em nossos
projetos, mas também aplicá-lo em toda a plataforma e JDK em
busca de melhor organização e desempenho”
[ http://blog.caelum.com.br/java-9-na-pratica-jigsaw/ ]

“A questão da modularização vai possibilitar grande melhoria no


desempenho as aplicações, em particular as que são executadas em
devices com baixo desempenho”
[ https://www.concrete.com.br/2017/10/09/introducao-ao-java-9-quais-sao-as-principais-novidades/ ]
Evolução do Java

Java 9
Modularização – Jigsaw
“Cria um sistema de módulos, que poderemos usar em nossos
projetos, mas também aplicá-lo em toda a plataforma e JDK em
busca de melhor organização e desempenho”
[ http://blog.caelum.com.br/java-9-na-pratica-jigsaw/ ]

“A questão da modularização vai possibilitar grande melhoria no


desempenho as aplicações, em particular as que são executadas em
devices com baixo desempenho”
[ https://www.concrete.com.br/2017/10/09/introducao-ao-java-9-quais-sao-as-principais-novidades/ ]
Evolução do Java

Java 9
Modularização – Jigsaw
“Agora ser público não significa mais ser acessível. Em um
sistema modular você precisa definir explicitamente o que pode
ou não ser acessado por fora do módulo”
[ http://blog.caelum.com.br/java-9-na-pratica-jigsaw/ ]

No Java 9 tudo é modular


Evolução do Java

Java 9
Mudanças APIs
Muitas APIs ganharam melhorias no Java 9, mas Collections,
Streams, Collectors, e Optional são os destaques.
Lists e Sets ganharam o método of, com isso a forma de
criar coleções muda e pode ser feita de forma mais simples.
Set<String> cars = Set.of(“Ferrari”, “Fusca”, “Bugatti”)

[ https://www.concrete.com.br/2017/10/09/introducao-ao-java-9-quais-sao-as-principais-novidades/ ]
Evolução do Java

Java 9
Novas APIs
HTTP/2 Client, logging, Stack-Walking,...

Garbage Collector G1
Java 9 adotou o G1 como default GC
Ele foi programado para trabalhar com menor tempo de pausa e de
forma mais previsível, a fim de entregar maior performance em seus
eventos de cleanning
[ https://www.concrete.com.br/2017/10/09/introducao-ao-java-9-quais-sao-as-principais-novidades/ ]
Evolução do Java

Java 10
Vale a pena dar uma olhada

http://blog.caelum.com.br/o-minimo-que-voce-deve-saber-de-
java-10/
Java
“Java é uma plataforma integral, com uma biblioteca enorme
contendo uma grande quantidade de códigos reutilizáveis e um
ambiente de execução que fornece serviços como segurança,
portabilidade para diferentes sistemas operacionais e coleta de
lixo automática.”
(HORSTMANN; CORNELL, 2010)

Elementos importantes da plataforma


A linguagem de programação Java
O ambiente de execução Java
Plataforma Java
FONTE: K19 Treinamentos. Orientação a Objetos em Java.

PLATAFORMA JAVA
Linguagem de
Ambiente de Execução
Programação Orientada a
Multiplataforma
Objetos

Possibilita a utilização dos Permite a execução de uma


conceitos de orientação a aplicação Java em sistemas
objetos no desenvolvimento operacionais diferentes.
de uma aplicação.
Java: Ambiente de Execução e Desenvolvimento

JVM • Java Virtual Machine

• Java Runtime Enviroment


JRE • Ambiente de execução Java
(JVM + Bibliotecas)

• Java Development Kit


JDK • Kit de desenvolvimento de aplicações
Java
Java: Plataformas Básicas

Java ▪ É a base da plataforma.


▪ Inclui o ambiente de execução e as bibliotecas comuns.

SE ▪ Permite desenvolver e implantar aplicativos Java em


desktops e servidores.

Java Java Platform, Enterprise Edition, é a plataforma que


disponibiliza recursos para o desenvolvimento de

EE aplicações corporativas voltadas para Web e servidores


de aplicação

Java Plataforma Java, Micro Edition, fornece um ambiente

ME
robusto e flexível para aplicativos executados em
dispositivos embarcados e móveis na Internet das Coisas
Java: Plataformas Mais Modernas

Java JavaFX é uma plataforma projetada para oferecer um

FX
rico conjunto de APIs que simplificam o desenvolvimento
de softwares que utilizam conteúdo de multimídia

Java Desenvolvimento de aplicativos Java que são executados na

TV TV e em dispositivos de caixa de transferência

Java Aplicativos que são executados em cartões inteligentes e

Card
outros dispositivos confiáveis com capacidade limitada de
memória e processamento
Ambientes de Desenvolvimento
Integrado – IDE
Ambientes baseados em janelas
Editor de Texto
+
Compilador
+
Ferramenta de Depuração
Java: Características
Orientação a Objetos
Suporte a Encapsulamento, Herança e Polimorfismo

Independência de Plataforma
Os programas Java são compilados para uma forma
intermediária de código
Bytecode

“Linguagem de Máquina” da JVM


Java: Características
Sem Ponteiros
Java não permite a manipulação direta de endereços de
memória nem exige que os objetos criados sejam destruídos

Permite multithreading
Aplicações capazes de executar múltiplas rotinas
concorrentemente
Sincronização destas várias rotinas
Segurança
Mecanismos de segurança que impedem a geração de efeitos
colaterais fora do sistema
Java Virtual Machine
Em linguagens como C e Pascal, temos o seguinte quadro quando
vamos compilar um programa
Código Binário para um
Código Fonte
Compila determinado SO

Aplicação Código Binário Código Binário


para Windows para Linux

Sistema
Operacional Windows Linux

FONTE: Caelum. FJ-11: Java e Orientação a Objetos


Java Virtual Machine
Java utiliza o conceito de Máquina Virtual

Camada extra entre o SO e a aplicação,


responsável por “traduzir” o que sua aplicação
deseja fazer para as respectivas chamadas do SO
no qual ela está rodando no momento.

FONTE: Caelum. FJ-11: Java e Orientação a Objetos


Java Virtual Machine

Bytecode Bytecode
Java Java

Máquina Virtual Java Máquina Virtual Java


para Linux para Windows

Linux Windows

FONTE: Caelum. FJ-11: Java e Orientação a Objetos


Java Virtual Machine
Editor de Texto
Verificador

.java

Compilador

Carregador Interpretador
.class

FONTE: DEITEL; DEITEL. Java como Programar.


Tipos de Programas Java
Aplicações Puras
Programas carregados e executados localmente pelo
interpretador Java
Possuem acesso a todos os recursos do ambiente local: diretórios,
arquivos, ...
Sempre contém um método principal (main), de onde se
inicializa a execução do programa
Tipos de Programas Java
Applets (Cliente)
Programas inseridos em páginas HTML e executados pelo
browser (interpretador Java)
Programas (classes) podem ser carregados remotamente
Restrições de segurança: não podem acessar recursos locais
Servlets (Servidor)
Executados sob o controle do servidor
Classe carregada dinamicamente por requisição de um cliente.
O Java Development Kit (JDK)
Onde Baixar
https://www.oracle.com/technetwork/java/javase/downloads
/jdk8-downloads-2133151.html
Versão Atual
Java SE 12

Vamos usar a versão


Java SE Development Kit 8u201
Após instalação é preciso configurar as variáveis de ambiente
Variáveis de Ambiente
JAVA_HOME
Aponta para o diretório onde o JDK foi instalado
Variáveis de Ambiente
CLASSPATH
Define o caminho de pesquisa para as classes do JSE.
Especifica onde estão armazenados os arquivos
necessários para compilação e execução
Variáveis de Ambiente
PATH
Define um caminho de pesquisa para arquivos
executáveis
Adicione o diretório jdk\bin ao início do caminho, usando ponto e
vírgula para separar a nova entrada
O Java Development Kit (JDK)
TESTANDO A INSTALAÇÃO
O Java Development Kit (JDK)
TESTANDO A INSTALAÇÃO
Documentação
É importante conhecer (e usar) a documentação da API do Java,
disponível em:
http://docs.oracle.com/javase/

Se preferir, pode instalá-la para uso offline


https://www.oracle.com/technetwork/java/javase/downloads/index.
html
Estrutura de Código do Java

Arquivo-Fonte
public class Conta {
Arquivo de Classe
}
Classe
Método 1
instrução
public class Conta {

void depositar() {
Método 1
instrução 1 }
instrução 2 }
Método
Estrutura de Código do Java

Arquivo-Fonte public class Conta {

Arquivo de Classe void depositar() {

instrução 1;
Método 1
instrução 2;
instrução ...

}
Método 1 }
Instruções
instrução 1
instrução 2
Alô, mundo!
Um comentário /*
de bloco Este é um programa Java Simples
Chame este arquivo de Programa1.java
*/
Insere a definição de class Programa1{
uma nova classe

Um comentário //Um programa Java começa com chamada a main()


de linha
public static void main(String[] args){
System.out.println("Oi, Java!");
}

}
O método main em detalhes
public static void main(String[] args)

Vetor de strings
Usado quando o método que recebe os
não retorna valor. argumentos
passados ao
programa.
Indica que o método deve
ser compartilhado por todos
os objetos criados a partir Método principal.
desta classe Obrigatório em
aplicações, pois indica
Significa que a classe ao compilador o início
ou método é acessível da execução da linha
externamente a esta
classe.
Saída do Console
System.out.println("Oi, Java!");

Método que exibe a String que


recebe como parâmetro

Fluxo de saída conectado


ao console.

Classe pré-definida que


dá acesso ao sistema.

Objeto que encapsula a saída do


System.out console.
Programa Java
Em Java, o nome dado a um arquivo-fonte é muito
importante.

Arquivo-fonte = Unidade de Compilação

❖ Em Java, todo o código deve “morar” dentro de uma classe.


❖ O nome da classe principal deve coincidir com o nome do
arquivo-fonte.
Boas Práticas de Programação
Convenção para Nomes
Nomes de Classes
Substantivos que iniciem com letra maiúscula.
Se o nome consistir em múltiplas palavras, cada palavra inicia com
letra maiúscula (Notação Camelo).
Exemplo: class Programa1
Nomes de Arquivos Fonte
Deve ser exatamente o mesmo que o da classe pública com a
extensão .java anexada
Exemplo: MeuPrograma.java
Boas Práticas de Programação
Convenção para Nomes
Nomes de Variáveis
Iniciam com letras minúsculas e seguem a notação camelo.
Exemplo: int notaDoAluno

Nomes de Métodos
São “verbos” e iniciam com letras minúsculas e seguem a notação
camelo.
Exemplo: void alteraNota()
Como Compilar e Executar
Compilação Execução
javac java
A partir do diretório local A partir do diretório local
javac Nome.java java Nome
Vai produzir Arquivos .class Nome = arquivo .class que
separados para cada classe contém o método main()
no arquivo Nome.java
Coloca os arquivos no diretório
Executa a partir de main()
corrente. Ou com argumentos
Java Nome arg1, arg2
O que pode dar errado?
Erros de Sintaxe
Java é case-sensitive
Esquecer “ ; ”
Escrever palavras reservadas com
letras maiúsculas.
Esquecer de abrir e fechar { }

O compilador Java tenta entender o código-fonte


independente do que foi escrito.
O erro indicado nem sempre reflete a causa real do problema.
O que pode dar errado?
Como regra, ao encontrar muitas mensagens de erros
devemos corrigir o primeiro erro da lista e tentar
compilar novamente.

Exemplo
Programa1.java:8: ‘;’ expected
public static void main(String[] args)
^
Programa1.java:11: class, interface, or enum
expected
}
^
O que pode dar errado?
Erros de Execução
Se você declarar uma classe como X, compilá-la e depois
tentar usá-la como x minúsculo, o Java te avisa:
Exception in thread "main"
java.lang.NoClassDefFoundError: X (wrong name: x)

Se tentar acessar uma classe no diretório errado, ou se o


nome estiver errado, ocorrerá o seguinte erro:
Exception in thread "main"
java.lang.NoClassDefFoundError: X
Mais um exemplo
Podemos concatenar dois ou mais strings usando o
operador “+”

public class Programa2{

public static void main(String[] args){


System.out.println("Oi," + "Java!");
}

}
Mais um exemplo
Para escrever um número, basta escrever [string]+ n

public class Programa3{

public static void main(String[] args){


System.out.println(" Numero: " + 10);
}

}
Mais um exemplo
public class Programa4 {

public static void main(String[] args){


int var1;
int var2;

var1 = 1024;
System.out.println("var1: " + var1);

var2 = var1/2;
System.out.println(var2);
}

}
Faça suas anotações

Hora do Café... Preencha o Mapa Conceitual


Quais as suas dúvidas?
Faça os Exercícios

Você também pode gostar

  • POO Aula01
    POO Aula01
    Documento33 páginas
    POO Aula01
    José Peterson Desenvolvedor
    Ainda não há avaliações
  • POO Aula04
    POO Aula04
    Documento71 páginas
    POO Aula04
    José Peterson Desenvolvedor
    Ainda não há avaliações
  • POO Aula02
    POO Aula02
    Documento44 páginas
    POO Aula02
    José Peterson Desenvolvedor
    Ainda não há avaliações
  • POO19 Lab02
    POO19 Lab02
    Documento3 páginas
    POO19 Lab02
    José Peterson Desenvolvedor
    Ainda não há avaliações