88% encontró este documento útil (8 votos)
4K vistas618 páginas

Como Programar en Java (9na Ed.) - DeITEL

Como Programar en Java (9na Ed.) - DeITEL

Cargado por

Fercho conto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
88% encontró este documento útil (8 votos)
4K vistas618 páginas

Como Programar en Java (9na Ed.) - DeITEL

Como Programar en Java (9na Ed.) - DeITEL

Cargado por

Fercho conto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

ACCESO A LOS CAPÍTULOS ADICIONALES 'DEL LIBRO

Para acceder a los capftulos 12 a 19 (en espafiol), 20 a 3 1y Apéndices M a Q (en inglés)


mencionados en el texto, visite el sitio Web de este libro:

www.pearsonenespañol.com/deitel
Utilice iina moneda para descubrir el código de acceso.
(No use objetos filosos porque podría daflarlo).

IMPORTANTE:
Este código de acceso tiene vigencia de 2 días!
Asegúrese que el código no aparezca daftado ya que sólo puede usarse una vez
y no será reemplazado en ningún caso.
Deitel &Assotiúues, /ne.

Traductor
Alfonso Vldal Romero Ellzondo
Ingeniero en Sistemas El.ectrdnit:os
ITESM, CampUI Monterr,y

Revisi6n técnica
Roberto Martfnez Romin
Departamento de Tecnologla de Información y Cmnpuiación
ITESM, Campus Estado tÚ! Mlxico

Domingo Acosta Infante


Departa,,u,ifo tÚ! big,mkrla ,m lt,formátka
ltutituto TecnoUgico de Mor~lia,

PEARSON
/ Datos de catalogación bibliográfica

OEJTEL, l'AUL)' HARVEY OEJTEL


Cómo programar en Java
No,,;u cdlclcln
PEARSON EDUCACIÓN, México, 2012
ISBN: 978-6-07-32-IISO·S
Árcm: Computación
Fonnato: 20 X 25.5 cm Páginas: 616

Authoriud translation from the English language ecliti.on entitled JAVA HOW TO PROGRAM, 9'• Edition, by Pa,ú De/te/
& Harvey Deitel, published by Pearson Education, lnc., publisbing as Prentice Hall, Copyright O 2012. Ali rights reserved.
ISBN 9780132575669

'Iraducción autorizada de la edición en idioma inglés titulada JAVA HOW TO PROGRAM, 9a. edición por Pa11l Deitel y
Harvey Delt?l,publicadn por Penrson Education, lnc., publicada como Prentice Hnll, Copyright C 2012. Todos los derechos
ll!servndos.

&to edición en espaílol es la ónice autori1.ada.

Edición e n español
Dirección Educación Superior: Mario Contreras
P.ditor Sponsor: Luis Miguel Cruz Castillo
e-mail: luls,cru1,@pearson.com
Editor de Desarrollo: Bernardino Gutiérrez Hernándei
Supervisor de Producción: /osé D. Hernández Garduño
Gerente Editorial Educación
Superior Latinoamérica: Marisa de Anta

NOVENA EDICIÓN, 2012

OR. O 2012 por Pearson Educación de México, S.A. de C.V.


Atlncomulco 500 -So. piso
Col. Industrial Atoto
53519, Naucalpan de )uárei, Estado de México

Cámara Nacional de la Industria Editorial Mexicana. Reg. núm. 1031.

Ileservndos tollos los derechos. NI In tolnlldod ni pnrte de es111 publlcnclón pueden reproducirse, rcglstrorsc o trnnsmltlrijc,
por un sistema de recuperación de información, en ninguna forma ru por ningún medio, sea electróruco, mecánico, foto·
químico, magnético o electroóptico, por fotocopia, grabación o cualquier otro, sin permiso previo por escrito del eclitor.

El préstamo, alquiler o cualquier otra forma de cesión de uso de este ejemplar requerirá Lamblén la autorización del editor
o de sus representantes.

ISBN VERSIÓN lMI'RESA: 978·607·32-1150·5


ISBN VBRSTÓN B-BOOK: 978-607·32-J 151-2
ISBN B-O!APTBR: 978-607-32-1152-9

Impreso en México. Printed in Mexico.


1 2 3 4 5 6 7 8 9 O• 15 14 13 12

PEARSON
'En memoria delsargento Sfírive,¡
'Elprimer director del Cuerpo de Paz yfundador
de numerosas organizaciones sociales:

Por una vida de marcar la diferencia.

Pauly Harvey D~itel


Prefacio xxiii

Antes de empezar xxxiii

1 Introducción a las computadoras y a Java 1


1.1 lntroducción 2
1.2 Computadoras: hardware y software 5
1.3 Jerarquía de daros 6
1.4 Organización de una computadora 8
1.5 Lenguajes máquina, lenguajes ensambladores y lenguajes de alto nivel 10
1.6 Introducción a la tecnología de los objetos 11
1.7 Sisremas operativos 13
1.8 Lenguajes de programación 16
1.9 Java y lLn dpico entorno de desarrollo en Java 18
1.1 O Prueba de una aplicación en Java 22
1.11 Web 2.0: Las redes sociales 26
J.12 Tecnologías de software 29
I.13 Cómo estar al día con las tecnologías de inform:.ición 31
1.14 Conclusión 32

2 Introducción a las aplicaciones en Java 37


2.1 Introducción 38
2.2 Su primer programa en Java: im~,rimir una llnen de 1exto 38
2.3 Modificación de nuestro primer programa en Java 44
2.4 Cómo mostrar texto con pri ntf 46
2.5 Orra nplicación en java: suma de entero.~ 47
2.6 Conceptos acerca de la memoria 52
2.7 Aritmética 53
2.8 Toma de decisiones: operadores de igua ldad y relacionales 56
2.9 Conclusión 60

3 Introducción a las clases, objetos, métodos y cadenas 71


3.1 Introducción 72
3.2 Declaración de una clase con un método e insranciamienro de un objero de una clase 72
3.3 Declaración de un método con un par.lmecro 76
3.4 Variables de instancia, métodos estabkcery métodos obtener 79
3.5 Comparación encre tipos primicivos y tipos por referencia 84
3.6 lnicializadón de objetos mediante constructores 85
viii Contenido

3.7 Los números de punto flotante y el tipo double 88


3.8 (Opcio nal) Caso d e estudio d e GUT y gráficos: uso de cuadros de dii logo 92
3.9 Conclusión 95

4 Instrucciones de control: Parte 1 102


4.J introducción 103
4.2 Algoritmos 103
4,3 Seudocódigo 1.04
4.4 Estrucruras de control 104
4.5 Instrucción i f de selección simple 107
4.6 lnstrucción if ... el se de selecció n dob le 107
4.7 instrucción de repetición whi 1e 112
4.8 Cómo formular algoritmos: repetición controlada por un contador 113
4.9 Cómo formular algoritmos: repetición co ntrolada por un centi nela 118
4.10 Cómo formular algoritmos: instrucciones de con trol anidadas 125
4.11 Operadores de asignació n compuestos 130
4.12 Operadores de incremento y decremento 130
4.13 Tipos primitivos 134
4.14 (Opcional) Caso de estudio de GUI y gráficos: creación de dibujos simples 134
4. 15 Conclusió n 138

s Instrucciones de control: Parte 2 151


5.J Introducción 152
5.2 Fundamentos de la repetición co mro lada por contador 152
5.3 Instrucción de repetición for 154
5.4 Ejemplos sobre e.l uso de L1 instrucción for 158
5.5 1nstrucció n de repetición do ... whi 1e 162
5.6 Instrucción de selección múltiple switch 164
5.7 Instruccio nes break y con ti nue 172
5.8 Operadore.~ lógicos 173
5.9 Resumen sobre programación estructurada 179
5.10 (Opcio11al) Ca.~o de estudio de GUT y gdficos: dibujo de rectángulos y ó valos 184
5.1 1 Conclusión 187

6 Métodos: un análisis más detallado 197


6.1 Introducción 198
6.2 Módulos de programas en Java 198
6.3 Mérodos static, compos stati cy la clMeMath 200
6.4 Declaración de métodos con múltiples paránietros 202
6.5 Notas acerca de cómo decl.arar y utilizar los métodos 205
6.6 La pila de llamadas a los métodos y loHegiStros de acrivnció n 206
6.7 Promoción y conversión de argumentos 207
6.8 Paquetes de laAPI de Java 208
6.9 Ciso de estudio: generación de 111'11neros aleatorios 210
6.9.l Escalamiento y desplazamiento generaü:iados de números aleatorios 214
6.9.2 Repetitividad de números aleatotios para prueba y depuración 214
6.10 Caso de estudio: un juego d e probabilidad (introducción :1 las cnumcmciones) 215
6.11 Alcance de las declaracio nes 219
6.12 Sobrecarga de métodos 222
6.13 (Opcio nal) Ca.~o d e estudio de GUT y gráficos: co lores y figuras rellenas 224
6.14 Conclusió n 227
Contenido ix

7 Arreglos y objetos ArrayList 240


7.1 Introducción 241
7.2 Arreglos 242
7.3 Decla.ración y creación de arreglos 243
7.4 .Ejemplos aceren del uso de los arreglos 244
7.5 Caso de estudio: simulación para barajar y repartir ca.rus 254
7.6 Instrucción for mejorada 258
7.7 Paso de arreglos n los m61odos 259
7.8 Caso de estudio: .la clase LibroCal ificaciones que usa un arreglo para almacenar
las calificaciones 262
7.9 Arreglos multidimensiona.les 268
7.10 Caso de estudio: L1 clase LibroCal ificaciones que usa un arreglo bidimensional 271
7.11 ListaS de argumentos de longitud variable 278
7.12 Uso de argumentos de línea de comandos 279
7.13 LaclaseArrays 281
7 .14 introducción a las colecciones y la clase ArrayLi st 284
7.15 (Opcional) Caso de e.madio de GUl y grd.ficos: dibujo de arcos 286
7.16 Conclusión 289

8 Clases y objetos: un análisis más detallado 311


8.1 lntroducción 312
8.2 Caso de estudio de la clase Tiempo 312
8.3 Control del acce.~o a los miembros 316
8.4 Referencias a los miembros del objeto actual mediante this 317
8.5 Caso de estudio de la clase Tiempo: conStructores sobrecargados 320
8.6 Constructores predeterminados y sin nrgumenr.os 326
8.7 Observaciones acerca de los métodos Establecer y Obtener 326
8.8 Composición 328
8.9 Enumcracione.~ 331
8.1 O Recolección de basura y el método fina 11 ze 333
8.11 Miembros de clases tati e 334
8.12 Declaración static import 338
8. 13 V:IJ'iables de instancia f1 na1 339
8.14 Caso de estudio de la clase Tiempo: creación de paquetes 340
8.15 Acceso a paquetes 345
8.16 (Opcional) Caso de estudio de GUI y gr:ificos: uso de objetos con gr:ificos 347
8.17 Conclusión 351

9 Programación orientada a objetos: herencia 359


9.1 Introducción 360
9.2 Supcrclases y subclases 361
9.3 Miembros protected 363
9.4 Re.lación entre las supere.Jases y .las subclases 364
9.4.J Creación y uso de una clase Empl eadoPorComision 364
9.4.2 Creación y uso de una clase Empl eadoBaseMasComisi on 370
9.4.3 Creación de una jerarquía de herencia Emp 1eadoPorComi s ion-
Empl eadoBaseMasCOmi sion 375
9.4.4 La jerarqula de herencia EmpleadoPorComi s1on-Emp1 eadoBaseMasComi s1 on
mediante el uso de variables de instancia p rotected 377
9.4.5 La jerarquín de herencia Emp1eadoPorCom1 s1on-Empl eadoBaseMasComi si on
mediante el uso de variables de instancia p rfvate 380
x Contenido

9.5 Los constructores en las subclases 385


9.6 Ingeniería de sofrware mediante la herencia 386
9.7 La clase Object 387
9.8 (Opcional) Caso de estudio de GUI y gráficos: mostar texto e imágenes usando etiqueras 388
9.9 Conclusión 391

1O Programación orientada a objetos: polimorfismo 394


10.1 Introducción 395
10.2 Ejemplos del polimorfismo 397
10.3 Demostración del comportamiento polimórfico 398
10.4 C lases y métodos abstraccos 400
10.5 C'\So de estudio: sistema de nómina utilizando polimorfismo 403
10.5.1 La superclase abstracta Empleado 404
10.5.2 LasubcL1&econcreta EmpleadoAsal ariado 407
10.5.3 La subclase concreta Empl eadoPo rHoras 408
10.5.4 La subclase concreta Empl eadoPo rComi sion 410
10.5.5 La subclase concreta indirecta Empl eadoBaseMasComi si on 412
10.5.6 El procesamiento polimórfico, el opeirador i nstanceof y la conversión
descendente 413
10.5.7 Resumen de las asignaciones permitidas entre variables de la supercla.~e
y de la subclase 418
10.6 Métodos y clases fin al 418
10.7 C1so de estudio: creación y uso de interf.tces 419
10.7.1 Desarrollo de una Jerarquía PorPagar 421
10.7.2 La interfu. PorPagar 422
10.7.3 La clase Factura 422
10.7.4 Modificación de la clase Empleado para implemencar l1 interlii:,, PorPagar 425
10.7.5 Modificación de la clase Emp leadoAsa la ria do para usarla en la
Jerarquía PorPagar 427
10.7.6 Uso de la interfaz Por Pagar para prooesar objeros Factura y Empleado
mediante el polimorfismo 428
10.7 .7 Interfuces comunes de la API de Java 430
10.8 (Opcionnl) C'l.~o de estudio de GUJ y gdficos: realiwr dibujos usando polimorfismo 431
10.9 Conclusión 433

11 Manejo de excepciones: un análisis más profundo 438


11.1 Introducción 439
11.2 Ejemplo: división enrre cero si n manejo de excepciones 439
11.3 Ejemplo: manejo de excepciones cipo Aritmet1 cException e InputM1smatchException 442
11.4 C uruido utilizar el manejo de excepciones 447
11.5 Je111rqufa de excepciones en Java 447
11.6 Bloque f1na11y 450
11.7 Limpieza de la pila y obtención de información de un objeto excepción 454
11.8 Excepcione.~ encadcnndns 457
11.9 Declaración de nuevos tipos de excepciones 459
11.10 Precondiciones y poscondiciones 460
11.11 Aserciones 46)
11.12 (Nuevo en Java SE 7): Cl:lusula catch múltiple: atrapar varias excepciones en un catch 462
11.13 (Nuevo en Java SE 7): Cláusula t ry con recursos (t ry-with-resources): desasignación
(llltOm~cioa de recursos 463
11.14 Conclusión 463
Contenido xi

A Tabla de precedencia de operadores A-1

B Conjunto de caracteres ASCII A-3

e Palabras clave y palabras reservadas A-4

D Tipos primitivos A-S

E Uso de la documentación de la API de Java A-6


E.l Introducción A-6
E.2 Navegación por laAPl de Java A-6

F Uso del depurador A- 14


F.l Introducción A-15
F.2 Los puntos de interrupción y los comandos run, stop, cont y print A· 15
F.3 Los comandos print y set A- 19
F.4 C6mo controlar la ejecución mediante los comandos step, step up y next A-21
P.5 El comando watc h A-24
P.6 E l comando clear A-27
F.7 Conclusión A-29

G Salida con formato A-31


G.I lnrroducción A-32
G.2 Flujos A·32
G.3 Aplicación de formato a la salida con pri ntf A-32
G.4 Impresión de ente.ros A-33
G.5 lmpresión de números de pw1to Aotante A-34
G.6 Impresión de cadenas y caracteres A-36
G.7 lmpresió n de fechas y horas A-37
G.8 Otros caracteres de conversión A-39
G.9 Impresión con anchuras de campo y precisiones A-41
G.10 Uso de banderas en b c.1dena de fo rmato de pr1ntf A-43
G. 11 Impresió n con Indices como argumentos A-47
G.12 Impresión de literales y secuencias de escape A-47
G.13 Aplic.1ción de formato n la salida con la clase Fo nnatte r A-48
G. 14 Conclusió n A-49

H Sistemas numéricos A-S4


H.l Introducción A-55
H .2 Abreviatura de los números binarios como números octales y hc.xadccimalcs A-58
H.3 Conversión de números octales y hexadecimales a binarios A-59
H.4 Conversión de un número binario, octal o hexadecimal a decimal A-59
H .5 Conversión de un mí mero decimal a binario, octal o hexadecimal A-60
H.6 Números binarios negativos: notación de complen1ento a dos A-62
xii Contenido

1 Grouplayout A-67
1.1 Introducción A-67
1.2 fundamentos de Grouplayout A-67
1.3 Creación de un objeto Sel ectorColores A-68
:1.4 Recursos Web sobre Crouplayou t A-78

J Componentes de integración Java Desktop A-79


J.! Introducción A-79
J.2 Pantallas de inicio A-79
J.3 L.1 clase Desktop A-81
J.4 Iconos de la bandeja A-83

K Mashups A-85
K.l Introducción A-85
K.2 Mashups popul:tres A-85
K.3 AlgunasAPl de uso común en mashups A-86
K.4 Centro de recursos Dei telsobrc mashups A-86
K.5 Centro de recursos Deitel sobre RSS A-87
K.6 Cuesciones de rendimiento y confiabilidad de los mashups A-87

L Unicode® A-88
L.1 lntroduccion A-88
1..2 Formatos de transformación de Unicode A-89
L.3 Caracteres y gli fos A-90
L.4 Ventajas/Desventajas de Unicode A-90
1..5 Uso de Unicode A-91
L.6 Rangos de caracrcres A-93

indice 1- 1

Los capítulos 12 a 19 se encuentran en espa11ol en el sitio Web del libro

12 Caso de estudio del ATM, Parte 1: Diseño orientado


a objetos con UML 469
12.1 Introducción a1 caso de estudio 470
12.2 Análisis del documento de requerimientos 470
12.3 Cómo identifica.r las clases en un documento de requerimientos 478
12.4 Cómo identificar los atributos de las clases 484
12.5 Cómo identificar los estados y actividades de los objetos 489
12.6 Cómo identificar las opemciones de las clases 493
12.7 Cómo indicar la colaboración entre objetos 499
12.8 Conclusión 506
Contenido xiii

13 Caso de estudio del ATM, Parte 2: Implementación


de un diseño orientado a objetos SI O
13.1 Introducción 511
13.2 Inicio de la programación de las clases del sistema ATM 511
13.3 Incorporación de la herencia y el polimorfismo en el sistema ATM 516
13.4 Implementación del caso deesrudio del ATM 522
13.4.J La clase ATM 523
13.4.2 L.1.clase Panta 11 a 528
13.4.3 La clase Teclado 529
13.4.4 La clase 01 spensadorEfecti vo 530
13.4.5 La clase RanuraDeposito 531
13.4.6 La clase Cuenta 532
13.4.7 La clase BaseOatos Banco 534
13.4.8 La clase Trans acc1 on 537
13.4.9 La clase SolicitudSaldo 538
13.4.1 O La clase Retiro 539
13.4.11 L.1 clase Deposito 543
13.4.12 La clase CasoEstudi oATM 546
13.5 Conclusión 546

14 Componentes de la CiUI: Parte 1 549


14.1 Introducción 550
14.2 Nueva apariencia visual Nimbus de Java 551
14.3 Entrada/salida simple basada en GUI con J0pt1 onPane 552
14.4 Generalidades de los componentcS de Swing 555
14.5 Mostrar texto e imágenes en una ventana 557
14.6 Campos de texto y una introducción al manejo de eventos con clases anidadas 561
14.7 Tipos de eventos comunes de la GUJ e inre.rfuces de escucha 567
14.8 Cómo funciona el manejo de eventos 569
14.9 JButton 571
14.1 O Bocones que mantienen el estado 574
14. 1O. 1 J CheckBox 574
14.10.2 JRadioButton 577
14.11 JComboBox: uso de una clase interna anó nima p::ira el manejo de eventos 580
14.12 JList 584
14.13 Lisras de selección múltiple 586
14.14 Manejo de eventos de ratón 589
14.15 Clases adaptadoras 594
14.16 Subclase de JPanel para dibujar con el ratón 597
14.J 7 Manejo de eventos de recias 601
14.18 Introducción a los administmdores de esquemas 604
14.18.1 FlowLayout 605
14.18.2 BorderLayout 608
14.18.3 GridLayout 611
14.19 Uso de paneles para adminiscrar esquemas más complejos 613
14.20 JTextArea 615
14.21 Conclusión 618
xlv Contenido

15 Gráficos y Java 2D 631


15.1 Introducción 632
15.2 Contextos y objetos de gráficos 634
15.3 Control de colores 635
15.4 M:mipulación de cipos de letra 642
15.5 Dibujo de líneas, rectángulos y óvalos 647
15.6 Dibujo de arcos 651
15.7 Dibujo de polígo nos y polillne.,s 654
15.8 LaAPI Java 2D 657
15.9 Conclusión 664

16 Cadenas, caracteres y expresiones regulares 672


16.1 Introducción 673
16.2 Fundamentos de los caracteres y las cadenas 673
16.3 La clase Stri ng 674
16.3.1 Constructores de St ri ng 674
16.3.2 Métodos 1 ength, charAt y getChars de String 675
16.3.3 Comparación entre cadenas 676
16.3.4 Loc:tlización de caracteres y subcadent3S en las cadenas 681
16.3.5 Extracción de subcadena.~ de las cadenas 683
16.3.6 Concatenación de cadenas 684
16.3.7 Métodos varios de Stri ng 684
16.3.8 Método valueof de Str1 ng 686
16.4 La clase Stri ngBui 1der 687
16.4.1 Comtructores de StringBui lder 688
16.4.2 Métodos 1 ength, capacity, setLength y ensureCapaci ty de StringBu1 lder 688
16.4.3 Métodos charAt, setCharAt, getChars y reverse de StringBuilde r 690
16.4.4 Métodos append de Stri ngBuil der 691
16.4.5 Métodos de inserción y eliminación de Stri ngBuilder 693
16.5 La claseCharacter 694
16.6 División de objetos Stringen tokens 699
16.7 Expresiones regulares, la cln.~e Patte rn y la clase Mate her 700
16.8 Conclusión 708

17 Archivos, flujos y serialización de objetos 719


17.1 Introducción 720
17.2 Archivos y Auj os 720
17.3 La clase File 722
17.4 Archivos de texto de acceso secuencial 726
17.4. J Crenció n de un nrchivo de texto de a~o sccuenci:il 726
17.4.2 Cómo leer datos de un arcllivo de texto de acceso secuencial 733
17.4.3 Caso de estudio: un programa de solicitud de crédito 736
17.4.4 Accunli1.'lción de nrchivos de acceso secuencial 741
17.5 Serialización de objetos 742
17.5.1 Creación de un archivo de acceso secuencial mediante el uso de laserialización
deobjeros 743
17.5.2 Lectura y deserialización de datos de un arcllivo de acceso secuencial 749
17.6 Clases adicionales de java . io 751
17.6.J Tnccrfuces y clases para entrada y salida bas:ida en bytes 751
17.6.2 interfaces y clases para CJllrada y salida bas:ida en caracteres 753
Contenido XV

17.7 Abrir archivos con JFileChooser 754


17.8 Conclus ió n 757

18 Recursividad 765
18.1 Introducción 766
18.2 Conceptos de recursividad 767
18.3 Ejemplo d e uso de recursividad: factoriales 768
18.4 Ejemplo de lL~O de recursividad: serie de Fibonacci 77 1
18.5 La recursividad y la pila de llamadas a métodos 774
18.6 Comparación entre recursividad e iteració n 776
18.7 .Lns corres de Hano i 777
18.8 Fractales 779
18.9 "Vuelta arras" recursiva (backtracking) 790
18.10 Conclusió n 790

19 Búsqueda, ordenamiento y Big O 798


19.1 Introducción 799
19.2 Algoritmos de búsqueda 800
J 9.2. 1 Búsqueda lin eal 800
19.2.2 Búsqueda binaria 804
19 .3 Algoritmos de ord enamiento 809
19.3.J Ordenamiento por selección 810
J 9.3.2 Ordenamiento por inserción 814
19.3.3 Ordenamiento por combinación 817
19.4 Conclus ió n 824

Los capítulos 20 a 3 1 se encuentran en inglés en el sitio Web del libro

20 Generic Collections 829


20.1 lntroduction 830
20.2 Collcctions Ovcrview 830
20.3 Type-Wr:ipper Classes for Primi tive "fypes 831
20.4 Autoboxing and Auto· U nboxing 832
20.5 lnterfoce Coll ecti on and Clnss Co l l ections 832
20.6 Lists 833
20.6.1 Arrayli stand Iterator 834
20.6.2 Li nkedList 836
20.7 Co Uections Methods 841
20.7.1 Method sort 842
20.7.2 Merhod s huffl e 845
20.7.3 Methods reverse, fil 1, copy, max and min 847
20.7.4 Method binarySearch 849
20.7.5 Mcthods addAl 1, frequency n.nd d1sjoint 851
20.8 Stack Class of Package java.ut11 853
20.9 Class Priori tyQueue and Interface Que u e 855
20.JO Sets 856
20.11 Maps 859
xvi Contenido

20.12 Properties Class 863


20.13 Synchronized Collectio ns 866
20.14 UnmodiAable Collections 866
20.15 Abstract lmplementations 867
20.16 Wrap-Up 867

21 Cieneric Classes and Methods 873


21. 1 lntroduction 874
21 .2 Motivatioa for Generic Methods 874
21.3 Generic M ethods: Jmplementation and Compile-li me Translation 877
2 1.4 Additional Compile-Time Translation fssues: M ethodsThnc Usen
Type Parameter as tbe Return Type 880
21.5 Overloading Gcneric Methods 883
21.6 Generic Classes 883
21.7 RawTypes 891
21.8 Wildcards ln Methods T hnt Accept T ype Parnmeters 895
2 1.9 Generics :ind lnherimncc: Notes 899
2 1.10 Wrap-Up 900

22 Custom Cieneric Data Structures 904


22.l lntroduction 905
22.2 Sclf-Rcferenci:il C lasses 905
22.3 Dynamic Memory AJloc:1cion 906
22.4 Linked Lists 907
22.5 Stacks 917
22.6 Queues 921
22.7 Trees 924
22.8 Wrap-Up 930

23 Applets and Java Web Start 941


23. 1 Jntroduction 942
23.2 Sample Applets Provided with the JDK 943
23.3 Simple J:wa Applet: Drawing a Srring 947
23.3. J Executi ng Wel comeApplet in thc app1 etv1ewer 949
23.3.2 Ex:ecuting anApplet in a Web Browser 951
23.4 Applct Life-Cyclc Mcrhods 951
23.5 lnitializntion wi th Mechad 1 n1 t 952
23.6 Sandbox SecW'ity Model 954
23.7 Java Web Stort :ind rhe Java Network Launch Prorocol QNLP) 956
23.7. 1 Packaging the OrawTest Applet for Use with Java Web Start 956
23.7 .2 JNLP D0cw11enl íor theorawTestApplel 957
23.8 Wrnp·Up 961

