29
Desenvolvimento OO com Java O que é Java Vítor E. Silva Souza ( [email protected] ) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo

01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Desenvolvimento OO com Java

O que é Java

Vítor E. Silva Souza

([email protected])http://www.inf.ufes.br/~vitorsouza

Departamento de Informática

Centro Tecnológico

Universidade Federal do Espírito Santo

Page 2: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Licençaparausoedistribuição• EsteobraestálicenciadacomumalicençaCreative

CommonsAtribuição-CompartilhaIgual 4.0Internacional;• Vocêtemodireitode:

– Compartilhar:copiareredistribuiromaterialemqualquersuporteouformato

– Adaptar:remixar,transformar,ecriarapartirdomaterialparaqualquerfim,mesmoquecomercial.

• Deacordocomostermosseguintes:– Atribuição:vocêdevedarocréditoapropriado,proverumlinkpara

alicençaeindicarsemudançasforamfeitas.Vocêdevefazê-loemqualquercircunstânciarazoável,masdemaneiraalgumaquesugiraaolicencianteaapoiarvocêouoseuuso;

– CompartilhaIgual:sevocêremixar,transformar,oucriarapartirdomaterial,temdedistribuirassuascontribuiçõessobamesmalicençaqueooriginal.

Março2016 OO&Java- OqueéJava 2

Mais informações podem ser encontradas em:http://creativecommons.org/licenses/by-sa/4.0/

Page 3: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Conteúdodocurso

• OqueéJava;• Variáveisprimitivasecontroledefluxo;

• Orientaçãoaobjetosbásica;

• Umpoucodevetores;• Modificadoresdeacessoeatributosdeclasse;

• Herança,reescritaepolimorfismo;

• Classesabstratas;• Interfaces;• Exceçõesecontroledeerros;

• UtilitáriosdaAPIJava.

Março2016 OO&Java- OqueéJava 3

EstesslidesforambaseadosnaapostiladocursoFJ-11:JavaeOrientaçãoaObjetosdaCaelum ena apostila ProgramaçãoOrientada aObjetos em Javadoprof.FlávioMiguelVarejão.

Page 4: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

OqueéJava?• Umatecnologia;• Umalinguagem deprogramação;• Umaplataforma dedesenvolvimento;• Umsoftware distribuídopelaOracle;• Umambiente deexecuçãodeprogramas;• Umailha daIndonésia(eomar aonortedailha).

Março2016 OO&Java- OqueéJava 4

Page 5: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

HistóriadeJava• 1995:PatrickNaughton eSunMicrosystems;• ProjetoGreen – buscaporinovação:*7;• JamesGosling ealinguagemOak;• ProjetoGreenmudaderumo depoisque*7nãodeslancha:

aapostaénaInternet;• Oak viraJava,graçasaumcafé;• NascemasApplets,JavaéincluídanoNetscape,

disponibilizadaaopúblicoedeslancha;• Javafez10anosem2005esetornouopensource em2006;• GoogleintroduzosistemaoperacionalAndroid em2008;• Oracle compraaSunMicrosystemsem2009/2010;• Java8 lançadoem2014.Março2016 OO&Java- OqueéJava 5

Page 6: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

História deJava• Mudanças demercado:

– JavafoiidealizadaparaomercadodeTVsacaboeoutrosaparelhoseletrodomésticos;

– Javafoilançadacomfoconosclientesweb(Applets);– HojeJavatemdestaquedoladodoservidoreemaparelhoscelulares.

Março2016 OO&Java- OqueéJava 6

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

Page 7: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

ContextoemqueJavasurge• Vocêestácansadode…

– terquemanipularponteiros?– terquealocar/desalocar memória?– terqueorganizar arquivosemdiretóriosecontrolarseusMakefiles?

– terqueescreverutilitários paracoisasmuitobásicas?

– terquereescrever partedocódigoaomudardeSO?– terquepagar parausaratecnologiadedesenvolvimento?

Março2016 OO&Java- OqueéJava 7

Page 8: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Máquina VirtualJava• Existemduasmaneirasdesetraduzirumprograma:compilaçãoeinterpretação.

