01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a...
Transcript of 01 - O que é Java · Estes slides foram baseados na apostila do curso FJ-11: Java e Orientação a...
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
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/