24 Multimedia: Applets and Applications 967


24.l lntroduction 968
24.2 Loading, Displaying and Scaling Images 969
24.3 Animnting a Series ofrmnge.~ 975
24.4 lmage Maps 982
Contenido xvii

24.5 Loading and PlayingAudio Clips 985


24.6 Playing Video and Other Media wirh Java Media Framework 988
24.7 Wrap-Up 992
24.8 Web Resources 992

25 GUI Components: Part 2 1000


25. l Tntroduction 1001
25.2 J Sli der 100)
25.3 Windows: Addiáonal Notes 1005
25.4 Using Menus with Pramcs 1006
25.5 JPopupMenu 10 14
25.6 Pluggable Look-and-Feel 1017
25.7 JOesktopPane and JlnternalFrame 1022
25.8 JTabbedPane 1026
25.9 Layout Managers: Boxlayout and Gri dBagLayout 1028
25.10 Wrap-Up 1040

26 Multithreading 104S
26.l Introduce.ion 1046
26.2 Thread States: Life Cycle of a Thread 1048
26.3 Creacing and ExecutingThreads with Executor Framework 1051
26.4 Thread Synchroni1.ation 1054
26.4.l Unsynchronized Data Sharing 1055
26.4.2 Synchronized Daca Sharing-Making Operations Atomic 1059
26.5 Producer/Consumcr Rebrionship withour Synchroni1~1tion 1062
26.6 Producer/Consumer Relationshlp: ArrayBlocki ngQueue 1070
26.7 Producer/Consumer Relacionship with Synchronization 1073
26.8 Producer/Consumer Reladonship: Bounded Buffcrs 1079
26.9 Producec/Consumer Relationshlp: The Lock and Con di ti on Interfaces 1086
26. l O Concurrenc Collections Overview 1093
26.11 Multithre.,dingwith GUl 1095
26.11.1 Performing Computations in a WorkerThread 1096
26.11.2 Proces:sing Tncermediace Re.~ulcs wich SwingWorker 1102
26.12 lntcrfoccsCallable and Future 1109
26.13 Java SE 7: Fork/Join Framework 1109
26.14 Wrap-Up 1110

27 Networking 1 118
27.1 lntroduction 1119
27.2 Manipularing URLs 1120
27.3 Reading a File on a Web Servcr 1125
27.4 Establishing a Simple Server Using Stream Sockers 1128
27.5 Establishing a Simple Client Using Stream Sockets 1130
27.6 Client/Server rntcraction wich Srream Socker Connections 1130
27 .7 Datagrams: Co1tneccionless Cüenr/Server lnter..iccion 1142
27.8 Cüent/Serverlic-Tac-Toe Usinga Mulcithreaded Server 1150
27.9 [Web Bonus] CaseStudy: Oe1te1Messenger 1165
27.10 Wrap-Up 1165
xviii Contenido

28 Accessing Databases with JDBC 1 171


28.l lncroduction 1172
28.2 Relacional Databases 1173
28.3 Relacional Database Overview: The books Database 1174
28.4 SQL 1177
28.4. l Basic SELECT Query 1178
28.4.2 WHERE C lause 1179
28.4.3 ORDER BY Clause 1 181
28.4.4 MergingData &om MulcipleTables: INNER JOIN 1182
28.4.5 INSERT Srntement 1184
28.4.6 UPDATE Statcment 1185
28.4. 7 DELETE Statement 1186
28.5 Instructions for lnstalüng MySQL and MySQL Connector/J 1186
28.6 lnscrucrions for Sercing Upa MySQ.L User Account 1187
28.7 Creating Database books in MySQL 1188
28.8 Manipulating Databases with JDBC 1189
28.8.1 Connecling ro and Querying a Database 1189
28.8.2 Querying the books Database 1194
28.9 RowSet Interface 1207
28.J O Java DB/Apache Derby 1209
28.1 1 PreparedStatements 1211
28.12 Stored Procedures 1226
28.13 Transaction Processing 1227
28.14 Wrap-Up 1227
28.15 Web Resources 1228

29 JavaServer™ Faces Web Apps : Part 1 123S


29.1 lncroducrion 1236
29.2 HyperTextTransfer Prorocol (HTIP) Transactiions 1237
29.3 Multitier Application Acchitecture 1240
29.4 Your FirsrJSF Web App 1241
29.4.1 The Defuult i ndex .xht:ml Document: Introducing Facelets 1242
29.4.2 Examining the WebTimeBean Class 1244
29.4.3 Building rhe WebTi me JSF Web App in NerBeans 1246
29.5 Modcl-View-Controller Architecturc of JSP Apps 1250
29.6 CommonJSF Components 1250
29.7 Validacion UsingJSF SrandardVa.lidators 1254
29.8 Scssion Tracking 1261
29.8.1 Cookies 1262
29.8.2 Session Tracking with @sessi onScoped Sea.ns 1263
29.9 Wrap-Up 1269

30 JavaServer™ Faces Web Apps: Part 2 1276


30.1 lntroduction 1277
30.2 Accessing Dntabases in Web Apps 1277
30.2. l Sercing Up rhe Dambase 1279
30.2.2 @ManagedBean Class AddressBean 1282
30.2.3 i ndex .xhtml Facclets Page 1286
30.2.4 addentry. xht:ml Facclers Page 1288
Contenido xlx

30.3 Ajax 1290


30.4 Adding Ajax Funcrion:ility to che Validation App 1292
30.5 Wrap-Up 1295

31 Web Services 1299


31.l lntroduction 1300
31.2 Web Service Basics 1302
31.3 Simple Object Access Prorocol (SOAP) 1302
31.4 Representationa1 State Transfer (REST) 1302
31.5 JavaScript Object Notation QSON) 1303
31.6 Publishing :rnd Consuming SOAP-B:ised Web Scrviccs 1303
31.6.l Creating a Web Application Project and Adding a Web
Service Class in NctBeans 1303
31.6.2 Defi ni ng che We l comeSOAP Web Scrvice in NecBeans 1304
31.6.3 Publishing the Wel comeSOAP Web Servicc from NetBeans 1307
31.6.4 Testing the Wel comeSOAPWeb Service with GlassFish
Application Server'sTesterWeb Page 1308
31.6.5 Describing a Web Service with the Web ScrviccDescription
Language (WSDL) 1309
31.6.6 Creacing a Clienr ro Consume the We1 comeSOAP Web Service 1310
31.6.7 Consuming che We lcomeSOAPWeb Service 1312
31.7 Publishing and Consuming REST-BasedXML Web Services 1315
31.7.J Creating a REST-Ba.~ed XML Web Service 1315
31.7.2 Consuming a REST-Based XML Web Scrvice 1318
31.8 Publishing and Consumjng REST-Based JSON Web Services 1320
31.8.l Creating a R.EST-Based JSON Web Service 1320
31.8.2 Consuming a REST-Based JSON Web Service 1322
31.9 Session Tracking in a SOAP Web Service 1324
31.9.J Creating a Blackjack Web Service 1325
31.9.2 Consuming the Bl ackj ack Web Scrvice 1328
31.10 Coosuming a Oacabase-Oriven SOAP Web Service 1339
31.10.1 Creacing rhe Reservati on Darabase 1340
31.J0.2 Crcating a Web Application to 1nreract wirh che
Reservati on Service 1343
31.11 Equation Gcnerator: Remrning User-Dcfined Types 1346
31.11. 1 Creating che EquationGeneratorXML Web Servicc 1349
31.11.2 Conswning the Equati onGeneratorXML Web Service 1350
31.11.3 Crearing che EquationGeneratorJSONWeb Service 1354
31.J 1.4 Consuming che Equati onGeneratorJJSONWcb Servicc 1.354
31.12 Wrap-Up 1357
xx Contenido

Los apéndices M a Q se encuentran en inglés en el sitio Web del libro

M Creating Documentation with javadoc M-1


M.1 lmroduccion M-1
M.2 Documentation Commenrs M- 1
M.3 Documc:mingJava Sourcc: Codc M- 1
M.4 javadoc M-8
M.5 Files Produced by javadoc M-9

N Bit Manipulation N-1


N.1 lntroducdon N- 1
N.2 Bit ManipuL1cion and the Bitwise Opc:mrors N-1
N.3 81 tSet Class N - 11

o Labeled break and conti nue Statements 0-1


0 .1 lntroduction 0 -1
0 .2 Labclcd break St:uemcnr 0 -1
0 .3 Labeled cont1nue Stacement 0-2

p UML 2: Additional Diagram Types P-1


P.l 1ncroduction P- 1
P.2 Additionnl Oiagr.im Types p. 1

Q Design Pattems Q-1


Q,1 lncroducrion Q- 1
Q.2 Creacional, Struccural :llld Behavioral Design Patterns Q-2
Q.2.1 Cre.1tional Design Pam:rns Q-3
Q.2.2 Su·ucrural Dcsign P:mcrns Q-5
Q,2.3 Behavioral Design Patterns Q-6
Q.2.4 Condusion Q-7
Q,3 Design Pauerns in Packages java . awt and javax . sw1 ng Q-7
Q.3.1 Cre:uional Design Patterns Q-7
Q.3.2 St ructur.d Design Pattcrn~ Q-8
Q,3.3 Bchavioral Design Pactcrns Q- 10
Q,3.4 Conclusion Q-13
Q,4 Concurrency Design P:merns Q- 14
Q,5 Dcsign Paucrns Uscd in Packages java . 1o ond java. net Q- 15
Q,5.1 Creacional Dcsign Pattcrns Q•l5
Q.5.2 St rucrural Dc.fign Pnttern~ Q- 15
Q.5.3 Architecu1ral Pancrns Q- 16
Q.5.4 Conclusion Q-19
Q .6 Design Pattcrns Uscd in Package java.ut11 Q- 19
Q.6.1 Cre.1tional Design P:uterns Q- 19
Q.6.2 Behavioral Design Patterns Q-19
Q.7 Wr:1p-Up Q-20
No vivas más en fragmentos, conktate.
- Edgar Mo rgan Foster

Bienvenido a Cómo programar en Java, novena edición. Este libro presenta las tecnologías de vanguardia
pora estudiantes, profesores y desarrolladores de software.
E l nuevo capítulo I atrae la atención de los estudiantes con hechos y cifras fascinantes, para que
encuentren más emocionante el hecho de estudiar sobre Las computadoras y la programación. Ofrece
bs siguiente: una tabla sobre algunos proyectos de investigación que se hacen posibles gracias a las
compu tadoras; un anáfüis sobre el hardware y las tendencias tecnológicas actuales¡ jerarqu/a de daros¡
una tabla de placaformas de aplicaciones móviles y de In ternet¡ una nueva sección sobre redes sociales¡ una
introducción a Android; una tabla de los servicios Web más populares¡ una rabia de las publicaciones
recnológicas y de negocios, además de los sitios Web que le ayudarán a estar al día con Las noticias y ten-
dencias más recienres sobre cccnolog/a¡ y ejercicios accualiz.ados.
El libro e.~ apropiado para secuencias de cursos introductorios apoyados en las recomendaciones
curricula.re: de ACM/lEEE y sirve como preparnción para el examen de Colocación nvam.:ida {AP) de
ciencias computacionales.
Nos enfocamos en Las mejores prácticas de ingenierla de software. La base del libro es nuestro reconocido
"método de código activo": los conceprosse presentan en el contexto de programas funcionales complccos,
en lugar de hacerlo a través de fragmentos separados de código. Cada ejemplo de código completo viene
acompalíarlo de ejemplos de ejecuciones actuales. Todo el código fuente está disponible en www. dei te1 . com/
books/j ht p9/ (en inglé.,) y en el sitio Web de este tibro www. pearsonenespallo1 . com/dei te l (en espaflol).
Sisurgealgunaduda o pregunta mientras Ice este libro, env!c w1 correoe.lcctt6oicoa dei t el@dei t el . com;
le responderemos a la brevedad. Paraobrener actualiz.aciones sobre este libro, visite IWNI . dei tel . com/books/
jht p9/, s!ganos en Faceboo k {www deitel . com/dei t el fan) yTwittcr (@dei te1). T.'lmbién puede suscribirse
al boletín de correo electrónico Deittfi B11.ez 011/ine (w,w¡. de1 te l . com/news1etter/subscri be . html).

Características nuevas y mejoradas


He aquí Las actuali.z.aciones que realizamos a la 9a. edición:

Java Sta11da1·d Editio11 (SE) 7


• Fácil de usar como libro para Java SE 6 y Java SE 7. Hay unas cuancas caraccerfsricas de Java
Srandard Edition (SE) 7 que afocrnn n los cursos de ciencias compu t:tcionnles CS I y CS 2. Cubrimos
esas características en secciones modulares opcionales que se pueden incluir u omitir con fuciU dad.
He aquí una parte de la nueva funcionalidad: objetos St ri ng en instrucciones switch, la instruc-
ción trycon recursos (t ry-with-resouroes) para admi nistrar objetos Au tOCl osabl e, multi-catch para
definir un solo mru,ejador de excepciones en sustitución de varios que realizan la misma tarea, Las
API del sistema de archivos NIO y la inferencia de tipos de objetos genéricos a partir de la variable
a la que escln asignados, median ce el uso de la notación <>, También veremos las genemlidadcs sobro
las nuevas características de la API concurrente.
xxii Prefacio

• Nuevas API del sistema de archivos de Java SE 7, Ofrecemos una versión en línea akernativa
(en inglé.~) del cap/rulo 17, Archivos, Aujos y serialiwción de objeros, que se volvió a implemenrar
con las nuevasAP'I del sistema de archivos de Java SE 7.
• VersionesAutoC1osab1ede Connection, State,,enty Resu1tSetdefavaSE 7. Con el código fuen -
te para el capítulo 28 (en inglés), proporcionamos una versión del primer ejemplo del capítulo que se
implementó mediante el uso de las versiones AutoClosabl e de Connecti on, Statement y Res ul tSet.
Los objetos AutoCl osabl e reducen la probabilidad de fugas de recursos cuando se utili1.an con la
instrucción try con recursos (try-with-resourccs) de Java SE 7, la cual cierra de manera automdtica
los objetos AutoClosablequc se asignan en los paréntesis después de la palabra clave try.

CAractttrlsticas pedagógicas
• Mejoramoselconju11ro de ejercicios Marcar la di.fornida. Le alentamos a utilizar las computadoras
e 'lnrernet para investigar y reso lver problemas sociales relevantes. Estos ejercicios están disefiados
para aumentar la conciencia y el análisis en torno a los problemas importantes a los que se enfrenra
el mundo. Esperamos que usted los aborde con sus propios valores, pol/cicas y creencias. Dé un vis-
t:llzo a nue.uro nuevo Centro de recursos para marcar una diferencia (en inglés) en www. dei te1 . com/
MakingADifference, en donde obtendrá ideas adicionales que tal ve2desee investigar más a fondo.
• Números de pdgi,ia para los términos clave e,i los resúmenes de cada capitulo. En la lista de térmi-
nos clave que aparece en el resumen de cada. capltulo incluimos el número de página donde se define
el término.
• Comn,tarios e,, video. En el sitio Web de este libro encontra.rá comentarios en video (Video Notes),
en inglés, en In.~ que el coautor Paul Deitel explica co n detalle la mayoría de los programas de los
capítulos básicos. Los profesores nos han dicho que estos comentarios constituyen un recurso valioso
parasus estudiantes.

Tec11ologla tÚ objetos
• Programació11 y diseño orlet1tados a objetos. En el c.1pltulo 1 prese11tamos la term inologln y los
conceptos básicos dela tecnología de objetos. En el capítulo 3 los estudiantes desarrollan sus primeras
clases y objetos personali7.ados. Al presentar los objetos y las clases en los primeros capítulos hace-
mos que los esLUdianrcs de inmediato "piensen en objetos" y domi nen c.~tos conceptos [en los cursos
que requieren una metodología e n la que se p resenten los objetos en capítulos posteriores, le reco-
mendamos el libro java How to Program, Late Objects Version, 8 4 edition (en inglés), el cual presenta
en los primeros seis capitulo& los fundamentos de la programación (incluyendo dos sobre instruc-
ciones de control) y continúa con varios capítulos que introducen los conceptos de programación
orientada aobjeros en forma gradual].
• Mmujo de excepciot1e1. lncegramos el m:mejo básico de excepciones en los primeros capítulos del
libro; además los profesores pueden extraer con facilidad más material del capítulo l l , Manejo de
excepcio nes: un análisis más detallado, para mostrarlo con anticipación.
• Las clases Arrays y ArrayL1st. El capítulo 7 cubre la clase Arrays -que condene métodos para
realizar manipulaciones comunes de arreglos- y la clase ArrayLi st -que implementa una estruc-
tura de daros tipo arreglo, cuyo rnmaf\o se pu<t."Cle ajusrar en forma dindmicn. Esto va de acuerdo co n
nuestra 61osoBa de obtener mucha práctica a.1 utilizar las clases existentes, al tiempo qut el estudiante
aprmde a definir sus propia.r clases.
• Casos de estudio or/e,1tados a objetos (00). La presenraci6n de las clases y los objetos en los pri-
meros capltulos del libro aportan casos de estudio de Tiempo, Empleado y LibroCalificaciones,
que se entretejen a través varias secciones y cop!tulos, e introducen conceptos de 00 c.1da ve2 m~s
profundos.
Prefacio xxiii

• Ejemplo prácti-co opcional: uso de UML para desarrollar un diseño orientamJ a objetos y una
;mplemnitadón. n,Java dt1 u,i cajero a1'tomático (lfl'M). El UML™ (Lenguaje Un ificado de
Modefado1'M) es el lenguaje gr:Uico estándar en la industria para modelar sistem:1& orientados a ob-
jetos. Los capírulos 12 y 13 (en el sitio Web) contienen un Ejemplo práctico opeionalsobre disefio
orientado a objetos mediante el uso de UM L. Disefiamos e implementamos el sofrware para un
cajero autom:hico (ATM) simple. Anafüamos un documento de requerimientos típico, el cual espe-
cifica elsistemaque se va a construir. Determinamos las clases necesarias para implementar ese sistema,
los atributos que deben tener esas clases, los comportamientos que necesitan exhibir, y especificamos
aSmo deben interactuar las clases entre sí para cumplir con los requerimiento.~ del sistema. A partir
del disefio creamos una implementación completa en Java. A menudo los esmdiantes informan que
pasan por un "momento de revelación": el Ejemplo práctico les ayuda a "atar cabos" y comprender
en verdad la orientación a objetos.
• Se reordenó la pres,mtación de estructuras de eúuos. Empezamos con la clase genérica Ar rayl i st
en cl capítulo 7. Como los tstudiantes comprmderdn los co11uptos btbicos sobr11 los gmbicos m los pri-
meros capitulas del libro, nuestros análisis posteriores sobre las estructuras de datos ofrecen un trata-
miento más detallado de las colecciones de genéricos, puesto que ensefian a utilizar las colecciones
integradas de la AP[ de Java. Luego mostramos cómo implementar los métodos y las clases genéricas.
Por último, mostraremos cómo crear estructuras de datos genéricas personalizadas.

Desarrollo Web y de bases tÚ datos (material en i11glés m el sitio Web tÚ[ libro)
• JDBC 4. El capítulo 28, trata sobre JDBC 4; aquí se utilizan los sistemas de admin.iscración de bases
de datos Java DB/Apache Derby y MySQL. El capítulo contiene w1 Ejemplo práctico de 00 sobre
cómo desarrollar un a libreta de direcciones conrrol:.idn por una. base de datos; en este ejemplo se de-
muestran las instrucciones preparadas y el descubrimiento automático de controladores de JDBC 4.
• Java Server FMes (!SF) 2.0. Los capítulos 29 y 30 se actualizaron para introducir la recnologfa
JavaScrver Face.~ QSF) 2.0, que simplifica en gran medida la creación de aplicaciones Web con JSF.
El capitulo 29 presenta ejemplos sobre la creación de interfaces GUI de aplicaciones Web, la vali-
dación de formularios y el rastreo de sesiones. El capítulo 30 habla sobre las aplicaciones JSF con-
crobdas por datos y habilitadas para Ajnx. E.~te capítulo cuenta oo n una libreta de direcciones Web
multinivel controlada por una base de datos, la cual permite a los usuarios agregar contactos y bus-
carlos. Esta aplicación habilitada para Ajax proporciona al lector una sensación rca.1 del desarrollo
de sofrw:1re Web 2.0.
• Servicios Wéb. El capímlo 31 , Web Services, demuestra cómo crear y consumir servicios Web basa-
dos en SOAP y REST. Los Ejemplos prácticos prcse1uan el desnrrollo de los servicios Web del juego de
blackjack y un sistema de reservaciones de una acroUnea.
• Java \%b Starty el Protocolo de /anzaminito de red deJava (!NLP). Presentamos Java Web Start
y JNLP, que permiten lanzar applets y aplicaciones a través de un rrnvegador Web. Los usuarios
pueden instalar estos applets y aplicaciones en forma local para ejecutarlos después. Los progra-
mas también 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 m.ls robustas que so ejecuten
en forma segura mediante el modelo de seguridad de caja de arena (sandbox) de Java, el cual se
aplica al código descargado.

Multihiios(en ing/Jsm el sitio Wéb)


• Mrdtihilo1. Redisoflarnos por completo el capítulo 26, Multithrc.1ding [oon agradecimiento cspcci:tl
a la orientación de Brian Goetz y Joseph Bowbeer, dos de los coautores dejam Concurrmcy in Practi-
ct.', Addison-Wesley, 2006).

• La clase Swtngtlorker. Utilizamos la clase SwiingWorker para crear intwfacts de t1Juario mu/tihilos.
xxiv Prefacio

GUI y gráficos
• Prt11n1tació11 t11calabú dt1 GUI y gráfico,. ~ profesores que impartan cursos inuoductorios tie-
nen una amplia gama de d6nde elegir en cuanto a la cru1tidad de GUI y gclficos por cubrir: desde
cero hasta una secuencia introductoria de 10 secciones breves, las cuales se entre~n con los pd-
mcros capítulos hasta llegar a un an:ilisis dcrollado en los capítulos 14, 15 y 25 y en el a~ndice 1
(este último y el apéndice, en inglés en el sitio Web).
• Admi,iistrador de es1umllll CiroupLayout. Analizamos el administrador de esquemas GroupLayout
dentro del contexto de la herramienta de diseflo de G UI en el entorno de desarrollo integrado (]DE)
NetBeans.
• Herramín,tas de ordn,amín,to y filtrado d,11 JTab1 e. El capltulo 28 (en inglés en el sido Web) uti-
li:,,a estas herramientas para reordenar los datos en un objeto JTable y filtrarlos mediante expresio-
nes regulares.

Otras características
• A,,droid. Debido al enorme interés en los teléfonos inteligentes y tabletas basadas en Android, hemos
integ.rado una introducci6n de tres capítulos para el desarrollo de aplicaciones de Android (los encon-
trará en inglés en el sitio Web del libro). Estos cap/culos son de nuestro nuevo libro Androidfar Pro-
grammers: An App-Driven Approach de la strit D1itel Droeloptr. Una ve:z que aprenda Java, descubrirá
que es bastante simple desarrollar y ejecutar aplicaciones Android en el emLtlador gratuito que puede
descargar de developer .android.com.
• Omcepto1 crmmnu IÚ ingniíwla de softwar,11. Analiuunos el desarrollo ágil de software, la refuc-
torizaci6n, los patrones de diselio, LAMP, SaaS (Sofrware as a Service), PaaS (Platform as a Service),
la computaci6n en la nube, el software de c6digo abierto y muchos conceptos más.

Gráfico de dependencias
fJ grMico de b siguiente página muc.~tra lns dependencias entre los capírulos p:1ra ayudar a los profe-
sores a planear su programa de estudios. Cdmo programt1r m Java 9° editidn es un libro extenso, apro-
piado para una gran variedad de cursos de programaci6n eo distintos niveles, en especial CS 1 y
CS 2, ademá~ delas secuencias de cursos de introducci6n en disciplinas relacion:1das. El libro tiene una
organización modular, claramente delineada. Los cap/rulos 1 a 11 y 14 a 17 forman una secuencia de
programación elemental accesible, con una s61icla introducci6o a la programaci6n orienrada a objetos.
Los cnpfrulos opeionalts 12 y 13 constituyen una introducci6n accesible :il diselio orient:1do a obje-
10s con UML. Tanto la trayectoria de GUl y gráficos como los capítulos 14, 15, 23, 24 y 25 forman
una secuencia sustancial de GUI, gráficos y multimedia. Los capitulas 18 a 22 forman uoa excelente
cadena de esmacruras de dncos. Los capltulos 26 y 27 constituyen uno s6lida introducción a los con-
ceptos de multihilos y el trabajo en red a través de Internet. Los capítulos 28 a 31 forman una secuencia
enriquecida de desarrollo Web con uso intensivo de bases de datos.

Métodos de enseñanza
Olmo progrt1mar tn jt1vr19a edicid11 oonfienc cicnros de ejemplos funcionales completos. Hacemos hln-
rapié en la claridad de los programas y nos concentramos en crear software bien disefiado.
Preíacio xxv

Gráfico de 0 . _ntroducción
~•t
dependencias - - -... I lntroducdóna lascomput.adoras
j /(Opc¡ional) Trayectoria
de <iUI y 1r•flcos
3.8 Uso de cuadros de cUlogo
de capítulos ya Java
ymódulos .,- - +
4.14 Citación de dlbu/os simples
1Nota: las flechas que apuntan lnllvducci6n I la pn,pamaclón,
hacia un capitulo lncican las lasdases ylosobjetos +
5.10 Dibl.jo de te~ngulos
dependenciasde éste. 21nlroducci6nalasaplicacionmnJav.1 1--
yóValos
Algunoscapltulos llenen t
varias dependencias] . ) Introducción a lascbSts. objetos.
nitodosycadenas
t
6.13 Colores y ligur~ rellenas