• Compilação:

Março2016 OO&Java- OqueéJava 8

Page 9: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Máquina VirtualJava

Março2016 OO&Java- OqueéJava 9

• Interpretação:

Page 10: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Máquina VirtualJava

Março2016 OO&Java- OqueéJava 10

• Híbrido:

Page 11: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Vantagens daJVM• Portabilidade;• IsolaaaplicaçãodoSO;• Podetirarmétricaserealizarotimizações(HotSpot eJITCompiler);

• Seocorreumerro,fecha-seamáquinavirtual,semafetaroutrasJVMs ouoSO;

• 29outraslinguagens suportadas,incluindoClojure,Groovy,Scala,JRuby,Jython,Rhino,etc.

Março2016 OO&Java- OqueéJava 11

OcódigodemáquinageradoporumcompiladorJavaéconhecidopor“bytecode”,poisexistemmenosde256códigosdeoperaçãodessalinguagemecada“opcode”gastaumbyte.

(ApostilaFJ-11Caelum)

Page 12: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Versões eedições deJava

• StandardEditions:– Java1.0(1996);– Java1.1(1997);– J2SE1.2(1998);– J2SE1.3(2000);– J2SE1.4(2002);– Java1.5/Java5(2004);– JavaSE6(2006);– JavaSE7(2011);– JavaSE8(2014);– JavaSE9(prev.2017).

• EnterpriseEditions:

– JPEproject(1998);– J2EE1.2(1999);– J2EE1.3(2001);– J2EE1.4(2003);– JavaEE5(2006);– JavaEE6(2009);– JavaEE7(2013);– JavaEE8(prev.2016).

• MobileEditions…Março 2016 OO&Java- OqueéJava 12

Page 13: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

JavaSE• Ferramentas dedesenvolvimentoeAPInúcleo daplataforma(baseparaasdemais);

• Permiteodesenvolvimentodeaplicaçõesdesktop,cominterfacegráfica,acessoàbancosdedados,I/O,acessoàrede,etc.;

• Divididaem:– JRE =JavaRuntime Environment;– JDK =JavaDevelopment Kit.

Março2016 OO&Java- OqueéJava 13

Page 14: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

JavaRuntime Environment• JVM+bibliotecasbásicas daAPI;• NecessáriapararodarprogramasJava(bytecodescompilados);

• ÉaúnicapartedaplataformaJavaqueosclientesprecisaminstalar;

• EmalgunsSOs podevirinstalada;• AOracle provêsuporte oficialàsplataformasWindows,MacOS,SolariseLinux.

Março2016 OO&Java- OqueéJava 14

Page 15: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

JavaDevelopment Kit• Somenteparaprogramadores;• Contém:

– Ferramentas dedesenvolvimento;– Ambiente deexecução(JRE);– API JavaSE(compiladaecódigo-fonte);– Programasdedemonstração;– Bibliotecas adicionais;– Documentação (obtidaseparadamente).

Março2016 OO&Java- OqueéJava 15

Page 16: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

AAPIJavaSE

Março2016 OO&Java- OqueéJava 16

Page 17: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

JavaEE• Permiteodesenvolvimentodeaplicaçõescorporativas:

– Multicamadas,distribuídas,centradasemservidores,altamenterobustas,estáveiseescaláveis.

• IncluiasespecificaçõesparadesenvolvimentoWeb:Servlets,JSP,WebServices,JSF,etc.;

• IncluiespecificaçõesdaplataformaEnterpriseJavaBeans (EJB):– Componentesgerenciados integradosaoutrastecnologiasJavaEEparaproveracessoremoto,persistência etransações transparentes,etc.

Março2016 OO&Java- OqueéJava 17

Page 18: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

JavaME• Permiteodesenvolvimentodeaplicaçõesparadispositivosmóveis:– Telefonescelulares;– PDAs(Palm, iPaq,etc.);– Dispositivosembarcados(embedded);– Etc.

• EmgrandepartevemsendosubstituídapelaplataformaAndroid;

• JavaCard:aplicaçõesparaSmart Cards eoutrosdispositivosmuitolimitados.

Março2016 OO&Java- OqueéJava 18

