You are on page 1of 703
para iniciantes javer 6? edigao Crie, compile e execute programas Java rapidamente a Herbert Schildt Q O autor (0 autor de best-sellers Herbert Sehildt escrow incansavelmente sobre programagio hai quase tr décadas ¢ uma das principus autoridades na inguagem Java. Seus livros de programasdo venderam milfs de cdpias no mundo iatio ¢ foram tr duridos par diversos idiomas. E autor de vrios vos soe Java, incluindo Java: ‘The Complete Reference, Herb Schld's Java Programming Cookbook e Swing’ A Beginners Guide. Ee também eseroveu sobre C, C++ ¢ CH. Emboratenha ineresse cm todas as dreas da computa, seu foco priacpal slo as linguagens de progra- magio, ineluindo compiladores,interpretadores eTinguagens de contol robe. Tambem tem grande interese na padronizagio de Tinguapens. chil tem gradua 0. poc-gradoag pola Universidade de Ilincis, Seu site ¢ we HerSchildt.com. 0 editor técnico Dr: Danny Coward trabalhou em oss as edges da plataforma Java, Ele eonduziu defini dos Java Servlets para primeira versio da plataforma fava BE © para fem dela, os servigos weh para a plataforma Java ME, e a estratgi c plaejemento de Java SE 7. Fundos a tenologia JavaFX e, mais rcentements, pojeton 0 maior scréscim feito ao pao Java EE 7, « APLJava WebSocket Da codificagio em ava 0 projeto de APL com especialistas da indistia ea trabalho por vos anos como txceutivo do Java Community Process, ele durin uma perspectvasingularmeate tampa de virios aspectos da tecnologia Java. Além disso, € autor de JavalehSo ‘ket Programming de um livto ainda asec publicado sobee Java EE. Dr. Coward tem graduasio, mestrdo e doutordo em Matematica pela Universidade de Oxfor. oe ‘Bx Se ‘a par incites ci, compile e execute programas Java npidanente recuse elewonico| Hester Schild, tate: Aki José Coelho Cee da Siva -tevido ‘Geen Mara Livia lank Lisha, 6. Pera Alegre oaks 2015 aid como iv impress em 205, ISBN OTE 85 4200357-6 1. Lingugem de programagn fa Ta, eDU on4ASslaa ‘Ceialogazao ma pblcaio: Poiana Sanchez de Avaujo CRB 102008 Herbert Schildt 6 edigao Crie, compile e execute programas Java rapidamente “Teadogi: lit José Coelho Coens da Silva Revisio tecnica: Maia Lica Blanck Lisa puts rm Cacia da Computaco pola UERGS Profesor do Insti de lfomica da UFRGS Verso impressa desta obra 2015 2015 ‘Ova riginaimente pobica ob otal Jana A Repnners Guide, hon ISBN CLT IHD9252/978-0.07-180025-2 [Bie orga 02014, The McGrail Gaal Faseation Holdings, LLC, New York, New York 100, luo par agua portugues ©2015, Hookman Compania iors Lida, uma empresa do Grupo 4 Fateacio S.A. Tos sss reservados. Geren stra: ArysinhaJaoques Aon ‘Colborne eto: tor Aerio Hella Prepac de oigimis: Bien Rae Letra ina: ava Sines Pes ‘Caps KsleFnotondo eft sobre cae xg eras lean Tebooks Reservas dono ditelios de pablo, m ag portage, 2 [BOOKMAN EDITORA ETDA._ uma empresa do GRUPO A EDUCACAO S.A Av. Jere de Ornelas, 670 Santana ‘900-340 Porto Alesre RS ne: (51) 3027-7000 Fox: (1) 3027-7070, prota a dupicagto ou reproduto deste Yume ow oven pate, sb quiguer fiasco pr quar ees etn, minis, raga, foto, dba m2 Web ‘cout, sem prise expsa da tor, nade Sto Pato [Av Enbsiar Maced Soues, 10738 Paya 5~ Con Espace Center ia Anasico ~05095-035~Sa0 Paulo SP Fone: (11) 3665-1100 Fax: (1D) M6T-1333 SSAC 0800 703-3444 — wa grap come IMPRESSO.NO BRASIL, PRINTED IN BRAZIL 1 Origem da inguage Jao ceomnmnnnnnnnnns 3 ‘Qual arelacto cate Java Ce C4 LE 4 Qual arelagio ene Ja © OF nsnnninnnnnnnnn 4 CContrfuides da tinpuagem Iva pan a Intemet " 5 ‘Applets so ne) : 6 6 8 Seguranca “ Porat Coo coo (O sepredo da inguagem Java 0 byt6C0de nnn 0 ngs Bc 4 rogramaca orcad objtoe 5 mo w wo = uw CObtendoo lava Develo Kit u Um primer program stl Secon A Inserindoo programs... oiccnmaicementeaineccoen 1h Compan progam 3 Primeio exemple de programa eas “Tratando ero de sins . Cimnmnnnnnnnn 16 {Um segundo programa sings - 7 ut tipo de dad ei Co 9 w Sumario ‘Tente Isto 1-1 Converta gales em litres, ‘Duss instragoes de contol ‘Ainstngso Otago for Criebioes de eg. nn Fonte vig: psionanca Prticas de rest = Tele Lte 12. Medbere 0 covet emnnrneennenennnomnemennn ‘As pulveaschave Java a emtteadores em Javon Sunn Asibliotcas de clases lava 2 “Teste do Capto Introdusao a tipos de dads ¢ operadores neni Por ques tipos de datos so importantes. ‘Tes ratios dingo “Tente Ito 2-1 Qual 6a distancia do relampage? Liters = “Liters hexadecimal, acta bine = Sequins de escape de cries “ Liters de rng. so Um exame mas detalhado dss varies. Inlizando uma varie! Iniitizageo dni scope e tempo devia ds varves. Opera nnn ‘Operaiones artnticos " Trementnedecremento. 7 ‘Operaeres elicienas gion ‘Operatores pias de ao-ceeile. (© opecaor de abu. Atebaioesabreviads = = ‘Convers de ips em atrbugbes. on. sie ‘Convertenda pos incampaties - “ Preceéncia de operadores. coo “eels eto 22. Tabdeverdnde pro operas bgitence Expresses, a = ‘Convero de upos em expresses - oi Espagamentoe partes “este do Capito. Sumario _ vil a “ : ot Us ainhaos. ~ oe a) Aewcala ite co Clic o {A insueao suite, = = ee Instragies switch ania. Tene slo 31 Consiroa um sisemn deat Jitnrnrnnnnnnns TB 0 0 - Co 1 ‘teas ving 16 Panes auseats i ” O tgp init nn 1% Lagos sn cone 1” DDeclarundovariveis de contole de lago deat G0 ago ft vn nnsnenes 1D » wo a 3 O Lago for melborado Sn ago While nnn aba Otago do-it ‘Tente Isto 3-2 Methore o sistema de ajuda Java Use beak pra sir de um Leo ° ‘Use break come wm forma de £40 - Introdugio w classes, objetos ¢ métodas Fndamentos das les Forma eral de uma classe oo a Detinit uma cass en Como os objets so crises. Av varied de referencia Meteo ‘Ailend um método& cise Veil. Retormando de 1 M080. Retormando mwa sando parimous... - "Adiionando um mdi paratizad Veblen vresrnosnnnen 1H ‘Tete fo 4-1. Crie ums clase de ajuds Consors. = ~ a CConsrutores parametizados. Ln " ‘Adiclonando um construtor case Vehicle m Ooperdoe new fvisitAdo evn sinsnmnnnnnnenn Clea de xa “ “ O metodo finalize} vill Sumario Teneo 42. Dement seen deo ag. A palavrchave this. co “Teste do Capito a mene Mais tipos de dads € operadores women 132 Arrays. " : “Arrays unidimcnsionals. ‘Tente sto 5-1 Classfique um array. Araysmuldimensionas "Aeniysbiimersonsis Araysirepulas.. “Arrays des ou mals dimensdas Inicilizando arays mulidimensionais Sloane seratvn pr a delaras de rays 2 2 ' 43 144 “Tente lta 5-2. Uma clue Quede. 146 (0 ag fr dees for 2ath 150 rand po arrays mulmensionss| - 155, pind lao ferme - 154 Swings ns ecemttreertrcennune: 128 Consrindo sings ae saan: 13 Operando 0m sting. | “Amys de rng “ 158 Stings no pm er alters Comune 188 ‘Usando um sng par somtole um instr switch vss 160 Usando arguments de ina de COMIN. snsvsnaninnnnnennsnnins WL (Os opsadees bis 162 ‘Os operadores bitwise AND, OR, XOK e NOT 163 (5 operadores de eslocament ann 1 Alrbuigesaeviadas tise ” “Fente sto 5-3. Ui clase Show Bits ensennnnnnnnnnnnmninnnnnnnene 169 © opeadon - “este do Capito a ‘Verifleasdo minuclosa das métodas ¢ classes... ‘Contolando 0 acesso a membros de cask. ‘Masifeaderes de aes ds linguager av “Tente lta 6-1 Melhore a clase Queve.. Passe objets para 0s métodos ‘Como or argumentoe x50 pasado Retornando jets Sobrecarga de mtd Sobrcarepando consrwoees ‘ise i6 arecmmemo cantina i urn RECUEBO nn : atendendo or membros enteos ‘locos exios. Tente Isto 63. A classiiagioripida Introdugo 3 lasses aninhadase interna. ‘Varars:argumentos em quantdade vail ‘Aspecosbiscos dos vara. . Sobrecaregando mdtados aarp ‘ora ambigvidde, . Teste do Capitulo 6 2 Horanga.. Aspton bison de her |Aceswo a membros ew her Consors ering Usando super para chamarconstruores d superclass. an Usando super pra cesta membros da supeesse a ‘Tente Isto 7-1. Estenda a clase Vehicle. Ciando uma hierarqus de véros nes ‘Quando os consrtores Sie chamados?.nsenrnnnn Referénias da superclass abjcos da subclass. a 9 Sodreposigao de e008... ramones OS “Método scbtepostos do supote so plmori. 26 Porque sbrepor meds? (mann 248 ‘apcand acest de mfoee Tosa =e oe 208 Usando classes bse anc ‘sand fina 256 A plarachave final inpede a sObrepOIG onsen 25 ‘A palavechave final impede a herangavesscccncennenennnnrnn 286 ‘Usando final com membros de dads clase Objet. “este do Capito 7 Pacotes ¢Interfac€snsnisninnnnininnininnnnnnnannn 260 Prodi sisascincsticats mAnC AST Define um past Encorirano pacates € CLASSPATH. Exempla breve de aco, Pacotes eo acento a memo Exempla de acesso a pacote Emendendo or memos poteidoe Inporando acces Biblioteca de classes Java ica comida em pots, Inrfaces Implemeatandointeriaces Usindo efercis de interac. FFunimenios ds moos odo. a ‘Uns exemplo mais pico de wm metodo padi. nnooa Problems da heranga ipl. nore Use mst sttc em uma intraces sv -vsovsvnonovn ‘Considrages nai soe os pete nterace, “este do Capt 8 nn ‘Tratamento de exceeds. ierarguia de excegoes. Fundamens do tratamiento de exes snd ye etch ~ “ Bxemplo de exceg sis aaa ‘Consequénias de uma exceg40 nia captada cnc ‘Begs pemitem que we aes nomen Usando vrs nstrugaes cath Capturand excegoes de belies, locos ty podem ser aniahades. angando uma exe nn Relngando uma exec, xame mais detalhido de Throwable Used fay a Usando throws “Tres recursos das excegiessdiclonadonecenemente Brcoges inter da linger Java. ‘Crud subclones de excep WO ava baseado em faxes. Fluxos de bytes e fluxes de earcteres accanaiasumansiaan 2S ‘Chasse de luxor de bytes. = ‘Cases de aos de eaitees. Fiuxospredefinidos. “ Usando os fanos de bytes. Lemdpacrirda Go conole uiciundiidinsiin diate Grivando asda do comole Semana a Lend ¢ gravandoarqives usando taxos de bytes. 38 ‘Gedo eres em GHD atcantteionnenny A (Geavando em wm argu navn 382 Feehan antomaticamente um argues ana 384 Tendo ¢sravandodados bins. ns) a ‘Tente Isto 10-1 Utlitévio de comparagie de arquives. Arquivos de acesoaleatrio.. Usados lion basen em earctres danger lava, Entra do console com o uso de fuxos de carter. Si do console com o uso de Naxos de carictn.. Wo de arquivo com 0 uso de uxos de carte ‘Usa om FHEWite nn a ‘Usando um FileReader a ‘Usados enapsuladores de ips da Ingseen a0 “Teste do Capitulo 10. teeters 3 Programagio com Vtias threads wiminninsnninsnnnnnnnnnnns MZ Fundamentes do uso de wii treads. ‘Xclasse Thread ea nterace Runnable. (Chiao ui 8 “Algamas melhoras simples ‘Tente Isto 11-1 Estendondo Thread. Cian vias threats. vo 7 7 Deterinande quando una ead teri ncnrwsnennsnensnewncn 318 Pronidades das head e a ame 381 3a A instrgiosyehronize ono 38 emule ntti com eo), wali). moon SP -Eemplo que wsa vat) notify) : siamese SEE Suspendendo reomande «encerando treads 0 ‘Tente Isto 11-2 Use thread principal Test do Capito een EnumeragSes, autoboxlng, Importagio esitlen € anotagBes... mumerages. undamentos da enumeraf...n oo [As eaumeragdes Java Sto ips de ase Maho values) valusO4) CConstrutores,métodos, vardeis de instnciae eaumeragies. Das resrgbes importantes, Son Emumeragées beam Enum... Co Tente Iso 12-1 Serre por pa mn secre $09 AUB ot — le Ecapuldoves de pn Pry Fundamentos do autobonng.nescsssuenmnnmnnnennnnnnonninnonnnnnans 417 Autoboring © os metodes. a ‘Auloboxing/unboxing acre em expestOE cnn moan AD ‘Aadvertnca ss oe 420 xil 43 44 Sumario Import ett nnn ii Aa Anotagoes (metadados) vnnrnennenns ABM ‘Taste do Captlo 12 - a6 “Tipos geméricds Fandaneno os tos pens. Exemplo simples de gensrico co ‘Genéricos funciona com pos de rtertcla.- ae ‘Tipos gencticosdiferem de acordo com seus argurentes depo once 484 Classe gens com dos parimet Os 8 P0489 fom gr ums cs ges. fe 836 “pos limita. snnnmnnmnnnnnnennnnnns SOI ase {Usandoarpumenios cling nee vonnnsonnnennnnn 40 Carigas Limits nannies cn 4 Metodos gnéscos as ‘Constrtres genic. a8 Inrtaces generics. a8 “Tente Isto 131 Cri um - 481 “Tipos bates esigo lego os ernie vo ASS Infertacia de ios com 9 operado osang0 nnn 488 Eras se : "hitman 459 Fars de ambigoidads — 460 Algumas resides dos genrios. fascia ABl arin de ips eo pom se insta, = 461 estriges aos membros esis. estrigoes aos arrays peices. “ ast estrigoes a excepoes genes 46 ‘Contiuando sex estuda sae penricon Sandel “Teste do Capt 13s Expresses lambda ¢ referénclas de método... Tirodugso is expresses lamba... Fundumento das expends lambs Interfaces funciona. -Asexpressties lambda em ig0.0. [Expresses lambda de loco. Interfaces funcional pendent “Tente Isto 141 Passe uma expresso lambda como argumento [Expresses lambda ea captura de varies... Lance uma exceydo de dentro de uma expresso laa Referéncias de metodo a Referéncias amd sieve ic A Referéncias amid de instil 288 Referéncins de constr. an Interfaces funclonas predefinidas. 495 “Teste do Capitulo 14 — 496 Sumério_xill 15. Applets, eventos topleos divers. Aspsctos isos do pe ss Organi cements escnis Jos ait “Argue do apps Esq de applet completo Ina eenceamens So ie. Solita ‘Meteo update) Tete Isto 15-1 Ale debian sine Usando ajanela de stats. Passandoparimetros pars apps. Alas APE nnn ‘Tratameno de eventos Modelo de delezagto de events. Eventos fv Fontes de evetoe os nat nn 316 Ouvins de eventos, S16 (Classe de eventos nuance $16 Interfaces de ouites de eventos ns vnsnnnvvnnnnnvnnnnnnnen 317 ‘Usando o modelo de deegagode evens .. = Sooo 18 "Trandoventos clo mowxee de seus muvimenion.vvnssncnnnnn S19 Applet de evento dé MOUS SIMPLES neve nnnnnnnnnnenes $19) Mats paavns-chave a ST se Mouificadores transient Ola. onsen 329 {M66N920f eee sit ann Métados natives. “Teste do Capital 15. 16 Introdugio & Swing non (Origen ilosotia do desin de Swng. nitrites Componentes contineses. “ Compeneates: Contineres Pines do coniiner de nivel superior oo CGereciadores de lite - ‘Um primi programa Swing simples. ii Fens ckpl de Sting iit ia nnn Use Baton, ee macnn Trabae com FTextld Chie tm SCHEKBOE...snvsvnnsnnvnnmnnnnnnnnnnnnnnene Trl som Sisk. : “Tentelet 161 Uilltdrie de comparasSo de arguivs bscado can Sn Use clases intermas anima ou expesses lambda para trata evenos. Chie um apples Sing. - no = “Teste do Capitulo 16. xlv__Sumétio AT Introdugl0 a JavaFX. ‘Conccitos bcos de JavaFX. (pcos Java. 7 AS classes Stage e Scene - Nose grates de cena. Laine = ‘A clase Application eos metodo de cel Iniciando um aplicatvo avaFX 2 squeleto de pleat J2¥AFX wo ‘Compilandseexecuando un programa fava A thread do aplicativo Un contole JavaFX smpes: orto. Usando boldese eventos Aspectoshiscos de Eee = Introdugao a0 contol de Bota. a Demonsiando owitamento de eventos €o both nv Mais sconces JavaFX 7 Checkon “Tene sto 17-1 Use o estado indeterminado de Checkbox. ListView. ‘Tented. Tnurodugzo ans fets e wagsformagoes. eH i “Trasformayoes.. oo emonstand os eflionetranstormaes © quehi mas? “Tete do Capitulo 17 A. Respostas d0s UsteSnnmsnnnininninnnninnnnnnnninnninmnnn 603 Capita: Fundamentos da lingsager fv. sac ‘Captao 2:Introdu as tipos de dados © operadores nn ‘Capt 3: Intrugtes de conto de programa - (Captuo 4:Intreduci is clases, objets metoos ‘Capito 5: Mais tipos de datos € operadores jaaaroan ‘Captlo 6: Veriicaqao miauciosa ds métedose classes (Captale 7: Herangs : Capi 8: Pacoteseiterfaes ‘Capua 9 Tratamenta de exces. ‘Capito 10: Usundo UO. ‘Capita 11 Programage com vrs teas. ‘Captu 12:Equmeracoes, sncbecn, inpatients. ‘Captlo 13: Tipos wenios.. i ‘Capita 14 Expresso lambda reericia de mato, Capitulo 15: Applets, evento epicosverss, (Captuo 16: Iaeduae a Swing ‘Capitulo 17 Indu a Iva, Suméio xv 8 Usando coments de documenta da ngage Ja, exception. (inkertDoe| (ink on [ @linkplaa (ovatus) = : @ version Forma eral dum coment de documenta (que javadoe gerd Femplo que uss coments de documento Indice Ovtete deste livro éensinar os Fundamentos da programayao Java, Ele wsa uma sbordagem paseo a pass complementada por vriosexemplos, ees © proje- tos, emo exigeexpergncia prévia em programasao.O livre comesa coms aspectos basic, como a compilagioe execu de wm program lava e, em sega, disete 1s palavra-chave, os recursos e a estrus que Formam @ miclea da inguagem. ‘Voos também encontrar alguns dos recursos mais avangados de Java incisive & programagio com vias threads eos pos genicns. ma intodso 0 fan ‘mentos de Swing Java conc o liv. AD terminar, woee ter uma compreensS0 ‘lida dos prineipioshisicos da progrimasio ava "Antes de comecarmos.¢ importante mencionar que ese livro€ apenas um pon to deporte, Java mais da que apenas os elementos que dafinem a inguagem ~ela também inclu biblioteca e ferramenta extensas que ajudam no desenvolvimento de programas. Para ser um programador Java de primeira lina, ¢ preciso dominar também esas ras. pss terminarolivro,voo® ft o canhecimentonecessrio para se aprofndar ems todos ox outros aspects de Javn A evolugao de Java “Apensalgmasinguagensrfommlaram de mans fandamental a essnca da Nek psa ic eee dam pores voting agate {issn claro qo extmes flan da inguagn ava, No €exagrs cer {veo lanamento original de va |Dem 1985 pela Sun Micronytens, Ie. caso Hien ot perp Eas nrc raecheroe Sr mei el Introdugdo__xvil ‘Web, tomando-a um ambiente atamente intrativa, Ness proceso, Java defini um nave padi no design de ingagens de computador. ‘Com os anos, Java continaon crescendo, evoinde ¢ se redefinindo,Diferen- temente de muitas ouraslinguagens, que so lentas na incorporasto de novos re- cuts, Java com fequsacia est na diantera do desenvolvimento das linguagens de ‘computor. Uma rao paraiso € cular de inowagio madanga que foi cada 0 eu redor. Com resultado, Java pasion por wirasatalizagies ~algomas elai- ‘mente pequenas,outras mais signficativas. ‘A primeira grand atalizach de ava foi a vets I. Ox recursos aicions- ds fram mais sigificaivos do que se experaia de uma verso *.1", Por exerplo, Java 11 adicionow muitos elementos de biblioteca, redefiniy a rancira come os ‘eventos so tata e reconfiguro varios recursos dailioteca | original ‘A poévima versa de grande porte fo Java 2, em queo 2 indica “segunda gera- 0". Acriagio de Jaa 2 foi um eveno divisor de gus, mareando eomege da “era ‘modem’ da linguagem. A primeira versio de Java 2trazi oniamero 12. Isso pode parecer estrnho, mas oerreu porgue,eriginalment, ole se referia 20 mero de ‘verso interno das bibliotens Sav: mais tre foi genealizado para se erie ver- 50 incr, Em Java 2, a Si rium novo pacote par o produ Java, chamando-o dd J2SE Java 2 Platform Standard Edition), os niimeros de versio comecaram a seraplicados a esse prin, 'A perma aualizasto de Java foi J2SE 1.3. Essa verso fia primeira grande stualizao de Java 2 orginal. Ela aumentou 3 funcionaidade existent e“inegrou melhor” o ambiente de desenvolvimento. O laamento de J2SE 14 melhorou ainda ‘mais inguagem. Esa verso continu virios recursos novos importates, inclusive excegdes encadcadss, HO (inpuvourpot, ou enruafsalda) bascada em cans © a palava-chave asert. O langamento de J2SE S criow nada menos do que uma segunda revolugdo Java. Ao conririo da eon das atalizagies anteriores, que oferecey melhorias ‘importantes mits increments, 2SE 5 hisicamente expands « escopo,o poder € 0 lance da linguagem. Para der wna ideia da magnitude das mudangas caused por TSE 5, ei uma lista de ses prncipais recursos nova uss discus neste vo: © Tipo Genéricos © Aatoboxinghanboxing + Bnumeragoes + © ago for methorado, de estilo “foreach” + Angumentos em tamanho varvel (varargs) + Iinportagio eaten + Anotagtes ssa ndo & uma lista de pequenos ajustes ou atualizages incrementais Cada item da lista representa um grande aeréscimo a inguagem Java. Alguns, ‘como os tipos genéricos, Iago for mclhorad e ot varargs, introduziram novos clementos de sintaxe. Outros, como o autcboxing eo autounboxing,aliraram a vill Introdugso scmintca da linguagem. As snotagdes adicionaram uma dimensiointeramente nova A programayio, A importincia desses noves recursos se reflete no uso do nimero de versB0 °5°, O prénimo nero de verse de Java normalments tera sido 13. Noentanto, 08 novos recursos eram th importantes que a passage de 14 para 1.3 no paocia ox pressara magnitude da mudanga. A Sun eno preferiu aumentar o nimero da verso para 5 como uma maneira de enftizar que um evento maior eta acorrendo, ee fot momeads como 12SE Se «kit da desenvalvedor foi chamtada de IDK $, Porc, para mantorcoeréncia,aSun decid usar 1S como sou nimero de verso interna {que também &chamado ee mime de versdo do desemolvedor. OS” em TSE 5 € shamado de miimere de verado do prod. ‘A xersto seguinte de Java foi chamada de Java SE.6.¢, ovamene, a Sun de- cidia mudae © nome da plataforma. Princno. 0 “2” foi removido, ea platforms Pssou ater o nome Jai SE; « nome oficial do produ ficou fae Platform, Stan ‘dard Edition 6, enguanto o kit do desenvolvedor Tava ficou SDK 6, Como no J2SE. 5,06 em Java SE éo:nimero de versio do produto. O ximero inten da verso do ‘desenvotvedor €1.6. Tiva SE 6 tome como base J2SE 5, slisionando melhorias increments, Fla io adicionou mires recursos linguagem Java peopramente dita, mas aperfei- {901 a ibliotecas de API, adicionod iriospacotes novos eafereceu melhotas no tempo de execugio. Tumbém pussou po vrits atualizagtes durante seu longo (em termos de Java) cielo de vida, com muitos upgrades durante o percurso. Em ger, Java SE 6 servi para sliifcar ainda mais os avangos ctor pelo J2SE 5. 'A peGuita versio de Java foi chamada de Java SE.7, com o kit do deseavol vedo Java chamado de IDK 7. © adimero a versio intema & 1.7. Java SE7 foi primeira grande versio de Tava desde que a Sun Microsystems foi adguirda pela (Oracle. Fla continha muitos recursos noves, inclusive acréscimos significativos & Tinguagem e ts biblitccas de API. Alguns dos recursos mais importantes adicion ds por Java SE 7 foram os desenvolvidos como pate do Project Coin. O objetivo td Project Coin era identifica virias poquenasalleraies feitas ma lingua qu Seriam incorporadss 20 JDK 7, que incluer © Objeto Steing pode controlar una insrugo switch, © Liters intitosbinsrios. © Sublinhados ea liters numérico. + Instugio try expandida,chamadatry-with-resourcer, que dé suport uo ge renciamemt automsien de recures, «© Inferncia de tipos (via operadorfosango) na constragio de uma instincia ge- tea. © Tratamento de excesGes melhorado, em que duas ou mais exceqSes podem ser eapturadss pola mesina inswucto eateh (multcatch),e melhor verticagio de tipo pan exoagdes que siorelancadas Come voeé pode ver. ainda que os recursos do Project Coin tesham sido consi- derados poquenasalteragdesnalinguagem, seus beneficis foram muito maones do Inrodugso xix «que oadjtivo “pequenas” suger. Em especial, a instrughotry-with-zesources feta ‘rofundumente« maneira como uma grande quanidade de egos € esr. Java SE8 ‘A versio mais recente de Java se chama Java SE 8, com o kit do desemolvedor Java ‘hamado de IDK 8. O nimero da versio interna é 1,8 JDK Srepresenta umn upgrade ‘state sigificavo na linguagem Java devid incluso de um novo recurso de rane alcance: a expresido lambda. O impacto das expresses lamba ser profun- to, alterando a mancira como as solugées de programagdo sto concebidas ¢ como © eign Java 6 eseio. Nesse proceso, as eypesses Tamds podem simplificat ‘redit 0 volume de eigo-fote necesito para eriagio de certas estruturas. A inclusdo das expressoes lambda também gera um nove operador >) € um novo ‘lemento de sntaxeasrem adicionados&linguagem. As expresses lambda sudan cu voi no ingen igo an pera es ‘Além das expresses lambda, JDK 8 adiciona muitos outros recursos novos Jmportanes. Por exemplo, a paris de JDK 8 ¢ possivel defnic uma implement ‘0 pao de um meiodo especiticado por um interface. JDK 8 também inca © suporte a JavaFX, o novo framework de GUI da linguagem Java. E esperado que tem breve JavaFX descmpenhe um papel importante em quae todos os aplialivos Java, scabando por substitu Swing na mainia dos projetos bascados em GUL Em “dima andtse, Java SE 8 & uma versio importante que expande profundamente os recursos da linguage eaters a mancira come o ig Jv éesrito, Sens efeitos ‘eri sentidos em todo universo Java durante muitos anos, © matril dst livro Tot atalizad para Java SE, com muitos recursos, atualizagies aceéScimon novos Indias em toda a sua extenso Como este livro esta organizado Ee io apesent um nivel de ifcldadecescenc cm qe ena ego tem como tase uancior. Cals un don seus 17 capa discus um expect da ngengem ne Hen li ede piqued wirakeonan opeeae gaorlinpice eld oi, Principais habilidades e conceitos Cada capitlo camera cam tm conjunto de habildades que woo pronders. com um teste que permit testa seu comhscimento. As respos- tas esto no Apendice Pergunte ao especialista Enconrun- esas no ivr css rpc chamades Pergune a expeci- Teta Els cont informagoesaiconas ou coments inlresaner sobre ut ‘pico © usam um formate de Perguna/Resposts, 2X __Introdugao Tente isto Cada capilo conten umn ot mais clementos Fete isto sto projtos que mostra como aplicaro que vc®estéaprendenda, Em muitos casos, so exemplos reais que ‘ocd por usar com pono de pata para seus prprios programs. Nao é preciso experiéncia prévia em programagao Ewe lvo ao exgeoxperitcia peévn em pogramagto. Logo, vocé pode uo mesmo se mines program. Se iver agua experiencia anterior em program (de. podecéavangar um powc mas ripide. Pore embne-e de qu Jove dilere Sin virios aspects importantes de tas lingoagens de programas populares: tssencil iO ir conchunbe apes, pt, a meno prs 0 porate experienc ar eit cuidaosae recomend, Software necessat Para compilar execute todos ox programas dest liv, vos precisa do dim kit ‘do deservolvedor Java IDK. Java Developers Kt) da Oracle, que, quando est texto {oiexeio, rio JDK 8, Esse € 0 IDK de ava SE Intra para chtenso do JDK, Java so dadas 00 Capitola 1 ‘Se voe#estver usando uma versto anterior de Java, também poderd usar este Tivo, mas no poder compile executaros programas que usr 0s recursos mals recentes da linguagem, Nao esqueca: o cédigo esta na Web Lembre-se de que o fdigo-fte de tados as exemplos © projetos deste lvraexté Aisponivel em www grupoa.com br. Cadastre-se gratuitamente no site, encanre © ‘acctse pgins do livre por meio do campo de busca clique emt “Conteido Online” prs fazer download do egos. Agradecimento especial Fago um agadecimeno especial # Damy Coward, editor teico desta aio Dany raalhou cm nits de meus ioe sus colo, ikiansugstes seme pre Ema le me vlay mtomprcinion Capitulo 1 Fundamentos da linguagem Java 2 Java para inciantes Principals habilidades e conceltos © Conhecer historia ea Flosofia de Java «© Entender a contibuigo da linguagem para a Internet © Entender a importineia do bytecode © Conhecer 0 jargio Java © Entender os prineipios bésicos da programagao orientada a objetos © Criar, compilare executar um programa Java simples © Usa var © Usaras instrugdes de controte if efor * Criarblocos de cédigo. + Entender como as instrugbes sto posicionadas, recuadase finalizadas * Saberas palavras-chave Java © Enender as regras dos identificadores Java svango da Internet e ds World Wide Web rformuloa a computagio. Ants da Web « panorama ciberdticn era dominado por PCs isclados. Hoje, quse o- os os computadores esti conectados ateret. A prépria tne fo transfor ‘mada ~originalmente, oferecia uma manera comeniente de compartilhar arquivos © informasoes: hoje, ¢ um universe de computagio vaso e distibuide. Com essas ‘mudangas, surgi uma nova manera de programa: Jaa, Java € a principal inguagem da Inert, mas mais do que is0. Ela revo cionou a programag3o, nudando a maneira de pensarmos tanto sobre a forma quanto sobre afngdo de um programs. Atualmente, er um programadorprofisional exige ‘ abildade de programa em Jav, tal 6 sua impertncia. No decorte dese Ivo, ‘voed aprendet ts asides necessris para domi esa habilidade. (O ebjetivo deste capitulo ¢apresenté-lo a linguagem Java inclusive i sua his- ‘Gra, ilosoia de design evros de seus recursos mais importantes. Sem divi, © ‘mais diffe no aprenizado de uma lingigem de programarto & 0 fata de nenhum clemento exist isoladamente, Os componeates da linguagem trabalhara em con junto uns com es outres,e ssa interatvidade tem destaque especial em Java. Na ‘verdade, ile discutir um aspoeto de Java sem envelverouteos. Para ajudar& resolver esse problema, © Capitulo I fornece um resumo de vrios recursos Java, entrees a forma geral de um programa Java algumas estuturasbisicas de controle 0s operadores. Ele nfo entra em detalhes, mas se concentra nos conecitos comuns ‘qualquer programa tava, Capitulo 1 Fundamentos da linguagem Java 3 Origem da linguagem Java A inovagio nas Tinguagens de computador éimpulsonad por dois axes: elas stare de proramar ltragies o ambient de computagio. Java nia ¢ excess Conseuia par do ico legado eda das linguages Ce Ce, Jaa adciona ‘melorias euros que elle oestado sal da ste de programas. Respondendo 8 asensio do ambiente online, aTinguagem Java oferece recursos que omizam a rogramagio pars uma aqutetirsaltamentedsiida ava fol conecbida or Jamcs Gosling, Pack Naughton, Chris Wan Ea Franke Mike Sheridan na Sun Microsysen, em 1991. No inco, a finguogem se hata “Oak, mas fi renomeaa como “Java” en 1995. Sarpreendentement, a ‘notvago oil para «erie de Tara no fa Intmet A pincpal oivagio {oa ecevsidade de uma lingoagem indspendenc de plataforma que pdesee set ‘sacra de software emi em vos disposos eerbnicos dome Cos, como tomas, fomos de micr-ondss ¢couoles remotes, Como ea de 5¢ spor muitos tips de CPUs sto usados come controladores. O problems erage {on pce) a mato ds lingungens eva prolapse compa pra am de noespecfic, Por exerpo,easiere Cos Ebon foie pssiel compl um programa C+ pra qus to po dé CPU dss queria um complador C++ complet destindo sums CPU expecta. O pro ems, no entants,¢ qc Seve demorado cri compares. Ei tn emai de score uns slugo mel, Gosling ¢ ous raalharam em uma lnguage com Ponabilidade cote patformas que pss prodircigo pare ser cxecitado cm ‘iis CPUs com ambints cere. Ese esogoacabou evando ciao de Jv ‘Mais ov menos ma eposaem ue os dues de Java estar end xing sos sams um segundo flor muito importane que deserpenhara ppel cri 0 Faro da lingoagem.E claro que esa segunda fogs fo World Wide Web, Se 4 Web no etvenae se formando quae ao mesmo tempo em que Jav stv endo ‘implementa aver la continua send una lingua ci pore obscura para { programagin de wenstiosclernicosdoméstices, No entanto, como srgimento 4a Web, Java fs impslsionada para inter do design das nguagens de comps tedor, argue « Web ame preciso de programas pores ‘Amara dos progrrtaores arene ceo em sas careins que a ei de programas pores a0 mesmo tempo, desejivel eilsra. Embora a ata por ‘unt mancira deca programas ficients ¢ pores independcates da platforms) sje quace to antiga quanto pps diciplina de programosto caf deinads con sgurslo plano devidoa problemas mais ugentes. No enlan', com 0 advento da In tect a Web o velo problema da praise imensificn. Afral a Ineret ‘compost por um univer dinerifeadoedstbida povoado por muitos ios de omputaores, sistemas operaionase CPUs. © ave tina sido um problema iritane porén de bana provide foro sma ncesidad urgent, Peto de 1953 fico vio pars ox membros da equips de design de Java que, com fequéncia.osprblemas de porabilidade encontades ma «ria deeiigo para contoaoresemutidestambem so encontads quando tentamos tar ego par a Inlet. ssa percep fe 0 foc de Fava mar os "casos clctrnicos domestics para a programa na nterct Log, embora a {agatha incite sido grad pelo desejs por ima imguagem de programasso 4 Java para inciantes independente da argutetra fo a Intemet que acabou levando 80 sucesso em larga excl de fava Qual a relagdio entre Java, Ce C++? Sava ext dretamenerelaionada aC ¢ C+ la hea a sntane ds Knguagem C. Seu modclo de objetos¢adaplado de C+. Orelaionsment de ava corn Ce Ch mportant or vrs rates. Em princi liga muitos pogramadorescomhssem a-sintae iGo. o faclia um programador CiC+« aprender avn e, da mexna forma um programadoe Java aprender OC ‘Em segundo haga, os projets no “riventaram rods” ls einaram sin- da mais um paragon de programagio 6 atsmonte hem -sicei. A era madera ta programagio comeou com C:Passou para C++ e depos para Sova, Ao hea ¢ se bea nese rc Iga, va Forece tm aint de pegramasio pero ¢ logicamentecocrnt ie sproveta 0 melhor da pasado eadiciona nanos rciros ‘quero polo ambiente online aver o mais important sea gue, devido ae semelhansas C, Cree Java definem uni errs conceit comm pas pro runadorproissonal. Os progamadores ao cvontam grandes diferengss quando passa dé ums ngage para ota, (Urn cs Gloofias de design centrist om C quanta em Ca de ue 0 programador eats no comand! ava trem hea ess ison, Excel pls ex tigoes imports pelo ambicate da Interne, linguagem dao programador conte tol Se vocéprogromar hem, sev programas rfletito iro. Se prograrnar ma cles am elt, Ex outrespaevras, Java no 6 ingen prov de falas. E uma Fngeagem par pogramacoresprofisioni. ‘A linguagem ava tem oto tribute comm com C ¢ C++ foi prota, ‘estado aprimonada por programadresiseridosno mercado de aba. ama sggem haseuda nas neces e experincion das pesto qu a poeta. "Nao ancira melhor de prodcr ua inguagem de programasaoprotnioal de ala qualidade vido is semalhangas entre Java C+, princialmente seu spore progre smagio oven a objeton &tenludor pensar em Java como "vero de C++ para aloternc”- No ent, nso sera um cro, Java em deren raticas lesieas ‘ignifcatvas.Emora tena io inflansiads por C+, nos uma verso melborada ‘wa Tinguager. Por excmplo, no & compativel com verdes aneioes oa urs dle Cs, Claro an semethangs com Css sits, me v0 for pga dle Cr, va se sentir ea cass com Java, Ouro posto: ava no foi pojetada para suhaiot C4 oi penta pare resolver detoranad conned problemas; + {oi projet para reaver um conju de problemas diferente. Ela sid coexist ‘ho por itor a Qual a relacao entre Java e C#? Alguns anos aps criagao de Java, a Microsoft desenvolvew a linguagem CH. Isso € importante porque CF est inimamenterelacionada a Java. Na veedade, muitos dos recursos C# tm equivalentesdirtos em lava. Tanto Java quanto C# compartitham 1 mesma sintaxe geal de estilo C+, dio suport a programagio distrbuidae wl am 0 mesmo modelo de objetos E claro que i diferensas entre lava © C8, mas & Capitulo 1 Fundamentos dalinguagem Java 5 paréncia” geal dessa linguagens€ muito semethante Se vac8 conhece C4 srt ppariclarmente el aprender Java. Da mesma forma, sestver em seus plans usar CC, seu conhecimente de Jai ser itil ‘Dada a semethanga ene as duaslinguagens, seria natural alguém perguntar: CH subetituied Java?” A resposta & nto. As linguagens Java © C# foram ofimizadas para dois ipos de ambiente de computa diferentes, Da mesma forma que C++€ Java coexist por muito tempo, o mesmo corres com Che Tava, Contribuigdes da linguagem Java para a Internet ‘A Internet judou a impulsionar Java par a diantira da programas e, por sua vez, Java tove umn efeitoprofund sobre «Invern. Am de simplificar a programagio al na Web cla inoveu com um tipe de programa de rede chamad apple que mni- ‘du a manera do mundo online pensar cm conte, Java tam resolve alguns ‘dos problemas mais complicados associados i Inte: porabilidade e segurangn. -Exuminaremos mais detalhadamente cada um dees Applets Java ‘Ui applet ¢ um ipo especial de programa Java projet para ser ransmitido pela Interne exceutadoautomaticamente por um navegador Web compativel com Java. ‘Alm dso, ele baixado sob demanda, sem nenhuma inieragio com ousuisio. Seo ‘sudo clcarem um link que contém ur applet, esse ser automaticamentebalxado « exccutado no navegador. Os applets sia projtadas como programas pequcnos. [Nommalmente, so usados para exibirdadosfornccidos plo server, ratr entradas ‘do usuério ou Tornecer fungbes simples, como uma ealeuladora de emprstinos que «6 execu localmente em ver de no Servidor. Bisicamente, os spples permitem ionalidade seis movida da. J ‘A eriagio do appIE mucous na Internet porque expand 0 uni verso de objets que podem se mover livemente no ciberespago, Em sera, hi das srandes categorias de cbjeos que si transmitdas ene o servidor cliente: infor- ‘agdes passvase programas atves. dinimicos. Por exemple, quando voc$ I seus ‘emails, etd visulizando dados passivos, Até mesmo quando baixa tm programa, seu céigo ainda sao apenas dao passivos a voo® executé-o, Por out lado, 0 spplet um programa dindmico de execugae automatic, Esse tipo de programa én agente avo no computader client, mas ¢inicializado pelo servidor. ‘que esses programas dinimicns de rede so tio desesveis, eles também ‘@m que evtar problemas sérios nas eas de seguranga e portabilidade claro que lum progrima que ¢ baixado e executado aotomaticamente no computador cliente dove ser imped de casa datos. Ele tam deve poder se excovtado em vrios ambientes diferentes e em sistemas operacionas dstntos. Como voce ver, Java resolvou eses problemas de manna mite eft elegant, Examinremoscs dois problemas com mais detalhes. Seguranca Sempre que baxamos um program “normal” estamos os atiscando,porgue © «cio baixao pode comer vit, eva de Trot ou MUO cio danoso. A pate 6 Java para inciantes ais importante do problema ¢o fato de que wm eéige maliciosa pode causar ‘dano, i que ganhou aeeso nie autorizado a recursos do sistema, Por exempo, "um virus pode coletarinformayées privadas, como nmeros de cartao de crédito, saldos de conta bancéra e senhas,pesquisande 0 contcido do sistema local de ar- |qivos do computador. Pars Java permiir que o appt fosseseguramente baixado « executado no computador client, era necessirio impedir que ce iniciasse esse tipo de aaque. ‘A linguagem conseguit formecer essa profes confinando o applet ac ant bionte d exceugto lava enagand acess a otras partes do computador (Vacé ver ‘somo isso € feito em breve) Poder baixar applets com acerteza de que nenhum dane ‘er caunado ede que a seguranga no ser vilada € considerado por muitos © as ecto mais neva em Ja Portabilidade pore Sumaspecto moran da net, pn htop com inten tii Gp tte lose Goer toe Se fea we ote leer cre pts quake ripe Camano ec Sct erage hve gms mania de peri ge esse ogra one excago i ditapon Goce sect, am dicate plat gu pobrinfetanveteoach pol asks veoeinls CPUa hiseen pees Tegade cect ern Nin ricer cle versus ple fers Corps ents. O mmo cll tee nce wm te ance fndoes. Porn, gum meio de ger odig excel priv er cea amo vec vert en freve esr mecansne gue jue ane 9 segura tami ura ger poral O segredo da linguagem Java: o bytecode (0 segtedo respensivel por permite que Java resolva os problemas de suranga & povtabilidade ue acabanos de descrever € nada do compilaor Siva no sero {go executivel. Em vez diss, é bytecode, O bytecode ¢ um conjunto de instrusais al- tamene otmizade projtado para sr executado pelo sistema do tempo de execaseo Java, que se chama Méguina Viral Java GVM, Java Virtual Machine), Na verde, ‘VM original foi projtada como um interpretador de bytecode, Isso pode pareect novidade porgue muitaslinguagens modernas so projtadas para sr compiladas para ego exeeutiveldevido a preoeupagies de desempenbo. No entato, 0 faa de © programa Java ser executado pela JVM ajuda a resolver os prineipais problemas sstociados a programas baseados na Web, Vejamos porque. CConverer um programa Java em bytecode facilta muito a exccusio de um programa em uma grande varedade de ambientes, porque s6 2 JVM tem que Set ‘mplementada para eadaplataforma, Una ver que pacote de tempo de execigio tstiver presente em um determinado sistema, qualquer programa Java poderd ser exceutado nel. Lembre-se,embora os detalhes da JVM sejam diferentes de uma pla- taforma para outa, xs entendem 0 mesmo bytecode Java. Se um programa Java Fosse compilado para ego native, deveriam existe diferentes verses Jo mesine Capitulo 1 Fundamentos dalinguagem Java 7 programa para cada tpo de CPU conectads 8 Intemet. claro que essa nfo uma rolugio visvel Logo, a execasio de bytecode pela JVM é a mancira ras iil de «rir perms reaieote pote ‘0 fato de um programa Java scr exccutdo pela JVM também ajuda a torné- slo seguro. J que a VM ests no conte, ela pode rete programa eimpedilo de ze efeitos colar frac sistema segranga amb € aumentad por cetas ‘estrigGes exists na lingua Ja, ‘Quand um programa ¢ interpreta, geralment ele é executado de modo mais temo do que 0 mesmo programa seado exceutado quando compitado pars ciigo exccutivel, Noentanto, em ava, adiferenga ene o dos no € to grande. Ji que > bytecode fo‘ alamenteovimizado, seu uo permite que aJVM exceute programs de ‘aneira mais rp do que o espera ‘Embora ava tena so projetda como uma inguagem interpreta, ot nada gue impega a compilagan dinmica de hyteode para céidigo nati visando ‘a melhoria do devempeaho. Portanto, a tesnologia HotSpot foi inteauzida pouco tempo aps o langamentoinieal da linguagem. O HosSpor fornece um compar {usti-time (IT) para bytecode. Quando un compilador YT fa pate da VM, par tesde bytecode selecinadas 0 empiladss em tempo real fragmento a fragmento «sob demanda para céuigo executive. E importante entender que nao ¢ pratico ompilar um programa Java intio para cédigo executive de uma 36 ver porgue Sava executa vérias veriffcagBes que 96 podem ser fetas no tempo de execu, Em yee disso, um compilador ITT compila cédigo quando necessrio, durante & xccugio, Mas nem todas a sequéncias de bytecode sto compilads~ 56 a8 que tenelciarto da compigto. O ebdigo estan €simplexment inerpeetado, Meso ‘sim, a abordagem just-in-time gera uma methora signiicativa no desempenho, ‘ALé mest quando a compilago dindmica € apical ao bytecode, os recuses de porabilidadec seguranca contnuan apliciveis, porgue a JVM sinda est ao co- ‘nando do ambiente de execusho, Pergunte ao especialista Oui falar dum tipo especial de prograra Java charado serve De train? FR Um sere um program pequenn exzcudo a server Da mesma forma gue applets etndem dinamicament a fencioalidade de um navepager Web, os evs ‘Merde dnumicunete a enconluade do serider Web, Deveron enter qe, esto endo ts caplet so ents uta ete da ua lensed Pouco emp aps anaes isc de av, fos vio ue Hague adn ‘etal ado do srvidr O esa fo 9 seri, Lage com oadseta dose les Javase esende pelos is laos de eoexto cio, Er igo servlets no tape do escopo deste guia do nian ees so algo que voce ‘al querer concer melhor ao avanear a programa av, (Una discuss dos ‘eves pod ser encoatad tm tow The Compe Refersmcepubiado els One PresMeGr-L) 8 __ Java para inciantes 0 jargao Java ‘Nenfura visi gral de Svs completa se un xan de seu ro. nora a fers bss us pevsoam daivengo Jaa tnham sido a porubldade ese surance furs decmpenbaram um papel imprints me oldagem de foro Eistan bngeae As cnietrgtae che ee taraar pla aps ap Savana lista pales epi Simples “a tor un conjato do reerees conto coaeo que a toma ‘ae 6 aprender 0 usa Segura Six omece um mo seguro de ria apiesthos de ntemet Portave (0s programas Joa poser ser xecutades er qusiquar ambient parse gus nower um sistema ce tmp ge evecugso Jaa oriontaaa a objotos Ja nerpora.a modems loco de pragramagéo oortads & ets. Robusta Joe ncentiva a programagéo sem eros por sr frtemente ipa © enero erica de tmp de execu, Vatias threads Jaa orsco suport inte aco 8 prgamacdo com vatos ‘treads Neutra quanto & arqultetura Jo no tom ress cam ane determina magus oo arqiatura do sstoma opraciorl. Interpretada ave dsuporte acco para vias pattormas com @ uso do ipnecode Ate desempento CO yrecoae Jove ¢ tment atimizado par eaten de \cetese de execuctn. Distibuiaa Jove projeteds visance 0 anoientsastroulce da irttret Dinamiea 0s programas saa eatagam grandes quaiidades do Informageas do tipo quo 50 usadas ra vricactoo esoluca0 de acosse a abot no tmpo do swecue. Pergunte ao especialista Porque fol necessirioerar uma nova inguagem de programagio como Java ‘para resolver s prublemas de portaildadeesguranca? Uma Hinge camo C+ nio poderia ser adaptada? Em outras palavra. nt podera ser eriad um compiladr Ces que erase bytecide? RR Einhorn fosse pose am compiladr C+ gear a semethane x bytecode em ve eciignenectiel, Crem recursos qe desencorsj seu sop acrigno de programas cd Internet o mas important dels € supe 2 patios. Um ponte ‘oendeeco de algum ebetoarmazceade oa mea Como ws de um pons, seta posse! sess ecuos fra do programa. o que sulla em un fall segura, va no di saporte ponies elimina ese problema Capitulo 1 Fundamentos dalinguagem Java 9 Programagao orientada a objetos ‘A progsamagio orienta objets (OOP, vbject-oriented programming) é a ess orcniada a objeto €inseparivel da linguagem, todos os programas Java sto, pelo menos até ero pono, ercntaos objeto. Devido& Simportincia da OOP pa lava, € dil entendermos seus prinefpios isicos antes de «screver até mesmo un programa Java simples Pstrionmente neste livo, voc ved como colar ees concetos em pitca, ‘A.OOD ¢ uma mancira podcrosa de abordar a tarefa de programa. As me~ todoogias de programagio mudaram drasticamente desde a invengéo do comput or, rineipaliente pars acomedar a erescenie complexe do programas, Por texemplo, uando os computadres foram inventados a programsagio era feta pela tivo das instrogds bindrias da maquina com o uso do paine! frontal do compu- ‘ador. Comtanio que os programas ivessem apenas algumas entens de instugtes, ca abordagem funcionava.A medida que os programas creseram. alinguagem de ‘montage fo invemada para qu oprogramador pusesse lidar com programas aio~ reve cla ver mais complevos, usando representagbessimbolis ds ssrugbes de _mviquina, Como os programas Gontinuaram a rece, fram insides inguazens Az alto nivel que davam ao programadoe mais ferameatas par iar com a comple~ xidade. E claro gue a primeira linguagem amplamente dsseminada foi FORTRAN, Embora FORTRAN ise uma primeira etapa bem impressonante, nto € una in- magem qe encorae a riogo de programas clase fces de entender. ‘Os ans 1960 deram oigem programas estutuad, Esse ¢0 modo encors- {ad por linguagens como Cc Pascal uso de linguagensextruturadastorou posse rir mais faciimeate programas de complexdade mxerala. As iguagens estat ras so caraterizads pr su suport a sub-atinas automa, varies locas © csruuras de controle sfisicadaseindependenes de COTO. Embora sean uma f= ‘amentapoderosa a cas lcangam su mite quando um proeo fica grande demas. ‘Considete io: cada marco no desenvolvimento da programago, ences © ferramentas cram cradas pata permit qe o programador lidasse com a eresene complexidade. A cada capa do petcurso, anova abordagem pegava os melhores le~ ‘entos dos métnds anteriores fava avangos. Antes da inengio da OOP, muitos jets estavam prto do pono (u excedendo-o) em que @abordagen etutrada no funsionava mais, Os meds orienta a objeton foram eras para ajuda os rogramadores a urapassa 85 Bari 'A programacio orentadn a objets pegou as methores ideas da programagson «strutura € combines cam vrs coceites novos Oresalad fo uma manera ier de organizar um prograra. De un modo mais geal, um programa pode set ‘organizado de uma erzedous mancirs: a parr desu ego (o gus ex ocomcndo) tara part de seus dads (ue est send afetao), Com o uso somente da prosri~ ‘ago extra, sormalment os programas so organiza pat do digo [Essa abordagem pode sr considerads como "o cig atuando sobre 0 dado (Os programas orientados a jets funcionam 20 contro. Sto organirados ‘partir dos das, com o seuinte prinefio-chave: “datos contend 0 acess 20 cédigo”, Em uma inguagem oriemada a objets, voe® define o dads ¢ as rtinas ‘que podem atoarsobe cles, Lago, um ipo de dada define precsamente que ipo de ‘operagies pode ser aplicnda a esses dade. 10 Jova para inciantes ara dar suport an prineipis da programaso orcntada a abtos, todas as Tinguageos OOP, inclusive Java km és caracteristias em comm: encapsulamen ‘o, polimorfsmo eheranga Exarinemos cada uma. Encapsulamento O encapnlamento €or sansa de programas qu vacua o cio sd dor qe cle trata eso ana ox ds seguro cota a inrerénci emailing eter. Em una Kngungem erlentada a abjeton o cigo e os dadon podem ser ‘incl de tl fora qo ua aa prota ealGnoma ej cra, Dent de xia, {sto todo oedigoe ox dadosncersdrion. Quando 0 cigo cor das sto vince. tos desea forma um btn erin. Em out playa, tn oben ocspvo ave di spore a encapslamento. Dentro de um eo, «eign, ox do ou ribo podem ser priv dense bet on pablicor O cfigoow a dadosprvados 6 so conidos acess pot cata pat do objet, Ino 6 efige dadoepvadoe no pode er cesados for pre do program que ex fora do bjt, Quando eligo ox os dadoe So pblice, oe pres do programa poder acs los meso que ctu def "on dento dem objet, Nornalmet panes pblens eum aber toads pts frmecer tn nef concur os eemenoa pve do cen, ‘Awaide bases de encapmolamenio de avn €a clase, Erbora clase ja examinads com mais dtles poneiomente nee lio a breve discuss eeu fertdi agora Una east dfie a forma de um objet, Ela especie tanto os dios quarto 0 cdigo que opera ache eles va ust ta expeifiordo de classe per constr obeon. Ox objetor so insncias de wma lms, Logo ua clase € Casicament um cnjunte de panos que especiica como consis to (ego cox dados que conser ta clase so chamados de membre da cine. Eapeteamene, or adn defini pela clase to chaos de varévels imembro os varivts de instncia. Os egos qve operat sobre exes dados si Ctaados de métodor membre ou apenas melods, odo €o ero em Jaa pars tran ab-otna, Se vod eonhece i, alve ahd ser que au um prograe dor ov cama de metodo, um peogramador CYC cha de un, Polimorfismo. Polimorfismo (do prego, “suites formas") € a qualidade que permite que ur inter face ucesc umaclasse gerade agies. ago especifica¢determinads pela nature ‘nats da stuigdo. Um exemplo simples de polimorfismo & encoruad no voante de lum automdve. O volte (sto & a interface) & 0 mesmo ao importando 0 ipo de ‘mecanisina de dresio usado, Ov sea, o volante funciona da mesma forms se set caro tem diregdo manual dire hidriulca ou dreg de cremalhcira. Pertanto, se ‘eed sauber como operero volante, poder digit qualquer ip de camo, (0 mesmo prinepio também pode set aplicado a programagto, Por exeimplo, considere uma pila (que € uma lista “primero a entrar dims a sai”) Vo poderia. terum programa que precsass de tS tipos de plas diferentes, Uma pila € sada para valovos intros, una para valores de ponto Mutuante © uma pars earacteres. esse caso, oalgoritine que implementa cad pilha ¢ © mesmo, ainda que os dados armazenados seam diferentes. Em uma liguagem nao orentada a objtos, vo se- Capitulo 1 Fundamentos da linguagem Java 41. ‘ia obrigado a cra rs conantos de ins de pis lifeentes, cm cada conjunto ‘sand um nome: Nocntanto devo opines, em ava woe pode rah onjnto geal de ona de plas ie fron ets rs ite ep as, Desa Forma, souber como war una pla, poder! wu fdas. Gersiment, conto de plimorfismo representa pla expres “uma interice vrios meioos". Ou ea € posse proetar uma imterface enérica para tm erp de avid relacionadan.O pinortame suds rere compli as permitind qc a mesma nrtace sje asada ara eapificaruma cane gra de agda Etre do compiladoe season a ago (so & moda) expecta conere ‘id situagao, Voc programa no previa fazer ens slegso mansaiment, 56 tem qe lembrar da interface gral wil la. Heranca enna 0 proces pel qua um ooo pce agi popiaes de out oh jf diners pon i per ae crest de cca Hmbrgcn. So vcd ea ben, gab pee doce tecimets pols trbereeech canon rigs (sto 6 top-down). Pe xempl, ama mags Red Delco fx parte Clea may, porun vera pant daclas ra, uc fea sob ls nai linet ah lent pacer qld comet, ioe) ‘evlglamecias unbin w opleedreciom fis Alle desputes clare aracterstan opectias rales, dvs) qo a ning ator amen clase map define a ads eapctas dma ask ese crm rors oil ce) Pos er, un hag Red Delius eer i Fas de toa hse preclee« v dtins qelaes qu toma Sem oo de hcrangin, cada cto ers qo defini explant tas 2 sone src. Comoe da heanga im bs tem i din sgl deseo tora ic den de chs. Fe psd ear ses tite gra de sel Lag tec dong pia oes era tac pets munca Ba pe Obtendo o Java Development Kit ‘Agora que a base teria de Java foi explicaa,€ hora de comegar a esereverpro- sramas Java. No entanto, antes de voeé poder compilarcexccuta esses programas, precisa tero Java Developmeat Kit UDK) instalado em scu computador. 0 JDK est Aisponivelgratftamenie na Oracle. Quando ese texo foi esrito a versio corente do JDK era a8, Essa €a versio usa poo Ja SE (SE 6 a abreviago de Standard Edition) 14 que © JDK 8 contém muites recursos novos que mio ste suportades em versdes anteriores do Java, é necessério usar essa verso (ou uma posterior) pat compilar¢ executar programas deste Tito, Se vot estiver usando una vets anterior, programas que tverem os novos recursos no sero compilados ‘0 IDK pode ser baixado de wwworacle.conv/technetwerk/javajavaseldo- wnloads/indexchiml, Simplesments aesse a pigna c sga as instractes para tipo de computador que woo? tem. Apis te insta 0 IDK, voe® poser Compa © «execu programas, O SDK force dos programas principais.O primeira €o jayne, aque € 0 compilador Java. O segundo ¢o Java, que ¢ 0 intrprtadoe padtio de Java, também chamado de inicador de aplcaioos. 12 _Java para inciantes Mais uma coisa: 0 JDK ¢ executado no ambiente de prompt de comanda ta ferramentas de linha de comando, Ele nia € um aplicativo de janelas, Tab io € um ambiente de desenvolvimento integrado (IDE ~ integrated development cavironment ‘Nora ‘Alam das frramentas bias do nha do comand fomecidas com 9 JDK, hi vtios IDEs do ata qualdat spon para Java, como o NeBcans oo Eipso, Urn IDE ode ser muto util ne deseruolimenta e implantacae de splcatos comercial Como regra geal. vece também pod usar um IDE para compiler eexecutar os rogamat deste lie, s0 assim guise. No entanto, ae insvugéce apresentadas aqu pars oompilagla« exceugo de um programa lava 36 descrevern aa ftramentaa fe linha de corranda do JDK. € facil entencer 9 motive. Em primeira agar JDK ‘2st prortamentedisponel pars todos os letres. Em segundo lugar, as nstucoes, para to do JDK serdo as mesmas para todos. Alm disso, para os programas Simplas apresentados no liv, user aa feramentas de ina de comand do JOK {2 aberdagem mais fal. Se voce estver usando um IDE, tard que segur suas insugaes. Dovdo as dferongac onto os IDEs nao ¢ posal fomscer um conjunto feral do netrugoos. Pergunte ao especialista Voc diz que a programacio orientada a objets ¢ uma manta eficar de gern iar programas grandes. Noenanto, parece que cla poe icionar uma sbre- ‘argh sgalficalivn ous programas sativamente pequencs Ji que vc! diz que ‘odes os programas Java sto, at certo ponte arentados a objets, so ¢ uma dsvantagem para os programas pequctos? IR: Nao. Como vost ver. para programas poquenos 05 recursos vinldos&cbetos «le Java so guise anspretes,Embora ej verde qu Java segue urs modelo de bj ler, tine ara ev nq nel as ene Em ge ‘spoons. “vienacte 3 obeos” &quseimpescepivel. A media gus ss programas cescetem, Yoeé poe intgear mas recursos alas cbctos Sem este, Um primeiro programa simples Comeceios compilan eexectand o exsmpl dew programa cro mostado ai p ete 6 um programe uae stap coane este arguive do mxaupte. java w Glass samme | 17 te progeana dees soeeca son uns chonade a ain () pontie atatio vold wainsteing argail) { syeten.cutprintin(*vava drives che WeD.*); ' 3 Capitulo 1 Fundamentos da linguagem Java 13 ‘oot seguir estas és etapa: 4. Tosa 0 programa, 2 Compile 0 programs, 3, Execute o programs, Inserindo o programa (Os programas mostradoe neste livo esto dspontveis no site da McGraw-Hill: wor. ‘orsclapressbooks com: No entanto, se quiserinseriro programa manualmen', voos pod farerisso, Nese cso, deve inserro programa em seu compotador usando um eitor e n30 um processador de texto. Normalment, os processaores de texto ar- ‘maenam informagées de ferato junto com o texto. Essa informaptes de formato coafundirto 6 compilador lava. Se vooS estver usando uma plataorma Windows, poders empregar o WordPad ou oeitor de programagio que ner ‘Na mioria das linguagens de computador, © nome do arquivo que contém © céigo-fonte de um programa éathitriro. Porém, no & esse © caso em Java. A Primeita cost que voc deve aprender sobre Java &que 0 nome dado a um arquivo -fonte é muita inporiante. Pra esse exermplo, © name do arguivo-fonte deve set Examplejava, Vejamos 0 pore. Em Java, um arqivo-fonte &chamado oficialmente de unidade de compl Jago. FE um arquivo de texto que contém (entre outa coisas) uma ow mais de- Tinigdes de classe (Por enquanto,usaremos arquivos-fontecontendo apenas uma clase) © compiladar Java requer que 0 aguive-fonte use a extensio de nome de srquivo java, Como vooé pode ver exeminandoo programa, o name da css de- Finida por ele também ¢ Example. Iss ndo &coincidencia. Em Tava, to ego deve resiir dentro de uma classe. Por convengao, o nome da classe principal deve ‘coincide com 0 nome da arguivo que cantém o programa. Nocé também deve se cenifiear de que a capitalizagto do vome do urguive oineida com x da nome da classe, Ino ovore porguc Iva diferencia maidsclas de mindsculs, Nesse mo- ‘mento, a couvengae de que os nomes de arquivo devem corresponder aos nomes das classes pode parecer arbitéria. Contudo, essa convengio fuss manutengio a organizayio dos programas, Compilando o programa Para compiler o programa Example xceveo compiler, java, expend 0 some do anv font ain de cormando, como mosirado al evar ample. java (0 conmpiladorjavnecriard um arquivo chanado Example.class conten a verso cm bytecode do program, Lembrese, bytes nio ¢cdigo exevutivl. Ele deve ser exccutado por uma Maquina Vital Jaa. Logo, a saida do javae mio e6digo ‘que poss ser exceutado drstamente. ra excoutar realmente o progruma, vocé deve usar imerpetador de Ja, Java. Para fazer isso, passe © nome da claste Example como argument de linha de comando, como mostradoabsizo: eva Beample 14 Jova para inciantes (Quando o programa for executado a sda a seg ser exbide Quando 0 go fone Jvaé compl, ca lass inser em eu pipsio snguivn de sda como mesme nome da clase taando a extesto cla E por 30 {he urs hoa iia dar seu aruiv-fomt avo mermo nome da lass i cles onto nome do ari fone enc com o nome do arquivo sass Quin ‘rd exevtar intrpretadr de Java como abe de mosua esr especifcando nome di clone que desea qi o nterpeetaor execute. Ele pocirartsitomaticn ‘rents um arive som ense nome que tena w exert laut Se encom, exe tart. eign contd na clase especitind, ‘NOTA Se, quando vot tentar camper o progam, 0 computador no pdr aca © Javac(esupono que o JDK tenn sido nsalado conetarants, her sel precise specifica 0 caminho que conduz as feramentas de ine de comanco. Ou se, no Windows, vod tra qu adcionar o caminho das frrameriae do linha de ‘omando aes eaminhos da varével ambiental PATH, Por exerpla, quando JDK 8 ¢ instalado no dretro Program Fes, o caminvo des feramentas de linha de ‘commando ¢somathante C:\Program Files\lava ahd. S.0\bin, eclro que voce tera que encontrar o caminno de Java em seu computador que pode ser aerente ‘de mostrade, A versBo especicn do DK tambtm pode ser cferente) Voce ter que ‘onsultars decumantagao de sau sistema operacional par saber coma Seino caminho, porque esse procedimento varia ere os sistemas. Primeiro exemplo de programa linha a linha [Embora Example java scja bem curto le inclu vos recursoe-chave queso co- ‘munsa todos os programs Java. Examinemos com detalhes cada parte do programa. ( programa comega com as Hinhas a segue e [Rete 6 on programa seve ateplos ‘chane gate argulve de Example. avs ” Isso é um comentdrio. Como a maioria das outa linguagens de programaca, Java permite a sergio de uma cbservagio no arquivo-fonte de un programa, © ‘sated dum comentéro gnorado pelo compilador Em vez diso, 0 comentrio Aescreve ow explica » operagao do programa para quem extver leno so argivor -fonte. Neste caso, cle esti deserevendo o programa c lembrando que o auivo- “fonte deve ve chamar Exanaple java clan que, em aplicaives reais, geralmente ‘0s comentdrios explicam como alguma parte do programa funciona ou © que um recurso especifico fa. “ave di suporte a és exilos de consenttrios. © mera no ineio do peg ‘ma se chama comentirio de viraslinhas, Ese ipo de comentrio coma com 7 ¢ termina com */Qualguer coisa que esiver entre eses dois simbolos de comentirio ‘rd ignocada pelo compiladr. Como o nome suger. um comentrio devia ihas pode termites linhes, Capitulo 1 Fundamentos da linguagem Java 15 [A prxima linha de cédig do programa ¢ mostad a: clase eanpte ( Essa ina us palava-chave clase para declarar que uma nova classe ext xendo definida. Como mencionado, x class x unidade hisia de encapsulamento de lava “Example nome da clase. A definigio da classe comoca com a chave de abertira {()e termina com achave de Fecharento()). Os elementos exstentes entre as das caves sto membros da clase, Por enguanto lo se preveupe tanto com os detalbes fds uma clase; ¢ preciso saber apenas que em Java toda #atvidade do programa ‘come dentro de uma. Essa & uma das nizBes porque tolos ox programas Java so {pelo menos um pouco)oFientados a objets, ‘A lina seguinte do programa € 0 comentdrio de linha dca, mestrado aqui 1) me programa Save comsce com un chamada = mai() Exe 6 o segundo tipo de comentiri suportao por Java, Um comentiio de link Sinica comega com // termina no fim da linha. Como regra geal os programadores sam coments de vii linhas para observagGes mais longus ¢ comentiios de Tina nes para deserg des eves, li linha [A postin ina de cdigo 4 mostrada abana: publie statte void maincetting argetl) ( Ese linha comega 0 metodo main( ). Come mencionad anteriormente, om Java, ‘uma sub-rotna 6 chamada de métde. Como o comenrio que a precede suger essa linha em que o programa comeyar.a scr executado, Todos os aplicaivos Java co ‘megam a execugio chamando main() O significado exato de cada parte dessa linha ‘no pode ser fornceid agora, jé que envalve uma compreensdo detalhada de vsios ‘utror recursos da ingusgem lava, No entanto, coma muitos dos exemyplos deste live usario ea linha de codigo examinarcinosrpidamente ad pat, A palavra-chave publie¢ um madjicador de aesso. Um modificadr de aces- determina como outes panes do programa podem acesear ox memos da clase. ‘Quando a membea de uma classe ¢precedido por publi, ele pode ser acestado por tum cédigo de fra da classe em que foi declarado, (0 oposto de public € private, que impede que um membro sea usado por um cédigo definido fora de sua classe.) [Nese Gao, main ) deve ser declarado como public, jf que tem que ser churn or um ego de fora desu classe quando program To iniciado A palavra-chave Static permite que maint) sejuchamado antes de um objeto da classe ter sido ria. Isso é nceessrio porque main( ) ¢ chamado pela JVM antes de qualquer objeto ser criado, A palave-chave vei simplosmente informa uo compiladoe que main) 0 ‘etorna um valor, Como voe® ver, os metodes tami podem recornar valores. Se tudo isso pazece um pouce confuso, nao se proocupe. Tedos esses conccitos serio Aisutidos com tales em capitulossubsegumtes, ‘Como mencienado, maint ) 0 métode chamaulo quando um apicaivo Java ‘omega. ser executado, Qualgerinformago que voce ter que pasar para wn me todo soni reccbida por vardveisespocficdas dentro do conjunto de partcees qu seguem o nome do méiodo, ses vardvels so chamadas de pardmetios, Mest 32 ‘neahum parimteo for necessirio er um determinade mee, voed ter que inst os partnteses vazios, 16 Jova para inciantes Em main() hi somente um parimetro, String arg| J, que declara um parime- teochamado aps. Ble Sum aray de objeto de tipo String. ras so onjanios de bjetos semelhantes.) Os objets de tipo String armazenam sequencias de caacte- res Nese caso args rocbe qualquer rgumento de linha de comando presente quan doo programa éexscttado. O peograna em quostio nda faz uso dessa informagses, mas outs programas mostradosposteriormente nest iro far, (ime caractere da linha [, Ele snaliza inicio do corpo de main(. Todo ‘0 cfidigo include ems tm minds ocomer cate a chave deabertina do mito e sa chhave de fechamento. ‘A proxima linha de ego € mostrada a set demain’). ayrtee. out peintla(+vava driver the feb. Esa linha exibe o string “Java drives the Web” seguda por uina nova linha aa tte Na vere sida ¢ exibida pelo métaointemo printing). Nesse cas, printla, )exibeo string que € pasado para ele. Como voe@ veri print) tamlsém pode ser sada para exibieottnstpas de informastes. linha come com System.out. Embors sje muito complicada para explicannos com dealhes neste momento, em resumo, System ¢ uma classe predefinida que di acess ao sistema, e out € 0 fuxe de sida que esti concetado ao console. Portanto, Systemoult € um objeto que en- ‘apaula a saida do console. O fata de o va usar uo abjeto para definir asta do console mais uma evidenca de ua naturezs orienta a objets. Como vooé deve ter notado, a sida (ea entrada) do console ado € usada com froquéncia em aplicativos Java do mundo real. Ji que a maioria dos ambicntes de conputagio movernos tem janelase¢ grdlica, 0 VO (inpuvloutput ou eneadassfda) {do console ¢ mais sido para programas lire simples, programas de demons trasaoe codigo do lado do servidor Posteriosmente neste liv, vocé aprender oa teat maneirss de gorar cada usando Iva, mas, por enguant, cotinaaremos a sar ‘me méodos de 10 do console. (Observe que a insrugdo prin ) termina com um ponte e vigula. Todas as instrugdes em Juv terminam com um ponte virgula. As otras libas do programa ‘io termina em um ponto virgula pore, tenieamente, no so instruc. (0 primero simbolo | do programa tennina main) © © simo termina def igo dt classe Example ‘Um slkimo ponto: Java diferencia maiisculas de miniselas. Esquecerdis- 10 poe Ie casa problemas graves. Por exemplo, se voc digtar acidentalmente “Main em vez de main, ou PeintLn em vez de prinhn, o prograan anterior estar incoreto. Alem diss, embora o compilador Java compile classes que nio contém tum método main(), cle nio tem como exceuté-las. Logo. se voc diitase crado ‘main, 0 compilador compiara sew programa. No entano,o interpreta de Favs felatatia um ero por nfo conseguir encontrar modo main). Observe que ela ecome denico Tratando erros de sintaxe Se ainda nio tive fet iso, ns, compile e execu o programa anterior Como vos! deve saber por sua experncia anterior om progrumacio, é rit fei digitar algo in ‘cometamente pracdente ao inserir igo no computador: Felizmente se vac® insert

You might also like