Pro¡ramación
- t
,, Instrucciones de control,
~ +
7.1 ~ Dibujo dea1tos
orientada a objetos métodos y arreglos
+
8.16 Uso de objetos
8Clasesyobjetos: - -+-. 4 Instrucciones de conuol: Parte 1
un ,m411sls mb dmllado con gr,ficos
t
t 5 Instrucciones de control: Parte 2 +
9.8 Mostrartex1D e imágenes
9 Programación orientada
aobj etos: herencla t usando etiquetas
6 Métodos: un anál lsls mis detallado
+ t t
- '-10 Programación orientada 10.8 Realizar dibujos

.
aobjetos:pollmorfismo
,.. b7ArreglosyobjetosArraylist usando polimorfismo
'

11Manejod!e>ee,xlones-+r- -\c(,- - - - - - - - - ~ <iUI, 1r•flcos,


~ - A' -
lppletsy
multimedia
/ DiHiio orientado Cadenas y archivos
a objetos con UML ~ 14Componenttsde GUI: Parte 1
L.+-16Cadenas. caracteres y
12 (0,xional) Diseno orientado
aobjetos con UML
expresiones regulares +
15 Gráficos y Java20 -
1-+-- •. 17 Archivos. flujos y
t serializad6n de objetos 1..1--- 23Appletsand
13 (O¡xlonal) l"l)lementaci6n
de un diseno orientado aob/etos Java Web St¡trt'
~ - / Multihilo1 y redes +
~.._.; 24 Multimedia: Applets
/ Estructuras de datos andAppllcations
18 Re~ursavidad' 2íí Multith1tadlng'
27 Ne\'worklng' +
+ 2S GUI Components: -
P.11t2 ~
19 Búsqueda.
oofenamiento y 81g O
+ /Dlaeiio de 1plic1cione1
2. El capítulo 26depende del capítulo 14
:.!>GenencCollections - ~ ,_ de escritorio y Web
t controladas por bases para la GUI que se utiliza en un ejemplo
yde los capítulos 20·2 1para otro
de datos ejemplo.
21 Ceneric Classes 1nd Methods
l8JDBC' _ _ _.., 3. El capítulo 27dependedel capítulo 23
t 19 JSF Web Apps: Pan: 1 para un ejemplo que utiliza un applet.
21 Custom Generic
Data Struetures + El ijemplo práctico extenso (en Web)
30JSFWeb Apps: Part 2 - depende del capitulo 2S para la GUI
y del capítulo 26 para los multihilos.
1
1. El capítulo 18 depende de los , 4. El capítulo 28dependedel capítulo 14
cap~ulos 14Y ISpara la GUI 31 Web Services para la GUI que se udllza en un ejemplo
y los gr~fioos que se utilizan Hn loscapltulos 24 y27se cubien más
en un ejemplo. applets.
xxvi Prefacio

Resaltam> de código. Colocamos rectángulos de color gris alrededor de los segmentos de código clave
en cada programa.
Uso de fae,ites para dar énfasis. Resaltamos en negritas, dentro del texto, y en el índice, los térmi-
nos clave en los lugares donde se defi ne. Enfatizamos los componentes en pantalla en la fuente Helvetica
en negritas (por ejemplo, el menú Archivo) y enfatizamos el rex.to del programa en la fuente Lucida
(por ejemplo, int x = 5; ).
Acceso Wéb. Todo el código fi.aenre utilizado en este libro se puede descargar de:

Capítu1os2 a 19 (en espafiol): WIWl . pearsonenespaflol .com/deitel


Capfrulos2 a3 l (en inglés): www .dei tel .com/books/jhtp9

Objetivos. Las citas de apertura van seguidas de una lisra de objetivos del capfrulo.
Owtracioneslfiguras. lntegramos una gran cantidad de tablas, dibujos lineales, diagramas UML, pro-
gramas y salidas de programa.
1ips de programación. Incluimos tips de programación para ayudarle a enfocarse en los aspectos im-
portantes del desarrollo de programas. Estos tips y prácticas representan lo mejor que hemos podido
recabar a lo largo de siete décadas combinadas de experiencia en la programación y la enseñan;,,a.

Buenas prácticas de programación


Las Buenas prácticas do progmmación 10n tlmiem IJl<t k ay11dará11 a prodr,cir progra-
ma, máJ claros, comprmsibks yJiú:iks de mammer.

Errores comunes de programación


Alponer autu:ión mestos Errores comunes de programación se reduce la probabilidad
de q1t11 11sudptt11do ca~r 111111/101.

Tips para prevenir errores


Es1os rlps co111h11e11 111gtrt111da1 parti exponer los errores o gusa1101 informáticos y eüml-
narlos de sus programas; muchos de ellos d,m:ribm aspec/Vs de Java que evitan que en-
tmn siquüra a sus programas.

Tips de rendimiento
Estos r11ettndros re11,/11111 las opornmidades para hamo qu11 sus programas se ej11c111e,, máJ
rápido o para mlnimfrar la camidad de memlJT'ia que ocupan.

11pi de portabilidad
Los Ttps de portabilidad k ayttdan a esaibir código que pueda ejeeul'4rse t11 varia,
plataformas.

Observaciones de ingeniería de software


Las Observncioncs de ingcnic:fa de sofrwnrc resa/11111 temaJ de arq11ittrt11ra y dis,flo, lo
tualaftNa la co11struaüJ11 de los sisfemas de sofouart, especialm11nt11101 de gra11 escala.

Observaciones de apariencia visual


Las Observaciones de apariencia visual rtsalta11 las convem:iones de la imerfe gráfica
L-3.-:..J de t#Uario. AdemáJ, k ayudan a diseñar interfaces gráfica, de usuario atrat:tivaJ y amigrt-
b/11s 1111 conformidad co11 las normas d11 la i11d1111ril1.
Prefacio xxvii

Viñetas de resumen. Presentamos un resumen <lerallado del capírulo, estilo lista con vifietas, secci6n
por secci6n. Para fucllitar la referencia, incluimos dentro del tcxro el número de página donde nparecen
los términos clave.
Ejerdcios de autoevalum:ión y respuestas. Se proveen diversos ejercicios de autoevaluaci6n con sus
respuesras para que los cscudiantcs practiquen por su cuemn. Todos los ejercicios en el Ejemplo práctico
opcional sobre elATM esdn resueltos en su total!idad.
Ejerci,io1. Los ejercicios de los capítulos abarcan.:
• Recordatorio simple de la terminologla y los conceptos importantes.
• ¿Cuál es el error en este c6digo?
• ¿Qué haccesre c6digo?
• Escritura de instrucciones individuales y pequelias porciones de métodos y clases.
• .Escritura de mérodos, clases y programas completos.
• Proyectos importantes.
• En muchos capítulos, ejercicios del tipo Hacer la diferencia.
Ínáiu. Incluimos un Indice extenso. Donde se definen los términos e.lave se resaltan con un número
de página en negritas.

Software utilizado en Cómo programar en Java 9 11 edición


Podrá descargar todo el software necesario paro e.~tc libro sin cosro a través de Web. En la secci6n "Antes
de cmpeuir", después de este Pre&cio, encontrar:i v/nculos para cada descarga.
Para escribir la mayor/a de los ejemplos de este libro utilizamos el kit de desarrolJo gratuito Java
Standard Edition Development Kit QDK) 6. Para los m6dulos opcionales de Java SE 7 utilizamos la
,crsi6n JDK 7 de acceso :mricipado de OpenJDK. En los capfrulos 29 a 31 rambién utili1.amos el IDE
Netbeans; en el capitulo 28 usarnos MySQL y MySQL Connector/J. Encontrará recursos y descargas
de software adicionales en nuestros Centros de recursos de Java, ubicados en:
WIWl.deitel.com/ResourceCenters .html

Suplementos para el profesor (en ingtés)


Los siguientes suplmtentos estdn dispombks sdlo para profesores a través del Cenero de recursos para el pro-
lcsor de Pearson (www . pearsonenespallo1 . com/ de1 te1):
• Diapositivas de PowerPoiné'> ron todo el c6digo y las figuras del texto, además de elementos
en vi fieras que sinrecizan los puntos clave.
• 'ltst Jte,,i File (Archivo de prueba,) oon preguntas de opci6n múltiple (aproximadamente
dos por cada secci6n del libro).
• Manual desolut:iones con soluciones p.".Vo l:i gran mayor/a de los ejercicios de final de c:iplrulo .
.FJ rur.e.w, a esto.• recur=• e.•tá limitado e.ttrictamente a profesores universitario.• que impartan cla-
ses con base en el libro. S61o ellos pueden obtener acceso a través de los representantes de Pearson.
No se proveen solucloncs po.ra los ejercicios d e 'proyectos''. Revise nuestro Centro de recursos de
proyectos de programaci6n (www . dei te1 . com/P rogranmi ngProjects/), en donde encontrará muchos
ejercicios adicionales y proyecros nuevos.
Si no es un miembro docente registrado, p6ngasc en contacto con su representante de Pea.rson.
xxvili Prefacio

Reconocimientos
Qicrcmos agradecer 11 Abbcy Dei tcl y Barba.ro Dcitcl por lll..~ exrcn.~as horos que dcdic1ron a este proyecto.
Somos afortunados al haber trabajado en este proyecto con el dedicado equipo de editores profesionales
de Pearson. Apreciamos la orientación, inteligencia y energía de Michae.l Hirsch, editor en jefe de Cien-
das compumcionales. C.'U'ole Snydcr rcclur6 a los revisores del libro ysc hizo c.'U'go del proceso de revisión.
Bob .Engelhardtse hiz.o cargo de la producción del libro.

Revisoru
Queremos agradecer los esfuel"l.OS de los revisores de la octava y novena ediciones, quienes revisaron ex-
h:mstivamente el ICXto y los programas, y proporcionaron innumerables sugerencias paro mejorar la
presentación: LanccAndersen (Oracle), Soundararajan Angusamy (Sun Micro.systcn1.~). Joseph Bowbeer
(Consultor), William E. Duncan (LouisianaState Univc1Sity), Diana Franklin (Universiry ofCaliforrua,
Santa Barbara), Edward F. Gehringer {North Carolina Stace Universiry), Huiwei Guan (Northshore
Communiry College), Ric Heishman (Geo rge Mason Universiry), Dr. Heinz Kabun UavaSpecialists.
cu), Patry Kraft (San Diego State University), Lawrence Premkumar (Sun Microsystems), Tim Margush
(Universiry of Akron), Sue McFarland Meizger (Villanova University), Shyamal Mitro (The University
ofTcxas at Austin), Peter Pilgrim (Consultor), Manjeet Rege, Ph.D. (Rochester lnsúcute ofTechno-
logy), Manfred Riem Qava Champion, Consultor, Robert Half), Simon Ritter (Oracle), Susan Rodger
(Duke University), Amr Sabry (Indiana University), José Antonio GonzálC'l. Seco (Parlamento de
Andalucfa), Sang Shin (Sun Microsystems), S. Sivakumar (Astro lnfotech Private Limited), Raghavan
"Rags" Sriruvas (Intuit), Monica Sweac (Georgia Tech), Vinod Varma (Astra lnfotech Prívate Limiced)
y Alexander Zuev (Sun Microsystems).
Bueno, ¡ahí lo tiene! A medida que lea el libro,apreciaremos con sinceridad sus comentarios, críticas,
correcciones y sugerencias para mejorarlo. Dirija toda su correspondencia a:

deitel@deitel.com
Le responderemos oportunamente. Esperamos que dis&ute el trabajo con este libro. ¡Buena suerte!
Pauly Harvry Deiul

Acerca de los autores


Paul J. Deitel, CEO y Director Técni co de Dcitel & Associates, lnc., es egresado del Sloan School
of Management del MIT, en donde estudió Tecnologla de la Información. A través de Deitel & Asso-
ciates, Tnc., ha impartido cursos de Java, C, C++, C#, Visual B:isic y programación en Tntcrnet a clientes
de la industria, como: Cisco, 18.M, Siemens, Sun Microsystems, DeU, Luccnt Technologies, Fidelity,
NASA en el Centro Espacial Kenncdy, el Nacional Severe Storm Laboratory, White Sands Missile
lt-tnge, Rogue Wave Software, Boeing, Sun Gard Higher Educarion, Str:m1s, C:1mbridge Technology
Partners, O ne Wavc, Hyperion Software, Adra Systems, Entcrgy, CableData Systems, Nom:I Nerworks,
Puma, iRobot, Invensys y muchos más . .111 y su coautor, el Dr. Harvey M. Dcitel, son autores de los li-
bros de programación m:fa vendidos en el mundo.
Dr. Harvey M. Deitel, Presidente y Consejero de Estrategia de Deitel & Associates, Jnc., tiene 50
afias de experiencia en el campo de la computad!ón . .El Dr. Deitel obtuvo una licenciarura y una maes-
tría por el MTT y un doctorado de la Universidad de Boston. Tiene muchos años de experiencia como
profesor universitario, la cual incluye un puesto vitalicio y el haber sido presidemc del Departamento
de Ciencias de la Computación en Boston College antes de fundar, con su hijo Paul J. Dei te!, Dcitel &
Associntcs, Jnc . .111y Paul son coaurores de varias docenas de libros y pnqucccs multimedia Livelessons,
y piensan escribir muchos mis. Los textos de los D citel se han ganado el reconocimiento internacional y
han sido traducidos aJ japonés, alemán, ruso, chino, espafiol, coreano, francés, polaco, italiano, portu-
gués, griego, urd ú y turco. El Dr. Dciccl ho impartido ciemos de seminarios profesionales para grandes
empresas, instituciones académicas, organi:iacioncs gubernamentales y diversos sectores del ejército.
Prefacio xxlx

Capacitación corporativa de Deitel & Associates, lnc.


Dcitel & Associatcs, ln c., es una empresa reconocida a nivel mundi:11, dcdic.'\da al entrenamiento cor-
porativo y la creación de contenido. La empresa proporciona cursos impartidos por profesores en las
instalaciones de sus clientes en todo el mundo , sobre la mayada de los lenguajes y plataformas de
programación, co mo JavaTM, C++, Visual Colll, C, Visual C#"', Visual Basic•, XML•, Pychon•, tCC·
nologfa de objetos, programación en Internet y Wodd Wide Web, desarrollo de aplicaciones para
AndroidTh1 e iPhone®, y una Lista cada ve,. mayor de cursos adicionales de programación y desarrollo
de software. Los fundadores de Deicel & Assocl::ices, !ne. son Paul J. Deitel y el Dr. Harvey M. Dei tel.
Entre sus clientes escln muchas de las empresas más grandes del mundo, agencias gubernamentales,
sectores del ejército e instituciones académicas. A lo largo de su sociedad editorial de 35 años con
Prentice Hall/Pearso n, Deitel & As/iOciates, ln c. ha publicado lib ros de texto de vanguardia sobre
programación, libros profesionales, y cursos de video J).velessons con base en DVD y Web. Puede
contactarse con Deitel & Associates, !ne. y con los autores por medio de correo electrónico:

deitel@deitel.com

Para conocer más acerca de Deitel & Associates, Inc., sus publicaciones y su curr.lculum mundial de
h Serie de Cap:1cit:1ción Corporativa Divt: lmo"', 'Visite:

wv.w.deitel.com/training/

ysuscr!base al boleán gratuito de correo electrónico, Dt:ittl"' B1we 011/ine, en:

wv.w.deitel.com/newsletter/subscribe.html
Además puedeseguiralosaurorcscn Facebook(www.deitel.com/deitelfan)yTwitter (Gdeitel).
&ta sección contiene información que dcberfo revisar antes de usar este libro, adeni:is de las instruc-
ciones para asegurar que su computadora esté configurada de manera apropiada para ucili7.arla con
el 1.ibro. Publicaremos las actualiz.aciones a la seoción "Antes de empezar" (en caso de necesitarse) en el
siguiente sitio Web:
www.deitel.com/books/jhtp9/

Convenciones de fuentes y nomenclatura


UtiliUUT1os fuentes para diferenciar los componentes en La pantalla (como Los nombres de menús y sus
elementos) y el código o los comandos en Javo. Nuestra convención hace hincapié en los componentes
en pan ralla en u na fuente Helvetlca sans-serif en negritas (por ejemplo, el menú Archivo) y enfutiza el
oodigo y los comandos en Java en una fuente Lucidasans-serif (por ejemplo, System. out.println()).

Software a utilizar con el libro


Podd descargar todo el software necesario para este libro sin cosro a través de Web.

Kit tk desarrollo tk software }lllla SE ODK) 6 y 7


Para escribir L'l mayor/a de los ejemplos de este libro manejamos el lcit de d=rollo gratuito Java Sran-
dlrd Edition Devclopmenr Kit 0DK) 6, que e.,;r:i disponible en:
www .o racl e. com/technetwork/java/javase/down loads/i ndex. html
Para los módulos opcionales de java SE 7, empleamos 1:1 versión JDK 7 de acceso anticipado de Open·
JDK, que e.mi disponible en:
dlc.sun.com.edgesuite.net/jdk7/binaries-/index . htm1

Java DB, MySQLy MySQL Connectorl]


En el capítulo 28 (en inglé.~ en el sitio Web del libro) utilizamos los sistemas de adminisrración de
bases de datos Java DB y MySQL Community Edition. Java DB es parte de la instalación del JDK.
AJ momenro de escribir este libro el instalador de 64 bits delJDK no instalaba Java DB en forma apro-
pindn. Si usted miliz.1 la versión de 64 bits de J:1v:1, mi ve,, necesite instoJar Java DB por separado. Puede
descargar JavaDB de:
www.oracle.com/technetwo rk/java/javadb/downloads/i ndex.html
Al momento de escribir este libro, la versión m:is reciente de MySQL Community Edition era
la 5.5.8. Para instalar MySQL Community Edition en Wrndows, Linux o Mac OS X, consulte las ge-
neralidndcs sobre la instruación para su placaforma en:
• Windows: dev.mysql.com/doc/refman/5.S/en/windows- installation.html
• Linux: dev .mysql. com/doc/refman/5. 5/en/linux-i ns tal 1 ation-rpm. html
• Mac OS X: dev .mysql. com/doc/refman/5. 5/en/macosx-installation .htrnl
xxxii Antes de empezar

Siga con cuidado las instrucciones para descargar e instalar el software en su plataforma, el cual está dis-
ponible en:

dev.mysql.com/downloads/mysql /

También necesita insr:ilnr el MySQ.L Conncctor/J (In Jse refiere :1. J:1va), que permite a los progra-
mas usar JDBC para interactuar con MySQL. Puede descargar el MySQL Counector/J de

dev.mysql.com/downloads/connector/j/

Al momento de escribir este libro, la versión disponible de MySQL Connector/J era la 5.1. 14. La do-
cumentación de Connector/J se encuentra en

dev.mysql.com/doc/refman/5 .5/en/connector-j.html

Pa.rn insrnfar MySQL Conncccor/J ,siga con cuidado los instrucciones de ins mL,ción en:

dev.mysq1.com/doc/ refman/5 .5/en/connector- j -1 nstalling.htm1

No le recomendamos mod ific.1.r la variab le de entorno CLASSPATH de su sistema, según se indica en las
instruccio nes de instalació n. En cambio le ensefiaremos a usar MySQL Co nnector/J especificándolo
oomo una opción en la linea d e comandos al ejecutar sus aplicaciones.

C.ómo obtener los ejemplos de código


Los códigos de los ejemplos d e este libro esr:ín di spo nibles para descargarlos en

www.pearsonenespaftol.com/ de1te1

S no está registrado aún en nuestro sitio Web (d.e los autores), vaya a ww,;. de1tel. comy haga clic en el
vínculo Reglster d ebajo de nuestro logotipo en la esquina superior izquierda d e la página. Escriba su
información. El registro no tiene ningún costo y no compartiremos su información con nadie. Sólo le
enviaremos correos electró ni cos relacionados con In administració n de su cuenta. Tan1bi.!n puede regis-
trarse de manera independiente para recibir nuestro boletín gratuito de correo electrónico Deitel~ Buzz
Onli,ie en ww,;. de1 tel . com/newsletter/subscr ibe. html. Una vez que se registre en el sitio, reci birá
un correo electrónico de confirmación co n su código d e verificación. Hagll clic en el vinculo del correo
tkctrimico de conftrmacídn para compl.etar su rtgútro. Configure su cliente de correo electrónico de modo
que permita los correos electrónicos provenientes de de1 tel .com, para asegu rar qu e el correo electró-
nico de oonfirmación no se filtre como co rreo basura.
Después vaya a w,;w.deitel. come inicie sesión usando el vínculo Login debajo de nuestro logo-
tipo en la c.~quina superior izquierda d e la página. Vaya awww.deitel.com/books/jhtp9. Encontrará
el vínculo para descargar los ejemplos bajo el encabezado Oownload Code Ex.amplea and Other Premlum
Content for Reglstered Users (Descargar ejemplos de código y contenido especial adicional para usuarios
registrados). Anote la ubicación en do nde eligió guardar el archivo ZfP en su co mputadora.
E n este libro suponemos que los ejemplos se.encuentran en el directorio C:\Ejemp los desu oompu-
radora. Extraiga el contenido del archivo Ejemplos .zip; utilice una herramienta como WinZip
(ww,;. winzi p. com) o las herramientas integradas d e su sistema operativo.

C.ómo establecer la variable de entorno PATH


la variable de entorno PATH en su compu tadora d esigna los directorios en los que la computadora debe
buscar aplicaciones, como las que le permiten compilar y ejecutar sus aplicaciones de Java (las cuales son
j ava e y java, respectivamente). Siga co11cuidado /ns imtr11ccio11es de i,utnlncitir1 para jaVl1 mm pln1aform11,
de modo qtu st 1u1g11re de tstab!tctr de manera correctll la tlflrit,bk de entorno PA TH.
Antes de empezar xxxiii

Si no establece la variable PATH de manera correcta, cuando utilice las herramientas del JDK reci-
birá un mensaje como éste:

'java' no se reconoce como un comando interno o externo, programa o


archivo por lotes ejecutable .

.En este caso, regrese a las instrucciones de instalación para establecer la variable PATH y vuelva a com-
probar sus pasos. Si descargó una versión más reciente del JDK. tal vez tenga que cambiar el nombre
del directorio de instalación del JDK en la variable PATH.

Cómo establecer la variable de entorno CLASSPATH


Si intenta ejecutar un programa de Java y recibe un mensaje como éste:

Exception in thread "ma1n" java.1 ang. NoClassDefFoundError: SuC/ast

entonces su sistema tiene una variable de entorno CLASSPATH que debe mocüficar. Para corregir este
error, siga los pasos para establecer la variable de entorno PATH, localice la variable CLASSPATH y modifi-
que su valor para que incluya el directorio local: que por lo genera l se representa como un punto(.).
En Windows agregue

• 1