Page 19: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

PorqueJava?• Focoemaplicaçõesdemédio/grandeporte;

– Iníciomaistrabalhoso,manutenção facilitada;• Enormeecossistema:muitasbibliotecasdisponíveis;• Altalegibilidade,conectividade,portabilidade;• Grandeofertadeempregos;• Gratuitaeopensource;• Independência defabricante:especificação aberta;

• Popular,rodeadaporumacomunidade muitoativa;• Dealtaaceitação ecomsuportedaindústria;• Muitasferramentasedocumentação disponíveis.Março2016 OO&Java- OqueéJava 19

Page 20: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

CaracterísticasdeJava• Orientadaaobjetos:

– Quasepura,poispossuitiposprimitivos;• BaseadaemC++:

– Sintaxe semelhante,porémmaissimples;• Portável:

– Compilação parabytecode einterpretação naJVM;– Especificação rígida(JCP);

• Dinâmica:– Classessãocarregadassobdemanda (class loader);

Março2016 OO&Java- OqueéJava 20

Page 21: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

CaracterísticasdeJava• Confiável:

– Verificações nacompilaçãoeexecução;– Incentiva-nosaescrevercódigosmelhores;– Nãoháaritméticadeponteiros;– Gerênciadememória feitapelaJVM(coletordelixo);

• Segura:– Verificações debytecode,modelosandbox;– Assinaturadigitalecriptografia;

• Facilitaaprogramaçãoconcorrente:– Dispõedeelementosquefacilitam aprogramaçãodesistemascomusointensivodethreads paralelas.

Março2016 OO&Java- OqueéJava 21

Page 22: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

CaracterísticasdeJava• Projetadaparaambientesdistribuídos:

– Suporte dealtonívelparaconstruçãodeaplicaçõesemrede (sockets,RMI,etc.);

– Comcarregamento dinâmico,classespodemserobtidasdaredeeacionadasemtempodeexecução;

– “Thenetwork is the computer”;• Possuibomdesempenho:

– Não eraocaso dasprimeiras versões…– Otimizações (ex.:JIT),commelhorias acadanovaversão(melhorqueC/C++emalgunsbenchmarks);

– Emúltimainstância,integra-secomcódigosemC.

Março2016 OO&Java- OqueéJava 22

Page 23: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Umprimeiroprograma• Escrevaoseguinteprograma:

• SalvecomoEco.java (casesensitive).

Março2016 OO&Java- OqueéJava 23

/* 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

Page 24: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

ProgramasJava• Javaéumalinguagemumpoucoburocrática:

– Umprograma Javaéumaclasse públicacomométodo main(), comononossoexemplo;

– Onomedoarquivo devecoincidircomonomedaclasse quepossuiométodomain();

– Podehavermaisdeuma classenomesmoarquivofonte,massomenteumapodeserpública;

• Calma!Veremosestesconceitosaolongodocurso...

Março2016 OO&Java- OqueéJava 24

Page 25: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Compilandooprograma

Março2016 OO&Java- OqueéJava 25

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

Page 26: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

Executandooprograma

Março2016 OO&Java- OqueéJava 26

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!

Page 27: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

IDEs• Ambientes integradosdedesenvolvimentofacilitam otrabalhodeprogramação:– Eclipse (http://www.eclipse.org);– NetBeans (http://www.netbeans.org);– IntelliJ IDEA(http://www.jetbrains.com/idea);– JDeveloper(http://www.oracle.com/technetwork/developer-tools/jdev/);

– Dentreoutras...

Março2016 OO&Java- OqueéJava 27

Page 28: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

RecursosparaaprenderJava• Comunidades virtuaisefóruns:

– http://www.guj.com.br– http://stackoverflow.com

• JUGs – GruposdeUsuáriosJava:– http://www.esjug.org

• Revistas:– JavaMagazine(.com.br);– JavaMagazine(Oracle).

• Apostilaselivros.

Março2016 OO&Java- OqueéJava 28

Page 29: 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a Objetos da Caelume naapostila Programação Orientadaa Objetosem Java do prof

http://nemo.inf.ufes.br/