[desenvolvimento oo com java] o que éjava?vitorsouza/wp-content/uploads/java-br...estes slides...

29
Centro Tecnológico Departamento de Informática Prof. Vítor E. Silva Souza http://www.inf.ufes.br/~vitorsouza [Desenvolvimento OO com Java] O que é Java? Este obra está licenciada com uma licença Creative Commons Atribuição- CompartilhaIgual 4.0 Internacional: http://creativecommons.org/licenses/by-sa/4.0/.

Upload: others

Post on 08-Mar-2020

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Centro TecnológicoDepartamento de Informática

Prof. Vítor E. Silva Souzahttp://www.inf.ufes.br/~vitorsouza

[Desenvolvimento OO com Java]O que é Java?

Este obra está licenciada com uma licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional: http://creativecommons.org/licenses/by-sa/4.0/.

Page 2: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Conteúdo do curso§ O que é Java;§ Variáveis primitivas e

controle de fluxo;§ Orientação a objetos

básica;§ Um pouco de vetores;§ Modificadores de acesso e

atributos de classe;

§ Herança, reescrita e polimorfismo;

§ Classes abstratas e interfaces;

§ Exceções e controle de erros;

§ Organizando suas classes;§ Utilitários da API Java.

Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelum e na apostila Programação Orientada a Objetos em Java do prof. Flávio Miguel Varejão.

Março 2019 Programação III - O que é Java 2

Page 3: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

O que é Java?§ Uma tecnologia;

§ Uma linguagem de programação;

§ Uma plataforma de desenvolvimento;

§ Um software distribuído pela Oracle;

§ Um ambiente de execução de programas;

§ Uma ilha da Indonésia (e o mar ao norte da ilha).

Março 2019 Programação III - O que é Java 3

Page 4: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

História de Java§ 1995: Patrick Naughton e Sun Microsystems;

§ Projeto Green – busca por inovação: *7;

§ James Gosling e a linguagem Oak;

§ Projeto Green muda de rumo depois que *7 não deslancha: Internet;

§ Oak vira Java, graças a um café;

§ Nascem as Applets, Java é incluída no Netscape, disponibilizada ao

público e deslancha;

§ Java fez 10 anos em 2005 e se tornou open source em 2006;

§ Google introduz o sistema operacional Android em 2008;

§ Oracle compra a Sun Microsystems em 2009/2010;

§ Java 8 lançado em 2014, Java 9 em 2017.

Março 2019 Programação III - O que é Java 4

Page 5: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

História de Java§ Mudanças de mercado:

o Java foi idealizada para o mercado de TVs a cabo e outros aparelhos eletrodomésticos;

o Java foi lançada com foco nos clientes web (Applets);

o Hoje Java tem destaque do lado do servidor e em aparelhos celulares.

http://oracle.com.edgesuite.net/timeline/java/http://www.java.com/en/javahistory/

Março 2019 Programação III - O que é Java 5

Page 6: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Contexto em que Java surge§ Você está cansado de…

o ter que manipular ponteiros?o ter que alocar/desalocar memória?o ter que organizar arquivos em diretórios e controlar

seus Makefiles?o ter que escrever utilitários para coisas muito básicas?o ter que reescrever parte do código ao mudar de SO?o ter que pagar para usar a tecnologia de

desenvolvimento?

Março 2019 Programação III - O que é Java 6

Page 7: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Máquina Virtual Java§ Existem duas maneiras de se traduzir um programa:

compilação e interpretação.§ Compilação:

Março 2019 Programação III - O que é Java 7

Page 8: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Máquina Virtual Java§ Interpretação:

Março 2019 Programação III - O que é Java 8

Page 9: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Máquina Virtual Java§ Híbrido:

Março 2019 Programação III - O que é Java 9

Page 10: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Vantagens da JVM§ Portabilidade;

§ Isola a aplicação do SO;

§ Pode tirar métricas e realizar otimizações (HotSpot e JIT Compiler);

§ Se ocorre um erro, fecha-se a máquina virtual, sem afetar outras JVMs ou o SO;

§ 29 outras linguagens suportadas, incluindo Clojure, Groovy, Scala, JRuby, Jython, Rhino, etc.