al principio del valor de CLASSPATH (sin espacios antes o después 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 d~ puntos (: ).

Apariencia visual Nimbus de Java


Java tiene una apariencia visual multiplataforma elegante, conocida como Nimbus. En los programas
con interfu gráfica de usuario, hemos configurado nuestros sistemas para usar Nimbus como la apa-
riencia visual prederermin:tda.
Para establecer Nimbus como la opción predeterminada para todas las aplicaciones de Java, debe
crear un archivo de tcx:to llamado swing.properties en la carpeta 1ib de las carpetas de instalación
del JDK y del JRE. Coloq ue 1:i siguiente !!nea de <:6digo en el archivo:

swing . defau1tlaf,,,com. sun.java . swing . p1af.nimbus.NimbuslookAndFeel

Poro obtener m:is información sobre <:6mo localizar est:JS C.'lrpetos de instalación, visite java. sun. com/
javase/6/webnotes/install /index .html. [No-ta: además del JRE incüvidual hay un JRE anidado en
su carpeta de instalación del JDK. Si utiliza un TDE que depende del JDK (como NccBeans), tal v,a.
también tenga que coloc.'lr el archivo sw1 ng. p ropert1 es en la carpera 11 b de L1 carpeta j re nnidndn].

Ahora está listo para empei-.ar sus estudios de Java con el libro Cdmo programar tm Java, 9 11 edfridri.
¡Esperamos que disfrur.e el libro!
Introducción a las computadoras
y a Java
El lxmwn sigue sinulo
la computadora más
tJXtraordimlria de todas.
-John R Kennedy

U,, bumdist!lío es111i bum


mrgocio.
- T homuJ . Wauon, fundodorde IBM

QµI maravilloso 11s qu1111adit1


1111cesi111 espt!rar ttn soÚJ momtmto
para nnpezar a mejorar el m1111do.
-Annc Fn1.nk

Objetivos
En este capítulo aprenderá sobre:
• Los emocionantes y recientes
acontecimientos en el campo
de las computadoras.
• Los conceptos básicos de
hardware. software y redes.
• La jerarquía de datos.
• Los distintos tipos de lenguajes
de programación.
• Los conceptos básicos de la
tecnología de objetos.
• La importancia de Internet
yde la Web.
• Un típico entorno de desarrollo
de programas en Java.
• Cómo probar una aplicación
en Java.
• Algunas de las recientes
tecnologías clave de software.
• La forma en que las
computadoras le pueden
ayudar a hacer una diferencia.
2 Capítulo I Introducción a las computadoras y a Java

-ctS
1.-
Q)
1. 1
1.2
Introducción
Computadoras: hardware y software
1.9

1.10
Java y un típico entorno de desarrollo
en Java
Prueba de una aplicación en Java
1.3 Jerarquía de datos
e: 1.4 Organización de una computadora
1.11 Web 2.0: Las redes sociales
Q) 1.12 Tecnologías de software
I.S Lenguajes máquina. lenguajes ensambladores
C) y lenguajes de alto nivel 1.13 Cómo estar al dia con las tecnologías
e: 1.6 Introducción a la tecnología de los objetos
de información

-c.. 1.14 Conclusión


ctS 1.7 Sistemas operativos
1.8 Lenguajes de programación

"' EJeiciclos de autoevaluación I Respuestas a losefeiciclos deautoe1JC1luacl6n I EJeiciclos I Maroo.rla diferencia 1


Recursos poro. maroo.r lo diferencio

1.1 Introducción
Bienvenido a Java: el lenguaje de programación de computadoras más utilizado en el mundo. Usted ya
est:l. f.uniliarizado con las poderosas tareas que realizan las computadoras. Mediante este libro de texto,
usted escribir.! instrucciones para ordenara las computadoras que realicen esos tipos de rareas. El wftwart
(las instrucciones que usted escribe) cont rola el h.rlrdwart('w compurndoras).
Aprenderá. sobre La programación orientada a objetos: la metodología de programación clave de la
actualidad. En este tex.to creará y trabajará con muchos objetos dt soflwart.
Java es el lenguaje preferido paro.satisfacer las: necesidades de programación empresariales de muchas
organizaciones. También se ha convertido en el lenguaje de elección para implementar aplicaciones ba-
sadas en Tnrernet y software para dispositivos que se comunican a través de una red.
Hoy en dla hay en uso más de mil millones de computadoras de propósito general, además de miles
de millones de teléfonos celulares, teléfonos inteligentes (srnartphones) y dispositivos porrá.tiles (como
las compuradoras cipo tableta) habilitados para Java. De acuerdo con un estudio reali7.ado poreMarkerer,
el número de usuarioo móviles de Internet llegar:l a cerca de 134 mil.Iones p:tra 2013. 1 Otros estudios han
proyectado ventas de teléfonos inteligentes que sobrepasa a las ventas de computadoras personales en
20 1l 2 y ventas de rablcta.s que representarán cerca del 20% de codas las ventas de computadoras persona-
les para 2015.' P:ua2014, se espera quecl mercado de las aplicaciones de teléfonos inr.cligentcsexceda los
$40 mil millones,~ lo cual generara oportunidades importantes para la programación de aplicaciones
móviles.

Edú:i<mes de Java: SE, EEy ME


Java ha evolucionado con tanta rapidez que esta novena edición de Cómo programtJr m jaVtJ - basada
en Java Standard Ed.ition 6 (JavaSE6) con módulos opcionales sobre las nuevas características de Java
SE 7 -se publicó sólo 15 afios después de la primera edición. Java se utiliza en un espectro tan amplio
de aplicaciones, que cuenra con otras dos cdiciomies. Javn F.ntcrprlse Edition (Java EE) estd oricmada
hacia el desarrollo de aplicaciones de red distribuidas, de gran escala, y aplicaciones basadada en Web.

1 www.circleid.com/posts/mobile_interneLusers_to_reachJ34_mi11ion by-2013/.
2 www.pcworld.com/art1c1e/l71380/more smartpho nes_tha"-desktop_pcs_by_2011. htlll .
3 www.forrester.C0ffl/ER/Press/Release/0,1?69,1340,00.htm1.
4 !11c. dicicmbrcdo2010/cucrodc2011, p:igioas 116-123.
1.1 Introducción 3

En el pasado, la mayoría de las aplicaciones de computadora se ejecutaban en computadoras "indepen-


dientes" (que no estaban conecradas en red). En la acrualidad, las aplicaciones se pueden escribir con
miras a comunicn.rse entre compumdoras en todo el mundo por medio de Internet y Web. Más adelante
en este libro hablaremos sobre c6mo crear dichas aplicaciones basadas en Web con Java.
Java Micro .Edition (Java ME) cst:i orientada hacia el desarrollo d e aplicaciones para pequeños
dispositivos con memoria restringida, como los teléfonos inteligentes BlackBcrry. El si.nema operativo
Android de Google -<¡ue se utiliza en muchos teléfonos inceligences, tabletas (pequeñas computadoras
figerJS y móviles con pantallas roctiles), lectores clecu6nicos y orros dispositivos- utiliza una versión
personalizada de java que no se basa en Java ME.

La complltación en la indllsh·ia y la inv~ttigación


&ros son tiempos emocionantes en el campo de la computación. Muchas de las empresas má~ inAuyen-
teS y exitosas de las últimas dos décadas son compañ/as de tecnología, como Apple, IBM, Hewlett
Packard, Ocll, 1nccl, Mo to rola, Cisco, Microsoft, Googlo, Amaron, Facebook, 'ñvitter, Groupon, Fours-
quare, Yahoo!, cBay y muchas más; que son fuentes de empleo importantes para las personas que estudian
ciencia.~ computacionales, sistemas de información o disciplinas relacionadas. Al momento de escribir
este libro, Appie ero. la segunda co mpafifa más valiosa del mundo, con In tecnolog/a más preciada.,
L1s computadoras también se utilizan mucho en la investigació n académica e industrial. La figura l.J
provee unos cuantos ejemplos de las incre/bles formas en que se uti lizan las computadoras, tanto en
b invescigaci6n co mo en la industria.

Internet lntcrncr - w,a red global de computadoms- se hizo posible gmciasa la


am11ergmcia dt la comp11tacid11y las com1mirat:io11es. Tiene sus mices en
la década de 1960; su pntrocinio estuvo n cnrso del Departamento de Defensa
de Estados Unidos. Disel\ada en un principio para conccrar los sistemas de
cómputo principales de alrededor de una docena de uni vcrsidades y organiza-
ciones de investig:¡ci6n, en In nctunlidnd son miles de millones de compu-
mdorM y dispositivos conuolados por compucadom en todo el mundo los que
utilizan lntemet. Las computadoras descomponen las extensas transmisiones
en pnqucrcs en el cxrrcmo emisor, envfnn los paquetes n los receptores
dcsilnndos ynscgumn que se reciban en secuencio y sin errores en el extremo
rcceptot De acuerdo con un estudio de Forrester Rescarch, el consumidor
estadounidense promedio invierte en la acruafüfad la misma cantidad de
tiempo en llncn que el que pas:i en la televisión (forres ter ,COffl/rb/
Research/ understand1ng_chang1ng_needs_of_us_on11ne_consumer/g/
id/57861/t/2).
Proyecto El J>royccto Gcnomn Humn no se fundó pnm ldcn ciflcar y 11nnli1,nr los mds
Genoma de 20,000 genes en clADN hwnano. El proyecto utilizó programas de
Humano computadom parn analiz.1rcfacos gent!ticos complejos, determinar las
secuenci:u de los miles de millones de pares de bases qulmi01s que componen
clADN hwnnno y almacenar la infonnaci6n en bases de daros que se han
puesco a disposición de los investigadores en muchos campos. Esta investiga-
ción hn omsionndo unn tremenda lnnovncl6n yc,'CCimicnroen In indusrrin
de la biotccnolog!a.

Fig. 1.1 1 Unos cuantos usos para las computadoras (parte I de 3).

5 www.zdnet. c0ffl/blog/apple/apple-bec0111es -worlds- second-most-valuable - c0fflpany/9047.


4 Capítulo I Introducción a las computadoras y a Java

Red de la Comunidad La Red dela Comunidad Mw1dial (w...... worldconnun1 tygr1d.org) es una
Mundial red de compumción sin fines de lucro. Las personas de todo el mundo donan
el poder do p1'0cesnmicnto de oómpuro que no utilicen, mediante la
insm.lación de un programa de software seguro gratuito que petmicca b Red
de la Comunidad Mundial aprovechar ese poder sobrante cuando las
00mpuradoms están innccivas, El poder de cómpuro se utiliza en lugar de las
supcrcomputadoras paro realizar proyectos de investigación cienrfficosquc
están haciendo la diferencia, entre ellos: el desarrollo de energía solara un
precio asequible, el suministro de agua potable al mundo en desarrollo, la
lucha 00ntm el alnccr, b cura de la distrofia mtL'iCulnr, el h.1llnzgo de
medicamentos nntivirales contra l.a influenza, el cultivo de arroz más
nutritivo para las regiones que combaten la hambruna youos más.

Imágenes para Lascxplomcionesportomogmffo 00mputari7.ada (Cf) 00n rayos X. también


diagnóstico médico conocidas como CAT (tomografía rucia! comput:ariwda), toman rayos X del
cuerpo desde cientos de fogulos distintos. Se utilizan computadoras para
ajustar la intensidad del rayo X, con lo cual se optimiza la exploración pam
cada tipo de tejido, para después combinar toda la información y crear una
imagen tridimensional (30),
GPS Los dispositivos con Sistema de posicionamiento global (GPS) utilizan una
red de s:m!lites para obtener información con base en la ubicación. Varios
satélites envían señales con etiqueras de tiempo al dispositivo GPS, el cual
calcula In distancia hacia cada sarélire con bnsc en L1 hora en que la scllnl salió
del sattlire yse recibió. La ubicación dec:1da satélite y b distancia hacia cada
w10 de dios se utilizan para determinar la ubimción exaaa del dispositivo.
Según la ubicación en la que usted se encuentre, los disposirivos GPS pueden
proveer indicaciones pnso n paoo, nyudnrle n cncontrar00n fncilldnd negocio~
cercanos (restauran ces, gasolineras, etcétera) y puntos de interés, o ayudarle a
encontrar a sus amigos.
SYNC"' de M icrosoíc Ahora muchos aucos Ford cuentan 0011 la recnologlo SYNCdc Microsoft, la
cual provee mpacidades de reconocimiento y sín resis de voz (para leer
mens:1jcs de texto a los pasajeros) que le permiten us.~rcomnndos de voz pom
explorar música, solicicorn lcrras de ttáfico yoi1:1s00sas más.
AMBERTM Alcrr El Sistema dealermAMBER (Desaparecidos en América: Sistema de
Thlnsmisión de Respuesta n Emcrgcncins) sc miliio pnra buscnr nillos
secuestrados. Las autoridades notifican ron to a las dlfusoras de TV y rodio
como a los funcionarios decarretems estatales, quienes a su vez transmiten
:tlcrta.~ en TV, radio, señales com put.~riiodas en lns carreteras, In remct y los
dispositivos inaldmbricos. AMBER Alcrcscasoci6 1-ecicnrcmentc00n
Facebook. Cuyos usuarios pueden hacer clic en "Like" ("Me gusta") en las
páginas de AMBERAlerc seglln la ubicación, pam recibir nlcrtas en sus
ll'Onsmisioncs de noticias.
Robo~ Los robo~ son m:lq~ compurari1adas que pueden reaJi2ar rareas (como:
ll'llbnjos ftsicos), responder a los csdmulos y otra~ cosn.~ m:I.~. Se pueden utili7N
pnni mreatdiariM (por ejemplo, ln MpimdomRoombndc iR.obot), de entreteni-
miento (como las mascotas robóticas), combace milirar, exploración espacial y
en la profundidad del océlno, mnnufacrum y otras m:I.~. En 2004, el rrommun.
dos marciano de In NASA a 00110'01remoto -que utilizaba cccnologfa Jnvn.-cx•
ploró la superficie para aprender sobre la historia del agua en el plancra.

Fig. 1. 1 1 Unos cuantos usos para las compu~doras (parte 2 de 3).


1.2 Computadoras: hardware y software 5

Una laptop por niño Una Laprop Por Niño (OLPC) ofrece laptops eronómicas, habilitadas para
(OLPC) In temer yde bajo con.rnmo de energía para los nifios pobres en codo el
mundo; gracias n ello fomcntnn el nprcndimjcy reducen la scpnmción digital
(one. laptop.org). AJ proveer estos recursos educativos, OLPCaumcntn las
oportunidades de que los niños pobres aprendan y hagan la diferencia en sus
oomunidndes.

Programación El negocio de los juegos de computadora es más grande que el de las


de juegos pellcufas de estreno. El. desarTOllo de los videojuegos mis sofisticados puede
costnr hasm $100 miliones. .El Juego Calt of.Dmy2: Modem Warfore de
Activision, lanzado al público en noviembre de 2009, obruvo $310 millones
en sólo u.n dla en Norteaméric.1 yel Reino Unido (news.cnet.coro/8301-
1377L3- 10396593- 52. htnt1?tag.111nco1 ;txt)I Los j11egos sociales en linea,
que permiten a usuarios de todo el mundo competir entre si, cscin crecien-
do con rapidez. Zynga -<:reador de juegos en linea populares, como
Parmvi/Jey Mafia \Wlr.P-sc fundó en 2007 yyn cuenta con mnsde 215
millones de usuarios mensuales. Pnm dar cabida n.l numen ro en el tráfico,
¡Zynga agrega casi 1,000 servidores por semana (techcrunch.
com/2010/09/22/zynga- 1110ves-l - petabyte-of-data-daily-adds-
lOOO· servers-a· week/)! L.1s consolllS de videojuegos mmbién se esa!n
~ )viendo c."lda VC'L más sofiscic."ldas.1!.1 con crol remoto del Wii ucili.z.a un
acelerótttLtro (para detectar la inclinación y la aceleración) junto con un
sensor que determina hacia dónde apunta el dispositivo, lo cual le pctmite
rcspondcrnl movimicttto. Al hac;eradcmancs con el conrrol 1'Cmoro del Wii
en la mano, usted puede controlar el vidcojuego en ln p:inta.Ua. Con Kinecc
para el Xbox 360 de Microsoft, usted --el jugador- se convierte en el
concrolndor. Kinccr uiili:,;a una cámaro, un sensor de profundidad y softwnrc
sofisticado paro seguir el movimiento de su cuerpo, lo cual le permite
controlar el juego (en. w1ki pedia.org/wik1/Kinect). Con los juegos de
Kincct puede bailar, hacer ejercicio, jugar dcporrcs, cnucnarnnimalcs
virtuales y vnrins actividades más.

TV por lmemer LosrcccpcoresdcTV por lnrernet (comoApplcTVyGoogleTV) le dan


acceso n diversos cipos decontcnido-<X>mo juegos, noticiM, pellculas,
programas de televisión y más-, oon lo cual UStcd puede acceder a una gran
cantidad de con ten.ido bajo demanda; yn no necesita depender de los
p1ovccdorcs de rclcvisión por cnblc o vln sntélire pam recibir contenido.

Fig. 1. 1 1 Unos cuantos usos para las computadoras (parte 3 de 3).

1.2 Computadoras: hardware y software


Una computadora es un dispositivo capaz de realizar cilcuJos y ro mar decisiones lógicas con una rapide-L
increfblemente mayor que los humanos. Muchas de las computadoras personales contemporáneas pue-
den realizar miles de millones de cálculos en un s.cgundo - m:ls de lo que un hurnru10 podr/a realizar en
ioda su vida. ¡Las mperi:omp1'tadoras ya pueden realizar milo de billones de instrucciones por segundo!
Dicho de otra forma, una computadora de mil billones de instrucciones por segundo puede realizar en
un scgu ndo m:ls de 100,000 cdlculos¡para ,ada tmo de los habitmius delplarmn!1Y estos "limites superi o-
res" están aumcmru1do con rapid&!
6 Capítulo I Introducción a las computadoras y a Java

Las computadoras procesan datos bajo el control de conjuntos de instrucciones conocidas como
pl'ogramaa de oomputadora. Los cua.les guían a L1 computadora a través de conjuntos ordenados de
acciones especificidas por gente conocida como programo.dores de computadoras. A los programas
que se ejecutan en una computadora se les denomina software. En este libro aprenderá la metodología
de programación clavo de la actualidad que mejora la productividad del programador, con lo cual se
reducen lo.~ coseos de desarrollo del software: programncló11 orfrnt,ukt n objetos.
Una computadora consiste en varios dispooi ti vos conocidos como han:lware (teclado, pantalla, ra-
tón, discos duros, memoria, unidades de DVD y unidades de procesamiento). Los costos de las compu·
tadoras han disminuido m forma nputacular, debido a los rápidos desarrollos en las tecnologías de
hardware y software. Las computadoras que ocupaban grandes habitaciones y que costaban miJJones
de dólares hace a lgunasdécadas, ahora pueden colocarse en las superficies de chipsdesilicio más pequef\os
que una uffa, y con un costo de quizá unos cuantos dólares cada uno. Aunque suene irónico, el silicio
es uno de los materiales más abundantes en el pJaneta (es uno de los ingredientes de la arena común).
la tecnología de los chips de silicio ha vuelto tan económica a la tecnología de la computación que hay
más de mil millones de compurndoras de uso general funcionando a nivel mundial, y se espera que esta
cifra se dupliqru en los próximas afios.
Los chips de computadora (microproctuuiores) controlan innumerables dispositivos. Entre estos
sistemas incru.stndosestin: frenos ruuibloqueo en los autos, sistemas de navegación, electrodomésticos
inteligente.~, sistemas de seguridad en el hogar, teléfonos celulares y teléfonos imeligentes, robots, inter·
secciones de tráñco inteligentes (collision avoidance systems), controles de videojuegos y más. La gran
m.1yorla de los microprocesadores que se producen cada afio escln incrustados en dispooitivos que no
son compurndoras de propósito general~

úytkMoort
Es probable que cada afio, espere pagar por lo menos un poco más por la mayoría de los productos y
servicios. En el ca.~o de los cimpos de las computadoras y las comunicaciones se ha dado lo opuesto, en
c.~pecial con relación a los costos del hardwa.re que da soporte a c.~ta~ tecnologías. Los costos del hardwa1e
han disminuido con rapidez durante varias décadas. Cada uno o dos años, las capacidades de las compu·
tadoras se duplican aproximadamente sin que el precio se incremente. Esta notable observación se cono-
ce en el d.mbito común como la Leydc Moore, y debe su nombre a.!;1 person:1 que identificó es1;1 tenden -
cia: Gordon Moore, cofundador de lntel, uno de los principaJes fabricantes de procesadores para las
oomput:adoras y los sistemas incrustados de la actualidad. LaLeydeMoore y las observaciones relaciona-
d:is son espec.i almentc cicrtaS en cuanto :1 la cantidad de memoria que tienen l:is compurodor:is para los
programas, la cantidad de almacenamiento secundario (como el almacenamiento en disco) que tienen
para guardar los programas y datos durante periodos extendidos de tiempo, y las velocidades de sus pro-
cesadores: las velocidades con que l:is computadoras ejecurnn sus p rogmm:is (rcaliz.111 su tr:1bnjo). Se ha
producido un crecimiento similar enel campo de las comurucaciones, en donde los costos se han desplo-
mado a medida que la enorme demanda por el ancho de banda de las comurucaciones (la capacidad de
transmisión de información) atrae una comperencia intensa. No conocemos otro.~ ounbios en los que b
tecnologla mejore con tanta rapidez y los costos disminuyan de una manera tan drástica. Dicha mejora
fenomenal est.í fomentando sin duda la Revo!tu:itin de la infonnaciún.

1.3 Jerarquía de datos


Los elementos de d:uos que procesan lascompurndor:is forman una jcruqulRdc darosquesc vuelve cada
vea. más grande y compleja en estructura, a medida que progresamos primero a bits, luego a caracteres,
después a campos y así en lo sucesivo. La figura 1.2 ilustra u na porción delajerarqufadedatos. La figura
1.3 sinccri7~1 los niveles de la jcmrqula de datos.

6 -.eet1mes.c0ffl/electron1cs- blogs/1ndustr1a1-contro1 -des1gn11ne-blog/4027479/


Rea 1-men- prog ram- 1n-C? pageNumber•l.
1.3 Jerarquía de datos T

Sa11y Ne.gr o

Tom Azu l

Judy Verde Ptchivo

Iris Naran ja

Randy Roj o

Judy verde ~glsiro

J
t
u d y Clmpo

t
00000000 01001010 Clrkter Unicode)

t
1 Bit

Fig. 1.2 1 Jerarquía de datos.

