como programar java, 9na edicion deitel

618

Click here to load reader

Upload: maria-penaloza

Post on 07-Aug-2015

203 views

Category:

Education


29 download

TRANSCRIPT

  1. 1. C O M O P R O G R A M A R PAUL DEITEL HARVEY DEITEL A L W A Y S L E A R N I N G PEARSONwww.FreeLibros.me
  2. 2. ACCESO A LOS CAPTULOS ADICIONALES DEL LIBRO Para acceder a los captulos 12 a 19 (en espaol), 20 a 31 y Apndices M a Q (en ingls) mencionados en el texto, visite el sitio Web de este libro: www.pearsonenespafiol.coin/deitel Utilice una moneda para descubrir el cdigo de acceso. (No use objetos filosos porque podra daarlo). IMPORTANTE: Este cdigo de acceso tiene vigencia de 2 das! Asegrese que el cdigo no aparezca daado ya que slo puede usarse una vez y no ser reemplazado en ningn caso. www.FreeLibros.me
  3. 3. www.FreeLibros.me
  4. 4. www.FreeLibros.me
  5. 5. P R O G I s g M A R N O V E N A E D I C l d ^ Paul Detel Deitel&Associates, Inc. Harvey Detel Deitel&Associates, Inc. Traductor Alfonso Vidal Romero Elizondo Ingeniero en SistemasElectrnicos ITESM, CampusMonterrey Revisin tcnica Roberto Martnez Romn Departamento de Tecnologa de Informaciny Computacin ITESM, CampusEstado deMxico Domingo Acosta Infante Departamento de Ingeniera en Informtica Instituto Tecnolgico deMorelia PEARSON www.FreeLibros.me
  6. 6. DEITEL, PAUL y HARVEY DEITEL Cmo programar en Java Novena edicin PEARSON EDUCACIN, Mxico, 2012 ISBN: 978-607-32-1150-5 rea: Computacin Formato: 20 X 25.5 cm Pginas: 616 Authorized translation from the English language edition entitledJAVAHOW TOPROGRAM, 9thEdition, by PaulDeitel &HarveyDeitel,publishedbyPearsonEducation, Inc., publishing asPrentice Hall, Copyright 2012. Allrights reserved. ISBN9780132575669 Traduccin autorizada de la edicin en idioma ingls titulada JAVAHOW TOPROGRAM,9a. edicin por PaulDeitely HarveyDeitel,publicada porPearson Education,Inc., publicadacomo Prentice Hall, Copyright 2012.Todoslosderechos reservados. Estaedicinen espaoles la nica autorizada. Edidn enespaol DireccinEducacin Superior: EditorSponsor: Editorde Desarrollo: Supervisorde Producdn: Gerente EditorialEducacin SuperiorLatinoamrica: NOVENAEDICIN, 2012 D.R. 2012por Pearson Educacinde Mxico, S.A. de C.V. Atlacomulco 500-5o. piso Col. Industrial Atoto 53519, Naucalpande Jurez, Estado de Mxico Cmara Nacionalde la Industria Editorial Mexicana. Reg. nm. 1031. Reservados todos losderechos. Ni la totalidad ni partede esta publicacin pueden reproducirse, registrarseo transmitirse, porun sistema de recuperacin de informacin, en ninguna forma ni por ningn medio, sea electrnico, mecnico, foto- qumico, magntico o electroptico, por fotocopia, grabacino cualquierotro, sinpermiso previo porescrito deleditor. Elprstamo, alquilero cualquierotra formade cesinde uso de este ejemplarrequerir tambin la autorizacindeleditor 0de sus representantes. ISBNVERSIN IMPRESA: 978-607-32-1150-5 ISBNVERSINE-BOOK: 978-607-32-1151-2 ISBN E-CHAPTER: 978-607-32-1152-9 Impreso en Mxico. Printed in Mxico. 12 34567890- 15 14 13 12 Mario Contreras LuisMiguel CruzCastillo e-mail: [email protected] Bernardino GutirrezHernndez Jos D. Hernndez Garduo Marisade Anta PEARSON www.FreeLibros.me
  7. 7. En memoriadesargentoShriver, 'ElprimerdirectordelCuerpodeTazyfundador denumerosasorganizacionessociales: Toruna vida demarcaradiferencia. Pauly Harvey Deitel www.FreeLibros.me
  8. 8. www.FreeLibros.me
  9. 9. Contenido Prefacio Antes de empezar 1 Introduccin a las computadoras y a Java 1.1 Introduccin 1.2 Computadoras: hardwarey software 1.3 Jerarqua de datos 1.4 Organizacin de una computadora 1.5 Lenguajes mquina, lenguajes ensambladores y lenguajes de alto nivel 1.6 Introduccin a latecnologade los objetos 1.7 Sistemas operativos 1.8 Lenguajesde programacin 1.9 Javay un tpico entorno de desarrollo enJava 1.10 Prueba de una aplicacin enJava 1.11 Web 2.0: Las redessociales 1.12 Tecnologas de software 1.13 Cmo estar al da con lastecnologas de informacin 1.14 Conclusin 2 Introduccin a las aplicaciones en Java 2.1 Introduccin 2.2 Su primer programa enJava: imprimir una lnea de texto 2.3 Modificacin de nuestro primer programa enJava 2.4 Cmo mostrar texto con pri ntf 2.5 Otra aplicacin enJava: suma de enteros 2.6 Conceptos acercade la memoria 2.7 Aritmtica 2.8 Toma de decisiones: operadores de igualdad y relacinales 2.9 Conclusin 3 Introduccin a las clases, objetos, mtodos ycadenas 3.1 Introduccin 3.2 Declaracin de una clasecon un mtodo e instanciamiento de un objeto de una clase 3-3 Declaracin de un mtodo con un parmetro 3.4 Variables de instancia, mtodos establecery mtodos obtener 3.5 Comparacin entre tipos primitivos y tipos por referencia 3.6 Inicializacin de objetos mediante constructores xxiii xxxiii 1 2 5 6 8 10 11 13 16 18 22 26 29 31 32 37 38 38 44 46 47 52 53 56 60 71 72 72 76 79 84 85 www.FreeLibros.me
  10. 10. 88 92 95 102 103 103 104 104 107 107 112 113 118 125 130 130 134 134 138 151 152 152 154 158 162 164 172 173 179 184 187 197 198 198 200 202 205 206 207 208 210 214 214 215 219 222 224 227 Contenido 3.7 Los nmeros de punto flotantey el tipo double 3.8 (Opcional) Caso de estudio de GUI y grficos: uso de cuadros de dilogo 3.9 Conclusin 4 Instrucciones de control: Parte I 4.1 Introduccin 4.2 Algoritmos 4.3 Seudocdigo 4.4 Estructuras de control 4.5 Instruccin i f de seleccin simple 4.6 Instruccin i f . .. el se de seleccin doble 4.7 Instruccin de repeticin whi1e 4.8 Cmo formular algoritmos: repeticincontroladapor un contador 4.9 Cmo formular algoritmos: repeticincontroladapor un centinela 4.10 Cmo formular algoritmos: instrucciones de control anidadas 4.11 Operadores de asignacin compuestos 4.12 Operadores de incremento y decremento 4.13 Tipos primitivos 4.14 (Opcional) Caso de estudio de GUI y grficos: creacin de dibujos simples 4.15 Conclusin 5 Instrucciones de control: Parte 2 5.1 Introduccin 5.2 Fundamentos de la repeticin controlada por contador 5.3 Instruccin de repeticin for 5.4 Ejemplossobre el uso de la instruccin for 5.5 Instruccin de repeticin do... whi1e 5.6 Instruccin de seleccin mltiple switch 5.7 Instrucciones break y continu 5.8 Operadores lgicos 5.9 Resumen sobre programacin estructurada 5.10 (Opcional) Caso de estudio de GUI y grficos: dibujo de rectngulosy valos 5.11 Conclusin 6 Mtodos: un anlisis ms detallado 6.1 Introduccin 6.2 Mdulos de programas enJava 6.3 Mtodos st a t i c,campos st a t i cy laclaseMath 6.4 Declaracin de mtodos con mltiples parmetros 6.5 Notas acerca de cmo declarar y utilizar los mtodos 6.6 La pilade llamadasa los mtodosy losregistros de activacin 6.7 Promocin yconversin de argumentos 6.8 Paquetesde laAPI deJava 6.9 Caso de estudio: generacin de nmeros aleatorios 6.9.1 Escalamiento y desplazamiento generalizados de nmeros aleatorios 6.9.2 Repetitividad de nmeros aleatorios para prueba y depuracin 6.10 Caso de estudio: un juego deprobabilidad (introduccin a las enumeraciones) 6.11 Alcance de las declaraciones 6.12 Sobrecarga de mtodos 6.13 (Opcional) Caso de estudio de GUI y grficos: coloresy figuras rellenas 6.14 Conclusin www.FreeLibros.me
  11. 11. Contenido ix 7 Arreglos y objetos ArrayList 7.1 Introduccin 7.2 Arreglos 7.3 Declaracin y creacin de arreglos 7.4 Ejemplos acercadel uso de los arreglos 7.5 Caso de estudio:simulacin para barajar y repartir cartas 7.6 Instruccin for mejorada 7.7 Pasode arreglosa los mtodos 7.8 Caso de estudio: laclase L i broCal i f i ca ci ones que usa un arreglo paraalmacenar las calificaciones 7.9 Arreglos multidimensionales 7.10 Caso de estudio: la clase Libro C al ific a c io n e s que usa un arreglo bidimensional 7.11 Listas de argumentos de longitud variable 7.12 Uso de argumentos de lnea de comandos 7.13 LaclaseArrays 7.14 Introduccin a lascolecciones y laclaseA rrayLi st 7.15 (Opcional) Caso de estudio de GUI y grficos: dibujo de arcos 7.16 Conclusin 8 Clases y objetos: un anlisis ms detallado 8.1 Introduccin 8.2 Caso de estudio de la claseTiempo 8.3 Control del accesoa los miembros 8.4 Referencias a los miembros delobjeto actual mediante this 8.5 Caso de estudio de la claseTiempo: constructoressobrecargados 8.6 Constructores predeterminados y sin argumentos 8.7 Observaciones acercade los mtodosEstablecery Obtener 8.8 Composicin 8.9 Enumeraciones 8.10 Recoleccin de basuray elmtodo fi nali ze 8.11 Miembros de clase s t a t i c 8.12 Declaracin static import 8.13 Variables de instancia fi nal 8.14 Caso de estudio de la claseT i empo: creacin de paquetes 8.15 Accesoa paquetes 8.16 (Opcional) Caso de estudio de GUI y grficos: uso de objetos con grficos 8.17 Conclusin 9 Programacin orientada a objetos: herencia 9.1 Introduccin 9.2 Superclasesy subclases 9.3 Miembros protected 9.4 Relacin entre las superclases y las subclases 9.4.1 Creaciny uso de una clase Empl eadoPorComi s i on 9.4.2 Creacin y uso de una clase Empl eadoBaseMasComi si on 9.4.3 Creacin de una jerarqua de herencia Empl eadoPorComi s i on- Empl eadoBaseMasComi sion 9.4.4 Lajerarqua de herencia Empl eadoPorComi si on-Empl eadoBaseMasComi sion mediante el uso de variablesde instancia protected 9.4.5 Lajerarqua de herencia Empl eadoPorComi si on-Empl eadoBaseMasComi sion mediante el uso de variablesde instancia pri vate 240 241 242 243 244 254 258 259 262 268 271 278 279 281 284 286 289 311 312 312 316 317 320 326 326 328 331 333 334 338 339 340 345 347 351 359 360 361 363 364 364 370 375 377 380 www.FreeLibros.me
  12. 12. x Contenido 9.5 Los constructores en lassubclases 9.6 Ingenierade software mediante la herencia 9.7 La clase Obj e ct 9.8 (Opcional) Caso de estudio de GUI y grfieos: mostartexto e imgenes usando etiquetas 9.9 Conclusin 10 Programacin orientada a objetos: polimorfismo 10.1 Introduccin 10.2 Ejemplos delpolimorfismo 10.3 Demostracin del comportamiento polimrfico 10.4 Clases y mtodos abstractos 10.5 Caso de estudio: sistema de nmina utilizando polimorfismo 10.5.1 Lasuperclase abstracta Empleado 10.5.2 Lasubclase concreta EmpleadoAsalari ado 10.5.3 Lasubclase concreta Empl eadoPorHoras 10.5.4 Lasubclase concreta Empl eadoPo rComi si on 10.5.5 Lasubclase concreta indirecta Empl eadoBaseMasComi sion 10.5.6 El procesamiento polimrfico, el operador i nstanceof y laconversin descendente 10.5.7 Resumen de lasasignaciones permitidas entre variables de lasuperclase yde lasubclase 10.6 Mtodos y clases fi nal 10.7 Caso de estudio: creacin y uso de interfaces 10.7.1 Desarrollo de una jerarqua PorPagar 10.7.2 La interfaz PorPagar 10.7.3 Laclase Factu ra 10.7.4 Modificacin de la clase Empleado para implementar la interfaz PorPagar 10.7.5 Modificacin de laclase Empl eadoAsal a ri ado para usarla en la jerarqua PorPagar 10.7.6 Uso de la nterfaz PorPagar para procesar objetos Factura y Empleado mediante el polimorfismo 10.7.7 Interfaces comunes de laAPI deJava 10.8 (Opcional) Caso de estudio de GUI y grficos: realizar dibujos usando polimorfismo 10.9 Conclusin I I Manejo de excepciones: un anlisis ms profundo 11.1 Introduccin 11.2 Ejemplo: divisin entre cero sin manejo de excepciones 11.3 Ejemplo: manejo deexcepciones tipo A ritm eticException elnputMismatchException 11.4 Cundo utilizar el manejo deexcepciones 11.5 Jerarqua de excepcionesenJava 11.6 Bloque finally 11.7 Limpieza de la pilay obtencin de informacin de un objeto excepcin 11.8 Excepciones encadenadas 11.9 Declaracin de nuevos tipos de excepciones 11.10 Precondicionesy poscondiciones 11.11 Aserciones 11.12 (Nuevo enJava SE 7): Clusula catch mltiple: atrapar varias excepciones en un catch 11.13 (Nuevo enJava SE 7): Clusulat rycon recursos (t ry-with-resources): desasignacin automtica de recursos 11.14 Conclusin 385 386 387 388 391 394 395 397 398 400 403 404 407 408 410 412 413 418 418 419 421 422 422 425 427 428 430 431 433 438 439 439 442 447 447 450 454 457 459 460 461 462 463 463 www.FreeLibros.me
  13. 13. Contenido x i A Tabla de precedencia de operadores B Conjunto de caracteres ASCII C Palabras clave y palabras reservadas D Tipos primitivos E Uso de la documentacin de la API deJava E.1 Introduccin E.2 Navegacin por laAPI deJava F Uso del depurador E1 Introduccin E2 Los puntos de interrupcin y los comandos run, stop, cont y pri nt F.3 Los comandos pri nt y set E4 Cmo controlar laejecucin mediante los comandos step, step upy next F.5 El comando watch F.6 El comando clear F.7 Conclusin G Salida con formato G.l Introduccin G.2 Flujos G.3 Aplicacin de formato a lasalidacon pri ntf G.4 Impresin de enteros G.5 Impresin de nmeros de punto flotante G.6 Impresin de cadenasy caracteres G.7 Impresin de fechas y horas G.8 Otros caracteres de conversin G.9 Impresin con anchuras de campo y precisiones G.10 Uso de banderas en lacadena de formato de pri ntf G.11 Impresin con ndices como argumentos G.12 Impresin de literalesy secuencias de escape G.13 Aplicacin deformato a lasalida con laclase Formatte r G.l4 Conclusin H Sistemas numricos H.l Introduccin H.2 Abreviaturade los nmeros binarioscomo nmerosoctales y hexadecimales H.3 Conversin de nmerosoctales y hexadecimales a binarios H.4 Conversin de un nmero binario,octal o hexadecimal adecimal H.5 Conversin de un nmero decimala binario, octalo hexadecimal H.6 Nmeros binarios negativos: notacin de complemento a dos A-l A-3 A-4 A-5 A-6 A-6 A-6 A-14 A-15 A-15 A-19 A-21 A-24 A-27 A-29 A-31 A-32 A-32 A-32 A-33 A-34 A-36 A-37 A-39 A-41 A-43 A-47 A-47 A-48 A-49 A-54 A-55 A-58 A-59 A-59 A-60 A-62 www.FreeLibros.me
  14. 14. x ii Contenido I GroupLayout 1.1 Introduccin 1.2 Fundamentos de GroupLayout 1.3 Creacin de unobjeto SelectorColores 1.4 RecursosWebsobre GroupLayout J Componentes de integracin Java Desktop J.l Introduccin J.2 Pantallas deinicio J.3 LaclaseDesktop J.4 Iconos de la bandeja K Mashups K.l Introduccin K.2 Mashups populares K.3 AlgunasAPI de uso comn en mashups K.4 Centrode recursosDeitelsobre mashups K.5 Centrode recursosDeitelsobre RSS K.6 Cuestiones de rendimiento y confiabilidad de los mashups L Unicode L.l Introduccin L2 Formatosde transformacin de Unicode L.3 Caracteresy glifos L.4 Ventajas/Desventajasde Unicode L5 Uso de Unicode L.6 Rangos de caracteres ndice Los captulos 12a 19 se encuentran en espaol en el sitio Web del libro 12 Caso de estudio del ATM, Parte I : Diseo orientado a objetos con UML 12.1 Introduccin alcaso deestudio 12.2 Anlisis del documento de requerimientos 12.3 Cmo identificar lasclases en un documento de requerimientos 12.4 Cmo identificar los atributos de las clases 12.5 Cmo identificar los estadosy actividades de losobjetos 12.6 Cmo identificar lasoperaciones de lasclases 12.7 Cmo indicar lacolaboracin entreobjetos 12.8 Conclusin 469 470 470 478 484 489 493 499 506 A-67 A-67 A-67 A-68 A-78 A-79 A-79 A-79 A-81 A-83 A-85 A-85 A-85 A-86 A-86 A-87 A-87 A-88 A-88 A-89 A-90 A-90 A-91 A-93 I- l www.FreeLibros.me
  15. 15. Contenido x 13 Caso de estudio del ATM, Parte 2: Implementacii de un diseo orientado a objetos 13.1 Introduccin 13.2 Inicio de laprogramacin de lasclases delsistemaATM 13.3 Incorporacin de laherenciay el polimorfismo en el sistemaATM 13.4 Implementacin delcaso deestudio delATM 13.4.1 Laclase ATM 13.4.2 Laclase P a n ta lla 13.4.3 LaclaseTeclado 13.4.4 Laclase Di spensadorEf e c ti vo 13.4.5 Laclase RanuraDeposito 13.4.6 Laclase Cuenta 13.4.7 Laclase BaseDatos Banco 13.4.8 Laclase Transacci n 13.4.9 Laclase Sol i citud Sal do 13.4.10 Laclase R eti ro 13.4.11 Laclase Depos i to 13.4.12 LaclaseCasoEstudioATM 13-5 Conclusin 14 Componentes de la GUI: Parte I 14.1 Introduccin 14.2 NuevaaparienciavisualNimbus deJava 14.3 Entrada/salidasimple basadaen GUI con JOptionPane 14.4 Generalidades de los componentes de Swing 14.5 Mostrartexto e imgenes en unaventana 14.6 Campos detexto y unaintroduccin al manejo deeventos con clases anidadas 14.7 Tipos deeventos comunes de laGUI e interfaces de escucha 14.8 Cmo funciona el manejo deeventos 14.9 JButton 14.10 Botones que mantienen elestado 14.10.1 JCheckBox 14.10.2 JRadioButton 14.11 JComboBox: uso de una clase interna annima para el manejo de eventos 14.12 J L is t 14.13 Listas de seleccin mltiple 14.14 Manejo de eventos de ratn 14.15 Clases adaptadoras 14.16 Subclase de JPanel paradibujarcon el ratn 14.17 Manejode eventos de teclas 14.18 Introduccin a los administradores de esquemas 14.18.1 FlowLayout 14.18.2 BorderLayout 14.18.3 G rid Layou t 14.19 Uso de panelesparaadministraresquemasms complejos 14.20 JTextA rea 14.21 Conclusin 510 511 511 516 522 523 528 529 530 531 532 534 537 538 539 543 546 546 549 550 551 552 555 557 561 567 569 571 574 574 577 580 584 586 589 594 597 601 604 605 608 611 613 615 618 www.FreeLibros.me
  16. 16. xiv Contenido 15 Grficos y Java 2D 15.1 Introduccin 15.2 Contextosy objetos degrficos 15-3 Control de colores 15.4 Manipulacin de tipos de letra 15.5 Dibujo de lneas, rectngulosy valos 15.6 Dibujo de arcos 15.7 Dibujo de polgonos y polilneas 15.8 LaAPI Java 2D 15.9 Conclusin 16 Cadenas, caracteres y expresiones regulares 16.1 Introduccin 16.2 Fundamentos de los caracteres y las cadenas 16.3 Laclase String 16.3.1 Constructores de Stri ng 16.3.2 Mtodos 1ength, charAt ygetChars de S trin g 16.3.3 Comparacin entre cadenas 16.3.4 Localizacin de caracteres y subcadenas en las cadenas 16.3.5 Extraccin de subcadenas de lascadenas 16.3.6 Concatenacin de cadenas 16.3.7 Mtodos varios de Stri ng 16.3.8 Mtodo valueOf de Stri ng 16.4 Laclase Stri ngBui lder 16.4.1 Constructores de Stri ngBuilder 16.4.2 Mtodos 1ength, capacity, setLengthy ensureCapaci ty de S tri ngBui ld er 16.4.3 Mtodos charAt, setCharAt, getChars y reverse de S tri ngBui ld e r 16.4.4 Mtodos append de Stri ngBuilder 16.4.5 Mtodos de insercin y eliminacin de Stri ngBui lder 16.5 LaclaseCharacter 16.6 Divisinde objetos Stri ngen tokens 16.7 Expresiones regulares, laclase Pattern y laclase Matcher 16.8 Conclusin 17 Archivos, flujos y sealizacin de objetos 17.1 Introduccin 17.2 Archivosy flujos 17.3 Laclase File 17.4 Archivos de texto de acceso secuencial 17.4.1 Creacin de un archivo de texto de acceso secuencial 17.4.2 Cmo leerdatos de un archivo de texto de acceso secuencial 17.4.3 Caso deestudio: un programade solicitud de crdito 17.4.4 Actualizacin de archivos de acceso secuencial 17.5 Sealizacin deobjetos 17.5.1 Creacin de un archivo de acceso secuencial mediante el uso de lasealizacin deobjetos 17.5.2 Lecturay deserializacin de datos de un archivo de acceso secuencial 17.6 Clases adicionales de java, io 17.6.1 Interfaces y clases para entrada y salida basadaen bytes 17.6.2 Interfaces y clases para entrada y salida basadaen caracteres 632 634 635 642 647 651 654 657 664 672 673 673 674 674 675 676 681 683 684 684 686 687 688 688 690 691 693 694 699 700 708 719 720 720 722 726 726 733 736 741 742 743 749 751 751 753 631 www.FreeLibros.me
  17. 17. Contenido x v 17.7 Abrir archivos con JFileChooser 17.8 Conclusin 18 Recursividad 18.1 Introduccin 18.2 Conceptosde recursividad 18.3 Ejemplo de uso de recursividad: factoriales 18.4 Ejemplo de uso de recursividad: serie de Fibonacci 18.5 Larecursividad y la pila de llamadas a mtodos 18.6 Comparacin entre recursividade iteracin 18.7 Lastorres de Hanoi 18.8 Fractales 18.9 Vueltaatrs recursiva (backtracking) 18.10 Conclusin 19 Bsqueda, ordenamiento y Big O 19.1 Introduccin 19.2 Algoritmos de bsqueda 19.2.1 Bsqueda lineal 19.2.2 Bsqueda binaria 19.3 Algoritmos de ordenamiento 19.3.1 Ordenamiento por seleccin 19.3.2 Ordenamiento por insercin 19.3.3 Ordenamiento por combinacin 19.4 Conclusin Los captulos 20 a 3 1se encuentran en ingls en el sitio Web del libro 20 Generic Collections 20.1 Introduction 20.2 Collections Overview 20.3 Type-Wrapper Classesfor PrimitiveTypes 20.4 Autoboxing and Auto-Unboxing 20.5 Interface Col 1ect i on and Class C o ll e ctio n s 20.6 Lists 20.6.1 A r ra y L is t and Ite r a to r 20.6.2 L in k e d L is t 20.7 Collections Methods 20.7.1 Method s o rt 20.7.2 Method s h u ffie 20.7.3 Methods re ve rse , f i 11, copy, max and mi n 20.7.4 Method binarySearch 20.7.5 MethodsaddAll, frequency and d is jo in t 20.8 Stack Class ofPackage java, til 20.9 Class PriorityQueueand Interface Queue 20.10 Sets 20.11 Maps 754 757 765 766 767 768 771 774 776 777 779 790 790 798 799 800 800 804 809 810 814 817 824 829 830 830 831 832 832 833 834 836 841 842 845 847 849 851 853 855 856 859 www.FreeLibros.me
  18. 18. xv Contenido 20.12 Properties Class 20.13 Synchronized Collections 20.14 Unmodifiable Collections 20.15 Abstract Implementations 20.16 Wrap-Up 2 1 GenericClasses andMethods 21.1 Introduction 21.2 Motivation for Generic Methods 21.3 Generic Methods: Implementation and Compile-TimeTranslation 21.4 Additional Compile-TimeTranslation Issues: MethodsThat Use a Type Parameter asthe Return Type 21.5 Overloading Generic Methods 21.6 Generic Classes 21.7 RawTypes 21.8 Wildcards in MethodsThat AcceptType Parameters 21.9 Generics and Inheritance: Notes 21.10 Wrap-Up 22 CustomGeneric DataStructures 22.1 Introduction 22.2 Self-Referential Classes 22.3 Dynamic Memory Allocation 22.4 Linked Lists 22.5 Stacks 22.6 Queues 22.7 Trees 22.8 Wrap-Up 23 Applets andJavaWebStart 23-1 Introduction 23.2 SampleApplets Provided with theJDK 23-3 SimpleJavaApplet: Drawing a String 23-3.1 Executing WelcomeAppl et in the appletviewer 23-3.2 Executing an Applet in aWeb Browser 23.4 Applet Life-Cycle Methods 23-5 Initialization with Method i nit 23.6 Sandbox Security Model 23.7 JavaWeb Start and theJava Network Launch Protocol (JNLP) 23.7.1 Packaging the DrawTest Appletfor Usewith JavaWeb Start 23.7.2 JNLP Document for the DrawTest Applet 23.8 Wrap-Up 24 Multimedia: Applets andApplications 24.1 Introduction 24.2 Loading, Displaying and Scaling Images 24.3 Animaring a Series ofImages 24.4 Image Maps 863 866 866 867 867 873 874 874 877 880 883 883 891 895 899 900 904 905 905 906 907 917 921 924 930 941 942 943 947 949 951 951 952 954 956 956 957 961 967 968 969 975 982 www.FreeLibros.me
  19. 19. Contenido x v ii 24.5 Loading and PlayingAudio Clips 24.6 PlayingVideo and Other Media withJava Media Framework 24.7 Wrap-Up 24.8 Web Resources 2 5 GUI Components: Part 2 25-1 Introduction 25.2 JS Iid e r 25-3 Windows: Additional Notes 25.4 Using Menus with Frames 25-5 JPopupMenu 25.6 Pluggable Look-and-Feel 25.7 JDesktopPane and JlnternalFrame 25.8 JTabbedPane 25.9 Layout Managers: BoxLayout and GridBagLayout 25.10 Wrap-Up 2 6 Multithreading 26.1 Introduction 26.2 Thread States: Life Cycle ofaThread 26.3 Creating and ExecutingThreads with Executor Framework 26.4 Thread Synchronization 26.4.1 Unsynchronized Data Sharing 26.4.2 Synchronized Data SharingMaking Operations Atomic 26.5 Producer/Consumer Relationship without Synchronization 26.6 Producer/Consumer Relationship: ArrayBlocki ngQueue 26.7 Producer/Consumer Relationship with Synchronization 26.8 Producer/Consumer Relationship: Bounded Buffers 26.9 Producer/Consumer Relationship: The Lock and Condi t i on Interfaces 26.10 Concurrent Collections Overview 26.11 Multithreadingwith GUI 26.11.1 Performing Computations in aWorkerThread 26.11.2 Processing Intermedate Results with Swi ngWorker 26.12 Interfaces Caliabl e and Futu re 26.13 Java SE 7: Fork/Join Framework 26.14 Wrap-Up 2 7 Networking 27.1 Introduction 27.2 Manipulating URLs 27.3 Reading a Fileon aWeb Server 27.4 Establishing a SimpleServer Using Stream Sockets 27.5 Establishing a Simple Client Using Stream Sockets 27.6 Client/Server Interaction with Stream Socket Connections 27.7 Datagrams: Connectionless Client/ServerInteraction 27.8 Client/ServerTic-Tac-Toe Usinga Multithreaded Server 27.9 [Web Bonus] Case Study: DeitelMessenger 27.10 Wrap-Up 985 988 992 992 1000 1001 1001 1005 1006 1014 1017 1022 1026 1028 1040 1045 1046 1048 1051 1054 1055 1059 1062 1070 1073 1079 1086 1093 1095 1096 1102 1109 1109 1110 I 118 1119 1120 1125 1128 1130 1130 1142 1150 1165 1165 www.FreeLibros.me
  20. 20. x v Contenido 28 Accessing Databases with JDBC 28.1 Introduction 28.2 Relational Databases 28.3 Relational Database Overview: The books Database 28.4 SQL 28.4.1 Basic SELECT Query 28.4.2 WHERE Clause 28.4.3 ORDER BY Clause 28.4.4 Merging Data from MltipleTables: INNER JOIN 28.4.5 I NSERT Statement 28.4.6 UPDATE Statement 28.4.7 DELETE Statement 28.5 Instructions for Installing MySQL and MySQL Connector/J 28.6 Instructions forSetring Up a MySQL UserAccount 28.7 Creating Database books in MySQL 28.8 Manipularing Databaseswith JDBC 28.8.1 Connecring to and Querying a Database 28.8.2 Querying the books Database 28.9 RowSet Interface 28.10 Java DB/Apache Derby 28.11 P repa redStatem ents 28.12 Stored Procedures 28.13 Transaction Processing 28.14 Wrap-Up 28.15 Web Resources 29 JavaServer Faces Web Apps: Part I 29.1 Introduction 29.2 HyperTextTransfer Protocol (HTTP) Transacrions 29.3 MultirierApplication Architecture 29.4 YourFirstJSF Web App 29.4.1 The Default i ndex .xhtml Document: Introducing Facelets 29.4.2 Examining the WebTimeBean Class 29.4.3 Building theWebTi meJSF Web App in NetBeans 29.5 Model-View-ControllerArchitecture ofJSF Apps 29.6 CommonJSF Components 29.7 ValidationUsing JSF StandardValidators 29.8 SessionTracking 29.8.1 Cookies 29.8.2 SessionTracking with @Sessi onScoped Beans 29.9 Wrap-Up 30 JavaServer Faces Web Apps: Part 2 30.1 Introduction 30.2 Accessing Databases in Web Apps 30.2.1 Setring Up the Database 30.2.2 @ManagedBean ClassAddressBean 30.2.3 i ndex.xhtml Facelets Page 30.2.4 addent r y . xhtml Facelets Page 1172 1173 1174 1177 1178 1179 1181 1182 1184 1185 1186 1186 1187 1188 1189 1189 1194 1207 1209 1211 1226 1227 1227 1228 1235 1236 1237 1240 1241 1242 1244 1246 1250 1250 1254 1261 1262 1263 1269 1276 1277 1277 1279 1282 1286 1288 I 171 www.FreeLibros.me
  21. 21. Contenido x x 30.3 Ajax 30.4 AddingAjax Functionality to theValidation App 30.5 Wrap-Up 3 1 Web Services 31.1 Introduction 31.2 Web Service Basics 31.3 Simple ObjectAccess Protocol (SOAP) 31.4 Representational StateTransfer (REST) 31.5 JavaScript Object Notation (JSON) 31.6 Publishing and Consuming SOAP-BasedWeb Services 31.6.1 Creating aWeb Application Project and Adding aWeb Service Class in NetBeans 31.6.2 Defining the Wel comeSOAP Web Service in NetBeans 31.6.3 Publishing the Wel comeSOAPWeb Service from NetBeans 31.6.4 Testing the Wel comeSOAPWeb Service with GlassFish Application ServersTesterWeb Page 1308 31.6.5 Describing aWeb Service with theWeb ServiceDescription Language (WSDL) 31.6.6 Creating a Clientto Consume the Wel comeSOAPWeb Service 31.6.7 Consuming the Wel comeSOAPWeb Service 31.7 Publishing and Consuming REST-BasedXML Web Services 31.7.1 Creating a REST-Based XMLWeb Service 31.7.2 Consuming a REST-BasedXMLWeb Service 31.8 Publishing and Consuming REST-BasedJSON Web Services 31.8.1 Creating a REST-BasedJSON Web Service 31.8.2 Consuming a REST-BasedJSON Web Service 31.9 SessionTrackingin a SOAPWeb Service 31.9.1 Creating a B lackjack Web Service 31.9.2 Consuming the BI ackj ackWeb Service 31.10 Consuming a Database-Driven SOAP Web Service 31.10.1 Creating the Reservati onDatabase 31.10.2 Creating aWeb Application to Interactwith the Reservation Service 1343 31.11 Equation Generator: Returning User-Defmed Types 31.11.1 Creating the EquationGeneratorXML Web Service 31.11.2 Consuming the EquationGeneratorXM L Web Service 31.11.3 Creating the EquationGeneratorJSONWeb Service 31.11.4 Consuming the EquationGeneratorJSONWeb Service 31.12 Wrap-Up 1290 1292 1295 1299 1300 1302 1302 1302 1303 1303 1303 1304 1307 1309 1310 1312 1315 1315 1318 1320 1320 1322 1324 1325 1328 1339 1340 1346 1349 1350 1354 1354 1357 www.FreeLibros.me
  22. 22. X X Contenido Los apndices M a Q se encuentran en ingls en el sitio Web del libro M Creating Documentation with javadoc M. 1 Introduction M.2 Documentation Comments M.3 DocumentingJava Source Code M .4 javadoc M.5 Files Produced by javadoc N Bit Manipulation N.l Introduction N.2 Bit Manipulation and the Bitwise Operators N.3 B itS et Class O Labeled break and conti nue Statements 0.1 Introduction 0.2 Labeled break Statement 0.3 Labeled continue Statement P UML 2: Additional Diagram Types P.1 Introduction P.2 Additional Diagram Types Q Design Patterns Q.l Introduction Q.2 Creational, Structural and Behavioral Design Patterns Q.2.1 Creational Design Patterns Q.2.2 Structural Design Patterns Q.2.3 Behavioral Design Patterns Q.2.4 Conclusin Q.3 Design Patterns in Packages java.awt and javax.swing Q.3.1 Creational Design Patterns Q.3.2 Structural Design Patterns Q.3.3 Behavioral Design Patterns Q.3.4 Conclusin Q.4 Concurrency Design Patterns Q.5 Design Patterns Used in Packages java, io and java, net Q.5.1 Creational Design Patterns Q.5.2 Structural Design Patterns Q.5.3 ArchitecturaJ Patterns Q.5.4 Conclusin Q.6 Design Patterns Used in Package java.uti 1 Q.6.1 Creational Design Patterns Q.6.2 Behavioral Design Patterns Q.7 Wrap-Up M-i M-l M-l M-l M-8 M-9 N-l N-l N-l N -ll 0 - 1 o - i o - i 0-2 P-l P-l P-l Q-i Q -l Q-2 Q-3 Q-5 Q-6 Q-7 Q-7 Q-7 Q-8 Q-l0 Q-13 Q-14 Q-i5 Q-i5 Q-15 Q-16 Q-19 Q-19 Q-19 Q-19 Q-20 www.FreeLibros.me
  23. 23. Prefacio Novivas msenfragmentos, conctate. EdgarMorgan Foster Bienvenido a CmoprogramarenJava,novenaedicin. Este libro presentalas tecnologas de vanguardia paraestudiantes, profesoresy desarroliadores desoftware. El nuevo captulo 1 atrae la atencin de los estudiantes con hechos y cifras fascinantes, para que encuentren ms emocionante el hecho de estudiar sobre las computadoras y la programacin. Ofrece los siguiente: una tabla sobre algunos proyectos de investigacin que se hacen posibles gracias a las computadoras; un anlisis sobre el hardware y las tendencias tecnolgicas actuales; jerarqua de datos; unatabladeplataformasdeaplicacionesmvilesyde Internet; unanuevaseccinsobreredessociales; una introduccin aAndrid; una tabla de los servicios Web ms populares; una tabla de las publicaciones tecnolgicasy de negocios, adems de lossiriosWeb que le ayudarnaestar aldacon las noticias y ten dencias ms recientes sobre tecnologa;y ejercicios actualizados. El libro es apropiado para secuencias de cursos introductorios apoyados en las recomendaciones curriculares de ACM/IEEE y sirve como preparacin para el examen de Colocacin avanzada (AP) de cienciascomputacinales. Nosenfocamosenlasmejoresprcticasde ingenieradesoftware. Labasedellibroesnuestroreconocido mtodo de cdigo activo:los conceptosse presentanen el contextode programas funcionales completos, en lugar de hacerlo a travsde fragmentos separados de cdigo. Cada ejemplo de cdigo completo viene acompaadodeejemplosdeejecucionesactuales.Todoelcdigofuenteestdisponibleenwww.deite l.com/ books/jhtp9/ (eningls)yen elsirioWebdeestelibrowww.pearsonenespaol.com/deitel (enespaol). Sisurgealgunadudaopreguntamientrasleeestelibro,enveuncorreoelectrnicoadeitel@deite l.com; leresponderemosalabrevedad. Paraobteneractualizacionessobreeste libro,visitevavw.deite l.com/books/ jhtp9/, sganosenFacebook (vmm deite l.com/deitel fan)yTwitter(@deitel). Tambinpuedesuscribirse alboletndecorreoelectrnico DeitePBuzzOnline(vom.deite l.com/newsletter/subscri be.html). Caractersticas nuevas y mejoradas He aqu las actualizaciones que realizamosala9aedicin: Java StandardEdition (SE) 7 Fcil de usar como libro para Java SE 6 y Java SE 7. Hay unas cuantas caractersticas de Java StandardEdition (SE) 7que afectan aloscursosde cienciascomputacionales CS 1yCS 2. Cubrimos esas caractersticas en secciones modulares opcionales que se pueden incluir u omitir con facilidad. He aqu una parte de la nueva funcionalidad: objetos Stri ng en instrucciones switch, la instruc cin try con recursos (try-with-resources) paraadministrarobjetosAutoClosabl e,multi-catch para definir un solo manejador de excepciones en sustitucin de varios que realizan la misma tarea, las API del sistema de archivos NIO y la inferencia de tipos de objetos genricos a partir de lavariable alaque estn asignados, mediante el uso de lanotacin o . Tambin veremos las generalidades sobre las nuevas caractersticas de laAPI concurrente. www.FreeLibros.me
  24. 24. x x Prefacio Nuevas API del sistema de archivos de Java SE 7. Ofrecemos una versin en lnea alternativa (en ingls) del captulo 17, Archivos, flujos y sealizacin de objetos, que se volvi a implementar con las nuevasAPI del sistemade archivosdeJava SE 7. VersionesAutoClosable de Connection, Statem enty ResultSetdeJava SE 7. Con elcdigo fuen te para el captulo 28 (en ingls), proporcionamos unaversin del primer ejemplo del captulo que se implement mediante el uso de lasversiones AutoClosable de Connection, Statementy ResultSet. Los objetos AutoClosable reducen la probabilidad de fugas de recursos cuando se utilizan con la instruccin try con recursos (try-with-resources) de Java SE 7, la cual cierra de manera automtica los objetos AutoClosabl e que se asignan en los parntesis despus de la palabra clave try. Caractersticaspedaggicas Mejoramoselconjunto deejerciciosMarcarla diferencia* Lealentamosautilizarlascomputadoras e Internet para investigar y resolver problemas sociales relevantes. Estos ejercicios estn diseados para aumentar la conciencia y el anlisis en torno a los problemas importantes a los que se enfrenta el mundo. Esperamos que usted los aborde con sus propios valores, polticas y creencias. D un vis tazo a nuestro nuevo Centro de recursos para marcar una diferencia (en ingls) en www.dei te l.com/ MakingADif ference, en dondeobtendr ideas adicionales que tal vezdesee investigar ms a fondo. Nmerosdepginapara lostrminos claveen losresmenesde cada capitulo. En lalistade trmi nos claveque aparece en el resumen de cada captulo incluimos el nmero de pginadonde se define el trmino. Comentarios en video. En el sitio Webde este libro encontrar comentarios en video (VideoNotes), en ingls, en las que el coautor Paul Deitel explica con detalle la mayora de los programas de los captulos bsicos. Los profesores nos han dicho que estos comentariosconstituyen un recurso valioso parasus estudiantes. Tecnologa de objetos Programacin y diseo orientados a objetos. En el captulo 1 presentamos la terminologa y los conceptos bsicos de latecnologadeobjetos. En el captulo 3 losestudiantes desarrollansusprimeras clases y objetos personalizados. Al presentar los objetos y las clases en los primeros captulos hace mos que los estudiantes de inmediato piensen en objetosy dominen estos conceptos [en los cursos que requieren una metodologa en la que se presenten los objetos en captulos posteriores, le reco mendamos el libro Java How to Program, Late Objects Versin, 8aedition (en ingls), el cual presenta en los primeros seis captulos los fundamentos de la programacin (incluyendo dos sobre instruc ciones de control) y contina con varios captulos que introducen los conceptos de programacin orientada aobjetos en forma gradual]. Manejo de excepciones. Integramos el manejo bsico de excepciones en los primeros captulos del libro; adems los profesores pueden extraer con facilidad ms material del captulo 11, Manejo de excepciones: un anlisis ms detallado, para mostrarlo con anticipacin. Las clases Arraysy ArrayList. El captulo 7 cubre la clase Arrays que contiene mtodos para realizar manipulaciones comunes de arreglos y la clase ArrayList que implementa una estruc tura de datos tipo arreglo, cuyo tamao se puede ajustar en forma dinmica. Esto va de acuerdo con nuestra filosofa de obtener mucha prctica al utilizar las clases existentes, al tiempo que el estudiante aprendea definirsuspropias clases. Casos de estudio orientados a objetos (OO). La presentacin de las clases y los objetos en los pri meros captulos del libro aportan casos de estudio de Tiempo, Empleado y LibroCali ficaciones, que se entretejen a travs varias secciones y captulos, e introducen conceptos de OO cada vez ms profundos. www.FreeLibros.me
  25. 25. Prefacio x x i Ejemploprctico opcional: uso de UMLpara desarrollar un diseo orientado a objetosy una implementacin en Java de un cajero automtico (ATM). El UML (Lenguaje Unificado de Modelado) es el lenguaje grfico estndar en la industria para modelar sistemas orientados a ob jetos. Los captulos 12 y 13 (en el sitio Web) contienen un Ejemplo prctico opcionalsobre diseo orientado a objetos mediante el uso de UML. Diseamos e implementamos el software para un cajero automtico (ATM) simple. Analizamos un documento de requerimientos tpico, el cual espe cificaelsistemaquesevaaconstruir.Determinamos lasclasesnecesarias paraimplementresesistema, los atributos que deben tener esas clases, los comportamientos que necesitan exhibir, y especificamos cmo deben interactuar las clases entre s para cumplir con los requerimientos del sistema. A partir del diseo creamos una implementacin completa en Java. A menudo los estudiantes informan que pasan por un momento de revelacin:el Ejemplo prctico les ayuda a atar cabos y comprender enverdad laorientacin a objetos. Se reorden lapresentacin de estructuras de datos. Empezamos con la clase genrica ArrayList en el captulo 7. Como los estudiantes comprendern los conceptos bsicos sobre losgenricos en lospri meros captulos del libro,nuestros anlisis posteriores sobre lasestructuras de datos ofrecen un trata miento ms detallado de las colecciones de genricos, puesto que ensean a utilizar las colecciones integradas de laAPI deJava. Luego mostramoscmo implementar losmtodos y las clases genricas. Por ltimo, mostraremos cmo crearestructuras de datos genricas personalizadas. Desarrollo Weby de basesde datos (materialen inglsen elsitio Web dellibro) JDBC 4. Elcaptulo 28, trata sobre JDBC 4; aquse utilizan lossistemas de administracin de bases de datos Java DB/Apache Derby y MySQL. El captulo contiene un Ejemplo prctico de OO sobre cmo desarrollar una libreta de direcciones controlada por una base de datos; en este ejemplo se de muestran lasinstrucciones preparadasy el descubrimiento automtico de controladores de JDBC 4. Java Server Faces (JSF) 2.0. Los captulos 29 y 30 se actualizaron para introducir la tecnologa JavaServer Faces (JSF) 2.0, que simplifica en gran medida la creacin de aplicaciones Web con JSF. El captulo 29 presenta ejemplos sobre la creacin de interfaces GUI de aplicaciones Web, la vali dacin de formularios y el rastreo de sesiones. El captulo 30 habla sobre las aplicaciones JSF con troladas por datos y habilitadas para Ajax. Este captulo cuenta con una libreta de direcciones Web muldnivel controlada por una base de datos, la cual permite a los usuarios agregar contactos y bus carlos. Esta aplicacin habilitada para Ajax proporciona al lector una sensacin real del desarrollo desoftwareWeb 2.0. Servicios Web. Elcaptulo 31, Web Services, demuestra cmo crear y consumir servicios Web basa dosen SOAP^REST. Los Ejemplos prcticos presentan eldesarrollo de losserviciosWebdeljuego de blackjacky un sistemade reservaciones de una aerolnea. Java WebStarty elProtocolo delanzamiento de reddeJava (JNLP). PresentamosJavaWeb Start y JNLP, que permiten lanzar applets aplicaciones a travs de un navegador Web. Los usuarios pueden instalar estos applets y aplicaciones en forma local para ejecutarlos despus. Los progra mas tambin pueden solicitar permiso al usuario para acceder a los recursos locales del sistema y a los archivos: con lo cual usted podr desarrollar applets y aplicaciones ms robustas que se ejecuten en forma segura mediante el modelo de seguridad de caja de arena (sandbox) de Java, el cual se aplica al cdigo descargado. Multihilos (en inglsen elsitio Web) Multihilos. Rediseamos por completo el captulo 26, Multithreading [con agradecimiento especial a laorientacinde Brian GoetzyJoseph Bowbeer,dos de loscoautores deJava Concurrencyin Practi- ce,Addison-Wesley, 2006]. La clase SwingWorker. Utilizamos laclase SwingWorker para crearinterfacesde usuario multihilos. www.FreeLibros.me
  26. 26. x x iv Prefacio GUIy grficos Presentacin escalable de GUIy grficos. Los profesores que impartan cursos introductorios tie nen una amplia gama de dnde elegir en cuanto a la cantidad de GUI y grficos por cubrir: desde cero hasta una secuencia introductoria de 10 secciones breves, las cuales se entrelazan con los pri meros captulos hasta llegar a un anlisis detallado en los captulos 14, 15 y 25 y en el apndice I (este ltimo y el apndice, en ingls en el sitio Web). Administrador de esquemas GroupLayout. Analizamos el administrador de esquemas GroupLayout dentro del contexto de la herramienta de diseo de GUI en elentorno de desarrollo integrado (IDE) NetBeans. Herramientas de ordenamientoy filtrado de JTable. Elcaptulo 28 (en ingls en elsitio Web) uti liza estas herramientas para reordenar los datos en un objeto JTable y filtrarlos mediante expresio nes regulares. Otrascaractersticas Android Debido alenorme intersen los telfonos inteligentesy tabletas basadasen Android, hemos integrado unaintroduccinde trescaptulos paraeldesarrollo de aplicaciones deAndroid (losencon trar en ingls en elsitio Web del libro). Estos captulos son de nuestro nuevo libro Androidfor Pro- grammers:AnApp-DrivenApproach delaserieDeitelDeveloper. Una vez que aprendaJava, descubrir que es bastante simple desarrollary ejecutar aplicaciones Android en elemulador gratuito que puede descargar de developer.android.com. Conceptos comunes de ingeniera de software. Analizamos el desarrollo gil de software, la refac- torizacin, los patrones de diseo, LAMP, SaaS (Software as a Service), PaaS (Platform as a Service), lacomputacin en la nube, elsoftware de cdigo abierto y muchos conceptos ms. Grfico de dependencias El grfico de la siguiente pgina muestra las dependencias entre los captulos para ayudar a los profe sores a planear su programa de estudios. Cmoprogramar enJava 9aedicin es un libro extenso, apro piado para una gran variedad de cursos de programacin en distintos niveles, en especial CS 1 y CS 2, adems de las secuencias de cursos de introduccin en disciplinas relacionadas. El libro tiene una organizacin modular, claramente delineada. Los captulos 1 a 11 y 14 a 17 forman una secuencia de programacin elemental accesible, con una slida introduccin a la programacin orientada a objetos. Los captulos opcionales 12 y 13 constituyen una introduccin accesible al diseo orientado a obje tos con UML. Tanto la trayectoria de GUI y grficos como los captulos 14, 15, 23, 24 y 25 forman una secuencia sustancial de GUI, grficos y multimedia. Los captulos 18 a 22 forman una excelente cadena de estructuras de datos. Los captulos 26 y 27 constituyen una slida introduccin a los con ceptosde multihilos yel trabajo en red atravs de Internet. Loscaptulos 28 a31 forman una secuencia enriquecida de desarrollo Web con uso intensivo de bases de datos. Mtodos de enseanza CmoprogramarenJava 9a edicinoontiene cientos de ejemplos funcionales completos. Hacemos hin capi en la claridad de los programasy nos concentramos encrear software bien diseado. www.FreeLibros.me
  27. 27. Prefacio x x v Grfico de dependencias de captulos y mdulos [Nota: las flechas que apuntan hada un captulo indican las dependencias de ste. Algunos captulos tienen varias dependencias]. Programacin orientada a objetos 8 Clases y objetos:-* iri anlisis ms detallado 9 Programadn orientada a objetos: herencia I 10 Programadn orientada aobjetos: polimorfismo II Manejo de excepciones Diseo orientado a objetos con UML 12 (Opcional) Diseo orientado aobjetos con UML I 13 (Opcional) Implementacin de un diseo orientado a objetos /^structuras de datos 18 Recursividad1 19 Bsqueda, ordenamiento y Big O 20 Generic Collections 21 Generic Classes and Methods 22Custom Generic Data Structures I . El captulo 18 depende de los captulos 14 y 15 para la GUI y los grficos que se utilizan en un ejemplo. Introduccin I Introduccin a las computadoras ya Java Introduccinalaprogramacin, lasclasesylosobjetos 2 Introduccin a lasapfcacionesenJava- 3 Introduccin a lascbses. objetos, mtodosycadenas Instruccionesdecontrol, mtodosy arreglos 4 Instrucciones de control: Parte I 5 Instrucciones de control: Parte 2 I 6 Mtodos: un anlisis ms detallado . 7 Arreglos y objetos A rra y L i s t V Cadenas y archivos 16Cadenas, caracteres y expresiones regulares - 17Archivos, flujos y serializadn de objetos Multihilos y redes 26 Multithreading2 27 Networking3 Diseo de aplicaciones de escritorio y Web controladas por bases de datos 28 JDBC4 ------------- 29JSF Web Apps: Part I30 JSF Web Apps: Part 2 31 Web Services (Opcional) Trayectoria de GUI y grficos 3.8 Uso de cuadros de dilogo4.14 Creacin de dibujos simples5.10 Dibujo de rectngulos yvalos I 6.13 Cobres y figuras rellenas7.15 Dibujo de arcos8.16Uso de objetos con grficos9.8 Mostrartexto e imgnes usando etiquetas i10.8 Realizar dibujos usando polimorfismo GUI, grficos, applets y multimedia 14Componentes de GUI: Parte I15 Grficos y Java2D - * 23 Applets and Java Web Start5 I 24 Multimedia: Applets and Applications I25GUIComponents: Rart 2 2. El captulo 26depende del captulo 14 para la GUI que se utiliza en un ejemplo yde los captulos 20-21para otro ejemplo. 3. El captulo 27depende del captulo 23 para un ejemplo que utiliza un applet. El Ejemplo prctico extenso (en Web) depende del captulo 25 para la GUI y del captulo 26 para los multihilos. 4. El captulo 28dependedel captulo 14 para la GUI que se utiliza en un ejemplo. 5. En los captulos 24y27se cubren ms applets. www.FreeLibros.me
  28. 28. x x v i Prefacio Resaltado de cdigo. Colocamos rectngulos de color gris alrededor de los segmentos de cdigo clave en cada programa. Uso defuentespara dar nfasis. Resaltamos en negritas, dentro del texto, y en el ndice, los trmi nos claveen los lugaresdonde se define. Enfatizamos los componentes en pantalla en la fuente Helvtica en negritas (por ejemplo, el men Archivo) y enfatizamos el texto del programa en la fuente Lucida (por ejemplo, int x = 5;). Acceso Web. Todo elcdigo fuenteutilizado eneste libro se puede descargar de: Captulos 2 a 19 (en espaol): www.pearsonenespaol .com/deitel Captulos2 a31 (en ingls): www.deitel .com/books/jhtp9 Objetivos. Las citas de aperturavan seguidas de una lista de objetivos del captulo. Ilustraciones/figuras. Integramos una gran cantidad de tablas, dibujos lineales, diagramas UML, pro gramas ysalidas de programa. lips deprogramacin. Incluimos tips de programacin para ayudarle a enfocarse en los aspectos im portantes del desarrollo de programas. Estos tips y prcticas representan lo mejor que hemos podido recabar a lo largo de siete dcadas combinadas de experienciaen la programacin y laenseanza. Buenas prcticas de programacin LasBuenas prcticas de programacin sontcnicasque leayudarn aproducirprogra masmsclaros,comprensiblesyfcilesdemantener. Errores comunes de programacin AlponeratencinenestosErrores comunes de programacin sereducelaprobabilidad dequeustedpuedacaerenellos. Tips para prevenir errores Estostips contienen sugerenciasparaexponer loserrores ogusanosinformticosy elimi narlosde susprogramas; muchosde ellosdescriben aspectosdejava que evitan que en trensiquieraasusprogramas. Tips de rendimiento Estosrecuadrosresaltan lasoportunidadespara hacerque susprogramasseejecuten ms rpidooparaminimizar lacantidaddememoriaqueocupan. Tips de portabilidad Los Tips de portabilidad le ayudan a escribir cdigo que pueda ejecutarse en varias plataformas. Observaciones de ingeniera de software LasObservaciones de ingeniera de softwareresaltantemasdearquitecturay diseo, lo cualafectalaconstruccindelossistemasdesofiware,especialmentelosdegranescala. * n i Observaciones de apariencia visual B5B Las Observaciones de apariencia visual resaltan lasconvencionesde la interfazgrfica tleusuario.Adems,leayudanadisearinterfacesgrficasdeusuarioatractivasy amiga blesenconformidadconlasnormasdelaindustria. www.FreeLibros.me
  29. 29. Prefacio x x v ii Vietas de resumen. Presentamos un resumen detallado del captulo, estilo lista con vietas, seccin por seccin. Para facilitar la referencia, incluimos dentro del texto el nmero de pgina donde aparecen bs trminos clave. Ejercicios de autoevaluacin y respuestas. Se proveen diversos ejercicios de autoevaluacin con sus respuestas para que los estudiantes practiquen por su cuenta. Todos losejercicios en el Ejemplo prctico opcional sobre elATM estn resueltosen su totalidad. Ejercicios. Los ejerciciosde los captulos abarcan: Recordatorio simple de laterminologay los conceptos importantes. Cul esel error eneste cdigo? Qu haceeste cdigo? Escriturade instrucciones individuales y pequeas porciones de mtodos y clases. Escriturade mtodos, clases y programas completos. Proyectos importantes. En muchos captulos, ejerciciosdel tipo Hacer ladiferencia. ndice. Incluimos un ndice extenso. Donde se definen los trminos clave se resaltan con un nmero de pgina en negritas. Software utilizado en Cmo programarenJava 9aedicin Podr descargar todo elsoftware necesario paraeste libro sincosto a travs deWeb. En laseccin Antes deempezar,despus deeste Prefacio, encontrar vnculos paracada descarga. Para escribir la mayora de los ejemplos de este libro utilizamos el kit de desarrollo gratuito Java Standard Edition Development Kit (JDK) 6. Para los mdulos opcionales de Java SE 7 utilizamos la ersin JDK 7 de acceso anticipado de OpenJDK. En los captulos 29 a 31 tambin utilizamos el IDE Netbeans; en el captulo 28 usamos MySQL y MySQL Connector/J. Encontrar recursos y descargas desoftware adicionales en nuestros Centros de recursos deJava, ubicados en: www.deitel.com/ResoureeCenters.html Suplementos para el profesor (en ingls) Lossiguientessuplementos estndisponiblessloparaprofesoresatravs del Centro de recursos parael pro fesorde Pearson (www.pearsonenespaol.com/deitel): Diapositivas de PowerPoint!oon todo elcdigo y las figuras del texto, adems de elementos envietasque sintetizan los puntos clave. Test Item File (Archivo de pruebas) oon preguntas de opcin mltiple (aproximadamente dos por cadaseccin del libro). Manualdesolucionesconsoluciones para lagran mayorade losejercicios definal de captulo. El accesoa estos recursosest limitado estrictamente aprofesores universitarios que impartan cla ses con base en el libro. Slo ellospueden obtener acceso atravsde losrepresentantesde Pearson. No se proveen soluciones para los ejercicios de proyectos. Revise nuestro Centro de recursos de proyectos de programacin (www.deitel .com/Programmi ngProjects/), en donde encontrar muchos ejerciciosadicionalesy proyectos nuevos. Si no es un miembro docente registrado, pngase encontacto con su representante de Pearson. www.FreeLibros.me
  30. 30. x x v iii Prefacio Reconocimientos Queremos agradeceraAbbeyDeitely BarbaraDeitelpor lasextensas horasque dedicaron aesteproyecto. Somos afortunados al haber trabajado en este proyecto con el dedicado equipo de editores profesionales de Pearson. Apreciamos laorientacin, inteligenciay energade Michael Hirsch, editor en jefe de Cien ciascomputacionales. CaroleSnyderreclut alosrevisores dellibro ysehizo cargo delproceso de revisin. Bob Engelhardtsehizo cargo delaproduccin dellibro. Revisores Queremos agradecer los esfuerzos de los revisores de laoctava y novenaediciones, quienes revisaron ex haustivamente el texto y los programas, y proporcionaron innumerables sugerencias para mejorar la presentacin: LanceAndersen (Oracle),Soundararajan Angusamy (SunMicrosystems),Joseph Bowbeer (Consultor),WilliamE. Duncan (LouisianaState University),Diana Franklin (UniversityofCalifornia, Santa Barbara), Edward E Gehringer (North Carolina State University), Huiwei Guan (Northshore Community College), Ric Heishman (George Masn University), Dr. Heinz Kabutz (JavaSpecialists. eu), Patty Kraft (SanDiego StateUniversity), Lawrence Premkumar (SunMicrosystems),Tim Margush (University ofAkron), Sue McFarland Metzger (Villanova University), Shyamal Mitra (The University ofTexas at Austin), Peter Pilgrim (Consultor), Manjeet Rege, Ph.D. (Rochester Insritute of Techno logy), Manfred Riem (Java Champion, Consultor, Robert Half), Simn Ritter (Oracle), Susan Rodger (Duke University), Amr Sabry (Indiana University), Jos Antonio Gonzlez Seco (Parlamento de Andaluca), Sang Shin (Sun Microsystems), S. Sivakumar (Astra Infotech Prvate Limited), Raghavan Rags Srinivas (Inmit), Monica Sweat (Georgia Tech), Vinod Varma (Astra Infotech Prvate Limited) yAlexander Zuev (Sun Microsystems). Bueno,ahlo tiene!A medida que leaellibro,apreciaremosconsinceridadsuscomentarios,crticas, correccionesy sugerencias para mejorarlo. Dirija todasu correspondencia a: d e ite l@ d e ite l. com Leresponderemos oportunamente. Esperamos quedisfrute el trabajo coneste libro. Buenasuerte! Pauly Harvey Deitel Acerca de los autores Paul J. Deitel, CEO y Director Tcnico de Deitel & Associates, Inc., es egresado del Sloan School of Management del MIT, en donde estudi Tecnologa de la Informacin. A travs de Deitel & Asso ciates, Inc., haimpartido cursos deJava, C, C++, C#,Visual Basicy programacin en Internet aclientes de la industria, como: Cisco, IBM, Siemens, Sun Microsystems, Dell, Lucent Technologies, Fidelity, NASA en el Centro Espacial Kennedy, el National Severe Storm Laboratory, White Sands Missile Range, Rogue Wave Software, Boeing, SunGard Higher Education, Stratus, Cambridge Technology Partners, OneWave,Hyperion Software, AdraSystems, Entergy, CableData Systems, NortelNetworks, Puma, iRobot, Invensys y muchos ms. l y su coautor, el Dr. Harvey M. Deitel, son autores de los li bros de programacin ms vendidos en el mundo. Dr. Harvey M. Deitel, Presidente y Consejero de Estrategia de Deitel & Associates, Inc., tiene 50 aos de experiencia en el campo de lacomputacin. El Dr. Deitel obtuvo una licenciatura y una maes tra por el MIT y un doctorado de la Universidad de Boston. Tiene muchos aos de experienciacomo profesor universitario, la cual incluye un puesto vitalicio y el haber sido presidente del Departamento de Ciencias de laComputacin en Boston College antes de fundar, con su hijo PaulJ. Deitel, Deitel & Associates, Inc. l y Paul son coautores de varias docenas de libros y paquetes multimedia LiveLessons, ypiensanescribir muchos ms. Lostextosde losDeitelse han ganado elreconocimiento internacionaly han sido traducidos al japons, alemn, ruso, chino, espaol, coreano, francs, polaco, italiano, portu gus, griego, urdti y turco. El Dr. Deitel ha impartido cientos de seminarios profesionales para grandes empresas, instituciones acadmicas, organizaciones gubernamentalesy diversos sectores del ejrcito. www.FreeLibros.me
  31. 31. Prefacio x x ix Capacitacin corporativa de Deitel & Associates, Inc. Deitel & Associates, Inc., es una empresa reconocida a nivel mundial, dedicada al entrenamiento cor porativo y la creacin de contenido. La empresa proporciona cursos impartidos por profesores en las instalaciones de sus clientes en todo el mundo, sobre la mayora de los lenguajes y plataformas de programacin, como Java, C++, Visual C++, C, Visual C#, Visual Basic,XML, Python, tec nologa de objetos, programacin en Internet y World Wide Web, desarrollo de aplicaciones para Android e Phone, y una lista cada vez mayor de cursos adicionales de programacin y desarrollo desoftware. Los fundadores de Deitel & Associates, Inc. son Paul J. Deitel y el Dr. Harvey M. Deitel. Entre sus clientes estn muchas de las empresas ms grandes del mundo, agencias gubernamentales, sectores del ejrcito e instituciones acadmicas. A lo largo de su sociedad editorial de 35 aos con Hentice Hall/Pearson, Deitel & Associates, Inc. ha publicado libros de texto de vanguardia sobre programacin, libros profesionales, y cursos de video UveLessons con base en DVD y Web. Puede contactarse con Deitel & Associates, Inc. y con los autores por medio de correo electrnico: d e ite l d e ite l. com Para conocer ms acerca de Deitel & Associates, Inc., sus publicaciones y su currculum mundial de laSerie de Capacitacin CorporativaDive Int
  32. 32. www.FreeLibros.me
  33. 33. Antes de empezar Esta seccin contiene informacin que debera revisar antes de usar este libro, adems de las instruc ciones para asegurar que su computadora est configurada de manera apropiada para utilizarla con el libro. Publicaremos las actualizaciones a la seccin Antes de empezar (en caso de necesitarse) en el siguiente sitio Web: w w w .deitel.com /books/jhtp9/ Convenciones de fuentes y nomenclatura Utilizamos fuentes paradiferenciar los componentes en la pantalla (como los nombres de mens y sus elementos) y el cdigo o los comandos enJava. Nuestra convencin hace hincapi en los componentes en pantalla en una fuente Helvtica sans-serifen negritas (por ejemplo, el men Archivo) y enfatiza el cdigo ylos comandos enJavaen una fuente Lucidasans-serif(por ejemplo, System.out.pri nt1n()). Software a utilizar con el libro Podr descargartodo elsoftware necesario para este libro sin costo a travs de Web. Kit de desarrollo de softwareJava SE (JDK) 6y 7 Para escribir la mayora de los ejemplos de este libro manejamos el kit de desarrollo gratuito Java Stan dard Edition Development Kit (JDK) 6, que estdisponible en: www. o r a c le . com/tec hnetw ork/j a v a /j avase/down1oads/i nde x . html Para los mdulos opcionales deJava SE 7, empleamos laversinJDK 7 de acceso anticipado de Open- JDK, que estdisponible en: d ic . s un. com. edgesu i t e . n e t/jd k7 /b i na r i e s - / i ndex. html Java DB, MySQLy MySQL Connector/J En el captulo 28 (en ingls en el sitio Web del libro) utilizamos los sistemas de administracin de bases de datos Java DB y MySQL Community Edition. Java DB es parte de la instalacin del JDK. Al momento de escribir este libro el instalador de 64 bits delJDK no instalabaJava DB en forma apro piada. Si usted utiliza laversin de 64 bits deJava, tal vez necesite instalarJava DB por separado. Puede descargarJava DB de: www. o r a c le . com/tec hnetwo r k / j ava/ j av adb/down1o ads/i nde x . html Al momento de escribir este libro, la versin ms reciente de MySQL Community Edition era la 5-5.8. Para instalar MySQL Community Edition en Windows, Linux o Mac OS X, consulte las ge neralidadessobre la instalacin parasu plataformaen: Windows: dev.m ysql.com /doc/refm an/5.5/en/w in d o w s-in sta lla tio n .h tm l Linux: dev.m ysql. com/doc/refman/5. 5 / e n / lin u x - in s ta l1atio n -rp m . html Mac OSX: d ev.m ysq l.co m /d o c/refm an /5.5 /en /m aco sx-in stallatio n .h tm l www.FreeLibros.me
  34. 34. x x x ii Antes de empezar Sigacon cuidado lasinstrucciones paradescargar e instalar elsoftware en su plataforma, el cual est dis ponible en: dev.mysql.com/downloads/mysql/ Tambin necesita instalar el MySQL Connector/J (laJ se refiere aJava), que permite a los progra mas usarJDBC parainteractuar con MySQL. Puede descargar el MySQL Connector/J de dev.mysql.com/down1oads/connector/j/ Al momento de escribir este libro, laversin disponible de MySQL Connector/J era la 5.1.14. La do cumentacin de Connector/J se encuentra en dev.mysql.com/doc/refman/5.5/en/connector-j.html Rarainstalar MySQL Connector/J,sigacon cuidado las instrucciones deinstalacin en: dev.mysql.com/doc/refman/5.5/en/connector-j-installi ng.html No le recomendamos modificar la variable de entorno CLASSPATHde su sistema, segn se indica en las instrucciones de instalacin. En cambio le ensearemos a usar MySQL Connector/J especificndolo como una opcin en la Enea de comandos alejecutar sus aplicaciones. Cmo obtener los ejemplos de cdigo Los cdigos de los ejemplosde este libro estn disponibles para descargarlos en www.pearsonenespaol.com/deitel Si no est registrado an en nuestro sitio Web (de los autores), vayaa www.deite l.comy haga clic en el vnculo Register debajo de nuestro logotipo en la esquina superior izquierda de la pgina. Escriba su informacin. El registro no tiene ningn costo y no compartiremos su informacin con nadie. Slo le enviaremos correos electrnicos relacionados con laadministracin de su cuenta. Tambin puede regis trarse de manera independiente para recibir nuestro boletn gratuito de correo electrnico DeitelBuzz Online en www.deitel .com/newsletter/subscribe .html. Una vez que se registre en el sitio, recibir un correo electrnico de confirmacin con su cdigo de verificacin. Haga clic en elvnculo del correo electrnicodeconfirmacinpara completarsu registro. Configuresu cliente de correo electrnico de modo que permita los correos electrnicos provenientes de deitel .com, para asegurar que el correo electr nico de confirmacin no se filtrecomo correo basura. Despus vaya a www.deite l.come inicie sesin usando el vnculo Login debajo de nuestro logo tipo en la esquina superior izquierda de la pgina. Vaya a www.deitel .com/books/jhtp9. Encontrar elvnculo paradescargar los ejemplos bajo el encabezado Download Code Examples and Other Premium Contenfor Registered Users (Descargarejemplos decdigo ycontenido especial adicional parausuarios registrados). Anote la ubicacin en donde eligi guardar el archivo ZIP en su computadora. En estelibro suponemosque losejemplosseencuentran eneldirectorio C: Ej emplos desucompu tadora. Extraiga el contenido del archivo Ejemplos.zip; utilice una herramienta como WinZip (www.winzi p.com)o las herramientas integradas de su sistemaoperativo. Cmo establecer la variable de entorno PATH La variable de entorno PATHen su computadora designa los directorios en los que la computadora debe buscar aplicaciones,como lasque le permiten compilary ejecutar sus aplicacionesdeJava (las cuales son javacy java,respectivamente). SigaconcuidadolasinstruccionesdeinstalacinparaJavaensuplataforma, de modoqueseaseguredeestablecerde manera correcta la variabledeentorno PATH. www.FreeLibros.me
  35. 35. Antes de empezar x x x iii Si no establece la variable PATH de manera correcta, cuando utilice las herramientas del JDK reci bir un mensaje como ste: ja v a no se reconoce como un comando in te rn o o extern o , programa o a rch iv o por lo te s e je c u ta b le . En este caso, regrese a las instrucciones de instalacin para establecer la variable PATH y vuelva a com probar sus pasos. Si descarg una versin ms reciente del JDK, tal vez tenga que cambiar el nombre deldirectorio de instalacin delJDK en lavariable PATH. Cmo establecer la variable de entorno CLASSPATH Siintenta ejecutar un programadeJavay recibe un mensaje como ste: Exceptio n in thread main java.lan g .N o C lassD e fFo u n d Erro r: SuClase entonces su sistema tiene una variable de entorno CLASSPATH que debe modificar. Para corregir este error, siga los pasos para establecer lavariable de entorno PATH, localice lavariable CLASSPATH y modifi que su valor para que incluya el directorio local: que por lo general se representa como un punto (.). EnWindows agregue al principio del valor de CLASSPATH (sin espacios antes o despus de esos caracteres). En otras plata formas, sustituya el punto y coma con los caracteres separadores de ruta apropiados: por lo general, el signo de dos puntos (:). Apariencia visual Nimbus de Java Java tiene una apariencia visual multiplataforma elegante, conocida como Nimbus. En los programas con interfaz grfica de usuario, hemos configurado nuestros sistemas para usar Nimbus como la apa rienciavisual predeterminada. Para establecer Nimbus como la opcin predeterminada para todas las aplicaciones de Java, debe crear un archivo de texto llamado sw ing. p ro p e rtie s en la carpeta l ib de las carpetas de instalacin delJDK y delJRE. Coloque lasiguiente lnea decdigo en elarchivo: swi n g . d e f a u lt i af=com . s u n . j a v a . swi n g . pl a f . ni mbus. NimbusLookAndFeel Para obtener ms informacin sobre cmo localizar estas carpetas de instalacin, visite j a va. s un. com/ javase/6/w ebnotes/i n s t a ll/ i ndex. htm l. [Nota: adems del JRE individual hay un JRE anidado en su carpeta de instalacin del JDK. Si utiliza un IDE que depende del JDK (como NetBeans), tal vez tambin tenga que colocar el archivo swi ng. prope r t i es en la carpeta 1i b de lacarpeta j re anidada]. Ahora est listo para empezar sus estudios de Java con el libro Cmoprogramar enJava, 9aedicin. Esperamos quedisfrute el libro! www.FreeLibros.me
  36. 36. www.FreeLibros.me
  37. 37. Introduccin a las computadoras y aJava www.FreeLibros.me
  38. 38. Plangeneral 2 Captulo I Introduccin a las computadoras y a Java1.1 Introduccin 1.2 Computadoras: hardware y software 1.3 Jerarqua de datos 1.4 Organizacin de una computadora 1.5 Lenguajes mquina, lenguajes ensambladores y lenguajes de alto nivel 1.6 Introduccin a la tecnologa de los objetos 1.7 Sistemas operativos 1.8 Lenguajes de programacin 1.9 Java y un tpico entorno de desarrollo en Java 1. 10 Prueba de una aplicacin en Java l.l I Web 2.0: Las redes sociales 1.12 Tecnologas de software 1.13 Cmo estar al da con las tecnologas de informacin 1.14 Conclusin Ejercicios de autoevaluacin | Respuestasa los ejercicios de autoevaluacinEjerciciosMarcar la diferenciaRecursospara marcar la diferencia l.l Introduccin Bienvenido aJava: el lenguaje de programacin de computadoras ms utilizado en el mundo. Usted ya est familiarizado con las poderosas tareas que realizan las computadoras. Mediante este libro de texto, ustedescribirinstrucciones paraordenaralascomputadoras que realicenesostipos de tareas. El software (lasinstrucciones que usted escribe) controla elhardwarefas computadoras). Aprender sobre laprogramacin orientada a objetos-, la metodologa de programacin clave de la actualidad. En este texto creary trabajarcon muchos objetosdesoftware. Javaesellenguajepreferido parasatisfacerlasnecesidadesde programacinempresarialesde muchas organizaciones. Tambin se ha convertido en el lenguaje de eleccin para implementar aplicaciones ba sadas en Internetysoftware paradispositivos que se comunican atravs de una red. Hoy en da hay en uso msde mil millones de computadoras de propsito general, adems de miles de millones de telfonos celulares, telfonos inteligentes (smartphones) y dispositivos porttiles (como lascomputadoras tipo tableta) habilitados paraJava. De acuerdo con un estudio realizado poreMarketer, elnmero deusuarios mvilesde Internet llegaracercade 134 millones para2013.1Otros estudios han proyectado ventas de telfonos inteligentes que sobrepasa a las ventas de computadoras personales en 20112yventasde tabletasque representarn cerca del20% de todas lasventasde computadoras persona lespara2015.3Para2014, seesperaqueel mercado delasaplicaciones detelfonos inteligentesexcedalos $40 mil millones,4lo cual generar oportunidades importantes para la programacin de aplicaciones mviles. EdicionesdeJava: SEyEEyME Java ha evolucionado con tanta rapidez que esta novena edicin de Cmoprogramar enJava basada enJavaStandard Edition 6 (JavaSE 6) con mdulosopcionalessobre lasnuevascaractersticasdeJava SE 7 se public slo 15 aos despus de la primera edicin. Javase utiliza en un espectro tan amplio de aplicaciones, que cuenta con otras dos ediciones. Java Enterprise Edition (Java EE) est orientada hacia el desarrollo de aplicaciones de red distribuidas, de gran escala, y aplicaciones basadada en Web. 1 wttw.clrcleid.com/posts/mobile_internet_users_to_reach_134_jnil lion by_2013/. 2 v%vw.pcworld.com/article/171380/more smartphones_than_desktop_pcs_by_2011.html. 3 vwv.forrester.com/ER/Press/Release/0,1769,1340,00.html. 4 Inc. diciembrede 2010/enero de 2011, pginas 116-123. www.FreeLibros.me
  39. 39. l.l Introduccin 3 En el pasado, la mayora de las aplicaciones de computadora se ejecutaban en computadoras indepen dientes (que no estaban conectadas en red). En la actualidad, las aplicaciones se pueden escribir con miras a comunicarse entre computadoras en todo el mundo por medio de Internet y Web. Ms adelante en este libro hablaremos sobre cmo crear dichas aplicaciones basadas en Web con Java. Java Micro Edition (Java ME) est orientada hacia el desarrollo de aplicaciones para pequeos dispositivos con memoria restringida, como los telfonos inteligentes BlackBerry. El sistema operativo Android de Google que se utiliza en muchos telfonos inteligentes, tabletas (pequeas computadoras ligeras y mviles con pantallas tctiles), lectores electrnicos y otros dispositivos utiliza una versin personalizada de Javaque no se basa en Java ME. La computacin en la industriay la investigacin Estos son tiempos emocionantes en el campo de la computacin. Muchas de lasempresas ms influyen tes y exitosas de las ltimas dos dcadas son compaas de tecnologa, como Apple, IBM, Hewlett Packard, Dell, Intel, Motorola, Cisco, Microsoft, Google,Amazon, Facebook,Twitter, Groupon, Fours- quare, Yahoo!,eBay y muchas ms; que son fuentes de empleo importantes para las personas que estudian ciencias computacionales, sistemas de informacin o disciplinas relacionadas. Al momento de escribir este libro, Apple era la segunda compaa ms valiosa del mundo, con la tecnologa ms preciada.5 Las computadoras tambin se utilizan mucho en la investigacin acadmica e industrial. La figura 1.1 provee unos cuantos ejemplos de las increbles formas en que se utilizan las computadoras, tanto en la investigacin como en la industria. Nombre Descripcin Internet Proyecto Genoma Humano Internetuna red globalde computadoras se hizo posible graciasa la convergenciadelacomputaciny lascomunicaciones.Tiene sus racesen ladcadade 1960; supatrocinio estuvoa cargodel Departamento de Defensa de EstadosUnidos. Diseadaen un principio paraconectar lossistemas de cmputo principalesdealrededordeuna docena deuniversidades yorganiza ciones deinvestigacin, en laactualidadson miles demillones de compu tadorasy dispositivoscontroladospor computadoraen todo el mundo losque utilizan Internet. Las computadoras descomponen las extensastransmisiones en paquetes en elextremo emisor,envan lospaquetesa losreceptores destinados yaseguran que sereciban en secuenciay sin errores en el extremo receptor. Deacuerdo con un estudio de Forrester Research, el consumidor estadounidense promedio invierteen laactualidad la misma cantidad de tiempo en lneaque elque pasaen latelevisin ( f o r r e s t e r . com/ rb / Research/unde rs ta n d i ng_changi n g _n e e d s_o f_u s_o n 1i ne_consum er/g/ id / 5 7 8 6 1 / t/2 ). El Proyecto GenomaHumano se fund para identificaryanalizarlosms de 20,000 genes en elADN humano. Elproyecto utiliz programas de computadora paraanalizardatos genticoscomplejos, determinarlas secuenciasde losmilesde millonesde paresde bases qumicas que componen elADN humano yalmacenarla informacin en bases de datosque sehan puesto a disposicin delosinvestigadoresen muchos campos. Esta investiga cin haocasionado una tremenda innovacin ycrecimiento en la industria dela biotecnologa. Fig. l.l | Unos cuantos usos para las computadoras (parte I de 3). 5 w v w .zd n e t.co m /b lo g /a p p le /a p p le -b e co m e s-w o rld s-se co n d -m o st-va l uable-com pany/9047. www.FreeLibros.me
  40. 40. Captulo I Introduccin a las computadoras y a Java Nombre ReddelaComunidad Mundial Imgenespara diagnsticomdico GPS SYNCdeMicrosoft AMBER Alert Robots Descripcin LaReddelaComunidad Mundial (wvwv.worldcoranunit y g r id .o r g ) esuna reddecomputacinsinfinesde lucro. Laspersonasdetodoelmundodonan el poderde procesamientodecmputoqueno utilicen, mediantela instalacindeun programadesoftwaresegurogratuito que permitealaRed delaComunidad Mundialaprovecharesepodersobrantecuando las computadorasestn inactivas. Elpoderdecmputo seutiliza en lugardelas supercomputadoraspararealizarproyectosdeinvestigacincientficosque estn haciendoladiferencia,entreellos: eldesarrollodeenergasolara un precioasequible,elsuministro deaguapotablealmundo endesarrollo, la luchacontraelcncer, lacura deladistrofiamuscular,elhallazgode medicamentosantiviralescontralainfluenza,elcultivodearrozms nutritivoparalasregionesquecombaten lahambruna yotrosms. Lasexploracionesportomografa computarizada (CT) con rayosX,tambin conocidascomoCAT(tomografaaxialcomputarizada), toman rayosXdel cuerpodesdecientosdengulosdistintos.Seutilizancomputadoraspara ajustarlaintensidaddelrayoX,con locualseoptimizalaexploracinpara cadatipo detejido,para despuscombinartoda lainformacinycrearuna imagen tridimensional (3D). LosdispositivosconSistemade posicionamientoglobal (GPS) utilizanuna reddesatlitesparaobtenerinformacincon baseenlaubicacin.Varios satlitesenvansealesconetiquetasde tiempoaldispositivo GPS,elcual calculaladistancia haciacadasatlitecon baseenlahoraenquelasealsali delsatliteyserecibi. La ubicacin decadasatliteyladistanciahaciacada unodeellosseutilizanpara determinarlaubicacinexactadel dispositivo. Segnlaubicacinen laqueustedseencuentre, losdispositivosGPSpueden proveerindicacionespasoapaso,ayudarleaencontrarcon facilidadnegocios cercanos(restaurantes,gasolineras,etctera)ypuntos deinters,oayudarlea encontrarasusamigos. AhoramuchosautosFordcuentancon la tecnologaSYNCdeMicrosoft, la cual proveecapacidadesde reconocimientoysntesisdevoz (paraleer mensajesdetextoa lospasajeros)que lepermiten usarcomandosdevozpara explorarmsica,solicitaralertasdetrficoyotrascosasms. ElSistema dealertaAMBER(DesaparecidosenAmrica: Sistemade TransmisindeRespuestaaEmergencias) seutilizaparabuscarnios secuestrados. Lasautoridadesnotifican tantoalasdifusorasdeTVy radio comoalosfuncionariosdecarreterasestatales,quienesasu veztransmiten alertasenTV, radio,sealescomputarizadasenlascarreteras, Internetylos dispositivosinalmbricos.AMBERAlertseasocirecientementecon Facebook. Cuyosusuariospueden hacerdicen Like(Megusta)en las pginasdeAMBERAlertsegnla ubicacin, para recibiralertasensus transmisionesdenoticias. Losrobotssonmquinascomputarizadasque puedenrealizartareas(como; trabajosfsicos),responderalosestmulosyotrascosasms.Sepuedenutilizar paratareasdiarias(porejemplo, laaspiradoraRoombadeRobot),deentreteni miento(comolasmascotasrobticas),combatemilitar,exploracinespacialy enlaprofundidaddelocano, manufacturayotrasms.En2004,eltrotamun dosmarcianodelaNASAacontrolremoto-queutilizabatecnologaJavaex plorlasuperficieparaaprendersobrelahistoriadelaguaenelplaneta. Fig. l . l | Unos cuantos usos para las computadoras (parte 2 de 3). www.FreeLibros.me
  41. 41. 1.2 Computadoras: hardware y software 5 Nombre Descripcin Unalaptoppornio (OLPC) Programacin dejuegos TV por Internet UnaLaptop PorNio (OLPC)ofrecelaptopseconmicas, habilitadas para Internetyde bajoconsumodeenergaparalosniospobresentodoel mundo;graciasaellofomentan elaprendizajey reducen laseparacindigital (one.1aptop.org ). Alproveerestosrecursoseducativos, OLPCaumenta las oportunidadesdequelosniospobresaprendan yhagan ladiferenciaensus comunidades. Elnegociode losjuegosdecomputadoraesms grandequeelde las pelculasdeestreno.Eldesarrollode losvideojuegosmssofisticados puede costarhasta $100 millones. Eljuego CaliofDuty2:ModernWarfarede Activision, lanzadoal pblicoennoviembrede 2009, obtuvo $ 3 1 0 millones ensloun daen NorteamricayelReinoUnido (n e w s.cn e t.c o m /8 301- 1 3 7 7 2 _3 -1 0 3 9 6 5 9 3 -5 2 .h tm l?tag -m n co l ;txt)! Losjuegossocialese.nlnea, quepermiten ausuariosde todoelmundocompetirentres,estncrecien docon rapidez. Zyngacreadorde juegosen lnea populares,como FarmvilleyMafiaWarssefunden 2007 yyacuentacon msde215 millonesde usuariosmensuales. Paradarcabidaalaumentoen eltrfico, Zyngaagregacasi 1 ,0 0 0 servidores porsemana (te c h c ru n c h . co m /2 0 10/09/22/zyn g a-m o ves-l- p e ta b y te - o f- d a ta - d a ily - a d d s - 1 0 0 0 -se rv e rs-a -w e e k /)! Lasconsolasde videojuegostambin seestn volviendocadavezmssofisticadas. ElcontrolremotodelWii utilizaun acelermetro(paradetectarlainclinacinylaaceleracin)juntocon un sensorquedetermina haciadnde apuntaeldispositivo, locuallepermite responderalmovimiento.Alhacerademanescon elcontrolremotodelWii en lamano, usted puedecontrolarelvideojuegoen lapantalla. Con Kinect paraelXbox3 6 0 de Microsoft, ustedeljugadorseconvierteen el controlador. Kinect utilizaunacmara, un sensordeprofundidad y software sofisticado paraseguirelmovimientodesucuerpo, locuallepermite controlareljuego (e n .w ik i p e d ia .o r g / w ik i/ K in e c t ). Con losjuegosde Kinectpuede bailar, hacerejercicio, jugardeportes,entrenaranimales virtualesyvariasactividadesms. LosreceptoresdeTV por Internet (comoAppleTVyGoogleTV) ledan accesoadiversos tiposdecontenidocomojuegos, noticias, pelculas, programasdetelevisinyms,con locual ustedpuedeaccederunagran cantidaddecontenido bajodemanda;yano necesitadependerdelos proveedoresde televisinporcableovasatlitepararecibircontenido. F ig . l . l | Unos cuantos usos para las computadoras (parte 3 de 3). 1.2 Computadoras: hardware y software Unacomputadora esun dispositivo capazderealizarclculosy tomardecisiones lgicascon unarapidez increblemente mayor que los humanos. Muchas de las computadoras personales contemporneas pue den realizar miles de millones de clculos en un segundo ms de lo que un humano podra realizar en toda su vida. Las supercomputadorasya pueden realizar miles de billonesde instrucciones por segundo! Dicho de otra forma, una computadora de mil billones de instrucciones por segundo puede realizar en un segundo msde 100,000 clculosparacadaunode loshabitantesdelplaneta!Yestoslmitessuperio resestn aumentando con rapidez! www.FreeLibros.me
  42. 42. 6 Captulo I Introduccin a las computadoras y a Java Las computadoras procesan datos bajo el control de conjuntos de instrucciones conocidas como programas de computadora. Los cuales guan a la computadora a travs de conjuntos ordenados de acciones especificadas por gente conocida como programadores de computadoras. A los programas que se ejecutan en una computadora se les denomina software. En este libro aprender lametodologa de programacin clave de la actualidad que mejora la productividad del programador, con lo cual se reducen los costosde desarrollo del software:programacin orientada a objetos. Una computadora consiste en varios dispositivos conocidos como hardware (teclado, pantalla, ra tn, discos duros, memoria, unidades de DVD y unidades de procesamiento). Los costos de las compu tadoras han disminuido enforma espectacular, debido a los rpidos desarrollos en las tecnologas de hardware y software. Las computadoras que ocupaban grandes habitaciones y que costaban millones dedlareshacealgunasdcadas, ahorapuedencolocarseen lassuperficiesdechipsdesiliciomspequeos que una ua, y con un costo de quiz unos cuantos dlares cada uno. Aunque suene irnico, el silicio es uno de los materiales ms abundantes en el planeta (es uno de los ingredientes de la arena comn). La tecnologa de los chips de silicio ha vuelto tan econmica a la tecnologa de lacomputacin que hay ms de mil millones de computadoras de uso general funcionando a nivel mundial, y se espera que esta cifrase dupliquesn losprximos aos. Los chips de computadora (microprocesadores) controlan innumerables dispositivos. Entre estos sistemas incrustadosestn: frenos antibloqueo en los autos, sistemas de navegacin, electrodomsticos inteligentes, sistemas de seguridad en el hogar, telfonos celulares y telfonos inteligentes, robots, inter secciones de trfico inteligentes (collision avoidance systems), controles de videojuegos y ms. La gran mayora de los microprocesadores que se producen cada ao estn incrustados en dispositivos que no soncomputadoras depropsito general.6 Ley de Moore Es probable que cada ao, espere pagar por lo menos un poco ms por la mayora de los productos y servicios. En elcaso de los campos de lascomputadoras y las comunicaciones se ha dado lo opuesto, en especialcon relacin aloscostosdelhardware quedasoporteaestas tecnologas. Loscostos del hardware han disminuido con rapidez durantevariasdcadas. Cada uno o dos aos, lascapacidades de lascompu tadoras seduplican aproximadamentesin que el precio seincremente. Esta notableobservacin secono ceen elmbito comncomo laLeyde Moore, ydebesu nombre alapersonaque identific esta tenden cia: Gordon Moore, cofundador de Intel, uno de los principales fabricantes de procesadores para las oomputadorasylossistemas incrustados de laactualidad. LaLeyde Mooreylasobservaciones relaciona das son especialmente ciertas en cuanto a la cantidad de memoria que tienen las computadoras para los programas, la cantidad de almacenamiento secundario (como el almacenamiento en disco) que tienen para guardar los programasy datos durante periodos extendidos de tiempo, y lasvelocidades de sus pro cesadores: las velocidades con que las computadoras ejecutan sus programas (realizan su trabajo). Se ha producido un crecimiento similar enel campo de las comunicaciones, endonde loscostossehan desplo mado a medida que la enorme demanda por el ancho de banda de las comunicaciones (la capacidad de transmisin de informacin) atrae una competencia intensa. No conocemos otros cambios en los que la tecnologa mejore con tanta rapidez y los costos disminuyan de una manera tan drstica. Dicha mejora fenomenal est fomentando sin duda la Revolucin dela informacin. 1.3 Jerarqua de datos Loselementosde datos que procesan lascomputadoras forman unajerarquade datosque sevuelvecada vez ms grande y compleja en estructura, a medida que progresamos primero a bits, luego a caracteres, despusa camposy asen losucesivo. La figura 1.2 ilustraunaporcin delajerarqua dedatos. La figura 1.3 sintetiza los nivelesde lajerarquade datos. 6 wtt%v. e e tira e s .c o m / e le c tro n ic s - b lo g s / in d u s tr i a l- c o n t r o l -d es i gnl i n e -b lo g /4027479/ Rea1-men- prog ram -i n-C? pageN umber-1. www.FreeLibros.me
  43. 43. 1.3 Jerarqua de datos 7 S a ly Negro Tom A zul 3udy Verde I r i s N ara n ja Randy Ro jo 3udy Verde 3 u d y Campo t 00000000 01001010 Carcter Unicode 3 1 Bit Fig. 1.2 | Jerarqua de datos. Nivel Descripcin Bits El elemento de datos ms pequeo en una computadora puedeasumirelvalor0 o el valor 1.A dicho elemento dedatos se ledenomina bit (abreviacin de dgito binario:un dgito que puedeasumir uno de dosvalores). Esnotable que lasimpresionantes funcionesque realizan lascomputadoras slo impliquen lasmanipulaciones ms simplesde Osy ls: examinarelvalordeunbit,establecer elvalordeunbiteinvertirelvalordeunbit(de 1a 0o de 0a l). Caracteres Estedioso para laspersonastrabajarcon datos en elformato de bajo nivelde los bits. En cambio, prefieren trabajar con dgitosdecimales(0-9), letras(A-Z ya-z) y smbolosespeciales(porejemplo, $, @, %, &, *, (,), +, ,?y /). Los dgitos, letras ysmbolos especialesseconocen como caracteres. El conjunto de caracteresde lacomputadora eselconjunto de todos los que seutilizan para escribirprogramas yrepresentarelementosde datos. Lascomputadorasslo procesan los 1ylos 0, por loque elconjunto decaracteresde una computadora representaa cada uno como un patrn de los 1ylos 0.Java usacaracteres Ltaicodeque estn compuestos de dos bytes, cada uno delos cualesest formado a su vez deocho bits. Unicodecontiene caracteres para muchosde losidiomas en el mundo. En el apndiceLobtendr msinformacin sobreUnicode. En elapndice Bconocer msinformacin sobreelconjunto de caracteresASCII (Cdigo estndar estadounidense parael intercambio de informacin):el popular subconjunto de Unicodeque representa lasletrasmaysculasyminsculas, losdgitosy algunoscaracteresespecialescomunes. Archivo Registro Fig. 1.3 | Niveles de lajerarqua de datos (parte I de 2). www.FreeLibros.me
  44. 44. 8 Captulo I Introduccin a las computadoras y a Java Nivel Descripcin Campos Ascomo loscaracteresestn compuestosde bits, loscampos loestn por caractereso bytes. Un campo esun grupo de caracteres o bytesque transmiten un significado. Porejemplo, un campo compuesto de letrasmaysculasyminsculas se puede usarpara representarel nombredeuna persona, yuno compuesto de dgitosdecimales podra representarsu edad. Registros Sepueden usarvarios camposrelacionadosparacomponerun registro (elcual se implementa como una elase enJava). Porejemplo, en un sistemadenmina, el registro deun empleado podra consistiren lossiguientescampos (los posibles tipospara stos semuestran entre parntesis): Nmero de identificacin del empleado (un nmero entero) Nombre (una cadena decaracteres) Direccin (una cadena de caracteres) Salario por horas (un nmero con punto decimal) Ingresosdelao a lafecha (un nmero con punto decimal) Monto de impuestosretenidos (un nmero con punto decimal) As, un registro esun grupo de campos relacionados. En el ejemplo anterior, todos loscampos pertenecen al mismo empleado. Una compaa podra tenermuchos empleadosyun registrodenmina para cada uno. Archivos Un archivoes un grupo deregistrosrelacionados. [Nota:Dicho en formams general, un archivocontienedatosarbitrariosen formatos arbitrarios. En algunos sistemasoperativos, un archivosevetan slocomo unasecuenciadebytes:cualquier organizacin deesosbytes en un archivo, como cuando seorganizan losdatosen registros, es una vistacreada porel programadordelaaplicacin].Es muycomn que una organizacin tengamuchosarchivos, algunos deloscualespueden contenermiles demillones, o incluso billones decaracteres deinformacin. Fig. 1.3 | Niveles de lajerarqua de datos (parte 2 de 2). 1.4 Organizacin de una computadora Sinimportar lasdiferenciasen laaparienciafsica,esposiblepercibiralascomputadoras como siestuvie ran divididas en varias unidades lgicaso secciones (figura 1.4). Unidad lgica Descripcin Unidad Esta seccin receptoraobtiene informacin (datos yprogramasdecmputo) de los deentrada dispositivosde entradayla pone a disposicin de lasotras unidades paraque pueda procesarse. La mayorpartedela informacin se introducea travsde los teclados, pantallas tctilesyratones. La informacin tambin puedeintroducirse de muchas otras formas, como hablar con su computadora, digitalizarimgenes ycdigosde barras, leerdispositivos dealmacenamiento secundario (como discosduros, unidades de DVD, Blu-ray Disc y FlashUSB tambin conocidascomo unidadesde pulgaro memorysticks), recibirvideo deuna cmara Web einformacin en su computadora a travsde Internet (como cuando descarga videosdeYouTube o libroselectrnicosdeAmazon). Lasformas ms recientesdeentrada son: leerlos datosde la posicin a travs deun dispositivo GPS, yla informacin sobre el movimiento ylaorientacin mediante un acelermetro en un telfono inteligente o un controlador dejuegos. Fig. 1.4 | Unidades lgicas de una computadora (parte I de 2). www.FreeLibros.me
  45. 45. 1.4 Organizacin de una computadora 9 Unidad aritmtica y lgica (ALU) Unidad central de procesamiento (CPU) Unidad de almacenamiento secundario Descripcin Estaseccindeembarquetoma informacinque ya hasido procesadapor lacompu tadora ylacolocaen losdiferentesdispositivosde salida, paraque est disponible fuerade lacomputadora. En laactualidad, lamayorparte dela informacinde salida de lascomputadorassedespliegaen pantallas, seimprimeen papel, sereproducecomo audio o video en reproductores demedios porttiles (como lospopulares iPodde Apple)ypantallasgigantesen estadiosdeportivos, se transmitea travsde Internet 0 se utiliza paracontrolar otrosdispositivos, como robotsy aparatos inteligentes. Esta seccin de almacn deacceso rpido, pero con relativabajacapacidad, retiene lainformacin queseintroducea travsde la unidaddeentrada, paraqueest disponibledemanera inmediata y se pueda procesarcuando seanecesario. La unidad de memoria tambin retiene la informacin procesada hasta que la unidad de salida pueda colocarlaen losdispositivos desalida. La informacin en la unidadde memoria es voltil',por logeneralse pierdecuando seapaga lacomputadora. Con frecuencia, a la unidad de memoria seleconoce como memoria o memoria principal.Las tpicas memorias principalesen las computadorasdeescritorio yporttilescontienen entre 1GB y 8GB (GB se refierea gigabytes; un gigabyte equivaleaproximadamente a mil millonesde bytes). Esta seccin de manufactura realiza clculoscorno suma, resta, multiplicacin y divisin.Tambin contiene los mecanismosde decisinque permiten a lacompu tadora hacercosascomo, porejemplo, comparar doselementosde la unidadde memoria para determinar sison igualeso no. En lossistemasactuales, laALU se implementa por logeneralcomo parte de lasiguiente unidad lgica, la CPU. Esta seccin administrativa coordina ysupervisa laoperacin delas dems. La CPU le indicaa la unidad de entrada cundo debe grabarsela informacin dentro dela unidad dememoria, a laALU cundo debe utilizarsela informacin dela unidad de memoria para los clculos, ya la unidaddesalidacundo enviarla informacin desdelaunidadde memoria hastaciertosdispositivosdesalida. Muchasde lascompu tadorasactualescontienen mltiples CPU y, porlo tanto, pueden realizarmuchas operaciones de manera simultnea. Un procesador multincleo implementa varios procesadores en un solochip de circuitosintegrados; unprocesadordedoblencleo (dual-core)tiene dosCPU yunprocesadorde cudruplencleo(quad-core)tiene cuatro CPU. Las computadoras de escritorio delaactualidad tienen procesadores que pueden ejecutarmilesde millones deinstrucciones porsegundo. sta es laseccin de almacnde alta capacidady de largaduracin. Los programas o datos que no utilizan las dems unidadescon frecuenciasecolocan en dispositi vosdealmacenamiento secundario (porejemplo, eldiscoduro)hasta queserequieran de nuevo, locual puede sercuestin de horas, das, meses o incluso aos despus. La informacin en losdispositivos de almacenamiento secundario espersistente: seconserva an ycuando seapaga lacomputadora. El tiempo para accedera la informacin en almacenamiento secundario esmucho mayor que el necesario para accedera lade la memoria principal, pero el costo por unidad de memoria secundaria esmucho menor que elcorrespondiente a la unidad de memoria principal. Las unidades de CD, DVD yFlash USB son ejemplos de dispositivos de almacenamiento secundario, loscuales pueden contener hasta 128 GB. Los discos duros tpicosen las computadoras de escritorio y porttiles pueden contener hasta 2 TB (TB se refiere a terabytes; un terabyte equivale aproximada mente a un billn de bytes). Fig. 1.4 | Unidades lgicas de una computadora (parte 2 de 2). Unidad lgica Unidad de memoria Unidad de salida www.FreeLibros.me
  46. 46. 10 Captulo I Introduccin a las computadoras y a Java 1.5 Lenguajes mquina, lenguajes ensambladores y lenguajes de alto nivel Los programadores escriben instrucciones en diversos lenguajes de programacin, algunos de los cua les los comprende directamente la computadora, mientras que otros requieren pasos inte