01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a...

Preview:

Citation preview

Desenvolvimento OO com Java

O que é Java

Vítor E. Silva Souza

(vitor.souza@ufes.br)http://www.inf.ufes.br/~vitorsouza

Departamento de Informática

Centro Tecnológico

Universidade Federal do Espírito Santo

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/

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.

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

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

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/

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

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

• Compilação:

Março2016 OO&Java- OqueéJava 8

Máquina VirtualJava

Março2016 OO&Java- OqueéJava 9

• Interpretação:

Máquina VirtualJava

Março2016 OO&Java- OqueéJava 10

• Híbrido:

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)

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

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

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

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

AAPIJavaSE

Março2016 OO&Java- OqueéJava 16

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

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

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

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

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

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

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

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

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

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!

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

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

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

Recommended