• •
Birs El elemento de dacos m:is pequeño en una computadora puede asumir el valor O
o el valor l. A dicho ciernen co de daros se le denomina bit (abreviación de
"dlsico binnrio": un dlsiro que puede asumir uno de dosv:ilorcs). Es nomblc
que los imp1'CSionan1cs funciones que 1'C:lliian las compurodoms sólo impliquen
las manipulaciones más simples de Os y ls: examinar ti valordt un bit, ettabkcer
ti valor dt 1111 bit 1 /rwcrtir ti valor dt ull bit (de l:l Oo de On 1),
Caracteres .Es ccdioso para las pc1'SOnas trabajar con datos en el formato de bajo 1úvd de los
birs. En cunbio, prefieren trabajar con dlgit()J decimales (0-9), letras (A-Z ya..z) y
simbo/os ttptda/11 (por ejemplo,$,@,%,&, •, (, ), · , +,",?y/), L<ls dlgicos, lerms
y simbo los especiales se conocen como c:nrncteres. .El conjunto de CIU'IICteres de
la computadora es el conjunco de todos los que se utilizan para escribir programas
y represeomr elementos de dncos. Las compumdoro.~s61o proccs:in los l y los O,
por lo que el conjunto dc01mctcrcsda una computndora 1'Cprcsenm o 01da uno
como un patt6n de los 1 y los O.Jav:i. usa CU':lcteres Unicodd" que están
compuestos de dos bytu, C1da uno delos cuales está formado a su ve:,. de ocho
bits. Unicodc contiene Clmcrercs pam muchos de los idiomas en el mundo. En el
apéndiccL obtendrá más información sobre Unicode. En el apéndice B conocecl
más información sobre el conjunro de C1raaercs ASCII (Código estándu
otodounidense pn.ro el intercnmbio de lnfonnnci6n): el popular ,ubconjunto
de Unicodequcrcpresenta laslcuas mayúsrulasy minúsculas, losdlgitos y
algunos caracteres especi.-ues comunes.

Fig. l . l I Niveles de lajerarquía de datos (parte I de 2).


8 Capítulo I Introducción a las computadoras y a Java

Ctmpos As1 como los camctcres están compuestos de bits, los campos lo están por
camaereso bytes. Un campo esun grupo de camacres o bytes que transmiten un
significado. Por ejemplo, un cnmpo compuesto de letms mo.yllsculns y minúsculas
se puede usar para represcncarcl nombre de una persona, y uno compuesto de
dígitos decimales podría representar su edad.
Registros Se pueden usarvnrios aimpos 1-dncionados para componer un qlrtro (el Clllll se
implementa como una claseenJavn). Por ejemplo, en un sistema de nómina, el
registro de un empleado podría consistir en los siguientes campos (los posibles
tipos para ~tos se muestran entre paréntesis):
• Número dcidentificación dd empleado (un número entero)
• Nombre (una cadena de caracteres)
• Oircoción (una cadena de mmctcres)
• Salario por horas (un número con punto decimal)
• Ingresos del afio a la fecha (un nt1mero con punto decimal)
• Monto de impuestos retenidos (un número con punco decimal)
As(, un registro csun grupo de ,campos relacionados. En el ejemplo anterior, codos
los campos pertenecen al mismo empleado. Una compañía podría tener muchos
empleados y un rcgisuo de nóinina para aida uno.
Archivos Un orchivo es un grupo de registros relacion.'ldos. [Nota: Dicho en forma más
genetal, un archivo con tiene da·tos arbitrarios en formaros arbitrarios. En algunos
sistemas operativos, un archivo se ve ran sólo como una ucumcia de bytes: cua !quier
or¡,'<l11i1.~ción de esos bytes en un archivo, como cuando se or¡,'<lnit.an los daros ci,
registros, es una vista creada por el programador de la aplicación]. Es muy comt1n
que una Ol'g'l-niz.-ición tenga mnchos archivos, algunos de los cuales pueden
oonrencr miles de millones, o incluso billones decamctcrcs de infomrnción.

Fig. l. l I Niveles de la jerarquía de datos (parte 2 de 2).

1.4 Organización de una computadora


Sin importar l:JS diferencias en la npariencia f!sica, es posible percibir n lns computadoras como si estuvie-
ra.o divididas en varias m.idades 16gicas o secciones (6guta 1.4).

Unid11d &m sección "reccprom• obtiene información (drttos y progmmnsdeoómputo) de los


deentmd11 dlapMldvo, deentroda y lo pone a disposición de !ns Otl'M unidades para que puedo
procesarse. La mayor parte de la información se introduce a través de los teclados,
pnorallas clctilesy mt0ncs. Ll información mmbién puede introducirse de muchas
otms fo,·mns, como hablar oon su oompumdom, diglmliwr imágenes y oódlgosdc
bateas, leerdisposicivos dealmacenainlcnco secundatio (como discos duros, unidades
de DVD, Blu-my DiscTM y 'Flash USB -rambién conocidas como "unidades de
pulgnr" o "mcmorysticks"), recibir video de una alnm-n Web e información en su
computadora a tmvésdelnternct (como cuando descarga videos de YouTuben1 o
libroselearónicos de Amaron}. Las formas más recientes de en erada son: leer los
dncosdc In posición a tmvé, de un dispositivo GPS, y la información sobre el
movimiento y la oricnracióm mediante lLO accler6mctr0 en un rcléfouo inteligente
o un con uolador de juegos.

Fig. 1.4 1 Unidades lógicas de una computadora (parte I de 2).


1.4 Organización de una computadora 9

trud.ad Esta sección de "embarque" roma información que ya ha sido proc:esada por laoompu-
de salida t:adom y la coloc.'\ en los diferentes dispositivos de salida, pam que esté disponible
f'ueradc In computadora. En lo octunlidnd, In mnyorpnrrc de lo información de salid.'\
de las computadoras se despliega en panmllas, se imprime en papel, se reproduce oomo
audio o video en reproductores de medios portátiles (como los populares iPod de
Apple) y pnnmllns glgnnces en estadios deportivos, se tmnsmiten través de lntcmct
o se utiliza para co11trolar otros dispositivos, como robors y aparatos "inceligcnres".

Uiidaddc Esto sección de "almacén" de acceso rápido, pc1-o con rclntiva baja Olpacidad, retiene
memorill In información queseincroducca tmvésdc In unidad decntmda, pnn1 que esté
disponible de manem inmediata y se pueda procesar cuando sea necesario. La unidad
de memoria también retiene la infonnación procesada hosca que la unidad de salida
pueda coloOlrla en los dispositivos de salida. Ln lnfominción en la unidad de memoria
es wlátll: por lo general se p.ierdeamndo se apaga la romputadora. Con freC1Jencia, a
la unidad de memoria se le conoce como memoria o memoria principal. L'\S tlpicas
mcmorins principales en las compurodorns de escritorio y portdtiles contienen en ere
1 GB y 8 GB (GB se refiere a gignbyces; un gignbyce equivale aproximadamence
a mil millones de bytes).
U.id.ad IU'itmética Esro sección de M1mnufactura" rcnli,:,.'\ cá/J:11/()1(1.)mo sumo, rcst:1, multipliOlción y
y lógica (ALU) división. "fombién contiene los m()Canismosde dtcisidn que permiten a la oompu-
cadora hacer oosascomo, por ejemplo, comparar dos elementos de la unidad de
mcmorin pam determinar si son igunlcs o no. En los sistemas ncrualcs, la ALU
se implcmcnm por lo gencml como p:irte de la siguienrc unidad lógiOl, In CPU.

Uúd.ad central Esra sección "adminiStrativri" coordina y supervis.'\ la operación de las demás. L.'\ CPU
de procesnmlento le indlc:i n In unidad de cncmdn cudndo debe gmbnrse la información dentro dela
(CPU) Ut1idad de memoria, a la ALU cu:indo debe utilimrsc la información de la unidad de
memoria J;Y.l.f:l los cllculos, y a la unidad de salida cud.ndo enviar la información
desde la u ni dad de mcmorin hasm ciertos disposirivos de snlid:i. Muchas de IM oompu•
radorasactualcsconticncn múltiples CPU y, por lo canto, pueden 1-eal.izar muchas
operaciones de manera simulclncn. Un procesador muhinúclco implementa varios
proa:s.'\dorcs en un $010 chip de circuitos in re grados: un prom,ufor dt d()b/e míe/to
(d11al,.core) tiene dos CPU y un proceuuJor de cuádr11pú mlcúo (q11ad-rorr) tiene amero
CPU. Las computadoras de escritorio de la actualidad tienen procesadores que
pueden ejecutar miles de millones de instniccioncs por segundo.

Uúdadde 11.st:t es la sección de "almacén" de alca capacidad y de larga duración. Los programas
almru:ennmiento o daros que no utilizan las dcm:1$ unidades con f'r«:uenciasc colocan en dispositi-
1JeCundarlo vos dcnlmacennmlenco s0eundnrlo (por ejemplo, el disco duro) hnsra que se requieran
de nuevo, lo cual puede ser cuestión de horas, ellas, meses o incluso años despu~s.
La infurmaci6n en los dispositivos de almacenamiento secundario espersistmtr.
se conserva nón y cuando se npngn lo compumdorn. El tiempo parn acceder n la
información en almaceuamiento secU11dario es mucho mayor que el necesario
para acceder a la de la memoria principal, pero el cosco por un.idad de memoria
secundaria es mucho meno,· que el correspondlenre n In unldnd de mcm ol'in
principal. Las unidades de CD, DVD y Flash USB son ejemplos de dispositivos
de almacenamiento secundario, los cuales pueden contener hasta 128 GB.
Lo., di11Cos duros rlpicoscn .lns compucndorns de escritorio y pormtiles pueden
oontcner hasta 2 TB (TJ3 se refiere o rernbyrcs; un terabyte equivale aproximada-
mente a un billón de bytes).

Fig. 1.4 1 Unidades 16gícas de una computadora (parte 2 de 2).


10 Capítulo I Introducción a las computadoras y a Java

I.S Lenguajes máquina, lenguajes ensambladores


y lenguajes de alto nivel
Loo programadores escriben instrucciones en diversos lenguajes de programación, algunos de los cua-
b los comprende directamente la computadora, mientras que otros requieren pasos intermedios de
trdaru:cid11. En la acrualidad se utilizan cien ros de lenguajes de computación. ~tos se dividen en tres cipos
generales:
J. Lenguajes m:iquina
2. Lenguajes ensambladores
3. Lenguajes de alto nivel
Cualquier computadora puede entender de maneradirectasólo su propio lenguaje máquina, el cual
se define según su diseño de hardware. Por Jo general, los lenguajes máquina consisten en cadenas de
números (que finalmente se reducen a los I y O) que inscruyen a las computadoras para reafo.ar sus ope-
raciones más elementales, una a la vez. Los lenguajes miqu.ina son depmdiente1 de la máquina (es decir,
w, lenguaje máquina en particltlar puede usMse sólo en un tipo de computadora). Dichos lenguajes son
cliflcilesdecomprender paro los humanos. Por ejemplo, he aqul la sección de uno de los primeros progra-
mas en lenguaje máquina, e.l cual suma el pago de las horas extras al sueldo base y almacena el resultado
en el.sueldo bruto:

+1300042774
+1400593419
+1200274027

La programación en lenguaje máquina era demasiado lenca y tediosa para la mayoría de los progra-
madores. En vez de utilizar las cadenas de números que las compuradoras podían entender de manera
direct:1, los programadores empeuron a ucilizar abreviaturas del ingMs para representar las operaciones
elementales. .Estas abreviaturas formaron la base <le los lenguajes ensambladores. Se desarrollaron pro-
gmn111J tradttctore1conocidos como ensambladores para convertir los primeros programas en lenguaje
ensamblador a lenguaje máquina, n L, velocidad de la computadora. La siguiente sección de un progra-
ma en lenguaje ens3J'llblador también suma el pago de las horas extras al sueldo base y almacena el resul-
tado en el sueldo bruto:

load sueldobase
add suel doextra
s ·t ore suel dobruto

Aunque este código es más claro para los humanos, las computadoras no lo pueden entender sino hasta
que se tmduce en lenguaje mdquina.
El uso delas computadoras se incrementó rápidamentecon la Uegada delos lenguajesensambL-idores,
peco los programadores aún requerían de muchas instrucciones para llevar a cabo incluso hasta las tareas
m:ls simples. Para :igili2¼lr el proceso de programación se desarrollaron los lenguajes de alto nivel, en
donde podlan escribirse instrucciones individuales para realizar tareas importantes. Los programas tra-
ductores, denominados compiladores, convierten programas en lenguaje de aleo nivel a lenguaje máqui-
na. Los lenguajes de alto nivel permiten a los programndores escribir instrucciones que son muy simiL1re.~
al inglés común, y contienen la notación matemática común. Un programa de nómina escrito en un
lenguaje de alto nivel podría contener una instrucción como la siguiente:

sueldoBruto .. sueldoBase + sueldoExtra

Desde el punto de visen del programador, los lenguajes de nito nivel son mucho mis recomendables
que los lenguajes miquina o ensamblador. Java es, por mucho, el lenguaje de alto nivel más utilizado.
1.6 Introducción a la tecnología de los objetos 11

El proceso de compilaci6n de un programa escrito en lenguaje de alto nivel a un lenguaje máquina


puede tardar un ciempo considerable en la compucadora. Los programas imlrprttts se desarrollaron
para ejecuta r program:is en lenguaje de airo nivel de manera directa (sin el retraso de la compilación),
aunque con más lentitud de la que se ejecutan en los programas compilados. Hablaremos más sobre la
forma en que trabajan los intérpretes en la sección 1.9, en donde aprenderá que Java uci liza una astuta
me-;,cla de compilación e inlerpreración, opcimizada con base en el rendimiento, para cjccucar los pro·
gramas. Los ejercicios 7.35-7.37 (en la Sección especial: Cree su propia computadora) le guiarán a
través del proceso de creación de un programa intérprete.

1.6 Introducción a la tecnología de los objetos


Crear software en forma rápida, correcta y económica sigue siendo un objetivo difícil de alcanzar en
una época en que la demanda de software nuevo y más poderoso va en aumento. Los objetos, o dicho
en forma más precisa --como veremos en el capírulo 3- 1:IS cliuts de las que provienen los objetos,
son en esencia componen res de software rtutili.zabks. Existen objetos de fecha, objetos de hora, ob-
jetos de audio, objetos de video, objetos de automóvi les, objetos de personas, etcétera. Casi cualquitr
sustantivo se puede representar de manera ta1,on able como un objeto de software en términos de sus
atributos (como el nombre, color y tamafio) y comportamirotos (por ejemplo, calculu, moverse y co-
municarse). Los desarrolladores de software han descubierto que al usar una mecodologla de disefio
e implementación orientada a objetos y modular, pueden crea grupos de desarrollo de software más
productivos de lo que era posible con las técnicas popuLires anteriores, como la "programación es-
tructurada''; por lo general los programas orientados a objetos son m:is f.kiles de comprender, corregí r
y modificar.

El automóvil como un objeto


Para ayudarle a comprender los objetos y su cont enido, empecemos con una analogía simple. Suponga
que desea amducir un autoy hactr qut mya 11UÍs rápido al oprimir elpedaldelacekrador. ¿Qué debe ocurrir
para que usted pueda hacer esto? Bueno, an res deque pueda conducir un auco, alguien neneque diufiarlo.
Por lo general, un auto empieza en forma de dibujos de ingenier/a, simílares a los planos dt comtrncciófl
q uedescri ben el disefio de una casa. Estos dibujos de ingeniería incluyen eldisefio del pedal del acelerador.
El pedal oculta los complejos mecanismos que se cnca.rgan de que el auto aumente su velocidad, de igual
forma que el pedal del freno oculta los mecanismos que disminuyen la velocidad del auto y el volante
"oculta'' los mecanismos que hacen que el auto de vuelta. Esto pei:mire que las personas con poco o nada
de conocimiento acerca. de cómo funcionan los morores, los frenos y los mecanismos de L1 dirección
puedan conduci r un auto con facilidad.
Por desgracia, as{ como no es posible cocinar en la cocina de un plano de construcción, rampoco
es posible conducir los dibujos de ingenieda de un nuco. Ante.~ de poder co nduci r un :llltO, éste debe
comtruírse a parcir de los dibujos de ingenier/a que lo describen. Un auto completo tendrá un pe-
dal acelerador verdadero para hacer que aumente su velocidad, pero aún as{ no es suficiente; el auto
no acelerar:! por su propia cuenta (¡esperemos que as/ sea!), as/ que el conductor debe oprimir el pedal
del acelerador para aumentar la velocidad del auto.

Métodosy clases
Ahora vamos a utilizar nuestro ejemplo del auto para introducir algunos conceptos clave de la pro-
gramación orienmda a objetos. Para realizar una rarea en una aplicación se requiere un método, el
cual aloja las instrucciones del programa que se encargan de reali:iar sus tareas. .El ml!todo oculta al
usuario estas tareas, de la misma forma que el p«lal del acelerador de un auto oculta al conductor los
mecanismos para hacer que el auto vaya más r:l.pido. En Java, creamos una unidad de programa lla-
mada el.Me para alojar el conjun to de métodos que reafo.an las tareas de esa clase. Por ejemplo, una
12 Capítulo I Introducción a las computadoras y a Java

dase que representa a una cuenta bancaria podría contener un método para depositar dinero en una
cuent:1 , otro para retirar y un tercero para solititar el saldo acrual. Una clase es similar en concepto a
los dibujos de ingeniería de un amo, que contienen el diseJio de un pedal acelerador, volante de di-
rección, etcétera.

!mtanciamimto
Ast como alguien tiene que comtruir tm awo a partir de sus dibujos de ingenierla para que otra persona
lo pueda conducir después, trunbic!n es necesario criar un objeto de una clase para que un programa pueda
realizar las tareas definidas por los métodos de es:a clase. Al proceso de hacer esto se le denonúna imt,m-
ciamimto. Entonces, un objeto viene siendo una instancia de su clase.

Reutilización
Asl como los dibujos de inge11ierla de un auto se pueden reutilizar muchas vece.,¡ pari\ co nstruir mucl1os
autos, también es posible reutilizar una clase muchas veces para crear muchos objetos. Al reutilizar las
dases existentes para crear nuevas clases y programas, ahorramos tiempo y esfuerro. La reutilización
también nos ayuda a crear sistemas más confiables y efectivos, debido a que co n frecuencia las clases y
los componentes existentes pasan por un extenso proceso de prueba, depuración y optimización del
desempmo.De la misma manera en que la noción de piezas intercambiabksfue crucial para la Revolución
Industrial, la.~ cla.,¡e.,¡ reutilizables so n cruciales para la revolución de software incitada por la tecnología
de objetos.

Observación de ingeniería de software 1. 1


Use u11 mltodo de co,utrucción e11 b/Qques para crear programas. Evite rei11vmtar la rueda: ust púzas
• o:istmtes siempre que sea posibk. Esta rmtilü:adón da sofi111are ts 1111 bmttftcio datJI! de la programación
oriemnda a o/,juos.

Mensajesy lla1111ulas a mitodos


Cuando conduce un auto , al oprimir el pedal del acelerador envía un mensaje al auto para que realice
una torea: aumen rar la velocidad. De man ero similnr, e.,¡ posible mvillr ml!Tuajes a tm objeto. Cada men -
saje se implementa como llamada a método, para indicar a un método del objeto que realice su tarea.
Por ejemplo, un programa podría llamar al método depositar de un objeto cuenca de banco específico
para aumentir el saldo de esa cuenco.

Atributosy vnriabÚ!.f d1 instancia


Además de tener capacidades para realizar tareas, w1 auto también tiene atributos: color, número de
puertas, cantidad de gasolina en el tanque, velocidad actual y registro del total de kilómetros recorridos
(es decir, la lectura desu veloclmetro). Al igual que sus c1pacidades, los atributos del t1uco se represent-an
como parte dcsu disello en sus diagramas de ingeniería (que, por ejemplo, agregan un veloclmetro y un
indicador de combustible). Al conducir un auto .real, estos atributos van incluidos. Cada auto conserva
sus ¡,ropiosatributos. Por ejemplo, cada 11no sabe cu:tnro gasolirrn ha.y en su ronque, pero 110 cu~nta hay
en los tanques de otros autos.
De manera sinúlar, un objeto tiene atributos que lleva consigo a medida que se utiliza en un pro-
gram:1, Estos atributo.~ se especifican como parto de la. clase del objeto. Por ejemplo, un objeto cuenta
bancaria tiene un aeribt4to saldo que representa l'a cantidad de dinero en la cuenta. Cada objeto cuen-
ra bancaria conoce el saldo de la cuenta que representa, pero no los saldos de las otras cuentas en el
banco. Los atributos se especifican mediante las variables de instllllcia de la clase.
l. 7 Sistemas operativos 13

Encapsulamiento
Las ch\Ses cncapsulon (envuelven) los atributos y métodos en objetos; los atributos y métodos de un
objeto están muy relacionados entre si. Los objetas se pueden comunicar entre s í, pero por lo gen eral
no se les permite saber c6mo están implementados otros objetos; los detalles de implementación están
ocultos dentro de los mismos objetos. E.~te ocultamiento de información, como veremos más adelante,
es crucial para la buena ingenierfa de software.

Herl!11cia
Es posible crear wrn nueva clase de objetos con i,-apidez y de manei,-a conveniente mediante la herencia:
la nueva clase absorbe las características de una clase existente, con la posibilidad de personalizarlas
y agregar caracrerlscica.~ únicas propias. En nuestra analogía del auto, sin duda un objeto de la clase
"convertible" es un objeto de la clase más gmeral llamada "aurom6vil" pero, de manera más especifica, el
~ ho puede ponerse o quitarse.

A11álisisy disefl.o oril!ntado a objetos (AIDOO)


Pronto escribirá programas en Java. ¿C6mo creará el oódigo (es decir, fas instrucciones) para sus progra-
mas? Tal vez,, al igual que muchos programadores, s6 lo encenderá su computadora y em_pcz.ará a escribi r.
Qui1..ás este método füncione para pequeños programas (como los que presentamos en los primeros ca-
pltulos del libro), pero ¿qué ral s i le pidieran crear un sistema de software para controlar miles de cajeros
automáticos para un banco importante? O ¿si le piden que trabaje con un equipo de 1,000 desarrolla-
dores de software para crear el nuevo sistema de control de tráfico aéreo en Estados Unidos? Para pro-
yectos tan grandes y complejos, no es conveniente tan sólo sentarse y empe1.ar a escribir progr:unas.
Para crear las mejores soluciones, debe seguh un proceso de análisis detallado para determinar los
requerimientos desu proyecto (definir q1'1 se supone que debe hacer el sistema) y desarroUar un diseño
que los satisfoga (decidir cdmo debe hacerlo el sistema). Lo ideal sería pasar por este proceso y revisar el
disello con cuidado (además de pedir a otros profesionales de software que lo revisen) antes de escribir
cualquier código. Si este proceso implica analizar y diseñar su sistema desde un punto de vista orientado
:1objetos, se denomin::1 proceso de anáJisisydiseño orientado a objetos (A/000). Los lengu:ijes como
Java son orientados a objetos. La programación en w1 lenguaje d e este cipo, conocida como programa-
ción orientada a objetos (POO), le permite implementar un disefio o rientado a objetos como un siste-
ma funcional.

El UML (L111g11aj111mifica,lo de modelado)


Aunque existen muchos procesos deA/D00 distintos, hay un solo lenguaje gráfico para comunicar los
resultados d e cualquier proceso d e A/DOO que se u ti liza en la mayoría de losca.~os. Este len guaje, cono-
ddo como Lenguaje unificado de modelado (UML), es en l:t actua lidad el esqucmagdfico mds utilizodo
para modelar sistemas orientados a objetos. Presentamos nuestros primeros diagramas de UML en los
capltu los 3 y 4; despué.~ los utilizarnos en nuestro a nálisis más detallado de la programación o rientada a
objetos en el capltulo 11. En nuestro ejemplo práctico opdonnlde ingcnierfa de software del ATM en los
cipfrulos 12 y 13 presentamos un subconjunto simple de las caractedscicasdel U ML, mientras lo guiamos
por una experiencia de disefio orientada a objetos.

1. 7 Sistemas operativos
Los llistemas operativos son sistemas de software que se encargan de hacer más convenien te el uso de
las computadoras para los usuarios, desarrolJadores de aplicaciones y administradores de sistemas. Los
sistemas operativos proveen servicios que permiten a cad a apliatci6n ejecutarse en forma segura, eficien-
14 Capítulo I Introducción a las computadoras y a Java

re yconcurrente(es decir, en paralelo) con otnlS aplicaciones. El software que contiene los componentes
básicos del sistema operativo se denomina kernel. Los sistemas operntivos de escritorio populares son:
Llnux, Windows 7 y Mac OS X. Los sistemas operativos móviles populares que se utilil~in en teléfo-
nos inteligentes y tabletas son: Android de Google, BlackBerry OS y Apple iOS (para sus dispositivos
iPhone, iPad e iPod Touch).

Wi,ulows: u11 sistema operativop,·op~tario


A mediados de la década de 1980 Microsoft desarrolló el sistema operativo Windows, el cual consis-
reen unainterfazgráficadeusuario creada sobre DOS: un sistema operativo de computadora personal
muy popular en la época en que, para in tcracturu con él, los usuarios tecleaban comandos. Windows
10mó prestados muchos conceptos (como los iconos, menús y ventanas) que se hicieron populares
gracias a los primeros sistemas operativos Apple Macintosh, desarrolJados en un principio por Xerox
PARC. Windows 7 es el sistema operativo más reciente de Microsoft; aJgun as de sus caracterlsticas son;
mejoras en la interfaz de usuario, un amrnque más veloz, un mayor grado de refinamiento en cuanco a
las caracte.rlsticas de seguridad, soporte para pantalla t:ktil y multitáctil, y otras más. Windows es un
sistema operativo propietario¡ está bajo el control exclusivo de una compafila. Windows es por mucho
el sistema operativo más mili:t.ado en el mundo.

linux: ,m sístema operativo~ códig" fi,mte abierto


El sistema operativo Linux es tal vez el más grande éxito del movimiento de cddigo fuente abierto. El
c6digo fuente abierto es un estilo de desarrollo de software que se desvía del desarrollo propietario, el
cual predominó durante los primeros alias del .~oftware. Con el desarrollo de códi go fuente abierto,
individuos y compall /as unen sus esfuerzos para desarrollar, mantener y evolucionar el software a cam-
bio del derecho de usarlo para sus propios fines, por lo general sin costo. Por lo general el código fu en-
te abierto es escudrifiado por una audiencia mucho mayor que la del software propietario, de modo
que casi siempre los errores se eliminan con mw rapidez. El código fuente abierto también fomenta
una mayor innovación. Sun abrió el código de su implementación del Kit de desarrollo de Java y de
muchas de sus tccnologlas de Ja.va relacionadas.
AJgunas organizaciones en la comunidad de código fuente abierto son: la fundación Eclipse (el
Entorno íntegrado de desarrollo Eclipse ayuda a los programadores de Java a desarrollar software
de manera conveniente), la fundación Mo1jlla (creadores del navegador Web Firefox), la fundación de
software Apache (creadores del servidor Web Apache que se utiliza para desarrollar aplicaciones basa-
das en Web) y SourceForge (quíen proporciona las herramientas para admínistrar proyectos de có-
digo fuente abierto; tiene más de 260,000 de estos proyectos en desarrollo). L.-i.~ rápida.~ mejoras en la
computación y las comunicaciones, la reducción en costos y el software de código fuente abierto han
logrado que sea mucho más fácil y económ.íco crear un negocio basado en software en la actualidad
de lo que era hace un as cuantas décadas. F:\ccbook es un gran ejemplo de ello; este sitio se inició desde
un dormi10rlo uni versitario y se creó con software de código fuente abierto. 7
El kernel de Linux es el núcleo del sistema operativo de código fuente abierto más popuJary lleno
de funcionalidades, que se distribuye en forma gratuita. Es desarrollado por un equipo de volunrarios
organizados de manera informal; es popular en servidores, compumdoras personales y sistemas incrust:1-
dos. Adíferenciade lossisi.emasoper,uivospropieiarios como Wmdows de Microsoft y Mac OSXdeApple,
el código fuente de Li nux (el código del programa) esrá disponible ni público para que lo examinen y
modifiquen; ademds se p uede descargar e instalru sin costo. Como resultado, los usuarios del sistema
operativo se benefician; de una comunidad de desarrolladores que depuran y mejoran el kernel de

7 developers.facebook.com/opensource/.
l. 7 Sistemas operativos 15

manera continua, de la ausencia de cuotas y restricciones de licencias, y de la habilidad de poder per-


sonaliz.'ll' por completo el sistema operativo para cumplir necesidades específicas.
En 1991, Linus '!brvalds, un estudiante de 21 años en la Universidad de Helsinki en Finlandia,
empezó a desarrollar el kernel de Linux como un pasatiempo (El nombre Linux se deriva de "Linus" y
"UNIX": un sisrema operativo desarrollado por los Laboratorios Bell en 1969). Torvalds quería mejorar
el disef\o de Minix, un sistema operativo académico creado por el profesor Andrew ' fanenbi1um de la
Vrije Universiteit en Arnsterdam. El código fuente de Minix estaba disponible al público para que los
profesores pudierru, demostrar los conceptos básicos de la implementación de sistemas operativos a sus
estudiantes.
Torvalds liberó la primera versión deLinuxen 1991. Larespuestafuvorablecondujo a la creación de
una comunidad que ha continuado con el dcsarroUo y soporte de Linux. Los dcsarroUadores descargaron,
probaron y modificaron el código de Linux; después enviaron corrcccionesdeerroresy retroalimentación
a Torvalds, quien revisó esa información y aplicó las mejoras al código.
La liberación de Linux en 1994 integró muchas características que se encontraban por lo general en
un sistema ope.rativo maduro, con lo cual Linux se convirri6 en una alrernnciva viable con respecto a
UNIX. Las compañías de sistemas empresariales como IBM y Oracle se interesaron cada ver. más en Li-
nux, a medida que éste se volvía más estable y se extendía a nuevas plataformas.
Son varias cuestiones - el poder de mercado de Microsoft, el pequefio número de :ipliciciones Linux
amigables para los usuarios y L'I diversidad de disaribucionesde Linux, tales como Red Hat Linux, Ubun-
ru Linux y muchas más- las que han impedido que se popularice el uso de Linux en las computadoras
de escritorio. Sin embargo, este sistema operativo se ha vuelto muy popular en servidores y sistemas in-
austados, como los teléfonos inteligentes basados enAndroid de Google.

Android
Android -el sistema operativo para dispositivos móviles y teléfonos inteligentes, cuyo crecimiento ha
sido el más dpido hasta ahora- está basado en el kernel de Linux y en Java. Los programadores experi-
mentados de Java no tienen problemas para entrar y participar en el desarrollo de aplicaciones para An-
droid. Un beneficio de desarrollar este tipo de aplicaciones es el grado de apertura de la plataforma. El
sistema operativo es gratuita y de código fuente abierto.
E lsistema operativo Android fue desarrollado por Android, ln c., compafifaqueadquiri6 Googlc en
2005. En 2007 se formó laAlirun:a para los dispositivos móviJes abiertos™ (OHA) -un consorcio de
34,compafiías en un principio, y de 79 para el afio 2010-, para continuar con el desarrollo de.Android.
Al mes de diciembre de 201 O, ¡se activaban más de 300,000 teléfonos inteligentes con Android a diario! 8
Abora los teléfonos Android se venden más que los iPhone. !I El sistema operativo Android se utiliza en
varios teléfonos inreligences (Moro rola Droid, KTC EVQTM 4G, Sarnsung Vibrant™ y muchos m~s),
dispositivos lectores electrónicos (como el Noble Nook1 'M de Barnes and Noble), computadoras tipo
tableta (Dell Streak, Samsung Galaxy Tab y otras más), quioscos con pantallas t:ktiJes dentro de las tien-
das, autos, robots y reproducrores multimedia.
Los teléfonos intcligentesAndroid tienen la funcionalidad de w, teléfono m6vll, cliente de Internet
(para navegar en Web y comunicarse a través de Internet), reproductor de MP3, consola de juegos, cáma-
ro digital y dcm;b, todo envuelro en dispositivos portátiles con paritaiw m11/ti1dctilesa todo color-éstas
p311tallas le permiten controlar el dispositivo con tidemmm en los que se requieren uno o varios toques
simultáneos. Puede descargar aplicaciones de manera directa a su dispositivo Android, a Lravés del An-
droid Market y de otros mercados de ~plic.,cioncs. Al mes de diciembre de 201O había cerca de 200,000
aplicaciones en el Android Market de Googlc.

8 -.pc,nag. c0111/art1c1e2/0,28l7 ,2374076 ,OO. asp.


9 mashab1e.com/2010/08/02/andro1d-outse111ng-1phone- 2/.
16 Capítulo I Introducción a las computadoras y a Java

C'.apltulos de desarrollo de aplicaciorusAndroid en el sitw Wéb complementario


Debido alenorme interés en losdispositivoo y aplicaciones basadas en Android, hemoo integrado en elsitio
Web complemenmrio del libro una introducción de tres capítulos a.l desarroUo de aplicaciones Android,
hs cuales pertenecen a nuesiro nuevo libro, Androidfar Programmers: An App-Driven Approach. Después
de que aprenda Java, descubrid. que no es tan complicado cmpczax a desmrollar y ejecutar apljcaciones
Android. Puede colocar sus aplicaciones en el Android Market en línea (www .market. andro1 d. com) y, si
se vuelven populares, tal vez. hasta pueda iniciar su propio negocio. Sólo recuerde: Facebook, Microsoft
y DeUse iniciaron desde un dormitorio.

1.8 Lenguajes de programación


En esta sección veremos unos cuantos comenrarioo breves sobre varios lenguajes de programación popu-
lares (figura 1.5). En la siguiente sección veremos una introducción a Java.

Forrran Fortran (FORmula TRANslaror, Traductor de fórmulas) fue desarrollado por IBM
Corporation a mediados de la d écada de 1950 para utilizarse en aplicaciones científicas
y de ingcnicrla que rcqucnan cllculos matemáticos complejos. Ai\n se utiliz.1 mucho y
sus versiones más recientes son orienmcfas a objetos.
COBOL COBOL (COmmon Business Orientcd Languagc, Lenguaje comi\n orienmdo anego-
cios) fue dcs.1rrollado a finales de In d~cada de 1950 por fubricanres de compurodoms,
el gobicn10 estadounidense y usut1riosde computadoras de la indumia, con base en
un lenguaje dcsarroUado por Grace Hoppcr, un oficial de la Marina de Estados Unidos
y científico informático. COBOL adn se utiliza mucho en aplicaciones comerciales
que rcquicl'cn de una mnnipulaci6n precisa y eficicnre de gmndes voMmenes de dMos.
Su versión más reciente soporta la progtantación orienmda a objetos.
Lasaccividndcs de invc.~tigación en la década de 1960 dieron como resultado In
progr,1111ació11 tstrucwrtula: un método disciplinado pam escribirprogmmas que sean
más claros y fáciles de probar, depurar, y de modificar que los programas extensos
producidos con técnicas anteriores. Uno de los resultados más tangibles de csm
invcsrignción file el dc.,¡,1rrollo del lenguaje de progmmnci6n P:1scal por el profesor
Niklaus Wirth en 1971. Se diseñó para la enscJlan:r.a de la programación estructurada
y fue popular en los cursos universitarios duran ce varias décadas.
Adn Adn, un lenguaje basado en Pnsoil, se da,rrolló bnjo d patrocinio del Dcparmmcnto
de Defensa (DOD) de los Estados Unidos durante la década de 1970 y a principios de
la década de 1980. El DOD quería un solo lenguaje que pudiera satisfacer la mayoría
de sus necesidades. El nombre de cstc lenguaje bnsndo en J>nscnl es en honordc.Lndy
Ada Lovclace, luja del poeta Lo.rd Byron. A ella se le atribuye cl haber escrito el primer
programa para computadoras en el mundo, a principios de la década de 1800 (para la
MdquiM Annl!ticn, un dispositivo de Cl6mpuro mcclnico d~~f\ndo por Charles
Bnbbage). Su vcn.ión más reciente sopo1·ta la progmmación orientada a objetos.
Basic Basic se desarrolló en la déc:ida de 1960 en el Dartmouth Collcgc, para introducir a los
principian cc.rn la pl'Ogmmación, Muchos de sus versiones mds recicn tesson orlen rod:u
a objetos.
e C fue implementado en 1972 por DcnnisRirchie en los LabomroriosBéll. En un prin-
cipio se hizo muy popular como el lenguaje de deffl1'1'0llo del sistema opcrntivo UN IX .
.En la actualidad, la mayoría del código para los sistemas operativos de propósito
general se escribe en C o C++.

Fig. I .S I Otros lenguajes de programación (parte I de 2).


1.8 Lenguajes de programación 17

C++ C++, una extensión de C, fue desarrollado por BjameStraustrup a principios de la


década de 1980 en los Laboratorios Bcll. C++ p,·oporciona vnri.as camcter<.nims que
"pulen" al lenguaje C, pero lo nn:ts importat1tc es que proporciona la capacidad.es de
una programación orientada a objetos.
Objectivc-C Objcctivo-C es un lenguaje orientado a objetos bnsado en C. Se dcs:molló a principios
de la. dlcada de l980 y dcspu~ fue adquirido por la. empresa NelCC, que a su vt:1. fue
comprada por Applc. Se ha con vertido en el lenguaje de programación clave para el
sistema operativo Mac OS X y todos los dispositivos operados porcl iOS (como los
dispositivos iPod , iPhonc e lPnd).
Visual Basic El lenguaje Visual Basicde Microsoft se introdujo a principios de la décad.1 de 1990
JXlta simplificar d dc~nrrollo de aplicaciones para Microsoft Windows. Sus versiones
más rcciente.,sopormn la programación orientadn a objccos.
Visual C# Los tres principales lenguajes de programación de Mia-osoft son Visual Basic, Visual
C++ (basado en C++) yC# (ba.o;ado en C++ y Javn: dcsnrrollado para integrar Interne e
y Web en las aplicaciones de computadora).
PHP PHP es un lenguaje orientado a objccos de "secuencias de comandos• y "código fuente
abierto• (vea la sección 1.7), el c unl rccilx: soporte por medio de una oornunidod de
usunriosy d cs.,rrolladores; se utiliza en numerosos sitios Web, entre ellos Wikipcdia
y Faccbook. PHP es independiente de L, plataforma: existen implementaciones para
todos los principales sistemas operativos UNIX, Linux, Mac y Windows. PHP tambi61
ii:,porm muchas bases de daros, como MySQL.
Python Python, ocro lenguaje orientado a objetos de secuencias de comandos, se libero al
póblico en 1991. Fue dcsnrrollado por Guido van Rt:,ssum del Instituto Nacional de
In vestigación p= lns Marcm!lricns y Ciencins Compurncionales en Amstc.td.1m (CWI):
la mayor partedePytbon se basa en Modula-3: un lenguaje de programación de
sistemas. Python es "extensible": puede extenderse a rrav.!s de clases e intctfuces
de progmmnción.

JavaScript JavaScript es el lenguaje de secuenci.as de comandos mlis utilizado en el mundo.


Su principal uso es pnm agregar cnpacidnd de programación n las páginas Web:
por ejemplo, onlmncioncsc intcracrlvidnd con el usuario. Los principales navegadores
Web cuentan con él.
Ruhy on Rtiils Ruby fuecl'C(l.do :11ncdiados de la d&:idn de 1990 por Yukihim Marsumoro: es
un lenguaje de progmrnoción oxienrndo a obje1os de código fuente abierto, con una
sintaxis simple que es similar a Python. Rubyon R;iils combina el lenguaje de secuen-
cin.~ de comnndos Ruby con el mnroo de cm bajo de np licaciones Web R.1ils, d~1rrollndo
por37Signols. Su libro, Gt11higR1aL(9etti ngrea1 .37s1gna1s.comjtoc .php), es una
lectura obligatoria para los desarrolladores Web. Muchos desarrolladores de Ruby on
Rt,ils han reportado ganancias d e productividad superioresn b s de otros lengunjes,
ni uti liz.1r nplicncioncs Web que tmbajan de mnncm inccnsivn con bases dcdncos.
Rubyon Railsse uciliz6 para crearla interfaz de usuario deTwittec.

Scnla Sen la (www. sea1a -1an9. org/ nodo/273), abreviación en inglés de "len ¡¡unjc cscnlnble",
fu e d iscJlado por M1rcin Ode1'Sky, un profesor en la 1'.oolc Polytcchn ique Pc!démlc
de Lausanne (EPFL) en Suiza. Se lanzó al público en 2003; utiliza los paradigmas de
oricnmción a objetos y de progrnmnción funcion11I, y esr.l discllndo pnm in1cgm1'Se
mn Jnvn. Si p1:ogmmn en Scala, podm rcdudr de manera considerable la mnlicbd
de código en sus aplicaciones. Twitter y Foursquarc usan Scala.

Fig. I . S I Otros lenguajes de programación (parte 2 de 2).


18 Capítulo I Introducción a las computadoras y a Java

1.9 Java y un típico entorno de desarrollo en Java


L., contribución m:b importante a la fecha de la revolución del microprocesador es que hi7.o posible el
desarrollo de las computadoras personales. Los microprocesadores están teniendo un profundo im-
pacto en los dispositivos electrónicos inteligentes para uso domé.~tico. AJ reconocer esco, Sun Micro-
sysrcms p:mocinó en 1991 un proyecto interno de investigación corporadvn dirigido por James
Gosling, que resultó en un lenguaje de programación orientado a objetos y basado en C ++, al. que
Sun llamó Java.
Un o bjeti vo clave de Java es poder escribir programas que se ejecuten en una gran variedad de siste-
mas computacionales y dispooitivos controlados por computadora. A esto se le conoce algunas veces
como "escribir una ve:r., ejecutar en cualquier parte".
La popularidad del servicio Web se intensificó en 1993; en escenconces Sun vio el potencial de usar
Java para agregar contenido dindmico, como inceraccividad y animaciones, a las páginas Web. Java ge-
neró la atención de la comunidad de negocios debido al fenomenal interés en Web. En la actualidad,
Java se utili1..a para desarrollar aplicaciones empresariales a gran escala, para mejorar la funcionalidad de
los servidores Web (las computadoras que proporcionan el contenido que vemos en nuestros explora-
dores Web), para proporcionar aplicaciones para los dispositivos de uso doméstico (como teléfonos
celulares, teléfonos inteligemcs, receptores de televisión por Internet y mucho más) y para muchos otros
propósitos. .En 2009, Oracle adquirió Sun Microsystems. En la conferencia JavaOne 2010, Oracle
anunció que el 97% de codas las computadoras de escritorio, tres mil miUooes de dispositivos portátiles
y 80 millone.~ de dispositivos de televisión ejecutan Java. En la acrualidad hay cerca de 9 millones
de desarrolladores de Java, en comparación con los 4.5 millones en 2005. 10 Ahora Java es el lenguaje de
desarrollo de software más utilizado en todo el mundo.

Bibliotecas tÚ clases tÚJava


Usted puede crear cada clase y método que necesite para formar sus programas de Java. Sin embargo,
b mayor/a de los programadores en Javn nprovechnn las ricas colecciones de clases exisrcntes en las bi-
bliotecas de clases de Java, que tan1bién se conocen como API {Interfaces de programación de
aplicaciones) de Java.

Tip de rendimiento 1.1


S utiliza las clomy mitodos de las API dejava en vee ,ü escribir ttJS propias Vl!1'tio11espru-
de mejorar el rmdimimro de s1,s programas, ya q11t emu clasn y mdtoáo, mán 11cri11Js dt
ttwsera cuidad-Osa para fimciotUU' t::011 eficacia. Esta tdmica tambii11 "duce el tiempo
de desarrollo de los programas.

Tip de portabilidad 1.1


Atmq11t es más fiicil eu:ribir programas porrables (programas que se putdat1 ejecutar en
m11rlJ11S ripo, dl1tl11tos de rompmadoras) e11 Java t¡ue e11 la. mayor/a de los otros lenguajts
de programacüJ11, las difom,cias enm los compiladom, lasJVMy las computad,iraspuedm
MJtionar t¡tUI sea dijlcil lograr la ponabiüdaá. El simpk hecho de escribir programas m
Java 111> pr11111iea la portabilidad.

Ahora explicaremos los pasos dpicos utilizados para crear y ejecutar una aplic1ción en Java, me-
diante el uso de u11 entorno de desarrollo (el cual se ilustra 0 11 las figuras 1.6- 1.1 O). Por lo general, los
programas en Java pasan a través de cinco fu.ses: edición, compilación, carga, verificación y ejecución.
Hablaremos sobre estos conceptos en el contex-ro .del Kit de desarrollo de Java SE (JDK). Puede descargar
el JDK mds actunli1,ado y su docurncntaci6n en www .o rac1e .com/tec hnetwork/java/javase/

10 jaxenter .com/how-many- java- developers-are-there-10462. html.


1.9 Java y un típico entorno de desarrollo en Java 19

down 1oads/i ndex. html. Lea la sección Antes de empezar este libro para asegurarse de con.figurar su compu-
tadora m forma apropiada para compilar y ejtcwtar programas m java. Tal ve,, rambién desee visiror el
ocntro para principiantes de Java (New to Java Center) de Oraclc en:

www.ora cle.com/technetwork/topi cs/newtojava/overview/i ndex . html

[Nota: este sitio Web proporciona las instrucciones de instalaci6n para Windows, Linux y Mac OS X.
Si no uciliza uno de esros sistemas operativos, co ns ulte la documenroci6n del entorno de Java de su sis-
tema o pregunte a su instructor c6mo puede realizar estas tareas con base en el sistema operativo de su
rompuradora. Si encuentra un problema con éste o cualquier otro vínculo mencionado en este libro,
visite ol siclo WIWl.dei tel . com/books/j htp9/ para consultar la fe de erratas y notifíqucnos su problema
al correo electr6nico deite l@dei tel. com].

&Si! J: Ct·eación de u11 programa


La fu.se I consiste en editar un archivo con un programa de edición, conocido comúnmente como editor
(6gura 1.6). Usted escribe un programa en Java (conocido por lo general como código fuente) por medio
del edito r, reali7,a las correcciones necesarias y guarda el programa en un dispositivo de almacenamiento
secundario, como su disco duro. Un nombre de archivo que termina con la extens16n . java indica que
éste contiene c6digo fuente en Java.

El progr,ma se crea en un
rase 1: Edición !dltor y se almaoena en cisco.
l'ditor
} 111 un archivo cuyo nombre
trmlnacon .ja va.

Fig. 1.6 1 Entorno de desarrollo típico de Java: fase de edición.

Dos de losedicore.~ muy ucili1.ados en sistem:,s Linux son vi y emacs. En Windows, basta. con usar el
Bloc de Notas. También hay muchos editores de freeware y sharewarc disponibles en lfnea, como &lit·
Plus (w,,¡w. editplus . com), Tex:tPad (www. textpad .com) y jEdit (wlWI. jedi t . org).
Para L1S organizaciones que de.~.rrollan sistemas de informaci6n extensos, hay entornos de desa-
nollo Integrados (IDE) disponibles de la mayor ía de los proveedores de software. Los !DE proporcio-
nan herramientas que dan soporte al proceso de desarrollo del software, incluyendo editores para escribir
y editar programa.~, y depuradores para localizar etrores lógicos: errores que provocan que lo.~ progra·
mas se ejecuten en forma incorrecta. Los IDE populares son Eclipse (www .ec11 pse .org) y NcrBcans
(wlWI. netbeans . org).

&se 2: Compilación tk u11 programa en Java para convntirlo en códigos de bytes


En la fu.se 2, el programador utiliza el comando javac (el compilador de Java) para compilar un progra-
m,1 (6gura 1.7). Por ejemplo, p~ra compi lar un programa llamado 81 enven1 do. java, escriba

javac Bienvenido.java

en la ventana de comandos de su sistema (es decir, el Símbolo del sistema en Windows, el indicador de
shcllcn Linux o la oplícaci6n Terminal en Mnc OS X). Si el programa se compila, el compilador produce
un archivo .cla&S 1lan1ado Bienvenido. class que contiene la versi6n compilada del programa.
20 Capítulo I Introducción a las computadoras y a Java

Fase 2: Compllacl6n Compilador


_ _
I• J
~ seo
}
El compilad01 crea códigos de
Wtes y los almacel13 en disco.
en un archllO CU)() nombre
ttrminacon .class.

Fig. l . 7 I Entorno de desarrollo típico deJava: fase de compilación.

El compilador de Java traduce el código fuente de Java en códigos de bytes que representan las tareas
a ejecutar en la fase de ejecución (fase 5). La máquina virtual de Java OVM), que forma parte del JDK
y es la base de la pl:irnforma Jnva, ejecurn los códigos de bytes. Una máquina virtual (VM) es unn aplica-
ción de software que simula a una computadora, pero oculta el sistema operativo y el hardwaresubyacen-
res de los programas que interactúan c.on ésta. Si se implementa la misma VM en muchas plataformas
computacionales, las aplicaciones que ejecute se podrán utilizar en rodas esas plataformas. La JVM es
una de las máquinas virn1ales más utilizadas en la acrualidad. La plataforma NET de Microsoft utiliza una
arquitectura de máquina virtual similar.
A diferencia del lenguaje m:iquina, que depende del hardware de una compur-.adora específica, los
códigos de bytes son instrucciones independientes de la plataforma; no dependen de una plataforma de
hardware en especial. Entonces, los códigos de bytes de Java son portables: es decir, se pueden ejecutar
los mismos códigos de bytes en cualquier plataforma que contenga unaJVM que comprenda la versión
de Java en la que se compila.ron los códigos de bytes sin necesidad de volver a compilar el código fuenre.
LaJVMse invoca mediante el comando java. Por ejemplo, para ejecutar una aplicación en Java llamada
Bienvenido, debe escribir el comando

java Bi enven1 do

en una ventana de comandos para invocar la JVM , que asu vez inicia los pasos necesarios para ejecutar la
aplicación. Esto comienza la fase 3.

mSI! 3: Onr;ar tm pt·og,·ama n, numzot·ia


En la fose 3, la JV M co loca el programa en memoria para ejecutarlo; a esto se le conoce como cargar
(figura 1.8). El cargador de clases toma los archivos .class que contienen los códigos de bytes del
programa y los transfiere a la memoria principal. El cargador d e clases rombién ca.rga cualquiera de los
archivos . el ass que su programa utilice, y que sean proporcionados por Java: Puede cargar los archi-
vos . class desde un disco en su sistema o a través de una red (como la de su universidad local o la red
de 1:i empres:,, o incluso desde Internet).

Memoria

fa se 3: Carga Cargador de cla~s


1-- -- Jrlndpal

t - -1
El cargad()( de clases
~e los archivos . el ass
que contienen códigos
de bytes del disco
y ooloca esos (IÓdlgos

r Disco
de bytes en la memoria.

Fig. 1.8 1 Entorno de desarrollo típico de Java: fase de carga.


1.9 Java y un típico entorno de desarrollo en Java 21

Fase 4: Verificació11 del código de bytes


En la fuse 4, a medida que se cargan las cl:ises, el verificador de códigos de bytes examina sus códigos
de bytes ¡>ar'J asegurar que sean válidos y que no violen las re-micciones de seguridad de Java (figuro 1.9).
Java implementa una estrecha seguridad para asegurar que los programas en Java que llegan a través
de la red no dañen sus archivos o su sistema (como podrfan hacerlo los virus de computadora y los
gusanos).

fkmoria
principal
~riflca(lor de código
Fase 4: Verlllcacl6n
de ~s
El vtriflcador de código
de bytes conllrma que
10dos loscódigos de
!,¡tes sean v,lldos y
no violen las itstricclones
de seguridad de Java.

t----.

Fig. 1.9 1 Entorno de desarrollo típico de Java: fase de verificación.

&se 5: Ejecución
En la fase 5, la JV M ejecuta 1~ códigos de bytes: del programa, realizando as( las acciones especificadas
por el mismo (figura J. 1O). En las primeras versiones de Java, laJVM era tan sólo un intérprete de códigos
de bytes de Java. Esto hada que la mayoría de los programas se ejecutaran con lentitud, ya que la JVM
tenía que interpretar y ejecutar un código de byte a la vez.. Algunas arquitecmras de computadoras mo-
dern:1s pueden ejecutar va,ias instrucciones en parolclo. Por lo gencr:11, las J VM ncruales ejecutan códigos
de bytes mediante una combinación de la interpretación y la denominada compilación justo a tiempo
orn. En este proceso, la JVM anali:,,a los códigos de bytes a medida que se interpretan, en busca de
p1mtouwivos: parte.~ de los códigos de bytes que se ejecutan con frecuencia. Para escas partes, un compi-
lador justo a tiempo (JIT) (conocido como oompilador HotSpot de Java) traduce los códigos de bytes
aJ lenguajemÁquina correspondiente a la computadora. Cuando laJVM encuentra estas partes compila-

Memoria

J- -
principal
Mi~ina virtual Para ejecutar el programa. fa JVM
Fase 5: Ejec:ución
deJ.waUVM) ~e tos códigosde bytes y tos compila
... 'Justo a tiempo• OIT):es decir,
los tt.>dtice en ,.,n lene,,~Je qve 1,
computadora pueda entender.
A medida que se ejecuta el pronrama,
existe la posibilidad de que almacene
los valores de los datos en la
memoria principal.

Fig. 1.1 O I Entorno de desarrollo típico de Java: fase de ejecución.


22 Capítu.!o I Introducción a las computadoras y a Java

das de nuevo, se ejecuta el c6digo en lenguaje máquina, que es rru1s dpido. Por ende, los programa en
va n r lidad p, an p r dM fas d compilacl6n: un n la ual loodig fuent r.duc códi o d
byt (p • t fi r po.rtabilld d trav cJ JVM n dj 111\ pla · r COI :tputaeionru ) y
que, dm,mte la ejecuci6n, los c6digos de b yt es s:e traducen en lenguaje máquina para la computadora
. ctuál I J · que · ej utn eJ I rogram .

Probln,ui, qt p"ed no ,i,ri,· ,, tiempo de ej c11ción


prob· bl· qu 1 . p gmru no funcion I b p !m m va. . da una d la f; ant rfo.r pu e fall:tr
debido a diversos errores que de críbiremos en esre texto. Por ejemplo, un programa en ejecuci6n podría
i11t ntru: un div' i6n ntt ro {u oper ción '1 l p:tta I arl m�ti con nún ro en ro c1 Jv·i).
· to harl que program d J
v imprimic un meo., j d e ror. i t i1·r , t ndJ qu gr . r.
la fase de edici6n, hacer las corrooclones necesarias y proseguir con bs fues restantes de nuevo, prua de-
:rmin r qu 1 · cor · ion hayan r· ·u to• l(l ) p · bl ro (} [Noto: la m ·y - ría d J- prog am tn
J.vn . ci en o ptodu n d to . u :ndo d · mo que un p og ,a mue: tra un m ns J • par I n .. 1
queremo decir que aparece en In. pantalla. de ,su computado a. Lo mensaje y otro d·uo pueden enviar-
.ao di po '.rivo e m I di co y impf\P.11rirn,<:l, o inclu o un red p tran n1icirl otras
ron pu dorasl,

orco ·n
Lonrror,s, mmo la divisidr1 l!lllt'f uro. omrrm a mwiidt1. qiur 1t tjecut,i u11 progm,11", dt1
m11.nera qut a estoJ trrofds !t ks llama mv,�1 tiempo Jjturucwn. Los ff't'Or11
fotaú, ,m Msmpo d.# 6,jecrunó hau,, q11t los pmgra·mas «nnüm, de im,u,dímo, rin
/J(lkr rffllit:alkJ büm su trab tjo. Loun·roN1 r,o faM!, • 11 ti 111po tk trje udón pm11Jr,m
a lot pr'Ogrnmat ejemtarst1 hastn tem inar m trabajo, lo t¡ut a ,mmudo produa rtt11ltado1
inrornctos.

1.1 O Prueba de una plicación en J va


·n a prlm J
pll cl6n n va ' in · ro, uará ort la. P ro mpezru:, ej · u ará
una aplicación de ATM 1 cual simula las t:ransa,cdones que e llevan a cilio al utilizar una máquina de
01j r.o aucomático 1 o ATM (po ej mplo rerira dinero reafü.ar depósito y verificar lo saldos de tas
cu n ). pr •nd- ne a apli d6n n el j mpl pi uco opdonalo i n -d j t qu.- in­
cluye en lo capitulas 12 y 13. Para los 6.nes de estasecci6n vamo a uponer que ei;tá urilii.ando Microso&
Windows. 11
En 1 1 •ui n p - , j cu pH ión y r aliz.a v i� · oci n - . 1 rn. · n y 1
funcionalidad que podemo ver en esta aplicación on típico.s de lo que aptenderá a programar en este
Ubro [Nota: u ili7,3mo fuent para di fer nci r kt caracterí tic.as qu e ven ·n una pantalla (por ejem­
lo ! Simbo lo d . � t m ) y I el m nc:o qu no laci n n d m n dir - ta n un p nt 11 .
Nuestraoonvend6n es enfatizar las características de la pantalla como los título y menús (por ejemplo,
el m nó Archivo) en una fuenre Helvetlca sans-serlfen mi-negritas, y enf:atiznr lo, 1 mento qu no
n d I pru, all , n lo nombr d ivo o I d d n (com Nombr Progr m .j v )
en wiafue.nte Lucida sans-serif. Como tal vf"L yase haya dado cuenta, laoCW"te.ncia de definici6n de
cada t rmino ·n J texto e tabl ce en ne fou1. En las fislll'M n ta ecci6n, rcsrutaJno� n una pun-
-11 ri el ro l. 1 l , d d I u rnuio requerid pó· d pa o al mo 1; p. re impo tan · d ,

11 En IIWWI. derl te l • com/book s/j h tp9/, o Ír«émos una vers.ió.n ea Linux de ·esta prul!ba. Tam b iim ofrec.emos vínculos a vídeos
que le ayudarán aempo,ar a trabajar con vádoo entornos de dé.$án"Ollo integrados populares (IDE), oomu el Kit de des.u-rollo
dr Java � G para Wlnd w. , 1 S K0 d E.clip pnr Windowi1, NtrB ·m , , · SP, Dr .i.v , Bluc: y I edit d l t 11 tPi 1
pa. Windo
1.1 O Prueba de una aplicación en Java 23

aplicación. Para aumentar la visibilidad de estas características, modificamos el color de fondo de las
venc.1nn.s del Símbolo del alatema a blanco y el color de las letras a negro]. É.sra es un a versión simple
que co nsiste de texto solamente. Más adel:mte en el libro, aprenderá las técnicas para rediscilar este
ejemplo mediante el uso de las técnicas de GUI (interfaz. gráfica de usuario).
t. Revise m configuració,i. Lea la sección Anrcs de empezar c.ue libro para confirmar que haya
iostafado Java de manera apropiada en su computadora, y copiado los ejemplos del libro en
su disco duro.
2. Loctúic, la aplicaeió,i completa. Abra u na ventana Slmbolo del sistema.Para ello, puede selec-
cionar Inicio ITodos los programas I Accesorios I Símbolo del sistema. Para cambiar al directorio
de la aplicación del ATM, escriba cd C: \ejemplos\capOl\ATM y después oprima lmro (figura
1.11). El comando cdseutiliza para cambiar de directorio.

Uso del comando cd para Ublc;ici6n del a1thivo de la apllcaclón


cambiar de cirectorio del cajero automático (ATM)

-
. ,Adl lni1111tor. Comm,M PtomP.t .,Jgj~
~:\>cil C: ....,p1e, chOJ \ AT"I
~: \ examp1es \ ch01\A1l4> ª
..:.1

Fig. 1.11 1 Abrir una ventana Símbolo del sistema en Windows XP y cambiar de directorio.

3. Ejecute la aplicación túl ATM. &criba el comando java EjemploPracticoAlM y oprima


Intro (figura 1.12). Recuerde que el comando java, seguido del nombre del archivo .el ass de
la aplicación (en esre caso, EjemploPracticoAlM), ejecuta la aplicación. Si especiñcamos la
extensión . el ass al usar el comando java se produce u.n error (Not,,: los comandos en Java son
sensibles a mayúsculas/minúsculas. Es importante escribir el nombre de esta aplicación con las
lerras A, T y M mayúsculas en "ATM", u na letra E mayúscula en "Ejemplo" y una lerrn P ma-
yúscula en "Practico". De lo contrario, la aplicación no se ejecutará.] Si recibe el mensaje de error
"Exception in thread "main" java. lang .NoClassDefFoundError:EjemploPracticoATM",
entonces su sistema tiene un problema co n CLASSPATH. Consulte la sección Antes de cmpe¡~ir
este libro para obtener instrucciones acerca de cómo corregir este problema.

• Adminlstrillor: Comm,tKI Prompt

~:\>cd C:\exampl os\ch0l\A1l4


~: \ cK""P1c:.\ ch01\p,n,¡, j~v~ •11·c~ocstudy

Fig. l. 12 I Uso del comando java para ejecutar la aplicación del ATM .

4. Escriba un número de cuenta. Cuando la aplicación se ejecuta por primera vez, muestra
el mensaje "1 Bienvenido I" y le pide un número de cuenta. &criba 12 345 en el indicador
"Escriba su numero de cuenta:" (fa gura 1.13) y oprima lntro.
24 Capítulo I Introducción a las computadoras y a Java

M!nsaje de blenvtnlda del ATM Indicador para Introducir el número de cuenta

m AdmlnlmMo Comm•l!<IP1omp1· ¡tv• ATMC,,.S<udy


: 1xomp t 5 ~llol>java A· as estu y

lea.se enter your account nu,nber : U)4S

Fig. 1. 13 I La aplicación pide al usuario un número de cuenta.

5. Escriba un NIP. Una vez que introdU7.ca un número de cuenta vdlido, la aplicación mostrará
el indicador "Escriba su NIP: ". Escriba "54321" como su NIP (Número de Identificación
Personal) vMido y o prima lntro. A continuación aparecerá el menú principal del ATM, que
oonciene una lista de opciones (figura 1.14). En el capitulo 14 le mostraremos cómo puede
introducir un NIP en forma privacla mediante el uso de un objeto JPassword Fi e ld.

Introduzca un NIPválldo Menú principal ATM

• Adm1n1«,~or. Comm, d P1omp1 •J••• ATMC,11S<ud)' ..JgJ.?tl


~e 1come1
Pl ease enter your ¡iccount number: 12345
::l
~nte,· yO<Jr PIN: 5"0'21
4ai n menu:
l -- W
Vi ew rrry bal ance
i thdraw cash
3 • Ocposit funds
~ • Exit
Entera choi ce: ..:J

Fig. 1. 14 1 El usuario escribe un número NIP válido y aparece el menú principal de la aplicación del ATM.

6. Revise el saláo de la cue,,ta. Seleccione la opción 1, "Ver mi sa1do" del menú del ATM (fi-
gur:11.15). Aconrinut1ción l11nplicación mos1raddosnúmcros: Saldo disponibl e(Sl,000,00)
y Saldo total (Sl,200.00). El saldo disponible es la máximacantidaddedineroen su cuenca,
disponible para retirarla en un momento ciado. En algunos casos, cienos fondos como los de-
pósiros recientes, no esdn disponibles de inmediato para que el us uario puodn rcurarlos, por
lo que el saldo disponible puede ser menor que el saldo total, como en este caso. Después de
mostrar la información de los saldos de la cuenta, se vuelve a mostrar el menú principal de la
npli~1ción.

7. Rdire dinero de la cue,,ta. Seleccione la opción 2, "Retirar efectivo", del menú de la apli-
cación. A continuación apnreccm (figuro 1.16) una lim1 de momos en dólares (por ejemplo: 20,
40, 60, 100 y 200). También tendrá laoportw1idad de cancelar la transacción y regresar al menú
principal. Retire $100 seleccionando la opción 4. La aplicación mostrad el mensaje "Tome su
efectivo ahora" y regresar:! a l menú principal. [Notn: por desgracia, esca aplicnción só lo 1im11ú,
el comportamiento de un verdadero ATM, por .lo cual no dispensa cfectlvo en realidad.!.
1.1 O Prueba de una aplicación en Java 25

lníormaci6n del saldo de la cuenta

• Admíol<11•or. Comm,nd Promp1


onter a Cho1ce: ( _J
.L. ATMC,,.Study

~alance tnfor~at ion:


- Available balance: Sl, 000.00
- Total balance: Sl, 200.00
~•in menui
• - View "Y balance
' · Withdraw cash
3 - Oepos;t funds
i4 • Exit
/ntor • choico: .:.J

Fig. 1. 1S I La aplicación del ATM muestra la información del saldo de la cuenta del usuario.

Menú de retlAl del ATM

• Adm1ni1Uf(Ot" Comm1nd 1P,omp1 ~ j.tv• ATMCau~udy


,nt er 1. cno1 ce: l .:.
...J
Withdrawal Menu : -
1 • SW ~
12 • S40 l'G'
3 - S60
14 • SlOO
5 • S200
~ · Cancel transact;on
~hoose a withdru~l "'110unt : 4
l>lease take your cash now .
lf~i n menu:
l • View a,y balance
2 · Withdraw ca.•h
3 · Oopos it funds
~ - Exit
'Enter a choice:

Fig. 1. 16 1 Se retira el dinero de la cuenta y la aplicación regresa al menú principal.

8. Confirme que la información de la cuenta se haya actualizaáo. En el menú principal, se-


leccione la opción 1 de nuevo para ver el saldo actual de su cuenta (figura l. 17). Observe que
ctnto el saldo disponib le como el saldo to tal se han acLualizado para reflejar su transacción
de retiro.

9. Fi11alic1 la trat11act:ión. Pam finali1,or su sesión ncrual en el ATM, seleccione b opción 4,


"Sa11 r" del menú principal (figura 1. 18.) El ATM saldd. del sistema y mostrará un mensaje
de despedida al usuario. A continuación, la aplicació n regresará a su indicado r original, pi-
diendo el número de cuenta del siguiente usuari o.

10. Salga tÚ la aplicación tklATM y cierre la ventana Sfmbolo del sistema. La mayoría de las
apli cacio nes cuennlll co n una opción para saJir y regresar al directorio del Slmbolo del sistema
desde el cual se ejecutó la aplicación. Un ATM real no proporciona al usuario la opc.ión de
apagar la máquina ATM. En vez de ello, cuando el usuario ha completado rodas las transac-
ciones deseadas y elige la opción del menú para salir, el ATM se reinicia y m uestra un indica-
dor para el nt'L111ero de cuenta del siguiente usuario. Com o se muestra en la figura 1.18, la
26 Capítulo I Introducción a las computadoras y a Java

• Adm,nl111"º' Comm•nd P1omp1 •I'" ATMCH•Sl•lly .,Jgj Kj


ntor a cho1ce: l il
alance Infon,ation: _ _ _ _ _ Confirmación de la información actualizada del saldo ...J
- Available balance: 1900,00 de larue ntadespuésdela1Tansacci6nderetiro.
Total balance: Sl,100.00
a.in menu:
• View ay bal ance
• Wi thdraw cash
3 • oeposit funds
• g,it
..:J

Fig. 1. 17 I Verificación del nuevo saldo.

• Admln1J11>10< Command P1omp1 •jr,l ATMCutStudy


,nte,· a cno1 et: 'I .:.J
...J
E•iting the syrte•...
lrhank you t Goodbye 1 - - Menllje de despedida del ATM
~elcome l Indicador para pedir el número
l>l ease enter Jour account nullber: - - de cuenta del siguiente usuario ..:J

Fig. 1. 18 1 Finalización de una sesión de transacciones con el ATM.

apli cació n del ATM se comporta de manera similar. Al elegir la opció11 del men(1 para salir
sólo se termina la sesión del usuario actual con el ATM, no toda la aplicación completa. Para
saUr realmente de la aplicación del ATM, haga clic en el botó n de cerrar (x) en la esquina su-
perior derecha de la venr:ma Símbolo del alatema. Al cerrar In venr:ina, la aplicación termina
su ejecución.

1.11 Web 2.0: Las redes sociales


Literalmente, la Web cobró fue17,a a mediados de la dooida de 1990, pero surgieron tiempos difíciles a
principios del alío 2000, debido al desplome económico de "punto oom". Al resurgimiemo que empero
alrededor de 2004, se le conoce como \1a!b 2.0. A Google se le considera en muchas partes como la com-
pafifa característica de Web 2.0. Algunas otras com paJíías con "características de Web 2.0" son: Yo uTu be
~ltlo para compartir videos), PaccBook (red social), Twltter (miccoblogs), Groupon (comercio social),
Foursquare (reportes o "check-ins" móviles), Salesforce (software de negocios que se ofreceoomo servicios
en línea), Craigslist (listados gratuitos de anuncios clasi6cados), Flickr (sitio para compartir fotos), Se-
cond Lifc (un mundo virtual), Skype (telcfonío por Internet) y Wikipcdia (unn e nciclopedia en 1/nea
gratuita).

Googk
E.n 1996, los candidatos a un doctorado en ciencias computacionales de Sta.nford, La.rey Page y Sergey
Brin, empezaro n acoh1borarcn un nuevo motor de búsqueda. En 1997 lecambiaron el nombren Goo-
gle con b:ise en el t~rmino matem:itiro gtígoi(en inglés, googol), una cantidad represen cada por el nú-
mero "uno" seguido de IOO "ceros" (o I0100): un número de un tamaño asombroso. La habilidad de
Google p:ll'11 devo lver resultados de búsquedas con exm:mn precisión le ayudó a convertirse con r:ipidC'J,
en el motor de bt'1Squeda más utilizado, además de ser uno de los sitios Web más populares en el mundo.
1.11 Web 2.0: Las redes sociales 27

Googlecontinúasiendo un innovador en las tecnologías de búsqueda. Por ejemplo, Google Goggles


es una fascinante aplicación móvi l (disponible en AJ1droid e iPhone) que permite al usuario realizar una
búsqueda, con la novedad de que utiliza una fotografü en vez de texto. Usted sólo tiene que tomar fo-
tografías de puntos de referencia, libros (cubiertiaS o códigos de barras), logotipos, arte o etiquetas de
boteU:.u de vino, y Google Goggles escanea la fotograffa para devolver los resultados de la bú.squeda.
También puede tomar una fotogralla de texto (por ejemplo, el menú de un restaurante o u11 anuncio)
yGoogle Goggles lo traducirá por usted.

Servicios Wéb y mashups


En este libro incluimos un tratamiento detallado sobre los servicios Web (capítulo 31) y presentamos la
nueva metodología de desarrollo de apli cac.iones conocida como 1110slJ11p1, en la que puede desarrolla.r
ron rapidez,aplicaciones poderosas e intrigantes, al combinar servicios Web complementarios (a menu-
do gratuitos) y otras formas de fi1entes de información (figura 1.19). Uno de los primeros mashups
fue www. housi ngmaps. com, que combina al instante los lismdos de bienes rafees proporcionados por
www.craigslist.org con las capacidades de generación de mapas de Google Mdps para ofrecer mapas
que muestren las ubicaciones de los apartament~ en renta dentro de cierta área.

GoogleMa~ Servicios de mnpM


Facebook Redes sociales
Foursquare Reportes (chcck-ins) móviles
Liokcdln Redes sociales para negocios
YouTube Básqued.'IS de video
1wiricr Microbio~
Groupon Comercio social
NcrAix Rt,n m de pd(culns

eBay Subastas co In cerner


Wikipcdia Enciclopedia ool~bomcivn
Poyt>n l P.tgos
Lasr.fm Radio por lorcrner
Amnzon cCommcrce C.omp1'0 de libros youosnrdculos
Salesforoe.com Administración de las relaciones con d diente (CR.M)
Skypc Telefonía por In rernei
MicrosofrBing Búsqueda
Flickr C.om parcir foro grafías
Zillow Precios de bienc.~ mices
Yahuo St!art:h Bósque<la
Wc:nchertlug Climn
Flg. 1. 19 Algunos servicios Web populares (www .programmabl eweb. com/apis/
1

di rectory /l?sort-mashups).

Ajax
Ajoxes una de las tccnologfos de software más Importantes de Web 2.0, ya que ayuda a las aplicaciones
basadas en Internet a funcionar oomo las aplicaciones de escritorio; una ta.rea dificil, dado que dichas
28 Capítulo I Introducción a las computadoras y a Java

aplicaciones sufren de retrasos en la transmisión, a medida que los datos se intercambian entre su compu-
radora y las computadoras serv idores en Inrernec. Mediante el uso de Ajax, las aplicaciones como
Google Maps han logrado un dcsempeflo excelente, adem:ls de que su apariencia visual se asemeja a las
aplicaciones de escritorio. Aunque no hablaremos sobre la programación "pura" con Ajax en este Libro
(que es bastante compleja), en el capitulo 30 le m ostraremos c6mo crear aplicaciones habi.litadas para
Ajax mediante el uso de lo.~ componentes de JavaServer .Faces OSF) habilitados para Ajax.

Aplú:acio1111s sociaÚ!s
Durante los últimos afiosse ha producido un aumento considerable en el número de aplicaciones socia-
les en Web. Aún y cuando la industria de la computación ya alcanzó la madurez, estos sitios fueron
c1paces de tener un éxito fenomenal en un periodo de tiempo relativamente corto. La figura 1.20 ana-
fiza unas cuantas de las aplicaciones sociales que están generando un impacto.

• •
Faccbook fucebook inició desde un dormitorio en Hnrvard en el nño 2004, gmcins a
los alumnos MnrkZucker~rg, Chris Hughcs, Duscin Moskovirz y Edunrdo
Saverin, y ahora tiene un valor estimado de 70 mil millones de dólares.
Pam enero de 2011, Fncebook cm e l sitio mi,nctivo en lncemct con más
de 600 millones de usunrios--cnsi 9% de b población mundial- , quienes
invierten 700 mil millones de minutos en Facebook al mes. Según su tasa
de crecimiento actual (cerca del 5% mensual), en 2012 Faccbook llegara
n mil millones de usuarios ¡de los dos mil millones de lncemctl L., actividad
en esre sitio lo hoce muy ntmcrivo para los des.,rrollndorcs de aplicaciones.
Cada ella, los usuarios de Faccbook inscalan más de 20 millones de aplicaciones
(http: / /www.facebook.com/press/1nfo. php?stati s tics).
"l\victcr Jack Dorscy, Evan Williams e lsaoc .. Bii' Stonc funda,'On Twicteren 2006:
todo desde la compañía de podcasrs, Odeo. Twitter revolucionó los microblogy.
Los usuarios publican •rwccr.s": mcns:ijes de hasra 140 ca_mcrcrcs de longi rud.
Se l'ublicnn cc,'Cn de 95 millones de cweccs a diario (tw1tter. com/about).
Usted puede seguir los rweets de amigos, artistas, negocios, representantes del
gobierno (incluso el presidente de Estados Unidos, quien tiene 6.3 millones
de seguidores), ctcércra, o seguir twcccs del rcmn pnm dnr scguimlcnro n
noticias, tendencias y mucho más. AJ momento de cscribircscc libro,
Lady Gaga tenía el mayor núm.cro de seguidores (más de 7.7 millones).
Twirrer se convirtió en el punto de origen pnra muclms noticins de dltimn
hora en codo el mundo.
Groupon Groupon, un sido de a,mercio social, fue lanz.~do porAndtew Mason in 2008.
Pnm enero de 2011 In compnllfn csrnba vnlundn ni rededor de los $15 mll
millones ¡con lo cual se convirtió ei1 la compañía con ,nás rápido crccimfonco
hasta esa focha! Ahora está disponible en cientos de mercados en codo el
mundo. Groupon mucstm unn oferta dinrin en cada mercndo pnr.J resmumnccs,
YCndedorcs al dccaUc, se,·vicios, acroccioncs ydcmd.s. Las ofcrtnsse activan
sólo hasta que se inscribe el mlnimo nllmero de personas requeridas para
compmr el producto o ser'vicio. Si usted se inscribe en unn oferta y codav/n
no cumple con el mlnimo, caJ vez se vea rcnrndo n dnr nviso n otras personas
sobre esa oferta por correo electrónico, Facebook, Twicrer, etcétera. Si la oferta
no cumple con el mínimo de venrns, se canccb. Una de lasofertns de Groupon
m:lscxitos:tSa nivel 11:icional n l:1 fecha fue un ccrtificndo de $50 dólares en
mcrcanda de una importante compatüa de ropa a sólo $25. Se vendieron m:ls
de 440,000 cupones en un solo dfa.

Fig. 1.20 1 Aplícaciones sociales (parte I de 2).


1.12 Tecnologías de software 29

Foursquarc Foursquare-creada en 2009 por Dennis Crowley y Navecn Selvadurai-


es una aplicación para realizar repones (duck-i11s) móviles, la atal le pcnnite
notificor a sus nmigos los lugnres que visim. Puede dcscor¡,,nr In npllcoci6n en
su teléfono ln tcli gen ce y vincularla con sus aicnms de Faccbook y Twirrcr, de
modo que sus amigos puedan seguirlo desde varias plataformas. Si no tiene
w1 teléfono inteligente, puede rcpor.cnrsc mediontc un mcns:ijede texto.
Poursquarc utiliza el servicio GPS p,am determinar su ubicoci6n cimcm.
Lasemprcs:isusan Foursquarcpara ,envia.roferms a los usuarios que se
encuentren cerca. Foursquo_rc inició sus operaciones en mo_no de 2009
y yn cuenta con mds de 5 millones de usuarios en rodn el mundo.
Skype Skype es un produao desofrwarequele pcrmitereali:z.ar llamadas de voz yde
video (la mayorfo son gmcuims) a través de lnterner, median re el uso de una
tccnologfa llamada ',1,/P (\.6.e S()brt1 l l", IP se refiere a "'Protocolo de lnrcmct").
Niklas Zennstrilm y DaneJanus Fri.iis fundaron Skype en 2003. Dos años
después, vendieron la compañía a cBay por $2.6 mil millones.
YouTubc YouTubc es un sitio pam compartir videos que se fundó en 200 5. Ames de
que transcurriera un afio, Google c.ompr6 la compañía por $1 .65 mil millones .
.En la actualidad, YouTube es l'Cl'pon sable del 10% del tcifico total en ln temer
(www. webpronews . cM/topnews/2010/04/16/ facebook-and-youtube -get- the-
most-busi ness-i nternet-traffi e). Menos ele un afio después de la libcmci6n
del iPhonc 3GS de Applc-el pruner modelo del iPhone en ofrecer video-
las cmnsfcrcncins desde dispositivos móviles n YouTu be aumentaron un 400%
(www. hypebot.com/hypebot/2009/06/youtube-reports-1700- jump- 1n-
11ob1l e-video. ht11l}.

Fig. 1.20 1 Aplicaciones sociales (parte 2 de 2).

1.12 Tecnologías de software


La figura 1.2 1 muestra una lt~rn de palabras de moda que escuchad en la comunidad de desarrollo de
software. Creamos Centros de Recursos sobre la mayoría de esros temas, y hay muchos por venir.

Sofrwnrc :!gil El de$3l'l'Ollo dgil de software es un conjunto de mcrodologfos que rmmn de


implcmcnmr sofrwo_re con más rapidc7. y menos recursos que los mctodologfas
anteriores. Visite los sitios deAgile Alliance (www. ag1 lea11 iance. org) y Agile
Monifesro (www.ag11 emani festo. org}. Thmbifu puede visicnr el sitio en español
www.ag11e-spain.com.
Refacrorizaci6n La rew:torización implica rcformular el código para hacerlo más claro y fácil
de mantener, ni tiempo que se prc.~vn su funcionnlidnd. Es muy miliwdo en
los mccodologlas de dcsnrrollo ógll. Muchos l0.17. conclcncn !Jflf'rami,11tasd1
1'flf'1Ck>riMdtJn in cegrod:is pam realizar la mayor parte del proceso de refaaoriza-
ci6n de manem :iuromátim.
!>anones Los pattoncs de dlsdoson a1t¡uiteaums probadas para 0011struirsoftwarc
dedisefío orientado a objetos flexible y que pueda mantenerse. El campo de los patrones de
disclío trata de enumerar :1 los porrones rccurrcnccs, y de a len t:nrn los disclíndorcs
de software 1= que los reutilicen y puednn dcsarrollnrun softwrucdc mejor
calidad con menos tiempo, dinero y csfuerz.o. .En el apéndice Qanalizaremos
los patrones de discllo de Java.
Fig. 1.2 1 1 Tecnologías de software (parte t de 2).
30 Capítulo I Introducción a las computadoras y a Java

LAMP MySQLcs un sistema de admirustroción de bases de dntos de código fuente abiCl.'!o.


PHP es el lenguaje de "secuencias de comandos" del lado servidor de oódigo fuente
nbicrto más popular pnm el dc.wr.ollo de nplicnciones Web. 1.AMP es un ocrónimo
para el conjunto de rccnologfas de código fucn ce abierm que us.1n mucbos dcsruro-
Uadorcs en la creación de apliciciones Web: se refiere a Linux, Apache, MySQL y
PH P (o Peri, o Python; otros dos lenguajes de secuencias de oomnndos).
Software como Po,· lo gcnel.'al, el software siempre se ha visto como un producto; la mayoría adn
un servicio se ofrece de csm forma. Para ejecutar una aplicación, hay que oomprarla a un
(SanS) disr_ribu ido,· de sof1Wa1'C. Despué.9 lo instalnmos en In oompumdom y In ejecutamos
cuando sea ne=i.rio. A medida queaparcc:cn nuevas vcisioncs, acrualiz.1mosel
!Dftware, lo cual genera con frecuencia un gasto oonsiderable. Este proceso puede
ser incómodo pam las orgnnÍ1..0ciones oon decenas de miles de sistemas, o los que se
debe dar mnnrcnimiento en una dlve,sa selección de equipo de c6mpu10 . .En el
Software como un servicio (SaaS), éste ejecum en servidores ubicados en
cualquier parte de In1eroct. Que al scractuali:zados, los clientes en todo el mundo
ven las nuevas cnpncidades sin necesidad de un.1 instalación locnl. Podemos
acceder al servicio a 1mvés de un .navcg:idor. Los n.wegndores son bastan te
porta bles, por lo que podemos ver las mismas aplicaciones en una amplia variedad
de compumdoms desde cualquier parre del mundo. Snlcsforcc.com, Googlc,
Microsof10fficc Livc y Windows Live ofrecen SnaS.
Plataforma La Plataforma como un servicio (PaaS) provee una plataforma de oómputo
como un pam desarrollar y ejecumraplicnciones oomo un servicio a tmv~ de Web, en ve~
servicio (SnnS) de insmlnr las hcrcnmienms en SIi compumdom. Los proveedores de Pa:1S más
importnntesson: GoogleApp Engine, Amazon EC2, Bungce Labs, cnti'C otros.
Compumción SaaS y fuS son ejemplos de compotaci6n en la nube en donde el software, lns
en In nube pbmfom1nsy b infmc.~trucmm (por ejemplo, el poder de proc.es:imiento y el
almaccnnmiento) sealojnn según la demanda a trnv~ de Internet. &10 ofrece
a los usunrios flexibilicfad, escnlabilidnd y un ahorco en los costos. Por ejemplo,
considere los neccsidndcsdenlmnccnnmicnro de dn1osdcunn compnñfo, que
pueden fluctuar de mancrn considcrnble en el trnnscurso de m1 nl\o. En v<:J. de
invCl.'ciren hardware dealmaceuamicnco de gran escnla--cuyo costo de compro,
mantenimiento y asegummien10 puede serconsidemble, adcm:lsdeque no
siempre es posible nprovcchnr su cnpncidad toml-, In compafifo podrfo comprar
servicios basados en la nube (como Amazon S3, Google Stomge, Microsoft
Windows Azurcnc, Nirvanix™ y o eros) según los fuera requiriendo.
Kit de Los Klts de desruTOllo de,oftwnre (SDK) lnduycn mu ro las hcrcnm ien tas como
desaJ.TOUo de la dorumentación que ucifu.an los desarrolladores pnm programarapliciciones.
software (SDK) Por ejemplo, usted usncl el Kit de d=rrollo de Jnvn ODK) pnm crear y ejccumr
apllcncioncs de Javo.
Fig. 1.2 1 1 Tecnologías de software (parte 2 de 2).
L.1 figun\ 1.22 describe las cnccgorfos de liberación de versiones de los productos de software.

Alfa El software alfa es la primera versión.de un produao de software ruyo desarrollo


:uln se cnc11cntro:1ctivo. Por lo general la~ versionesalfu cjenen mud1oscrml'('$, son
Incompletas y esmbles; ndcin:ú se libcmn n un pcquclío mlmc1'0 de d~ 'IJ·rollndot'CS
para que evalúen las nuevas caractedscicas, pnm obtener reuoalimcnración lo más
pronto posible, eccécera.

Fig. 1.22 1 Terminología de liberación de versiones de productos de software (parte I de 2).


1.13 Cómo estar al día con las tecnologías de información 31

llera Las versiones beta se lfücran a w1 número mayor de desarrolladores en una etapa
posterior del proceso de desarrollo, una ve:z. que se ha corregido la mayo da de los
cri'Orcs impormntcsy lns nucvn.s cnracrcrlsticns cstin cosi oomplcms. El sofrw111,c
beta. es más estable, pero todavía puede sufrir muchos enrubios.
Candidnros En general, los M11didatos para .lib1ratid11 tienen todas sus caramrlsticas comph-
pnm libcmción ras, cscl n (supucsmmcnrc) lib1'Cs de crro1-cs y listos para que In c:om un idnd los
(Relcasc utilice,, con lo cual se logra un en tomo de prueba diverso: el software se utiliza
Can elida tes) en distintos sistemas, con restricciones variables y para muchos fines diferentes.
Cun lquic1· crrorq uc nparezm se c:orrigc y, en un momento dado, d produao
final selibem al públic:o en general. A menudo, la.,compafifosdcsoftwarc
distribuyen acruali:z.aciones incrementales a través de Internet .
Bcro .El sofrwnre que se desarrolla mediante este método por lo genera l no rienc
permanente números de versión (por ejemplo, In bósqueda de Googlco Gmail) . .Esrc
software, que se aloja en la nube (no se inscala en su computadora), evoluciona
de manera c:onsmnre de modo ,que los usuarios siempre dispongan de la versión
más recicn te.

Fig. 1.22 1 Terminología de liberación de versiones de productos de software (parte 2 de 2).

1.13 Cómo estar al día con las tecnologías de información


La figura 1.23 muestra una lista de las publicaciones técnicas y comerciales que le ayudarán a perma-
necer actualizado con la cecnologla, las noticias y las tendencias más recientes. También encontrará
una lista cada vez. más grande de Centros de recursos relacionados con Internet y Web en http: //WVNI .
dei tel . com/Resou rceCenters. html.

Bloombcrg Busin~Week www.busi nessweek.com


CNET news. en et. com
Compu1cr World www.computerwor1d.C0Íll
Eng:idget www.engadget.com
cWeek www. eweek. COII
FastCompany www.fastcompany.com/
Fo1·tunc money.cnn.com/magaz1nes/fortune/
lnfoWorld www. infoworld.com
Mnshnblc mashabl e. com
J>CWorld www. pcwor1 d. com
SDT1D1es www.sdtimes.com
Slnshdor sl ashdot.org/
Smarter Technology www. smartertechno1 ogy. com
Tcchnology Rcview technologyreview. com
Techcrunch techcrunch. c011
Wired www .wired.com

Fig. 1.23 1 Publicaciones técnicas y comerciales.


32 Capítulo I Introducción a las computadoras y a Java

1.14 Conclusión
En este capitulo ttnalir~'IITIOS el hardware ysofrware de compucadorn, los lenguaje., de progr:imación y los
sistemas operativos. Vimos las generalidades de un enrorno tfpico de desarrollo de programas de Java y
probamos una aplicación de Java. Introdujimos los fundamentos de la recnologla de objetos. Aprendió
acerca de algunos de los emocionantes y nuevos aeoncecimicnros en el campo de las computodoros. T:un-
bién analizamos cierta terminología clave del desarrollo de software.
En el capitulo 2 creará sus primeras aplicaciones de Java. Podrá ver cómo es que los programas mues-
tran mensajes en la pantalla y obtienen información del usuario mediante el tecfodo par:i procesarla.
Utili;i.wl los tipos de datos primitivos y los operadores aritméticos de Java en cálculos que emplean los
operadores de igualdad y relacionales de Java para escribir instrucciones simples de toma de decisiones.

Ejercicios de autoevaluación
1.1 Complcce lassiguienresoraciones:
a) La compañia que popularizó la computación pet-sonal fue _ __
b) L.~ compurodora que lcgicimó la compuración personal en los negocios y la industria fue _ ___
c) i...~s computadoras procc:san daros baío el control de con juncos de inscruccloncsconoddnscomo ____
d) Las unidades lógicas clave de la computadora son _ _ _ _ _ _ _ _ _ _ _ _ _ _ __
----Y----
e) Los U'CS rlpos de lenguajes dcsc,·irosen este cap/rulo son ____ - - - - Y- - - -
f) Los programas que craduoen programas en lenguaje de airo nlvd a lenguaje máquina se
denominan ____
g) ____ es un sistema operativo de teléfonos intcligcnres, basido en el kcmcl de Lin ux yen Java.
h) En general, d software ____ tiene todos sus tar11cuirl11ioo romplt111J, está (supuestamente) libre de
errores y listo para que la comunidad lo uci lice.
i) Al igual que muchos teléfonos inrcligenccs, el control rcmoro del \Vii urili1.~ un ____ que permirc al
dispositivo responder al movimienro.
1,2 Complete las siguientes oraciones sobre d entorno de Java:
a) El comnndo _ _ _ dcJJDK ejecuta una aplic:tción de Java.
b) .El comondo _ _ _ dclJDK compilo un progmma dcJova.
e) Un archivo de programa de Java debe terminar con la extensión de archivo _ _ _ _
d) Cuando se compila un programa en Java, el arch.ivo producido por el compilador termina con la
extensión ____
1,3 Complete lassiguienresoraciones (con base en la sección 1.6):
a) Los objetosciencn una propiedad que se conoce como ____ ¡ aunque é~tos pueden saber cómo comuni-
01rsc con los demds objetos n trav<!s de lnccrf'nccs bien definidos, por lo gcncml no se le.~ pcm,itc s.1bcr oómo
están implcrnen cados los otros objetos.
b) Los progmmadores de Java se conoen eran en crear _ _ __ , que con cien en campos y el conjunto de métodos
que mnnipulan n eo¡oscampos y proporclonnn scrvldosn los clientes.
c) El proceso de analiwr ydiscfiarun sistema desde llll pw,co de vista orientado a objetos se
denomina ____
d) Mediante la ____ , se derivan nuevos closesdcobjcrosol absod>er las mractcríscicas de las clases existentes
y luego agregar caractcríscicns llnica.~ propi.as.
Ejercicios 33

