Está en la página 1de 446
Java a fondo 202. edicion ESTUDIO DEL LENGUAJE Y DESARROLLO DE APLICACIONES ACTUALIZADO A JAVA 7 / INCLUYE INTRODUGCION A HIBERNATE Y SPRING ING. PABLO AUGUSTO SZNAJDLEDER Java a fondo Estudio del lenguaje y desarrollo de aplicaciones Ing. Pablo Augusto Sznajdleder a Alfaomega Sznajdleder, Pablo Augusto ‘Java a fondo : estudio del lenguaje y desarrollo de aplicaciones . Buenos Aires: Afaomega Grupo Editor Argentino, 2073, 456 p. ; 24x21 om, ISBN 978-987-1609-26-9 1. Informatica, | Titulo. CoD 005.3 2aed, {Queda prohibca la reproduce’ total 0 parcial de esta obra, eu tratamiento informatce y/o a tranemisién por cualquier otra forma © medio sin autorizacin escrita de Allsomega Grupo Ecitor Argentino S.A Edicion: Damidn Fernéndez Rovisién de estilo: Vanesa Garcia Disefio de interiores y portada: Diego Ay Revision de armado: Vanesa Garcia Internat: nttou/wwattaomega.com mx ‘Todos los derechos reservados © 2018, pr Afaomega Grupo Editor Argentino SA. Paraguay 1307, PB, ofcina 11 ISBN 976-987-1609-36.9 Queda hecho ol depésito que prové a ley 11.723, NOTA IMPORTANTE: La informacion contenida en eeta obra tee un fn excluaivamente disactice y, por lo tanto, no est presto eu aprovechamiento a nivel profesional o industrial. Las indicaciones técricasy programas inclidos han sido elaboracos con gran culdado por al autor y epreducidos bajo etrctas normas de control. Ataomega Grupo Esltor Arertno S.A. no sera jurialcamente responsable or: erores u omisiones: datos y peiicios que se pucieran abut al uso de la informacion comprencida en este libro, ni por la utiizackon Indebida que pudira darsole. Los nombres comerciales que aparecen en ese libro son marcas regstradas de sus propitaros y se mencionan unicamente con ines ‘idacticos. por lo que Afaomega Grupo Etor Argentina S.A. no asurma ninguna responsabilidad por al uso que 2a de a esta informacion, ya que no infringe ringin derecho de registro de marca. Loe datos de los ejemplos y patallas san fcticos, a no ser que se especifigue lo contra, Los hipervinculos alos que se hace referencia no necesariamente son administrades por la editorial, por lo que no somes responsables de sus contenides o de su dispenibildad en linea Empresas de grupo: Argentina: Afeomega Grupo Editor Axgantin, SA Paraguay 1907 PB. “11°, Buenos Aires, Argentina, .P 1057 ‘Tol: (4-11) 4817-7183 / 0887 - E-male ventast@ellaamegaedstorcom.at México: Afaomega Grupo Eater, S.A. do C¥. Phagoras 1139, Col. Dl Vale, México, DF, México, ©, 08100 Tal: 62-55) 5575-5022 » Fax: (5255) 8575-2420 / 2490. Sn costo: 01-800-020-4396 mai: atencioalelentetatfagmega com.mx Colombia: Afsomega Colombiana S.A. Carrere 15 No. 64 A29, Bogota, Colombia POX (57-1) 2100122 - Fax: (57-1) 6068648 - E-mail clentedaifaomegacom.co CGhie: Atacmaya Grupo Eaton S.A, Genera dei Canto 370, Providenca, Santiago, Chie Tel: (8-2) 047-9951 Fax: 68-2) 235.5788 -F mall: agechlle@alfeomoga.c ‘Superman", por Octaviano Sznajdleder Dedico este trabajo, con todo mi amor, a mi esposa Analia y a mi hijo Octaviano. Sin ellos, nada tendria sentido. Dedicado también a la memoria de mi tio Beno que, aunque nunca se lo dije, siempre ocupé un lugar importante en mi corazén. Agradecimientos Quiero agradecer muy especialmente a mi madre Nelly, quien me permitio trabajar en su casa cada vez que Octaviano no me permitié hacerlo en la mia. Mi agradecimiento también a Damian Fernandez quien confié en mi y me brind6 esta gran oportunidad, y a Carlos Alvarez, que, cuando le propuse hacer la revision técnica, sin dudarlo me respondio ‘me interesa revisar tu libro” Agradezco también a Analia Mora con quién cuento incondicionalmente para investigar y resolver cuestiones relacionadas con la tecnologia y el desarrollo de aplicaciones, Finalmente, quiero agradecer a Pablo Bergonzi, gurt indiscutido de Java en Argentina, quien siempre esta dispuesto a darme una mano cada vez que las cosas no funcionan como deberian hacerlo. Java a fondo - Ing. Pablo A. Sznajdleder Alfaomega vil Mensaje del Editor Los conocimientos son esenciales en el desemperio profesional. Sin ellos es imposible lograr las hablidades para competir laboralmente. La universidad o las instituciones de ‘ormacion para el trabajo ofrecen la oportunidad de adquin conacimientos que seran aprovechados mas adelante en beneficio propio y de la sociedad. El avance de la clencia ¥ de la técnica hace necesario actualizar continuamente esos conocimientos. Cuando se toma la decision de embarcarse en una vida profesional, se adquiere un compramiso de por vida: mantenerse al aia en los conocimientos del area u ofcio que ee ha decidido desemperar, ‘Afaomega tiene por misién ofrecerles a estudiantes y profesionales conocimientos ac- tualizados dentro de lineamientos pedagogicos que facilten su utlizacion y permitan de~ sarrolar las competencias requeridas por una profesién determinada, Alfaomega espera ser su compariera profesional en este viaje de por vida por el mundo del conocimiento. Allaomega hace uso de los medias impresos tradicionales en combinacién con las tec nologias de Ia informacion y las comunicaciones (71) para faclitar el aprendizae Libros ‘como este tienen su complemento en una pagina Web, en donde el alumno y su profesor encontrardn materiales adicionales, informacién actualizada, pruebas (test) de autoeva- luacién, diapositivas y vinculos con otros sitios Web relacionados. Esta obra contiene numerosos griticos, cuadros y otros recursos para despertar el inte- rs del estudiante, y faciitale la comprensién y apropiacion del conocimiento, Cada capitulo se desarrolla con argumentos presentados en forma sencilla y estructu- rada claramente hacia los objetivos y metas propuestas. Cada capitulo concluye con diversas actividades pedagégicas para asegurar la asimilacién del conocimiento y su extension y actualizacion futuras. Los libros de Alfaomega estan diseviados para ser utlizados dentro de los provesos de ensefianza-aprendizaje, y pueden ser usados como textos guia en diversos cursos © ‘como apoyo para reforzar el desarrollo profesional ‘Alfaomega espera contribuir asia la formacién y el desarrollo de profesionales exitosos para beneficio de la sociedad. Java a fondo - Ing. Pablo A. Sznajdleder Alfaomega vi Pablo Augusto Sznajdieder Es Ingeniero en Sistemas de Informacién, egresado de la Universidad Tecnolégica Na- cional (UTN-FRBA), ‘Actusimente, es profesor en la cétedra de "Algoritmos y Estructuras de Datos” en la UTN- FRBA pasando tambien por la Universidad Nacional de San Martin (UNSAM) y el Insttu- to de Tecnologia ORT Argentina. Trabaj6 como instructor Java para Sun Mycrosystems, Oracle e Informi/IBM entre otras empresas lideres, Desde 1995 trabaja en sistemas, principalmente, an al desarallo de aplicaciones empre- sariles distribuidas: primero en C/C++ y luego, en Java/JEE. En 1996 comenzé a trabajar como Instructor Java para Sun Microsystems y, desde el 2000, s2 desempefia en la bisqueda y seleccién de RRHH capacitados en tecnologia ‘Java poniendo especial atencion en laidentificacion de jovenes estudiantes sin experien- Cia laboral previa, pero con gran potencial profesional. Tiene las cerificaciones internacionales Sun Certified Java Programmer (SCJP, 1997) y ‘Sun Certified Java Developer (SCID, 1998) y, ademds, esté certificado como Instructor Oficial Java por Sun Microsystems (1997) ‘Acaba de publicar su libro sobre algoritmos y estructuras de datos: Algoritmas a fond, ‘con impiementaciones en C y Java. En el 2010 publicé la primera edicion de Java a fon do, En el 2009 particip6 como revisor técnico en el libro: Andis y alseo de algoritmos (Lopez, Jeder, Vega) y, en el 2008, publicé HolaMundo pascal, Algoritmos y estructuras {de datos, cuyo contenido cubre por completo los temas que abarca la asignatura de igual nombre én la UTN-FRBA. Oy vsstoszc800 Revisor técnico: Carlos Alvarez Es Licenciado en Andlsis de Sistemas, egresado de la Facultad de Ingenieria (UBA). Trabajé “durante 10 arias came consultor en desarrollo y performance de aplicaciones y, desde e! 2010, ‘8 Gerente de calidad tecnica de software de daspegar.cem. Alfaomega Java a fondo - Ing. Pablo A. Sznajdleder Contenido - IK Contenido 1 Introducetén al lenguaje de programacién Java 4.4 Introduccion 112 Gomencemas a programar 121 Brice hegrade de Desert (DE) 41.9. Estructuras de contr 131 Esttaday salda de dics por consala 1:32 Detnictn de vanabiea 1133 Comentarios enol codigo 134 Eaueturaa de secson, 135 Eatuctuas teratvas 4.4 Otros elementos de! lenguale 14a Tipos de datos 142 Agunas smitudesy ateencas con Cy C++ 1.43 Deinictn de constants 144 aay 143 Matioes 1:48 Ltraes cadonae de caractoros 147 Caracteresaxpocies 1.43 Argumerios en ina de comancos 1.8. Tratamiento de cacenas do caracteres 151 Receoo ales caracteree de un Stig 1152 Mayacuse y minuscule 153 Deumenoias de caaceres 154 Subcadenas 1.58. Protos youtios 1156 Posicon do un substing dere dala cadena. 1157 Concatenarcadenas 158 Lacks Strngauter 1159 Converson enire numaresy cadena 115.10 Represertacion numeica en clerertes bases 1511 Lacase StingTokencer 15:12 Usar eqrosionasrogdaros para paiconar 1.5.13 Comparacion de cadonas 1.8 Operadoros i Tet Opexadores atmicos 1182 Opsraderes glcas 183 Operadoresrlaciontes 1.64 Operadores logicas dat... 1165 Operadore de decplazariento de Bt 1.7 Lamaquina vitualy JDK on 171 B DK Uava Development Kt 1.72. _Varsiones y evolucien dol enguse Java 1.8 ResUMEN " 418. Contenido dela pgina Web de apoyo 19.1 Mapa conceptual 1192 Auteorakacon 1183 Videotuterales 1194 Presentacones™ = 2 Programacién ortentada a objetos 2.4 Introduccion : 22 Clases objetos| 22.1 Loe miogos 222 Herenca y sobresctiura de meélodos Java a fondo - Ing. Pablo A. Sznajdleder 58888 888888 Bae 8eeeRe oe BENBEBRERBRRNBESE ERS Sabb bb bbe 23 24 25 26 ar aa 22.9 Elmoc tasting 224 Eimétodo equa 22:5 Delniry “crear obtos 226 Eloonctvetor 2.27 Un pequeto epaso deo vito hasia saul 22.8 Corwndones de nomena 229 Sotrecarga 22.10 Encapeuamiento 2211 Visbildad de métodos y abuts 22:12 Packages (paqustze) 2213 La estructura dens paqusiesy a arable GLASSPATH 2.2.14 Las APle "Appleton Programming irtrace") 22.18 Representa graica UNL 22:16 tmportar cases de otes paaustos Herenciay polimoriamo 231" Poknortma 232 Consiuctoes de subclass 2.83 Lareterenca super 234° Lareeenca tis 235 Clases aewaciae 236 Consinuctoes de caves absractas 237 retanoas 23.8 Varables dainstanca 2.39 Venables cola case . 23:10 E\Gwbage Colectortecolector de red) 23:11 méiods natze 2312 Constantes 2.8.13 Método gels clase 2314 Chaves ultras 23.18 Reterancia eataioae 28.16 Clecciones primera pais BIT Closes genes. 23.18 Inplomentacion do una pla focbuctura de datos) 2.3.19 Implementacon de una ola estructura de dats) Interfaces 24.1” Desaconiamisnte de clases 242 Blpatrin de cise factory mathed 2.4.2 Abracien a waves de intrfacee 244 Lalnterfeos comparable 245 —_Desscoplar ain mas Colecciones 251 Cambio de implementacon Excepciones 281 Brcepclones declraivas yn declaratias 262 Elbloque ty-catontoaty Resumen ‘Contenido dele pagina Web de apovo 281 Mapa concept 282 Aoevatuacien 283 Viseottersies 284 Presentacones” ‘Acceso a bases de datos (JDBC) Introdeciin X= Contenido 32 33. 34 as a6 4a 42 43 44 45 46 5 54 52 Conceptos basicos sobre bases de datos relacionales 321 Relaciones foraraas y consist do datos 822 Diagn Entidad-Palacén DER) 328 SOL Smuctured Query Language 324 Becsar Sonlene8 QUE enn 325. Unetabis join) 3.2.6 Becuaroentencas UPDATE CCongetar programas Java con bases de datos 83.1" Invocarun query eon un jain 332 Updates 323 Secutar unINSERT 884 Geodtar un DELETE 325 Geouarun UPDATE 336 B pattonde dso “Sngeter” (Sngiaion Pater) 8.3.1 Sholeton Pattern pra obtener a cone. 338 Blshutaown hook 329 Inner classes cases interas) 33:10 Mango de tansaccones Uso avanzado de JOBC 241 Aone alamatadta dl aut (FesutSeIMotaData 342. Dotaral “Guy Fetch Sao" para coninios do resutenos cranes. 343 Recutar batch updates (procesamiato por iotes) Resumen Contenido dela pagina Web de apoyo 381 Mapaconceptual 282 Auloovauacen 263 Voeotuteral 384 —Preseniaciones™ Diseho de aplicaciones Java Parte). Introduccion ‘Aibutes 6¢ una apieacion 42.1 Cases de uso Desarrollo de aplicaciones en capas: 48:1 Aplcacion de estudio 4.22 Andis de os objetos de accaso a datos (DAD yDTO} 433 Ande del agade 4.34 Diagram do socuencias do UML. Pottabliad ene diferentes bases de datos. 44:1 DAQs acracies a mplementaciones sspectcas araias erentes bases de astos| 44.2 mplemertadon de un factary metal cn 4:43 Combnar a actory method con e singleton pater 444 Meera ol dbofo de os DACs abstactos Diseto por contratos 45.1 Coordnacon de aap on equa Fesume on . Contenido dela pagina Web de apoyo 47.1 Mapa concept 472. Atoerskacion 47.9 Preseoadionet” 2 Interfaz grafiea (GUN) Invoduecion Componentes y contenecores Alfaomega m4 16 115 116 m8 17 nT 118 123 123 123 125 m2 125 126 128 128 131 81 141 145 Mar 188 160 183 is4 156 158 188 160 160 1€0 160 60 vei 182 12 5a 54 55 57, 58 61 62 82.1. Dlstibucion de componentes (ayes) 522 _AWTySring ‘Comenzande a dasarrollar GUI 527 Cistrbusones relates 532 Rowlaye 839 BorderLayout 534 GroLayout 535. Combinacin de layouts ‘Capture eventos 521 Tos ce evaios 5442 Eventos de accion 5.43 Eventos de teclndo Swing 551” Cambar el Lackandes! 5.6 Model View Controller (VO) s..-0 56.1 Ejemplo deuso: Lista 5.6.2 Efumplo de uso: Tabb Resumen 7 ‘Contenido dela pagina Web de apoyo 58:1 Mapa conceptual 582 Artoevalmoen 583 Videotral 584 Freeentacones’ Multithreading (los) Introduccion Inplementar threads on Java. 21 Lahterace Runnable 62.2 Espetar = quefnaios in thea 62.3 Threads yi iteriaz arc 624 Sstamas opeaivos mutica 6.2.5. Cleo de vida de un trea. 62.8 Prdad ce eecucn 6a 64 7 72 1a T4 ‘Sineroizacién de threads G31 Monitors y seccion rica 68.2 Efomplo del Productor;Coreumicor ‘Resumen Contenido dela pina Web de apoyo 65:1" Mapa conceptual 85.2 Autoevalucion 653 Prosertacones™ Networking Introdueckin ‘Conceptos basicos de networking 721 TOP="aramisscn Corte Prot" 7.22 UDP "User Datagram Protoco” 723° Pleros 72.4 DieceeniP 7.25 _Apleaciones cletelsenidor TCP en Java, 71. Eleccket 7.8.2 Un simple conte/servidor on dv. 738 Setilzacin de objetos 7.3.4 irplamentason da un earier mulitvosd 735 Envaryreciirbytes 7.36 svar y rect valores de toos de datos pros UDP en Java vs 183 164 104 184 “07 168 170 176 320 8 108 196 300 102 108 197 198, 108 198 308 308 199 20 201 202 208 208 206 207 209 209 210 210 2 216 215 218 215, 27 De 28 28 ae 219 219 219 219 29 219 222 208 225, 228 208 Java a fondo - Ing. Pablo A. Sznajdleder Contenido - XI 7.8 Remote Method Invocation IM 715.1 Componentes de una aplioacen AM! 7.52 Geemple de ura aploasén que utza BMI 7.53. Complary ejecutar a aplcacion PM 754 RMly soralzacén de objeto 7.8 Resumen 7.7 Contenido de la pagina Wieb de apoyo 77.1. Mapa coneeptusl 772 Aoerakacen 773 Wdactuterl 774 Presentacones” 4, Dhol tienloatinnniion for 8.1 Introduccion 8.2. Repaso dela apicacon de esucio 83 Capaslogieas vs. capas tscas BG. Desventas de un modelo bacado on dos capas seas 832 Modele de tes canae fea 8.4 Desaroto de ia aoicacion on es caose fslas aa Desarolo da serdace 8.4.2 Desarolo de un chante de prusba 8.438 genioe locator wieador de senicios| B44 _Iniageacén con a capa depresertacion 8.5 _Implementacion del servidor con tecnologia RM @5) Baers AM 85.2 8 Served ocatory os ooltos dltrbuitos 85.3 Desarollo do un ele de ba 5-4 Iniagracen con a eapa de preseracion 55 Blbveshess daegate 88 Concuroncia y acceso ala base de datos 88.1 B pod de conexones 862 —_Implementacn da un poo de consxonse 83 _Intagacen conios seridores TCP y Pl 87 Resumen 8.8 Contenido ce la pagina Web de apoyo BEI Mapa conceptual 282 Agoorakacon 883 Presentacionar™ 9 Estructuras de datos dinamicas, 9.1 Introduceién 912 Estructuras dinamicas 92.1 Brod 922 Lista onazada (Linkodtian 923 Pia 924 Cola - 825. mplarertacien de una cla Sob una sta cour 2.6 Cleans Unkedl et, Stacey Quaue 82,7 Tabas de dspesion Mashable) 92.8 Exuctuas de cates combradas 929 Arboles. 9.2.10 Arbo bnafo de basquoda 92.11 Lackse Tees 93 Resumen ‘8.4 Contenido de la pine Web de apoyo 94.1. Mapa conceptual 842 Autoevahictin Java a fondo - Ing. Pablo A. Sznajdleder 230 zat 21 za 234 24 24 208 236 238 240 278 9.43 Presertaconest 10 Paramotrizacién mediante archivos XML. 10.1 Inraduecisn 10.2 XML- "Extensible Markup Languags 10.8 Estructura y dene parametros en un archivo XML SO Deinciin dal estructura de paramattos 103.2 Lee poreare conerco de un arco HM. 4033 Acosde al iniermacien contenida Srelarine XM 10.4 Resumen 105 contend de pana Web de apoyo 108.1" Mapa concept 4052 Asowalvacén 10533 Presonacines 11 Introspeccin de cases yobjetos 1141 dntreduesion 11.2 Comenzande a invospectar 12" eitear metedos Gonsinvcires 11.2.2 Acceso al prototipa de un méiogo 11.3 Annotations 11.4 Rsumen 1118 Contenido dele pagina Web a apoyo TIS. Mapa concept 1152. Atocvauacen 1183. Presentacionee 12 Generalizaciones y desarrollo de frameworks. 12.1 Inroduecién 122 yauées un framework? $2.21" Framewexks propos 0 tarnonorks de trees? 322.2 Rerwomar ia veda 12.8 Un framework pata accede a archivos KML 123.1" Dero dela API ool Famework 1282 Antics del obmento a gneraizar 1233 Pow ol reno xMLycagar iota se dates 12.4 Un ramework para acceder a bases de datos 124.1 lortiteacion cota aea epetiva 3242 Diseta dela API ca araiare 1243 Java Bees 3244 Tansecconee 12485 _Mappeo de tables usando annotations 128 E1bean factory 126 Intogracion 12 Los cbjtos de acceso a datos 3262 fecads 3262. Blachwo de confguracén 1284 Alclene 12.8 Reeumen 12.9 Contenido dota papina Web de apoyo BOI Mapa concept a 3282. Avtowrauacen 3292 Preconiacionee” 13 Entrada/Salida 13.1 Inreduecion 132 VO steams fujos de entrada y sala) ‘310 310 ‘310 310 a 312 312 313 a8 sid 315, 3i7 318 225 226 er 342 368, sr 37 39 361 351 231 251 352 358 ‘54 Alfaomega XII Contenido 182.1 Erivaday sates eatendar 1822 _Resdreocona la entrada y sala eaindor 19.29 Corr cotectamanto oe areas 182.4 Steams de bytes (routSteam y Outputs 192.5 Swoume de caractors reader y wnat) 1826. Steams bufeizades 1827 Stears de datos DstainputSrea yDataoutpuisveam) 1828 Steams de cbjens (ObjecthputSvean y ObjeciOuputstea) 19. Resumen 194 Contenido do la pagina Vieb de 20... 134.1 Mapa conceptual 1342 Auoovanactn 1849 Presents” 14 Consideraciones finales 14.1 Intecuccion 14.2. Coneideraciones sobre multthreacing y eoncurrencia 142.1 Cases can o ain metodos srerenzasos 142.2 6 sialon patio on contextos mutttrcaded 14.3 Consideraciones sobre clases “legacy” 1431 Lacs StingToxeize®y el metodo soll 144 Resumen 14.5 Contenido de la pagina Web de apoyo 145.1 Mapa conceptual 1452. Autoorshacien 1458 Prosentacones" 18 Object Relational Mapping (ORM) y persistencia de datos 18.1 Inteduccion 152 Hibernate framework 1521 B model de daiceweacenal 1522 ORM (beet Relational Mapohng) 152.3 Confguacion de Hema .. 41524 Mappoo de tables 1525 Lascalin de Hnerate 158 Asociaciones y relaciones 153.1 Asocis0on mary-to-one 1532 Asociscén one-tosrany 1833 PESpy 153.8 Lazy oang vs eager ooding 154 Recuperarcolecciones de objetos 154.1 Crteios de boxquada vs. HOL. 1542 Nemed queries 1543 Flecuar SOL ato 1544 Quotes paametrzados 185 Insertar, modifica’ y eliminar fas 1551 Transaccones 1552 ioertar wa ta 1853 Estatogia de generac do davos paring 15544 Mocca Ura TH nn 1555 Mutples updates y deletes 18.6 Cacos avanzados 1561 Anis yprosntacén del meds do datos 1862 Asoctoanes many-to-many 1863 Caves primar compussas (Compost Alfaomega qenee Geues 18,7 Diseto de apteaciones - 392 57-1 Factonas do cbpios ane 15.8 Resumen a ey 18.9 Contenido dels pagina Web de apoyo 400 15.8.1. Mapa concent. 400 189.2 Aoevaliackn 400 3593 Presenacones" 00 16. Inversion del control por inyeccion dedependencias ao 41644 ntroducelin 402 162 Spring framework 492 3B21 Desacoda i procesarien ri 46.22 Coreusonyrpaso ne 463 Spring y JDBC 409 1644 Integracion Spring + Hibemate 412 108 Resumen . 48 16.6 Contenio dela pagina Web de apoyo 416 $881” Mapa concept! ae 3662 Aoovauacion 16 366.3 Presetaciones" a6 17 _Actualizacion a Java? a7 12.1 Introduccion ee a8 472 Novedades on java 7 48 Sra Lies bharos ate 17.22 Ureraes numercos sesaredos por” "(quer bao) 418 37.23 Uso do cadens eniasortonda sich “19 17.24 ferencis de 8003 GaN. 8 47.25. Seniend ty con recurso ince 20 1726 Aramis eoxpores eo don mera Bonsai 0 47.2.7 Nuevos métodes ena dase Fic 120 17.8 Contenido dela pagina Web de apoyo 421 473.41 Mapa conceptal 21 3732 Ago e1@uUECeN vans Seaccnal 473.3. Presentacones* 21 ‘Apéndice A Nociones basicas de programacién 423 ‘At Introduccion 04 ‘A2 Conceptos incialce 26 zi Ellenquae da rogamacén oa 422 Boampledor aoa ‘23° Losimerpretes 24 24 Lasméqiras vitals 125 25 davayaumaquraved 425 ‘A3 Recursos de programacin 425 Agi Lasvarabies 28 482 Tiposdedsios 28 33 Operedores atnsios 26 ‘Aaa Esruntas oe decsin ar ASS Estuctuas dorepotclen “ar Apendice B Applets 7 329 Ba Introduccin 40 2 Comenzando con Applets 430 B21 Eretio de via de un appat rc 822 Eloontowto dl app sn 39 123 Pasarlepardmettos aun appt a Bibliogratia 435 Java a fondo - Ing. Pablo A. Sznajdleder ‘Contenido - Xi Informacion del contenido de la pagina Web El material marcado con asterisco¢) soo est disporile para docentes. ‘capi Introduccién al lenguaje de programacién Java ‘+ Mapa conceptual * Autopvatuacten * Videotutorales: lesa Java Ese rear ejcuter resto rime programa en Eclpse Pasar argumantos en ines de comanrs en Esipoe ‘Compa ejcuterun programs Java desde aes de comands (sinuiizar sine + Prosentaciones" ‘capt 2 Programacion ortentada a objetos ‘+ Mapa conceptual + Autoevaluacién + Videotutonaee \ilzar aera ‘ave’ para dosrensr nuestro cdo fer Enpaquotar cases utizznde lanai “a «+ Presentaciones" ‘capto3 ‘Acceso a bases de datos DBC) + Mapa conceptuat + Autoovaluacien + Vissotutora Usar Ecpse coma clente SL. + Prosentaciones" ‘capo 4 Diserio de aplicaciones Java (Parte I ‘Mapa conceptual + Autoevaluacien 1 Presentaciones captuo s Interfaz grfica (GUD) ‘+ Mapa conceptual + Autoovatuacien + Videotutorat Uilzarharariortas vis para dato ydesanlo dente grea + Presentaciones" capito6 Multithreading (los) 4+ Mapa conceptual + Autoovaluacton + Prosentaciones" ‘captuo 7 Networking ‘+ Mapa conceptual + Autoovaluacten + Vigeotutora ‘Complaryejecutar una aplicacion Rt + Presentaciones" capt 8 Disenio de apticaciones Java (Parte I) + Mapa conceptuat + Autoovaluacien * Presentaciones” Java a fondo - Ing. Pablo A. Sznajdleder Capito 8 Ectructuras de datos dindmicas + Mapa conceptual * Autoevaluacion + Prosentaciones* apie 10 Parametrizacion mediante archivos XML ‘+ Mapa conceptual ‘utoevaluncion + Prosentaciones Capito 14 Introspeccion de ciases y objetos ‘+ Mapa conceptual + Autoevaluacion + Presentaciones* Capitulo 12 Generalizaciones y desarrollo de frameworks + Mapa conceptual * Autoevaluacion + Presentaciones" Capito 13. Entrada/Salida ‘+ Mapa conceptual + Autoevaluacion + Prosentaciones™ capo 14 CConsideraciones adiclonales ‘+ Mapa conceptual + Autoevaluacion + Presentaclones* api 15 ‘Object Relational Mapping (ORM) y persistencia de datos + Mape conceptual + Autoevaluacion + Procentaciones capo 18 Inversién del control por inyeccién de dependencias ‘+ Mapa concoptual Autoevaluacion + Prosentaciones™ capo 17 ‘Actuallzacion a Java 7 ‘+ Mapa conceptual + Autoevaluacion + Presentaciones* Codigo tuente de cada capitulo Hipervineulos de interes Fo de orratas Gula para ol docente de las competencias especificas que se dosarrolian con este libro Alfaomega xv Registro en la Web de apoyo. Para tener acceso al material dela pagina Web de epoya de! bro: 4, Iralla pagina htp:/virtual.alfaomega,com.mx 2. Registrarse como usuavio del sitio y propietario del loro 43, Ingresar al apartado de inseripeién de libros y registrar la siguiente clave de acceso: 4, Para navegar en la plataforma virtual de recursos del libro, usarlos nombres de Usuario y Contrasefia definidos en el punto nimero dos. Elacceso a estos recursos es limitado. Si quiere un némero extra de accesos, escriba a webmaster@alfaomega.com.mx Estimado profesor: Si desea acceder a los contenidos exclusivos para docentes, por favor contacte al represantante de la editorial que lo suela vsitar @ escribanos a: ‘webmaster@alfaomega.com.mx ‘Videotutoiales que complementan la obra, ‘Nuevo en Java 7: bajo este Ioona se encuentran nusvas formas {de resolver algunas cuestiones en Java. ‘Conceptos para recorder: belo este icono se encuentran b ? "a es May “aes Menor" ‘Comenzaremos analizando la sentencia if cuya estructura es la siguiente: if( condicion } 4 accionl: jes mayor de 21 afos? En el siguiente ejemplo, utizamos un if para determinar si el valor (edad) ingresado por el usuario es mayor o igual que 21. package libro. cere]; eee fablic class Esteyorguedl . peels static void main(String[] args) Scanner scannersnew Scanner (System. in); System. outprint ("Ingrese su edad: "}; int edadescanner.nextInt () i€( edad >= 21) ‘ Systen.ovt.println("Ud. es mayor de edad 1"); else ‘ Systen. ovt.printIn("Ud. es es menor de edad”); Bi siguiente programa pide al usuario que ingrese un valor entero e indica si el valor in- {gresado os par 0 impar. Recordemos que un nimero es par si es divisible por 2. Es decir que el resto en dicha divisién debe ser coro. Para esto, utlizeremes el operador % (operador médulo, retorna alresto de la dvisién). Java a fondo - Ing. Pablo A. Sznajdleder 1.3 Estructuras de control package Libro.cap0l; import java.util. Scanner public clase Pardtmpar { public static void nain(String[] aras) t Scanner scanner=new Scanner (System. in); systen.out.print ("Engreze un valor: "); int v - scanner.nextint |} // obtenemos el resto de dividir v por 2 int reste =v $2) // para preguntar por igual utilizamos iE| resto = 0) c System, out.println|vt" es Par” System. out.println|vt" es Tmpar"); , . Para resolver este problema, primero obtenemos el resto que se origina al dividir v por 2, Luego preguntamos si este resto es igual a cero. Notemos que el operador para com parar es == (gual igual). Java (come C) utiliza == como operador de comparacisn ya que el operador = (igual) se utiiza para la asignacién. El if n-ne tiene la siguiente estructura: condicion 7 retorno?ortrue : retornoForFalse; Lo anterior debe leerse de la siguiente manera: si se verifica la condicion entonces se retorna la expresién ubicada entre el? (signo de interrogacién) y los: (dos pun tos}. Sila cond:cion resulta falea entonces ee retorna la expresion ubicada después delos : (dos puntos). Ejemplo: jes par o impar? (utlizando it in-ine) package Libro. ca import java.util. scanner; public class Parotmpar? { Java a fondo - Ing. Pablo A. Sznajdleder p ava (como 6) uttea = como opera (or de comparacén ya que el operador = (qua) se utiza para la asionacién, Alfaomega 1 Introduceién al lenguaje de programacién Java £7 En Java 7 la sentencia cwittch adm te evaluareadenas de caraceres. r Es muy importante recordar poner siempre el break al finalzar cada Alfaomega public static void main(String{} args) Scanner scanner=new Scanner (System. in); System. ovt.print ("Ingrese un valor: int vescanner-nextint() + // obtenemes 01 resto de dividir v por 2 int resto= v 2; U/ wtitizando un if in-line String masg - (resto — 0 ) ? "es Par": "ea Impar” // muostro resultado System. ovt.printin|v+" "mseg) ; } La decisién maitiple switch tiene la siguiente estructura: switch( variablemnt t aaarveeen masAcciones; ) Dependiendo del valor de variablezntera, el programa ingresaré por el case, cuyo valor coincide con el de la variable. Se ejecutaran todas las acciones desde ese punto hasta el final, salvo que se encuentre una sentencia break que llevara al control del programa hasta la lave que ciera el siiitch, Por este motivo (al igual que en C), es muy importante recordar poner siempre el break al finalizar cada. case. En el siguiente programa, pedimos al usuario que ingrese un dia de la semana (entre 1 y 7) mostramos et nombre del dia. SI ingresa cualquier otro valor informamos que el dato ingresado es incorrecto, Java a fondo - Ing. Pablo A. Sznajdleder 1.3 Estructuras de control package Libro.cap0l; import java.util. scanner; public class Denoswitch public static void uain(string!] args) c Scanner scanner = new Scanner (System. in); Systen.out.print ("Ingrese un dia de 1a senana (numero): int v = sosnner.nextInt |) String diay switeh( vy ) c break: : dia = "Yartes"; breal case ® dia ~ "Uiercoles” break: case 4 dia = "Dia incorrecto... Bl valor debe ser entre 1 y 7."7 Systen. out.printin(dia) + } i . Como vemos, e! switch permite decidir entre diferentes opciones (siempre deben ser numérica Dependienda de cual sea el valor ingresado por el usuario el programa optara por el '5e correspondiente, En caso de que el usuare haya ingresado un valor para el cual no hemos definido ningun case entonces el programa ingresaré por default, Notemos también que utiizamos la sentencia break para finalizar cada muy importante ya que si no la uilizamos el programa, luego de entrar al cas: ondiente, seguira secuencialmente ejacutando todas las sentencias posterires. Si el lector conoce algo de lengua C, esto no |e llamara la atencién ya que funciona exacta- mente igual Estoes Java a fondo - Ing. Pablo A. Sznajdleder Alfaomega 10 Alfaomega 1 Introduceién al lenguaje de programacién Java 1.3.5 Estructuras iterativas Disponemos de tres estructuras iterativas: el while, el do-While yel for Nuevamente, para aquellos que conocen lenguaje G estas instrucciones son idénticas. ‘Gomencemos por analizar el uso del wile cuya estructura es la siguiente: while( condicion | { accionl; ) Elciclo itera mientras condicion resulte verdadera, Eemplo: muestra nimeros naturales. El siguiente programa utiliza un while para mostrar los primeros n niimeros naturales. usuario ingresa el valor n por teciado. package Libro.cap0; Amport java.util. Scanner; public class Prinerosilumeros) 4 public static void main(string{] arys) Scanner scanner = new Scanner |System. in}; // Jeo 21 valor den int n int. while( icon | // muestro el valor Systen. ovt-printin(i) Uf ineremento e1 valor de i } u . \Vemos que el ciclo wile itera mientras que el velor de i sea menor o igual que et valor den (que fue ingresado por teclad). Por cada lteracién mostramos el valor de ia variable iy luego la incrementamos. Analicemos el cielo do-vihile euya estructura es la siguiente: aa { accionl; ondicion |; Java a fondo - Ing. Pablo A. Sznajdleder 1.3 Estructuras de control Este ciclo también itera mientras se verfique la candicion, pero a diferencia del ciclo anterior en este caso la entrada al ciclo no est condicionada; por lo tanto, las acciones. encerradas entre el do yel wile se ejecutardn al menos una vez. Ejemplo: muestra numeros naturales (utlizando do~vihi le). package Libro.cap0l; import java.util. scanner; public class Frimerostfumeros? t public static void main(string!] args) ( Scanner scanner-new Scanner (System. in); dnt n = scanner.nextint |); dnt i = do C ‘System. out.printin|i): oe while| i <=n ); , i . Por ultimo, veremos el ciclo 2 cuya estructura es la siguiente: lizacion; condicion; increnento } accionl; : Este ciclo tiene tres secciones separadas por ; (punto y coma). Ena primera seccién, se define einicializa una variable entera que lamaremos Variable de control, En la segur da seccién, se especifica una condicién l6gica que (recuentemente) estaré en funcién de esta variable. En la tercera seccién, se define elincremento dela variable de control. El for devavaes exactamente el mismo for de C++. Ejemplo: muestra numeros naturales (utlizando. fr). package Libro.cap0l; import java.util. scanner; public class Primerosttumeros3 { public static void nain(String[] args) Scanner scanner-new Scanner (System. in): int n = scanner.nextint (}; Java a fondo - Ing. Pablo A. Sznajdleder 1 Alfaomega 2 1 Introduceién al lenguaje de programacién Java p En Java no este el modticador tmsigned coma en ¢. Por esta razi, ‘os tipcs de dats entre admiten ono ‘aloes negatas segin se muesta en sta tbl. Alfaomega for( int inl; igen; i++ ) t Systen. ovt.println(i); 1 } } 1.4 Otros elementos del lenguaje_ En esta seccién estudiaremos otros elementos del lenguale Java tales como tipos de dates, definicon de constantes, arays, etestera 1.4.1 Tipos de datos Java provee los siguientes tipos de datos: Tipo Descripeién Longitud byte ‘entero con signo T byte " ‘entero sin signo 2 bytes short ‘entero con signa 2bytes int entero con signo Abytes long entero con signo Bbytes float unto flotante 4 bytes double punto flotante Boytes boolean | 6gico fadmite true 0 false) 1 byte string | objeto, representa una cadena de caracteres ‘Siel lector conoce algo de lenguaje C, podra observar que en ambos lenguejes los tipas de datos son précticamente los mismos. En otros lenguajes las longitudes de los tipos de datos pueden variar dependiendo de la arquitectura y del compilador que se esté utlizando. Es decit: en C (por ejemplo) no siempre se reservard la misma cantidad de memoria para una variable de tipo int. En Java (dado que los programas Java corren dentro de una maquina virtual) as longitu- des siempre seran las expresadas en la tabla anterior. Este tema sera tratado en detalle més adelante. 1.4.2 Algunas similitudes y diferencias con y C++ Para aquellos lectores que tienen conocimientos de estos lenguales, voy a marcaralgu- nos Puntos que les resuitardn ules. A quien no conozca nada de C0 G++, considero ‘que tambign podré resuarle de tlidad leer esta seccién, pero si elector nota que esta lectura le esuita algo confusa entonces le recomiendo ditectamente pasaria por alto. EI modificador «unsigned no existe en Java. Los tipos enteros tienen o no tienen bit de signo (seg fa tabla anterior) y esto no puede alterarse. Bi tipo de datos hoo1 ean: en Java existe este tipo de datos que admite los valores true y false. EnGy C+, se utiliza el tio int como booleano aceptando que el valor cero {es fase y cualquier otro valor distinto de cero es. true. Esto en vava no es acepiado. Los int no tienen valor de verdad. Java a fondo - Ing. Pablo A. Sznajdleder 1.4 Otros elementos del lenguale 13 Operadores unaris y binarios son los mismos que en C, por Io tanto, las siguientes sen tencias son validas tanto en C como en Java: int // inceenenta en 1 el valor de i increnenta en 1 el valor de i it=l0r // suma 10 al valor ae ib; // resta 5 al valor i=3)7/ dnezementa 2 veces &. 2 vaui dea Recaleccién automatica de memoria: esta es una diferencia clave entre Java y C/C++. En Java el programador no tiene la responsabilidad de liberar la memaria que va quedando desreferenciada. Esta tarea es automatic y la leva a cabo un proceso llamado Garbage Collector (el recolactor de basura) 1.4.3 Definicion de constantes Las constantes se definen fuera de los métodos utiizando el modificador dinal. Habitualmente, se las define como piblicas y estaticas (aublic, static). Mas adelan- te, explicaremos el significado de public, static y"método! Ejemplo: mucstra dia de la semana (utlizando constantes) package Libro.cap0l; import java.util. scanner; public class DenoConstantes { J/ dennimos 1as constantes Public static final int LUNES = 1; Public static final int MARTES ~ 2, Public static final int MIRCOLES Public static final int JUEVES public static final int VIERNES public static final int SARs00 Public static final int D0WING0 4 public static void asin|steing|) seq) ‘ Scannor scanner = new Scanner (system. in); systen,cut.print ("Ingrese mn dia de 1a senana numero): ” ine v= scanner. nextint (); String dia; switch( v ) c case LINES) dia ~ "Lumes’ break: Java a fondo - Ing. Pablo A. Sznajdleder Alfaomega

También podría gustarte