Março 2019 Programação III - O que é Java 10

O código de máquina gerado por um compilador Java é conhecido por “bytecode”, pois existem menos de 256 códigos de operação dessa linguagem e cada “opcode” gasta um byte. (Apostila FJ-11 Caelum)

Page 11: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Versões e edições de Java§ Standard Editions:

o Java 1.0 (1996);o Java 1.1 (1997);o J2SE 1.2 (1998);o J2SE 1.3 (2000);o J2SE 1.4 (2002);o Java 1.5 / Java 5 (2004);o Java SE 6 (2006);o Java SE 7 (2011);o Java SE 8 (2014);o Java SE 9 (2017);o Java SE 10 (2018);o Java SE 11 (2018, LTS);o Java SE 12 (2019).

• Enterprise Editions:– JPE project (1998);– J2EE 1.2 (1999);– J2EE 1.3 (2001);– J2EE 1.4 (2003);– Java EE 5 (2006);– Java EE 6 (2009);– Java EE 7 (2013);– Java EE 8 (2017).

• Mobile Editions…

Cedido pela Oracle para a fundaçãoEclipse em 2018, agora Jakarta EE.

Março 2019 Programação III - O que é Java 11

Novas versões todo ano em março e setembro (long term support).

Page 12: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Java SE§ Ferramentas de desenvolvimento e API núcleo da

plataforma (base para as demais);§ Permite o desenvolvimento de aplicações desktop,

com interface gráfica, acesso à bancos de dados, I/O, acesso à rede, etc.;

§ Dividida em:o JRE = Java Runtime Environment;o JDK = Java Development Kit.

Março 2019 Programação III - O que é Java 12

Page 13: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Java Runtime Environment§ JVM + bibliotecas básicas da API;§ Necessária para rodar programas Java (bytecodes

compilados);§ É a única parte da plataforma Java que os clientes

precisam instalar;§ Em alguns SOs pode vir instalada;§ A Oracle provê suporte oficial às plataformas

Windows, Mac OS, Solaris e Linux.

Março 2019 Programação III - O que é Java 13

Page 14: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Java Development Kit§ Somente para programadores;§ Contém:

o Ferramentas de desenvolvimento;o Ambiente de execução (JRE);o API Java SE (compilada e código-fonte);o Programas de demonstração;o Bibliotecas adicionais;o Documentação (obtida separadamente).

Março 2019 Programação III - O que é Java 14

Page 15: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

A API Java SE

Março 2019 Programação III - O que é Java 15

Page 16: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Java EE§ Permite o desenvolvimento de aplicações corporativas:

o Multicamadas, distribuídas, centradas em servidores, altamente robustas, estáveis e escaláveis.

§ Inclui as especificações para desenvolvimento Web: Servlets, JSP, Web Services, JSF, etc.;

§ Inclui especificações da plataforma Enterprise Java Beans (EJB):o Componentes gerenciados integrados a outras

tecnologias Java EE para prover acesso remoto, persistência e transações transparentes, etc.

Março 2019 Programação III - O que é Java 16

Page 17: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Java ME§ Permite o desenvolvimento de aplicações para

dispositivos móveis:o Telefones celulares;o PDAs (Palm, iPaq, etc.);o Dispositivos embarcados (embedded), etc.

§ Em grande parte vem sendo substituída pela plataforma Android;

§ Java Card: aplicações para Smart Cards e outros dispositivos muito limitados.

Março 2019 Programação III - O que é Java 17

Page 18: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Por que Java?§ Foco em aplicações de médio/grande porte;§ Enorme ecossistema: muitas bibliotecas disponíveis;§ Alta legibilidade, conectividade, portabilidade;§ Grande oferta de empregos;§ Gratuita e open source;§ Independência de fabricante:

especificação aberta;§ Popular, rodeada por uma comunidade muito ativa;§ De alta aceitação e com suporte da indústria;§ Muitas ferramentas e documentação disponíveis.

Março 2019 Programação III - O que é Java 18

Page 19: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Características de Java§ Orientada a objetos:

o Quase pura, pois possui tipos primitivos;§ Baseada em C++:

o Sintaxe semelhante, porém mais simples;§ Portável:

o Compilação para bytecode e interpretação na JVM;o Especificação rígida (JCP);

Março 2019 Programação III - O que é Java 19

Page 20: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Características de Java§ Dinâmica:

o Classes são carregadas sob demanda (class loader); § Confiável:

o Verificações na compilação e execução;o Incentiva-nos a escrever códigos melhores;o Não há aritmética de ponteiros;o Gerência de memória feita pela JVM (coletor de lixo);

Março 2019 Programação III - O que é Java 20

Page 21: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Características de Java§ Segura:

o Verificações de bytecode, modelo sandbox;o Assinatura digital e criptografia;

§ Facilita a programação concorrente:o Dispõe de elementos que facilitam a programação de

sistemas com uso intensivo de threads paralelas;

Março 2019 Programação III - O que é Java 21

Page 22: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Características de Java§ Projetada para ambientes distribuídos:

o Suporte de alto nível para construção de aplicações em rede(sockets, RMI, etc.);

o Com carregamento dinâmico, classes podem ser obtidas da rede e acionadas em tempo de execução;

o “The network is the computer”;

Março 2019 Programação III - O que é Java 22

Page 23: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Características de Java§ Possui bom desempenho:

o Não era o caso das primeiras versões…o Otimizações (ex.: JIT), com melhorias a cada nova versão

(melhor que C/C++ em alguns benchmarks);o Em última instância, integra-se com códigos em C.

Março 2019 Programação III - O que é Java 23

Page 24: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Um primeiro programa§ Escreva o seguinte programa:

§ Salve como Eco.java (case sensitive).

/* Meu primeiro programa. */public class Eco {// Método principal.public static void main(String[] args) {for (int i = 0; i < args.length; i++)System.out.print(args[i] + " ");

System.out.println();}

}

Comentários

Comandos terminam com ;

Bloco de instruções

Março 2019 Programação III - O que é Java 24

Page 25: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Programas Java§ Java é uma linguagem um pouco burocrática:

o Um programa Java é uma classe pública com o métodomain(), como no nosso exemplo;

o O nome do arquivo deve coincidir com o nome da classeque possui o método main();

o Pode haver mais de uma classe no mesmo arquivo fonte, mas somente uma pode ser pública;

§ Calma! Veremos estes conceitos ao longo do curso...

Março 2019 Programação III - O que é Java 25

Page 26: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Compilando o programa

public class Eco {// ...

}

Código-fonte: Eco.java

CA FE BA BE 00 00 00 33 00 2C 0A 00 0B 00 15 09 00 16 00 17 07 00 18 0A 00 03 00 15 0A 00 03 00 19 08 00 1A 0A 00 03 00 1B 0A 00 1C 00 1D 0A 00 1C 00 1E ...

Bytecode: Eco.class

javac Eco.java

Março 2019 Programação III - O que é Java 26

Page 27: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Executando o programa

CA FE BA BE 00 00 00 33 00 2C 0A 00 0B 00 15 09 00 16 00 ...

Bytecode: Eco.class

java Eco Hello, World!

Março 2019 Programação III - O que é Java 27

Page 28: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

IDEs§ Ambientes integrados de desenvolvimento facilitam o

trabalho de programação:o Eclipse (http://www.eclipse.org);o NetBeans (http://www.netbeans.org);o IntelliJ IDEA (http://www.jetbrains.com/idea);o JDeveloper

(http://www.oracle.com/technetwork/developer-tools/jdev/);

o Dentre outras...

Março 2019 Programação III - O que é Java 28

Page 29: [Desenvolvimento OO com Java] O que éJava?vitorsouza/wp-content/uploads/java-br...Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume

Recursos para aprender Java§ Comunidades virtuais e fóruns:

o http://www.guj.com.bro http://stackoverflow.com

§ JUGs – Grupos de Usuários Java:o http://www.esjug.org

§ Revistas:o Java Magazine (.com.br);o Java Magazine (Oracle).

§ Apostilas e livros.

Março 2019 Programação III - O que é Java 29