e) ____ es un lenguaje gráfico que permite a las personas que diseñan sistemas de software utilizar una
nomción estándar en la industria para representarlos.
f) El mmnllo, fonnn, eo lory pc.'l<l de un objeto se consideran _ _ _ de su dnsc.

Respuestas a los ejercicios de autoevaluación


1.1 a) Apple. b) Computadora personal (PC) de IBM. e) programas. d) unidad de entrada, unidad de salida, unidad
de memoria, unidad centr.11 de p1-ocesamicnto, unidad nritmécic:i y lógic:i, unidad dcalmaccnamic:1110 secundario. e) len•
guajesmáqulnn, lcngunjesensambladorcs, lenguajes dea.lto nivel. f)compilndores. g) Android. h) Crndicfatodc libcr.1ción.
i) ncelerómeuo.
1.2 a) java. b) j avac. e) . java. d) .class. e) códigos de bytes.
1.3 a) orulmmiento de información. b) clases. c) an:Uisis ydisefio otienmdos a objetos (A/000). d) herencia. e) El
Lenguaje unificado de modelado (UML). f) auibutos.

Ejercicios
1,4 Complete lnssiguicnresomcione.~:
n) b unidad lógim de In compumdorn que recibe información desde el cxrerior de In comput3dom para que
ésta. la utilice scUnma _ _ __
b) El proceso de indicara la compumdom cómo resolver un problema se llama _ _ __
e) ____ es un tipo de lenguaje compumcionn l que urilii.'I abreviaturas del inglés 1mm las instrucciones de
lenguaje máquina.
d) _ _ __ es una unidad lógica de la computadora que envía información que ya ha sido procesada por
b compumdora a varios dispositivos, de manera ,que puedo uriliw1'SC fuero de In computadora.
e) - - - - Y- - - -SOn w1idades lógietS de la compuradom que retienen infom1ación.
f) ____ es una unidad lógica de la computa.do.ta que realiza cálculos.
g) ____ es una unidad lógica de In compumdom que roma decisiones lógicas.
h) Los lenguajes ____ son los más convenientes ¡xtm que el programador pueda esc,·ibir p1'0grama.s con
rapidez y facilidad.
i) Al único lenguaje que una compumdorn puede entender dirccrnmente se le conoce como el ____ de
e&'I oompurodora.
j) ____ es una unidad lógica de In compurndora que coordina las actividades de rodas las demás wtidades
lógicas.
1.5 Complete las slguicntcsomcionesi
a) ____ se u ciliza ahora pa.ra desarrollar aplicaciones empresariales de gran esmla, para mejorar la funcio-
nalidad de los servidores Web, parn proporcionar aplicaciones parn dispositivos domésticos y muchos otros
fines mós.
b) .En un principio, ____ se hizo muy popular como lenguaje de desa.rrollo parn el sistema opcrntivo UNIX.
c) La compañia Web 2.0 es la que cien e el crecimiento más rápido de la historia.
d) El lcngun)c do progmmndón fue d=rrollndo por Ujornc Strousrrup n principios de In déalda de
1980 en los bborntorios Bcll.
1.6 Complete lassiguientesorncioncs:
11) Por lo general, los progmmns de Jnvo pasan n mvés de cinoo fnscs: _ _ __
---- Y- - - -
b) Un ____ proporciona muchas herramientas que dan soporte al proceso de desarrollo de sofrware, como
los cdico,-es para csc,·ibiry editnrprogrrunas, los d cpurndo,-es para localb.:ir los Cl'rores lógicos en los progmmns,
y muchas ouas mrnctcrlstic:is mós.
34 Capítulo I Introducción a las computadoras y a Java

c) El comando java invoca aJ ____, que ejecuta los programas de Java.


d) Unn ____ es unn apliC11ción dosofcwarcqucsimula una comput.'ldom, pero oculta el sistema operativo
ycl hnrdwnresubyncentes de los programns que intcraetúílll con In VM .
e) El ____ coma los archivos .el ass que concienen los códigos de bytes del programa y los transfiere a la
memoria principal.
f) El ____ exM1inn los códigos de bytes para nsegu mrque sean válidos.
1.T Explique las dos fases de compilación de los programas de Java.
1.8 Es p,-obable que usrod lleve en su muf\CCII uno de los tipos de objetos más comunes en el mundo: un reloj. Analice
almo scnpliai C11dn uno de los sib'll icmes té,minos y conccpmsa In noción de un t'Cloj: objeto, ncribucos, comporcunicnms,
clase, herencia (por ejemplo, considere un reloj despertador), abstracción, modelado, mensajes, enaipsulamiento, interfaz
y ocultamiento de información.

Marcar la diferencia
Hemos incluido en este libro ejercicios Marcar la diferencia, en los que le pediremos que trabaje con problemas que son
de verdad impormntes para los individuos, las comunidades, los prúses y el mundo. Pa_ra obtener más información
sobre las 01·¡r,miuiciones a nivel mundinl que crnbnjnn parn, mal'C)r lo diferencin, y p.~rn obtener idens sobre proyectos
de programación relncionados, visirc nuesuo Cenero de recursos para marcar In diferencia en www.deitel.com/
makingadifference.
1,9 (Prueba práctica: calc,Jadora de Jmpatto ambie111aJ del carbo110) Algunos cien df1cos creen que las emisiones de
rnrbono, sobre mdo las que se producen al quemar combustibles fósiles, contribuyen de manera considerable al c:ilcnta-
miento global y que esto se puede combatir si las personas tomamos conciencia y limitamos el uso de los combustibles con
base en el cal'bono. Lnsorganiz.1cionesy los individuos se preocupan cada vc:1.m,ls por el "impaaonmbienrnl del c:irbono".
Los sidos Web como Tcrm P:is.~
www. terrapass. cOffl/carbon-footpri nt -cal culator/

yCnrbon Footprint
www.carbonfootprint.c011/calculator.aspx

ofrecen C11lculadoms de impacto ambiental del carbono. Pruébelas pam determinor el impacto que provoCII usted en el
ambiente debido al carbono. Los ejercicios en c:ipltulos posteriores le pedirán que programe su propia calculadora de
impacto ambicnml del carbono. Como preparación, le sugerimos investigar las fórmulas para calcularlo.
1,1O (Prueba prdctica: m/c,./adora del Indice d11 masa corporal)Segw, las estimaciones ra:icntes, dos tc1'<l!ms partes
de !ns personas que viven en Estados Unidos padecen de sobrepeso; la mitad de esms personas son obc5:is. Esto provoca
aumencosconsidcrables en el nllmcro de personnscon cnfcrmcdndcscomo In diabercsy lascardiopadas. Para dercrminar
sl uno pe1'SOnn tiene sobrepeso o padece de obesidad, puede usar uno medida conocido como Indice de mosa corpoml
(IMC). El Departamento de Salud y Servicios Hwnanos de Estados Unidos proporciona una calculadora del IMC en
www.nhlbisupport.com/bmi/. Ú.scl.1 para calcular su propio IMC. Un ejercicio del capítulo 2 le pedirá que programe
su pl'Opia calculadora del 1MC. Como pt'Cpamción, le sugerimos invosclgar lns fónnulos para colculnr el IM C.
l ,I 1 (Atributos de los veMcu/os hlbrldos) En este caplrulo aprendió sobre los fundamentos de las clases. Ahora empe-
2ar:I a describir con demlle losaspcccosde una clase conocida como "Vchlculo hlbrido". Los cuales se están volviendoc.1da
vez mds populares, pucsro que por lo general pueden ofrecer mucho mds kilometraje que los operados sólo por gasolina.
Navegue en Web y estudie !ns características de cuatro o cinco de los nucos hlbridos populares en la acrualidad; después
haga una lista de codos los arribucos relacionados con sus caracterfsticas de hlbridos que pueda enconunr. Por ejemplo,
algunos de los acriburos comunes son los kllómctl'os por litro en ciudad y los kllómecros por li,ro en c11rrcrcra. 'fomblén
puede hacer w,a lista de los atl'ibutos de las batcrfas (tipo, peso, etcétera).
1.12 (Neutralidad de género) Muchas personas desean eliminar el sexismo de todas las formas de comunicación. Usted
hn ,·ccibido lo corca de crear un p1'0gramn que puedn proccsnr un párraf'o do texto y recmplaz.1 r palabras que tengan un
género especifico con palabras neutrales en cuanto al gt!ncro. Suponiendo que recibió una lista de pafabras con género
cspcdf1co y sus reemplazos con neutralidad de género (por ejemplo, reemplace "esposa" por "cónyuge", "hombre" por
"persona", "hija" por "dcsccndicnrc", yasl en lo sucesivo), explique el p1-occdimien10 que utiliiarln pom leer un p:lrmfo de
ccxto y realizarc,sros rcempbzos en forma manual. ¡Cómo podrfa su proccdltnienm generar un término cxtmlio como
Recursos para hacer la diferencia 35

"woperchild", que aparece listado en el Diccionario Urbano (www. urbandi ctionary .com)? En el caplrulo 4 aprenderá
que un 16rmino m:!s formnl pnra "procedimiento" es "algoritmo", que especifica los pnsos a reali:inr, ndemás del orden en
el que se deben llcvnr o cabo.
1.13 (Privacidad) Algunos servicios de correo electrónico-en !!nea guardan coda la correspondencia eleccronica duran-
te cierto periodo de tiempo. Supongo que un empicado disgusmdo de uno de estos servicios de correo c.lcarónico en llnea
publicara en ln rcrnct codns lns correspondencias de correo elc:ctróníco de millones de personas, entre ellas la suyn. Annlicc
la.~ consecuencias.
l , 14 (R~1po11.1abílid11d lrica y úgal d1tl programador) C.Omo progmmndor en In industria, mi vc:z. llegue a desnrrollar
software que podrla afectar la salud de otras personas, o incluso sus vidas. Supongo que un error de software en uno de sus
progtrunas provocara que un pacienre de cáncer recibiera una dosis excesiva dumnre L~ terapia de radiaci6n y resultara
gravemente lesionada o muriera. Analice lns consecuencias.
1.1S (El "P/as/, Cra1/I' de 2010} Un ejemplo de las consecuencias de nuestra cxccsiva dependencia con respecto a las
compuradoms es el denominado "flash crash", que ocurri6 el 6 de mayo de 20 1O, cuando el mel'C\do de valores de Estados
Unidos se dcrrumb6 de manera precipitada en cuesti6n de minuros, al borrarse billones de d61ares de inversiones que se
mlvieron a recuperar pocos minutos dc.~pu6i. Use In cernee p:nra invcstig¡ir las causas de csce derrumbe y analice las conse-
cuencias que genera.

Recursos para marcar la diferencia


la Copa lmagi11ede MicroJ()ftes una competencia global en .la que los estudiantes usan la tecnología pan intentar resol-
ver algunos de los problem,'1.~ más difCciles del mundo, como L1 sostenibilidad ambienmJ, ocabar con la h.1mbru11a,
b respuesta n emergencias, In nlfubeti1..~ión, combatir el HIV/SIDA y otros más. Visitewww.ima9inecup.co11/about
para obtener mils informoción sobre la competencia y para aprender sobre los proyectos desarrollados por los anteriores
~nadores. Thmbién encontrará varias ideas de proyectos enviadas por organizaciones de caridad a nivel mundial en
www.ifflag1necup.com/studcnts/imaglne•cup•solve- this. Si dcsc:1 ohtener ideas pnm proyccros de programaci6n que
puedan marcar la diferencia, busque en Web el tema "marcar la diferencia" y visite:
www.un.org/millenniumgoals
El proyecto Mllenio dcNncioncs Unidas busca solucioncspam los principnlcs problemasmundbles, como lnsosrenibilidad
ambiental, la igualdad de sexos, la salud infantil y materna, la educ:nci6n univcrsaJ y otr0s mrui.
w.vw.ibm .com/smarterplanet/
El sirio Web Smnrrcr Plnnccdc 113M•lmbla sobre cómo es que ll)M uciliw la rccnologín pnm rcsolvcr problcnrnsrclncionn-
doscon los negocios, la compumci6n en la nube, la educ:nci6n , la sostenibilidad yotr0s mrui.
w.vw.gatesfoundati on.org/Pages/home.aspx
la Fundación Bill y Mclinda Gnces ofrece bcais n las orgnn i1,ncioncs que tmbajnn pnra mltigor el hambre, In pobrc:,.1 y
las enfconedades en los países en desarrollo. En &mdos Unidos, la fundaci6n se enfom en mejorar la edumci6n pública,
en especial pnra las personas con bajos recursos.
w.vw.ncthope.org/
NecHopc cs una colaboraci6n de organizacioncs humanitarias en todo el mundo, que trabajan para resolver los problemas
relacionados con la cecnologfa, como la coneaividad y la respu= a las emergencias, en ere o eros.
w.vw.rainforcstfoundation.org/home
la Fundaci6n Rainforesc trllbnja para preservar los bosques tropicales y proteger los derechos de los indlgenas que consi,
demn a cscos bosques como su hogar. El sitio contiene unn lista de acrivid:idesque usted puede hacer pnm nyudnr.
w.vw.undp.org/
El Programa de las Naciones Unidas para el Desarrollo (UNDP) busca soluciones a los desafíos globales, como la pre-
vención y recuperación de crisis, la encrgfo y el ambiente, In gobcrnnnM de.mocmtic:n yorros mis.
w.vw. unido .org
la Organi:z.~ci6n de las Naciones Unidas pan el Desarrollo Industrial (UNIDO) busca reducir la pobreza, dar a los
polscs en dc.fflrrollo lo oportunidnd de pt11·1icip:1r en el comercio global y promover cnnro In eficiencia de lo encrgfa corno
b sosten ibilid:id.
36 Capítulo I Introducción a las computadoras y a Java

w.vw.usaid . gov/
USAID promueve la democmcia global, b s.1 lud, el crecimien to económico, la prevención deconAictos y la ayuda huma-
nitario, cnm: otmscosns.
w.vw.toyota. com/ideas- for- good/
El sitio Web Ideas far Good de Toyora describe varias 1ccnologí:u de csm empresa que están haciendo la diferencia: enu·e
éstns; su Sistemnavnnzndo de asistencin de csmcionnmicnto (Advanced Parking Guidancc Systcm), b 1ccnologfa Hybl'id
Synergy Orive", el Sistema de ventilación operado por energía sola.r (Solar Powered Ventllation Sysrem), el modelo
T.H.U.M.S. (Modelo humano total pam la seguridad) yTouch Tmcer Display. UStcd puede participar en el desnflo de
Jdens íor Good; envíe un breve craayo o un video que describa cómo &e pueden usaresras cccnologfos pam 0110s buenos
propósitos.

ACCESO A LOS CAPÍTULOS ADICIONALES 'DEL LIBRO 
Para acceder a los capftulos 12 a 19 (en espafiol), 20 a 3 1 y Apéndices M a Q
Deitel & Assotiúues, /ne. 
Traductor 
Alfonso Vldal Romero Ellzondo 
Ingeniero en Sistemas El.ectrdnit:os 
ITESM, CampUI Mont
/ 
Datos de catalogación bibliográfica 
OEJTEL, l'AUL)' HARVEY OEJTEL 
Cómo programar en Java 
No,,;u cdlclcln 
PEARSON EDUCA
'En memoria del sargento Sfírive,¡ 
'El primer director del Cuerpo de Paz y fundador 
de numerosas organizaciones sociales:
Prefacio 
Antes de empezar 
1 
Introducción a las computadoras y a Java 
1.1 
lntroducción 
1.2 
Computadoras: hardware y sof
viii 
Contenido 
3.7 
Los números de punto flotante y el tipo double 
88 
3.8 
(Opcional) Caso de estudio de GUT y gráficos:

También podría gustarte