Javar ha revolucionado el desarrollo del software mediante el cdigo orientado objetos independiente de la
plataforma, con NU intensivo de multimedlu, para uplicnc!oncs busudt en Intemct, intrauets o emanrts. Estu
qdnm ediciri del libro de texto sobre Java ms utilizado a nivel mundial, explica cmo utilizar las exlranrdinu,
rias henamientas de este software.
La obm contiene una vasta coleccin de ejemplos, ejercicios y proyectos que prop01cionan la oportunidiul de
resolver problemas reales. El contenido se concentm en los principios de In buena ingenierfu de sotlwarc, haciendo
hincapi en la claridad de los programas. Todos lbs ejemplos de cdigo lum sido probados.
Entre los temas clave que se tratan aqu, se encuentan:
Aplicrciones/Applcts
GUI Swing/Manejo de eventos
Clases/Objetosllnterfaces
POOIHerenci:fpolimorfismo
Grficos/Java 2D'" IImagenes/Animacinl Audio
Excepciones/Subproces;tmicnto mltiple
DOO/UML/Patroncs de diseo
Cmo programar 6java, quinta ediciu incluye extensas caractersticas pedngeicas:
Cientos de prognumL en cdigo activo (Ltve-CooE'"l con capturas de pantallas que muc::traulos resultados
obtenidos
Unn gran cantidud de recursos en Internet y Web pura impulsar al lectnr u que investigue mt: sobre los Id|
de su inters
cientps de tips, prcticas recomendada y precauciones, Todos identifcados con su r,;spectivn iconn:
J||ct|c\ Oh.111n'dune\' Tip; Je Tiude Ob.r1nracilill fips de pntthu l|rn
{|r'|||1 dt '1}'0l|||4 i|t' |r1J||r1|J cr|l|||c10 .tictlpal'ieuda )1:|c|^1 rc|l1rJl
} ' __ __ _
En el sitio Wcb .pearsoneducacicn.net/deitel cnconlrar< los ejemplos de cdigo del libro
C informacin para mncstros, estudiamcs y profesionnles.
Sin d11du, ste es el libro rni'1 completo para aprender Java.
El CD incluye:
Archivos de texto en espmiui no incluidos en el libro
Todo el cdigo fuente utilizado en los ejercicios del libro
Programas para ejecutar Java, como JavaTM 2 PlatfoiTO Software
Development Kit y Apache Tomcat v.4.1.12, y mucho ms
@
Vstenos en:
www.peursoneducuclon.net
ISBN 970-26-0518-0
90000
..
| ucuw. j
r\wu
r
_ 0 0|!fN0
.
0C'
SE!VE'I',
]!r'
a+._ ,
000
con _
y!oS
PXJ80Ni50f0I5fS0
;08L,ikV
iJ,]i
i
U
l
LTALulci08
L0H0IR0CRAR!
JAVA
LNTAEDCl0N
L0H0IR0CRARL
JAVA
H\cyB. Dc|cl
e'
c|cl& Assoca|cs,uc.
IaulJ.Dc|cl
c|cl& Assoca|cs,uc.
TRAUCCIN
AlfonSo Vida! Romero Elzondo
Ingeniero en Sistemas Electrnicas
Instituto Tecnolgica y de Estudias Superiores de Monterrey
Campus Monterrey
REVISIN TCNICA
M. en C. Gabriela Azucena Campos Garca
Profesora de tiempo completo
Departamento de Sistemas de Infannacin
Divisin de Profesional y Graduados
Insti/llto Tecnolgico y de Estudios Superiores de Monterrey
Campus Estado de Mxico
M. en C. Sergio Fuenlabrada Velzquez
Ing. Mario Alberto Sesma Martnez
M.C.I. Edna Martba Miranda Chvez
Profesores investigadores
Academia de complllacin
Unidad Profesional Interisciplinaria de Ingeniera y
Ciencias Sociales y Administrativas
Instituto Politcnica Nacional
M. en C. Jess Muoz Bauza
Profesor investigador
Departame/llo de Computacin
Divisin de Profesional y Graduados
Instituto Tecnolgico y de Estudios Superiores
de Monterrey
Campus Ciudad de Mixico
Mxico Argentna Brasil Colombia Costa Rica Chile Ecuador
Espaa Guatemala Panam Per Puerto Rico Uruguay Venezuela
_Dalos dc catalogacin bibliogrficu
DEITEL, HAVEY M. y DEIEL, PAU J
Quinta edicin
Cmo programar tJava
PEARSON EDUCACIN, Mxico, 2004
ISBN: 970-26-0518-0
ron: Univcrsilnrios
Fomtuto: 20 X 25.5 cn1 Pginas: 1268
Autol'ized translution lrom te English language edition, entitled Java Haw la Pmgram, Fil Ed1o11, by Horvey M. Delc/ uml'aul J
Deite/, puhlished by Penrson Education. lnc., publishing us PRENTICE HALL, INC .. Copyright 2003. AH rights resercd.
ISBN 0-13-101621-0
Traduccin autorizada de la edicin en idioma ingls, titulada Ja\a 0Bl0 Pmgrm, Fitl Edtiv11, por Harvc M. Deiel Paul J Deie/,
publicada por Pearson Education, Inc., ublicada como PRENT1CE HALL iNC., Copyright 2003. Todos los derechos reservados.
Esta edicin en espaol es la nica autorizada.
Edicin en 05[0B0l'
Editor:
Editor de desarrollo:
Supervisor de produccin:
Edicin en lngl.:
Guillermo Trujano Mendoza
e-mail: guillermo.trujano@peursoned.com
Miguel B. Gutirez Hemnde7
Enrique Treja Herndez
Vice President und Editorinl Director, ECS: Marcia J, Hurtan
Acquisitions Editor. Petra J. Recter
Assistnnt Editor. Sarai Par/r
Project Manager: Jermier Cuppello
Vice Presiuont Ul\11 Director of Production and Manufacturing, ESM: David \V Riccnrd
Exccutive Mmaging Editor: Vnce O'Brien
tanaging Editor: Tom Mnm/reck
Productlon Hditor: Jo/111 1 Lave//
Director of Creailve Servlces: Pan/ Belfanli
Creutive Director: Cara/e \mon
Chuptur Opener and Cover Designer. Tomara Newnam, Dr. Harvcy Deite/
Interior De,ign Assistance: Geofrey Cassar
Manufacturiug Mnnager: Trudy Pciotti
Manufacruring Buyer: Lisa McDowell
Marketing Manager. Pamela Siafer
Marketing Assistant: Barrie Ren/wld
QUINTA EDICIN, 2004
P.R. 2004 p0r Pearson Educacin de Mxico, S.A. de C. V.
Atlacomulco 500-So. piso
Col. Industrial Atoto
53519, Nnucalpan de Jurez, Edo. de Mxico
e-mnil: editorial.universidades@pearsoned.com
Cmara Nacional de la Industia Editoral Mexicana.
Reg. mm. 1031.
Prentice Hall es una marca registrada de Pearson Educaci<in de Mxico, S.A. de C.V.
Reservados todos los derechos. Ni la totalidad ni parte de esta publicacin pueden reproducirse, registrarse 0 transmitirse, por un sistema
de recuperacin de informacin, en ninguna forma ni por ningn medio, sea electrnico, mectinico, fotoqumico, magntico Uelcctmpti
co, por fotocopia, grabacin o cualquier otro, sin permiso previo por escrito del editor.
El prstumo, ulquilcr o cualquier otra forma de cesin de uso de este ejemplar requerir tambin !8 autorizacin del editor de SI\H repre
Mentnntt!H.
ISBN 970-26-05I8-0
Impreso en Mxico. Prillled in M/co.
12345 67 8 90-05 0403
i
PARA:
Terell Hull y James Huddleston:
Por constante dedicacin a lu excelencia en la enseanza
y ul escribir sobre Java y la tecnologa de objetos.
Por sus extruordinnrias contribuciones como revisores
y por insistir en que "lo hiciramos bien".
Gracias por ser nuestros mentores, colegas y amigos.
Es un privilegio trabajar con profesionales consumados
en el software.
Harve y Paul Deitel
Contenido
Prefacio xvii
Introduccin a las computadoras, Internet /Web
1.1 Introduccin 2
1.2 Qu es una computudora? 4
1.3 Organizacin de las computadoras 4
1.4 Evolucin de los sistemas operativos 5
1.5 Computacin pcrsonul, distribuida y cliente/servidor 6
1.6 Lenguajes mquiJm, lenguajes ensambladores y lenguajes de alto nivel 6
1.7 Historia de C++ 7
1.8 Historia de Java 8
1.9 Bibliotecas de clases de Java 8
1.10 FORTRAN, COBOL, Pascal y Adn 9
1.11 BASIC, Visual Basic, Visual C+t, C/ y .NET 10
1.12 Interet y Wor!d Widc Web 11
1.13 Fundamentos de un entoro tpico en Java 11
1.14 Generalidades nccrca de Java y este libro 14
1.15 Acerca de los objetos: Introduccin u la tecnologa de objetos
y el Lenguaje Unificado de Modelado 16
1.16 Descubrimiento de patrones de diseo: Introduccin 19
Z Introduccin a las aplicaciones en Java 27
2.1 Introduccin 28
2.2 Su primer programa en Java: Imprimir una lfnca de texto 28
2.3 Modifcacin de nuestro prmer programa en Java 34
2.4 Cmo mostrar texto en un cuadro de dilogo 36
2.5 Otra aplicacin en Java: Suma de enteros 40
2.6 Conceptos acerca de la memoria 45
2.7 Aritmtica 46
2.8 Toma de decisiones: Operadores de iguuldnd y relacionales 49
2.9 (Ejemplo prctico opcional) Acerca de los objetos: Cmo examinar el enunciado
de un problema 55
vlli
Contenido Contenido
lx
J Introduccin a los applets de Java
71
6.8 Ejemplo: Un juego de azar
203
3.1 Introduccin
72
6.9 Alcance de las declaraciones
211
3.2 Applets de muestra incluidos en el Kit de desarrollo de software para Java 2
72
6.!0 Mtodos de la clase JApplet
214
3.3 Applet simple en Java: Cmo dibujar una cadena
78
6.11 Sobrecarga de mtodos
215
3.4 Cmo dibujar cadena y lneas
85
6,12 Recursividad
217
3.5 Cmo agregar nmeros de punto flotante
87
6,13
Ejemplo del uso de la recursividad: La seria de Fibonacci
220
3.6 Recursos en Internet y Web relacionados con los appleLI de Java
93
6.14 Comparacin entre recursividad e iteracin
225
3.7 (Ejemplo prctico opcional) Acerca de los objetos: Identifcacin de las clases en d enunciado 6.15 (Ejemplo prctco opcional) Acerca de los objetos:
de un problema
94
Cmo identifcar las operaciones de las clases
226
Arreglos
245
4 Instrucciones de control: Parte 1
103
7.1 Introduccin
246
4.1 Introduccin
104
7.2 Areglos
246
4.2 Algortmos
104
7.3 Declaracin y creacin de arreglos
247
4.3 Scudocdigo
105
7.4 Ejemplos acerca del uso de areglos
248
4.4 Estructuras de control
105
7.5 Referencias y parmetros de referencia
258
4.5 Estmctura de seleccin if simple
108
7.6 Cmo pasar arreglos u los mtodos
258
4.6 Estt1Jctura de seleccin if 4 . 4 el se
109
7.7 Ordenamiento de arreglos
261
4.7 Estmctura de repeticin while
113
7.8
Bsqueda en arreglos: Bsqueda lineal y bsqueda binaria
263
4.8 Cmo formular algoritmos: Ejemplo prctico l (repeticin contolada por un contador) 114
7.9 AJTeglos multidimcnsionales
270
4.9 Cmo formular algoritmos mediante el mejoramiento de arriba a abajo, puso a paso:
7.10
(Ejemplo prctico opcional) Acerca de los objetos: Colaboracin entre los objetos
277
Ejemplo prctico 2 (repeticin controlada por un centinela)
118
Programacin basada en objetos
301
4.10 Cmo formular algoritmos mediante el mejoramiento de arriba a abujo, paso a paso: d
Ejemplo prctico 3 (estructuras de control anidadas)
125
8.1 Introduccin
302
4.11 Operadores de asignacin compuestos
129
8.2
Implementacin de un tipo de dato abstracto con una clase
303
4.12 Operadores de incremento y decremento
129
8.3 Alcance de las clases
310
4.13 Tipos prmitivos
1
8.4 Control del acceso a los miembros
310
4.14 (Ejemplo prctico opcional) Acerca de los objetos: Cmo identifcar los ;tributos 8,5
Referencias a los miembros del objeto actual mediante this
311
de las cluses
133
| 8.6
Inicializacin de los objetos de una clase: Constructores
313
18.12.4 Conclusin
912
l0 Subprocesamiento mltiple
lx
16.1 Introduccin 700
19.1 Introduccin
920
16.2 Estados de los subprocesos: Ciclo de vida de un subproceso .702 19.2 Cmo cargar, mostrur y escalar imgenes
921
16.3 Prioridades y programacin de subprocesos
703
1
19.3 Animacin de una serie de imgenes
923
16.4 Creacin y ejecucin de subprocesos 705 19.4 Mapas de imgenes
927
!
930
16.5 Sincronizacin de subprocesos 708
1
19.5
Carga y reproduccin de clips de audio
16.6 Relacin productor/consumidor sin sincronizucin 709
rboles
970
.,
17.3 Archivos y t1ujos
752
17.4 La clase File
755
J Paquete de utileras de Java / manipulacin de bits 997
17.5 Creacin de un archivo de acceso secuencial 760
21.1 Introduccin
998
17.6 Cmo leer datos desde un archivo dacceso secuencial 776
21.2 La clase Vector y In interfaz Enueration
998
17.7 Actualizacin de urchivos de acceso secuencial 782
21.3 La clase Stack del paquete java. u til
1002
17.8 Archivos de acceso aleatoro 782
21.4 La clase Hashtable
1005
17,9 Creacin de un archivo de acces0 aleatorio
783
21.5 La Clase Propertiea
1009
17.10 Cmo escribir datos en forma aleatoria, en un urchivo de acceso aleatorio 788
21.6 Manipulacin de bits y operadores ' nivel de bits
1015
17.11 Cmo leer datos en forma secuencial, de un archivo de acceso aleatorio 793
21.7 La clase Bi tSet
1028
17.12 Ejemplo prctico: Un programa para procesar transacciones 797
17.13 Nuevas AP!s de ES pura la plataforma Java 809
Colecciones
1 037
22.1 Introduccin
1038
ld Redes
825
22.2 Generalidades acerca de las colecciones
1039
18.1 lntroduccirn 826
22.3 La cla.e lrrays
1039
18.2 Manipulacin de URLs
827
22.4 La interaz Collection y la clase Collections
1043
18.3 Cmo leer un archivo en un servidor Web
832
.
22.5 Objetos !ist
!044 ~
18.4 Cmo establecer un servidor simple utilizando sockets de flujo 835
j
22.6 Algoritmos
1050
18.5 Cmo establecer un cliente simple utilizando sockets de flujo 837
22.6.1 El algorito sort
1050
xlv
Contenido
Contenido
25.3
Nuestro primer ejemplo de JavaServer Page
1151
22.6.3 Los algoritmos reversa, fill, copy, max y min 1056 25.4 Objetos implcitos
1153
22.6.4 El algoritmo binarySearch
1
1058
9
25.5 Secuencias de comandos
1154
22.7 Conjuntos
1060
25.5.1 Componentes de las secuencias de comandos
1155
22.8 Mupas
i
1063
G 25,5.2 Ejemplo de secuencia de comandos
1155
22.9 EnvolturaN de sincronizacin
1066 25.6 Acciones estndar
1158
22.10 Envolturas no modifcables
1066
l
25.6.1 La accin <j ap: include:
1159
22.11 Implementaciones ubstructas
1067 1 25,6.2 La accin <j ap: forward:
1164
22.12 (Opcional) Descubl'irento de los patrones de diseo: Patrones de diseo
25.7 Directivas
1170
22.12.1 Patones de diseo de creacin 1067
25.7.1 La directiva page
1171
22.12.2 Patrones de diseo de comportamiento 1067
25.7.2 La directiva include
1173
22.12.3 Conclusin
1068 25.8 Ejemplo prctico: Libro de visitantes
1175
Disponible en el CD-ROM:
23.4.7 La instruccin DELETE
`|
23.5 Creacin d lu bnse de datos libros en Cloudscape
1086
C Sistemas numricos
1 1 95
1087
C.1 Introduccin
1196
23.6.1 Cmo conectarse y realizar consultas en una base de datos
1088
D. l Intoduccin
1207
24.2.2 La ciase HttpServlet
lli5
D.2 Eventos
1207
1116
\
1
'
!
Prefacio
xxi
los apndices D a F. incluimos una implementacin en Java del sistema orientado a objetos que diseamos
en los captulos anteriores. Este ejemplo prctico ayudar a los estudiantes a prepararse para los tipos de pro
yectos que encontrarn en la industria. Empleamos un proceso de diseo orientado u objetos incremental y cui
dadosamente desarrollado para producir un modelo en UML para nuestra simulacin de clevudor. A partir de
este diseo producimos una verdadera y funcional implementacin en Java utilizando las nociones claves
de programacin, incluyendo clases, objetos, encapsulamiento, visibilidad, composicin y herencia.
Descubrimiento de patrones de diseo
Estas secciones opcionales introducen putrones de diseo orientado a objetos populares. Durante la dcada pasa
da, la indust<l de la ingeniera de software progres considerablemente en el can1po de los patrones de dise1io:
arquitecturas comprobadas para construir software orientado a objetos que sea tlexible y pueda mantenerse2 El
uso de putrones de diseo puede reducir considemblcmcnte la complejidad del proceso de diseo. Presentamos
varios patrones de diseo en Java, pero stos pueden implementarse en cualquier lenguaje odcntado a objetos tal
coro C++, C# o Visual Basic .NET. Describimos varios patrones de diseo utilizados por Sun Microsystcms
en la API de J uva. Adems, se utilizaron en muchos progmmus de este libro, los cuales identificaremos en las
secciones "Descubrimiento de patones de diseo", Estos programas proporcionan ejemplos acerca del uso de
patrones de diseo para construir software orientado a objetos que sea confable y robusto.
Mtodo de enseanza
Esta quinta edicin contiene una vasta coleccin de ejemplos, ejercicios y proyectos sustrados de diversos
campos p<tra proporcionar al estudiante la oporUnidad de resolver problemas interesantes del mundo real. El
libro se concentra en los pdncipios de la buena ingeniera de software, haciendo hincapi en la claridad de los
programas. Evitamos la tecnologa arcana y las cspeciticaciones sintcticas, para favorecer la enseanza me
diante ejemplos. Nuestros ejemplos tle cdigo se han probado en las plataformas populures de Java. Somos edu
cadores 4uc enseamos temas tle vanguardia en salones de clases de la industria alrededor del mundo, Este
texto ptme nfasis en la buena pedagoga.
Cmo aprender Java mediante el mtodo LJVECODiiTM
Este libro comiene numerosos ejemplos "reales'', Cuda nuevo concepto se presenta en el ontexto de un ejemplo
completo y funcionul. que es seguido inmediatamente por una o ms ejecuciones que muestran la entmdasada
del programa. Este estilo ejemplifica la manera en que ensemnos y escribimos acerca de la progmmacin, y es
el enfoque de nuestros cursos multimedia Cyber C/as.\}II!S y de capacitacin basados en Web. A este mtodo
de cnsem Y escribir le Humamos Mtodo del cdigo activo (o Mtodo LIVE-CODET1). Utilizamos lenguajes de
programacn para ensmiar lenguljes denvgmmacin. Ler los ejemplos en el texto es muy parecido a escri
birlos y ejecutarlos en la computadora. Tanto en el CD que acompaa al libro como en ww. dei tel . com
encontrar{ todo el cdigo fuente pura los ejemplos que apurecen en el libro. Le recomendamos ejecutar todos
los ejemplos.
Programaci11 en Java C0/1 aplicaciones y Swing desde el captulo dos!
Este libro lo pasa directamente a la programacin de aplicaciones Java con los componentes de la GUI Swing
del captulo 2. Hay mucho que hacer en Java, as que manos a la obra! Defnitivamente Java no es tlgo trivial,
pero es divertido programar en este lenguaje y los estudiantes pueden ver resultados inmediatos. Adems, pue
den ejecutar rpidamente programas grfcos, animados, basados en multimedia, con uso intensivo de audio,
con subprocesamiento mltiple, con uso intensivo de bases de dutos, o programas basados en red, a travs de
las extensas bibliotecas de clases de Ja va que cuentan con componentes reutilizables. Los alumnos pueden im
plementar proyectos impresionantes. Por lo general son ms creativos y productivos en un curso de uno o dos
semestres que en cursos de introduccin a C y C+t.
4. Gnmmu, Erkh, Richard Helm, Ralph Johnson y Joim Vlisides. Design fters; Elemerus ofReu.b/e Objec-OriemedSf
wqr, (Mussachuseus: Addison-Wesley, 1995.)
.
xxil
Prefacio
Acces1 a W1rld Wie Web
Todos l;s eempl
.
os de cdigo fuente (en ingls) para esta quinta edicin (y dems publicaciones de los auto
res) estan dispombles en Internet, de manera que pueden descargarse del siguiente sitio Web:
w. deitel . com
w.pearsoneducacion. net/deitel
Puee registrarse en fora rpida y scncill, y las descargas son gratuitas. Huccr cambios u los ejemplos e in
mediatamente ver los efectos de esos cambiOs es una excelente manera de mejorar su aprendizaje de Juva.
Objetiv1s
Caa captulo omienza con objetivos que informan a los estudiantes lo que deben esperar, y les brinda la opor
tumdud, despues de leer el captulo, de determinar si cumplieron los objetivos planteados. Los objetivos sirven
para 1ear confanza.
Frses
Los objeivos de locaulos van seguidos de una o ms frases. Algunas son graciosas, otras, flosdfcas y al
gunas mas orccen Ides mteresantes. Hemos descubierto que los estudiantes disfrutan relacionando las frases
con el matenal del capitulo. Muchas de stas merecen leerse otra vez, despus de leer los captulos.
Pla1 ge1eral
El plaeneral de cada captulo permite a los estudiantes abordar el material de manera ordenada. Junto con
los objetivos dcada captulo, el plan general ofrece a los estudiantes un panorama de tos temas a tratar para
estublecer un ntmo cmodo y efectivo de aprendizaje.
23,341 l11eas de cdigo en 219 programas de ejemplo (co1 la salida de los programas)
Presentamos las caractersticas de Java en un contexto de programas completos y funcionales en Java. Estos
progrmas LlvE_CoDE van en longitud: desde unas cuantas lneas de cdigo hasta ejemplos importantes
con cientos dhneas e cdigo. Cada programa va seguido por una ventana que contiene los resultados que se
p;oducen al ecutar dicho progranm; de manera que los estudiantes puedan conlrmar que los programas fun
cumcn como se esperaba .
.
El proceso de comparar las operaciones de salida con las instrucciones del progrnma
que producen esas operaciOnes es una excelente muncra de aprender y reforzar los conceptos. Nuestros progra
mas estn diseados m ejercitar las diversas caractersticas de Java.
615 Ilustracimres/Figuras
Incluimos una gran cantidad de grfcas, dibujos lineales, programas y salidas de programa. Hemos convertido
todos los diaamas de t1ujo en diagramas de actividad en UML. Tambin utilizamos diagrama de clase en
UML para modelar las relaciones existentes entre las clases a lo largo de este texto.
534 Tips de pragmmaci11
1
Hemos incluido tips de programacin para ayudar a los estudiantes a enfocarse en los aspectos importantes del
desarrollo de programs
_
. Resaltamos cientos de estos tips como Buenas prcticas de progrmacin, Ermre.\'
comunes de Prmacwn, Tps ara prevenir ermres, Observaciones de apariencia visual, Tps de rendimiemo,
Tps de potabclulad Y Obsetvacumes
.
de ingenienr de sofware. Estos tips y prcticas representan Jo mejor que
hemos podtdo recabar a lo
.
largo de seis dcadas (combinadas) de experiencia en la programacin y la ensean
za
:
Uno de ustros estudiantes, specialista en matemticas, recientemente nos coment que siente que este
metodo es simiar al d resaltar axiOma. teoremas y comlarios en los libros de matemticas, ya que proporcio
na una ba1e shda sobre la cual se puede construir buen software,
82 Buenas prcticas de programacin
La
:
r Buena.prdcticas d
programacin son tips
1ue ll<tman la atencin hacia tcnicas para escribir progrmas cla ro, Ademas, esta.r tcmcos ayudan a los estudumtes a producir programas ms legibles, ms fciles de entender y mantener.
156 Errores comunes de programacin
Lo,
prendl
.
endo un /enguajll ( especiolmeme en su primt!r curso de programacin) tienden cmJrccwnc/a a
:
meter ccerto, te pos de errores. Al poner <llenci6n en estos Errores cormmes de programal!in se reduce la probabcbdad da que /os estudiames cometan los mismos errores. Tcmbitt hace las l(neas ms cortas afuera de ftts ofcmas de los profesores!
f
Prefacio xxlil
50 Tlps para prevenir errores
Cuando diserlamos por primera vez este "tipo de lip", pensamos que lo usar(amos estrictamente para decir a las
personas cmo probary depurarpro"ramas en Java. De hecho, muchos de los tips describen aspectos de J
va que
reducen /apmbabilidadde "errores", In que por consecuencia simplifca losprocesosde pruebay depuraccn.
36 Observaciones de apariencia visual
L,! oflfcemo.r Observacones de ,pariencio vi.rualpara resaltar/as COIII'enciones de la llteljitz grficade llstwio.
Estas observaciones ayudan tt los esmdlallles a disearsuspmpia, interaces grfcas de usuario en conformidad
can las normas de la industria.
52 Tlps de rendimiento
A /o lwgo de nuestro e.tperiencia, ense1iar a los esllldiantes a escribirprogrmas daros y comprensibles es, sin
duda, /a meta mcs imporcame para el primer curso de programacin. Pero los estudiantes quieren escribirlas pro
gncnucs que sean ms rpidos, que usen /a menor cantidad de memoria, requieran el menor mmem de pulsaciones
de tecla, o que destaquen de alguna olmmanera. Lvs eswdiantes rea/meme se preocupan por el rendimiento. Quie
ren saber qut es la que pueden hacer para mejorarel rendimiento de sus progzma,. Espor ello que nosotros re
saltamos las oportcmidades pam mejorar el rendimiemo de los prvgramas: hacer que los programas se ejecu1e11
ms rpido o minimizar la cantidadde memoria que ocupan.
23 Tips de porabilidad
Una de las carcter(sticas qzw supuestame
rtabilia
.
"zniversa/", or lo
que algunos programadores asumen que sz unp/ementan una apcaczn e11 Java, esta sera pefectamente por
table 11 trwJsde tods las plataformas Java, forma automtica. Desafortunadamente na siempre es el casa. In
c/uimos Tlp.t de portabilidadpara IJyudar a los estudiantes a escribircdigo portable, y para ofrecer Ideas acer
ca de cmo puede Java logrr s11 alto nivel de portabilidad. Cmo programar en Java tiene menos de estos tips
que nuestros libros, Cmo pmgramar en C y Cmo pmgramar en C++ debido a que Java est d/seJado para ser
portabie de arriba abajo: y para lograr estaportabilidad, se requiere de un menor esfumo por parle del progmma
dor de lllva que del que trabaja l'0lI e o C+t.
1 35 Observaciones de ingeniera de sofare
El paradigma de la pmgmm<ICirn orientada a objetos requiere de 11/l<l completa rec:onsldemc/n sobre / mcmera
eII qcw cmzstmimos los sistemas de sofware. Java ' lM/enguoje 4ectivo pwa lograr una lm
.
ell
ingeniera te sof
ware, Las Obsevac/ones de ingeniera de sq{nvare IYllitan /os a.vzmtos de arqullectura y dc.wno, lo ual qjel'la ltt
construccin de los sistemas de .rojiwarev tspecialmenle /o,r de gran escala. Mudwde lo que los estu/iames aprcn
dan aqui les sa zltil talllo en cursos de nivel superior como en la industria, a nll'dida que empiecen a trbajar
con sistemas grandes y complejos del mundo real.
Resumen (954pu1
1
tos de resumen)
Cada captulo termina con elementos pedaggicos adicionales. Presentamos un resumen completo del cap
.
tu
lo, en forma de lista. Cada captulo contiene un promedio de 38 puntos de resumen. Esto ayuda los cstudmn
tcs a revisar y reforzar los conceptos clave.
Temli1olog(a (2166 tr11inos)
En la seccin Terminologa incluimos una lista en orden alfabtco de los trminos importantes defnidos en el
captulo; de nuevo, esto sirve como un refuerzo adicional. Cada captulo contiene un promedio de 87 trminos.
437 ejercicios de atl!evaluacil y sus respuestas (la cue1ta i1cluye partes separadas)
En esta seccin incluiros diversos ejercicios de autoevaluacin as como sus respuestas, para que los estudian
tes practiquen el autocstudio. Esto brinda la oportunidad de familiarizarse con el material y prepararse para in
tentar resolver los ejercicios regulares. Se debe alentar a los estudiantes para que hagan todos los ejercicios de
autocvaluacin y comprueben sus respuestas.
858 ejercici1s (la cuenta i!cluye partes separadas)
Cada captulo concluye con un conjunto de ejercicios que incluyen un sencillo recordatorio de terminologa y
conceptos importantes; escritura de instrucciones individuales en Java: escritura de pequeias porciones de m
todoH y claes en Java; escritura de mtodos, clases, aplicaciones y subprorraas completos en Java: y escritu
ra de proyectos fnales. El gran nmero de ejercicios, a lo lurgo de una extensa variedad de ;rcas, permite a los
profesores disear sus cursos de acuerdo con las necesidades especfcas de sus audiencias, y moditcar las asig-
xxiv Prefacio
naturas del curso cada semestre. Los profesores pueden usar estos ejercicios para asignar tareas, realizar exme
nes cortos y los exmenes principales. Lus soluciones para la mayora d los ejercicios se incluyen n el CD de
recursos para el instructor, el cual est disponible slo para profesores, a travs de los representantes de Pear
son Educaci6n. [NOA: No nos escriba p
ara solicitaros el CD del instructor. La distribucin de este acce
sorio est limitada estrictamente a
p
rofesores universitarios que tienen este libro como texto de sus cur
sos. Los profesores slo pueden obtener el manual de soluciones a travs de los representantes de esta
em
p
resa.] Los estudiantes y lectores pueden obtener la solucin de aproximadamente la mitad de los ejerci
cios si compran la quinta edicin del Java 2 Multimedia Cyber C/assrUom, 5" edicin, producto en ingls que
ofece adems muchas otras opcione& muy valiosas, y es ideal ya sea como autoestudio o referencia. Tambin en
contrar disponible en nuestro sitio Web (www . deitel. comi otros productos de apoyo a la quinta edicin de
este libro, los cuales estn disponibles en tiendas d libros en lnea como ww.info::. com. Si usted ya tiene
el libr d texto, puede comprar el producto Java 2 vultiHedia Cyber Classmom, 5" edicin (ISBN# 0- 13 101 769- l )
por separado en ww.InformiT. com/ cyberclassrooms.
8ll|ogroe
Se i ncluye en este libro una extensa bibliografu de libros, artculos y documentacin de Java 2 por parte de Sun
l!icrosystems, para que d lector pueda profundizar en los temas aqu descritos.
Software incluido con este libro
Hay una variedad de heramientas de desarrollo en Java, disponibles para su venta. Aunque no son necesarias
para empezar 4 trabajar con Java. Escribimos e;te libro utilizando solamente el Kit de desarrollo de soft ware
Java 2 Sta/ld[lrd rdition (J2SDK), versin 1
.
4
.
1. Para su conveniencia, este kit se incluye en el CD del libro.
Siempre hay una versin actualizada del J2SDK que puede descargarse del sitio Web Java de S un en java. aun.
com/j2se. De este sitio tambin se puede descargar la documentacin del J2SDK
.
Gracias a la cooperacin de S un, tambin pudimos incluir en el CD un poderoso entoro de desarrollo inte
grado (lDE) de Java: SunONfl'M Studio 4, Communit Edition. ste es un IDE profesional escrito en Java, que
incluye un diseador de interfaz grtlca de usuario, editor de cdigo, compilador, depurador visual y mucho
ms. Huy que instalar e\ J2SDK primero, antes de instalar Sun ONE'M Su/io 4 Community rditioh. Si tiene
preguntas acerca de\ uso de este software puede leer la documentacin que viene en el CD, o puede tambin
leer la publicacin, en ingls, Dive Into Sun ONE studio 4, Communty Edition de la serie D!\EINT. Este
documento est disponible en la pgina w. dei tel . com/books /downloads . html, junto con los re
cursos para esta quinta edicin.
El CD contiene los ejemplos del libro (incluyendo la implementacin del ejemplo prctico del elevador) y
una pgina Web HTML con vnculos a los sitios Web de Deitc\ & Associats. Inc .. Si usted cuenta con acceso
a Interet, puede cargar esta pgina Web en su navegador para que obtenga un rpido acceso a todos los recur
sos
.
Adems incluimos varios captulos y apndices de otras publicaciones Deitel. Se incluye material sobre
XHTML y Hojas de estilo en cascada (para usarse con el captulo 24, Servlets y con el captulo 25, JavaServer
Pagesl'M). Adems se incluye material sobre el Lenguaje de marcado
c
xtendible (XM) y las APis de Java pa
ra procesar x, que ahora forman parte del J2SE t .4,
Accesorios para la quinta edicin de Cmo prgramar en Java
Este libro cuenta con diversos accesorios, todo en ingls, para los profesores. E CD llamado Instructor
Re;ourrc CD (IRCD! contiene el Manual del instructr con las soluciones a la gran mayora de los ejercicios
\
que se encuentran al fmul de cada captulo, y un archivo llamado Ttst lem File con preguntas de opcin ml-
tiple (aproximadamente dos por cada seccicn del libro). Adems incluye diapositivas de PowerPoint con todo
el cdigo y las !iguras del libro, as como una lista de los elementos que resumen los puntos clave del texto.
Los profesores pueden adaptar las diapositivas segn sus requerimientos. Estas diapositivas de PowerPoint pue
den descargarse del sitio w, dei tel . com, donde se ofrecen recursos tanto p<tra profesores como para
alumnos. Pura los profesores, el Sitio Web Companion ofrece material (Syllabus Manager) que les ayudar a
planear los ctrsos en forma interactiva, y a crear programas de estudios en lnea.
X
prefacio
f
.
de la funcionalidad del Sitio Web Companion. Las recursos
Los estudiantes tambin pueden bene cmrse
ue se incluye para este libro son:
q
. Q
Diapositivas adaptables de PowerPmnt .
Ejemplos de cdigo fuente.
bt d precedencia de operadores, con
, d' s del libro (como una lll d
e
Materiales de referencia de los apen ce
.
unto de caractrcs y recursos Web ),
] .
l
. d
. 'tulo del libro para los estudmntcs son:
Los recursos ( e c.t t capt
, Objetivos de cada captulo.
. 1 sumen ue\ captulo).
, Elementos destacados (por ecmp U re
, Plan general.
.
ermrel Buel!aS prcticas
d
macil Tips para preverur , '
Tips (por ejemplo, Errores comunes e ,
visua
'
l Tips d<! portabilidad, Tips de rendimiento y
. ,
Observaciones de +.-:c+
,
de programacwn,
Obsen'aciones de ingeniera de software).
\
. , que incluye las respues-
. .
, cicios adicionales de autoeva uacmn
.
Gua de estudio en lnea, la cual contiene ecr
o;ciona una retroalimentaci6n inmediata al estudtante.
t cortas (por ejemplo, verdadero/falso J y prop
, .
. . erial anterior, en idioma ingles, se cncucntr,l en
El :irio Web Compamon con todo el
.
mut
ww.pearsoneducacion .net/detel.
Java in te Lab
H
J
) lroduc-
Este manual de laboratono (cuyo u o
om, . e
t
'
al materi
Jl de lectura. Este munuu\ de labP
tono
iadas para reforar la comprensin del estudiante
.
en cu.l,
ases rogamadas en fonnu regular y supc!VIsudas
est diseado para laboratorios cerrados, q
u
c
.
consJ sten
e
celente
ntes c
,
on
mente diseados. As, los profesores uenen mas p
d
osi
,
t . en el labomtorio. Este manual de laboratono puede
.
d el proarcso C es os
respecto +l matenal, supems
.
an
.
"
. . autocstudio.
.
. v
usarse tambin pura laboratonos abiertos
:
tareas y
l? 15 17 de este libro. Cada captulo del manual se lVI
f
.
n tos capitulas 1 a ~1 Y
.
. b (Lab Exercrses)
Java ill the Lab se en oca e
. p. l b Activities) ;]erczcws le a orarmw
.
de en 3 parte>: Actividades previas al l
Jborw(
\cvties).4 Cada aptulo contiene obje,ivos que mtrodu
cn
Y
4
c
tividades posteriores al
laborato
! l
o
'
P
t
l
'
d as
'
gnaciones que permite a los estudtantes marcar cuales
'
to on una sta e
d d f rma que los es-
los temas clave del \aboratorJO, un \
,
.
d l . 1 del laboratorio est perfora a, e o
.
. .
os ha asionado el profesor. Cada pagtna C manua
.
) Nuevamente, es prudente menciOnar que
eJercc "
. . uestas (en caso de ser necesano .
. . . o[' .
tudiantcs puedan entegar sus rcsp
.
t f'ac' o se encuentra en tdmma lH_es.
ncwnado en es e pre
1
1 +
todo el material complementano me
. . d s se encuentran en formato e ectromco.
.
.
.
d 1
.
ccwnes antes mencmna a . . ]
l lu
Las soluciones a los eerciciOS U as s
.
t
licitan a los representantes de esta edtlona ' as so .
Los profesores pueden obtener estos mate
.
nales si os so
ciones no estn disponibles pura \os estudtantes.
---------------ul <le \uboruwrio
t
ambin esltn tllsp0nibls en conjunto a t
ravs de un paquc-
l Cmo pmrnnwr r0 Java, j tdicin, y e mun
.
l .
te espcciai [ISBN// 0- . 02719-).
' tienen los exlensos conjutus ue acvidudeA ..
en ;::naJ:t
o
:
;
:;
4. J..as prctca de ..cnpituloH
-
_l
a
r
_ c
a
bo lu prcticas de \
u
lmruto
n
o
s
en
':r:le
t
u
cden escribir a
lerioros. Sin embargo, \os pro eso
, . complejos. Los profesores con requennucn 0
clcios que hemos incluido sobre stos temas mus
C61La1C81 L1 . Co&.
xxvi
Prefacio
AcI|v|OOO0p|0v|OO||ObO|OIO||O
S
,
e prete
n los pr
g
;
amas completos de Java y reempla-
.
<nos que escnben el codzgo faltante.
L
.
os trps para la solucin del problema (Problcm-Solvin T' .
dmnte necesitan consiuerar cuando re J
1
.
g
.
lps) resaltan los puntos clave que los estu-
sue ven os eJerctctos del laboratorio,
Las preguntas y actividades d seguimiento (Follow-U Q .
.
_
.
_
o a um o para crear programas desde cero Esta seccin
' rogramacmn CJCrcicio d , d'
y
czczos de cdigo son cortos y sirven como repuso d
.
;
s e co tgo y retos de programacin. Los ejer-
ratorio y los ejericios de laboratorio Estos eJe
.
spue
.
de haber cumpldo las actividades previas al labo
mentos de programas que utilicen los onc t
a
/
a el seu
oc
?
en clase en e
!
erczczos sustanciales de programac
in.
estos problemas. Los estudiantes que completn d
Igo se
?
roporcmnan para ayudar a los estudiantes con
ciert
1
+ e manera CXI!osa los rtos d
,
amente Jan dommudo el material del mi L
e prgramacrmz de un captulo
para su descurgu en g_
dei tal aom/bo
sm
k
o.
/
a
d
s respues
m
s u los retos de programacin estn disponibles .
O s
ownloads . html.
Prefacio xxvii
Java 2Multimedia Cyber Classrom, "edicin, y The Complete Java 2Training
Course, "edicin
Hemos actunlizado nuestra versin multimedia interactiva opcional del libro -Tire Java 2 Multimedia Cyber
C/assroon4 5" edicin (CD para Windows)-con bastante uudio adicionnl, incluyendo el nuevo materinl sobre
desarrollo de buses de datos con IDBC y desarrollo de aplicaciones Wcb con servlets y JuvaServcr Pages. Este
recurso est cargado con caractersticas electrnicas que son ideales tanto pura el uprendizaje como de referen
cia. El nmero ISBN del Cyber C/assroom es 0-13- 1 01769- 1 . Los Cyber Classrooms de DeiteJTM por lo gene
ral estn disponibles en CD y en distintos tipos de formatos de capacitacin en Wcb.
El CD que viene ctm este manual proporciona una introduccin en la cunl los autores revisan las caracte
rsticas del Cyber C/assmom. Los 21 9 programas LrVE-CODETM de ejemplo que vienen en el libro de texto,
verdaderamente "cobran vida" en el Cyber Classroom. Si desea moditicar un programa y ver el efecto de sus
cambios, nl hrcer clic en el icono del disco fexible el cdigo fuente "despega" del CD y "cae dentro" de uno
de sus propios directorios, de manera que pueda editarlo, recompilar el programa y ejecutar su nueva versin.
Adems, el Cyber Classroom contiene el texto completo (en ingls) de Cmo pmgramar en Java. 5" edicin,
en un fonnato especial para bsqueda de texto.
Asimismo, el Cyber Classroom proporciona ex:menes de autoevaluacin (con respuestas) para cada cap
tulo del libro, Estos exmenes son poderosas curactersticas que permiten a los usuarios medir su comprensin
de los conceptos de programacin que presentan los captulos. Cada pregunta del examen tiene un hipervncu
lo a la seccin, dentro del libro, de donde se deriva la pregunta. Esto permite a los usuarios revisar el material
apropiado del captulo antes o despus de responder a la pregunta. Adems se proporciona un cuadro que pre
senta los resultados, por captulo, de cada examen del usuario.
El Cyber Classmom se basa en formato estilo navegador. de manera que recuerda las secciones que usted visi
t recientemente y le permite moverse hacia delante o hacia atrs entre ellas. Las miles de entradas del ndice estn
hipervinculudas al texto correspondiente. Las entradas de la tabla de contenido son vnculos dinmicos, de mane
ra que nl hacer clic en el nombre de un captulo o seccin lo llevar de inmediato al texto de referencia.
A los estudiantes les fascinar el hecho de que d Cyber Classroom ofrece las soluciones de cerca de la mi
tad de los ejercicios del libro. Estudiar y ejecutar estos programas adicionales es una excelente manera de que
los estudiantes mejoren su experiencia de aprendizaje con cdigo nctivo.
Para una lista completa de los Cyba C/assrooms y Complete Trining Cmme.v disponibles y futuros, visite
el sitio Web de los autores en: w dei tel. Ccm o w4 InforiT. cam/ dei tel.
Advanced JavarM 2P/aform How to Program
Nuestro libro complementario, en ingls, Adva1ced java 2 Platonll How to Pmgram se enfoca en la P/ala
fomta Java 2, Ellterprise Editio (J2EE), y presenta caractersticas avanzadas de esta plataforma de Java e
intoduce la Plataforma Java 2, Micro Editio1 (J2ME). Este libro est destinado a los desarrolladores y estu
diantes universitarios de nivel superior en cursos avanzados, que ya conocen Java y desean profundizar ms
sobre este lenguaje. Adems presenta nuestro libro distintivo LNE-CooJI'M, con programas funcionnles com
pletos y ms de 37,000 lneas de cdigo. Los programas son ms complejos que los presentados en Cmo
programar en Java, 5" edicin. Este libro expande la cobertura d la Conectividad de bases de datos en Java
(IDBC), los servlets y las JavaServcr Pages (JSP) expuestas en Cmo programar en Java, 5" edicin. Tambin
cubre las tecnologas emergentes y ms avanzadas de Java, que son de inters para los desarrolladores de apli
caciones empresarinles, incluyendo el Modelo-Vista-Controlador; Java 2D y Java 3D, Modelo de componentes
JavaBeans: Seguridad; Java 2 Micro Edition (J2ME) U Interet inalmbrica; Llamada a mtodos remotos
(R),Enterprise JavaBeans (EJBs); Servicio de mensajes de Java (JMS): Jini; JavaSpaces; Jiro; Extensiones
de gestin de Java (JMX); Arquitectura comn del agente de peticin de objetos (CORBA); Redes de igunl a
igual; Servicios Web; XL e Interfaz nativa de Java JJ.
Java h0bSsrvices for Exparlencsd Programmers
Este libro, que forma parte de la nueva serie Deite/ Developer paru profesionnles de computacin, utiliza
nuestro conocido mtodo LIVE-CODETM para evaluar las mtls recientes tecnologas de XML y Javu para crear e
AYlll
Prefacio
|a|e.:se|.|as\ea,|a.|a,eaaae|Paquete par desarroladores de Servicios Web en Java (Java Web Serices
Developer Pack). ||||aces|+a|:.|aa+|asc|es|aa+|esae|+|aaas.u+aeea|eeaaeaa+.aaeaamae|+|l+-
a+saae|+s|e.aa|a.+saese|.|as\eaea!++
1+a|eaes+ae.a+aa+:+|as.asasae.|ea.|+s.aa|+.|a
a+|esaea|e|sae|aae|+|+asaae|asse|.|as\ea,a.aasa|eea|a++|as.asasea.aa|+.|a
a|stuaa|a+,a++.|a++az+a+ea!++.|as|e+saese.aaeaeaes|e||aasaa.\M|,uea|.|aaes
ae||asaeaa:aea|as(DTDs); Maae|aaea(e|asaeaa.aea|as(uu
M),|+A!ae!+++:+c.:sa-
|ea|aae\M|,!/x|;,1+as|a:+.:aaesaeaa]+saees|||ae\|eas|a|es
(XSLT'M) ,|+sae|+as|a+-
.|a++XML (1/X),|a|a.a|as||eae+..esa+aa].|as|u/|;.|eaa+(eaeaes.|.|aaese|.|as
\ea,\u|;,|a|e+|ea|a,aes.aa||ea|a,aes....|aaa|es+|(0uu!;,|+/|!ae!++++ke|saasae
XML |1AAK),/|lae!+++a||++a+s+a.ea|:ea|asea|asa+s+a+sea\M|(!/\-k|c;,/|!ae++
++Meas.e.+\M|(/XM),|+/"!u/|.aa+a]aa|as++++(//;,ea|a+aae|asse|.|as\ea
.aae|8|e|aesa.|e|sseaa,|;,i|a+a|||+|X (X |a+|ae;,c||+aa.aa\M|,XM||a.,-
||aa;,|se.||i.+.|aaees||aa:.|+es.aa\M|(\rM;,|eaa+]eae+.+caae+se.|aaesaesea|-
a+a,/M|;,|ea.+]eae+.+aaae.aa|a|ae+..esae\|eaa|a|e(\/cM|i,,|ase|.|as\ea|a+|+-
a|.as.aa
!++2 M|.a|a|||aa(J2
MTM
)
.
La serie Course Management Systems: Blackboard, WebCT,
Coursecompass5M y Premium CoursecompassM
|+|eae|.aa|ea|aaae|+se.|e|a|caa.|a|++.|eaa+(esaea++.|aCmo programar aeue||e|,|a.|a-
,eaaaes|e||aa.sea+|a|e+aaea.|asae|asaa|+es|e\|asae|+se|ecaascM+a+eea|,s.es,.a-
aea|+.|aa+a.caaseca+ss,\eac1 0a+es|ae]a+a+aecaaseca+ss,||++a+|e|a
caasecer+ss,es|+Ja|saa|a|e++|+a|a.+ea|.|aaeCmo p!Vgrmnar en Java. 8s|as|e\|as+,aa+aea
|+.e+.|a,e|+ae]ay e|asaaesats||.+a+saemar|ea|+s,:e++saeeaa.+.|aa+s+aasea\ea.caa
ese+|e|+|,e+aaa,++a|esams.|asa|esaesaeaea+aa+seaa+sae|a|aaa..|aaea+|as.
|+.|aa+a,caaseca+ss+aa\eac1a|re.ea.
Caracterstic:s para crear y personalizar cursos en lnea, .aazaa+s++.a|a.+|at+.:aae|
.a.a(ae]e|a,a|||.+s,|+aesaees|aa|a,+aaae|as,+s|a+|a+s,+aas, e+|a+.|aaesaeeaa|
|ea|a,sea||ea|aac|a.esa;,|r+|ea|+sae+a|a|s|+.|aae.|+ses,es|aa|+a|es,aa||ac
aec+|||l.+.|aa.s, ae.+|ea|+s++ea|es,+s|eaa+|a+s,aa.+|eaa+|a,+s|r+|a+s.
Herramientas de comunicaciones +..+,aa++.e+,+a|eae|+se|+c|aaes|a|eesaa+|esea-
|e|ascs|aa|+a|es,|as:eesaes,|aJa,eaaas+|aaesae.aaes+.|a,|z++se|e.|ai.as,aa.a-
ea|+.|ea:a+||a+,| :as.iea|s.cs|a,ea.eae|e.|a|.a|+aa. Henmuientas de evaluacin flexibles aee.r||ea+|a|esa:.e..aes||aa+|asea||ae+,e+e-
aes|a.a|+aasae+ae+a|e.|++||e.|a,,ae.+||.+a,a+asea||ea|a+|as:esa||+aas.aae|e.-
|||a+a,1aa+s|+se+|a+.|aaesaeaea|naaa.|.:eeae|||aeae.+|.'I.+oaaes++aa+e|i.|ea|e
+a|a|s|+.|aae|.asa./ae+s,\eac1e||e+|as|as|.a.|aes+a|a|s|+e|||eaae|as
.aes||ama|asea||ae+.
||Material de apoyo ++|as|as|c.|aesseea.aea|+a|saa|a|eea|a+|a++|es|a,++
.aasa||+ea|.ae+.
/ae+sae|+sae+|ea|+saeseea.aea|+a:a| +.|aa+.a,\eac1,
caaseca+ss|a.|a,e
La pginu de inicio de CourseCompass, | +.a+|a+.ee|.asa|+a|+.| | .aaa+e+eaes|e||ac
La+|+a|+ae.aa|ea|aae\+aa|a|eaee||e+|as|as|+.|aesee|.aa|ea|aaae|.asa+||as|+a
|ey |a.a|+se.aa.a+|a|ese..|a.
Secciones de ayuda en lnea "How Do 1", es|+aa|saa|a|es++|asasa+|asaeea|eeas|||as
.aa+,aa+esaa+||z+a+++|as.asas,|a.|a,eaaa|+s|as|a..|aaes+sa++sa+++e+a|+a-
s|||+sae|ae-|a|a|',(aea,+s
Gua del instructor Quick Start, a|e.ed |asc|esaes|+a.|aae.e+.asasea||ae+ea|+a-
|eaasea:|||ae.esa,+sa++sa.
s
|+:+aeas|.a.|aaes+|a||+sea|iae+,+eaae+s+.e.aa.|+se|ecaaseM+a+eea|,s|ems,ae
.aeao.aa
+|:i|+|ae+a,a++es|e||ac,|s||e|+s+|a+s\ea
Prefacio
| +.|aa.a.w. blackboard. com
, VebCT: w. webct. com
ursecompase . com , caas:ca+ss.Y. U o
xxix
esarroladores (DEJTEL Developer) La nueva serie para d
. . u a|ea.aa||+s|e.aa|a:+s|eaa|+++|as /ssa.|+|es.!a:,es|+e+||z+aaaaa.aa.rsa.aa
.
s. e+
eaaes|+se|e++aes.a||+aaesDmrerM
ue.|e|
a
.+|esaesoftware de |+|aaast|+,+.+esae| |u:.aaea|aa
W b Services for Eperienced Pmgrammers
cies...
r Series Web Services A Tec/mical lntroducto ,_ava
1 :e-a|+aJava 2 Enterprise Ellitlon, Java 2
Dev
e
lo
p
e
ata
a|
|a
,
,|.as||aasea
l
+se|e
A
es|a
'
_
a
_
as
_
e
Ba
o
s/e NETfor E
x
perienced PIgrammers
,
seea.ae .
ASP NETw11 1 Jsr
i 1 cm
' 1' ro Etlition NETA Technicul lntmductwn, .
a .r+s |a|+a|s||ee|s|||aww. de te U
IL ' .
. 1 p , ammers ,a: as . ASP .NET with Cfo
r
.
E
x
pe
n
encel
, _'
|a|asaa||.aaas,(a|aasaees|+se|e. ++e|+s+.|a+t+..aaesea|aaas as
Paseo por el lbro
|+a|esY .aaaa+|aaaes+a||aea|+
a am.e.aa.sese.
| sa
||+aa|aaees|aa|+aaaae|as|eaa+,es L
+
'
a asasai|+eae+||.+.|aaes.ae..o ,e
s
|
+
|
.(
+a,||aa|a|aae!++|e+,aa+
+aes+.a +
a
:a
a
e
|
as|e.s,.+..|e
(s||.+sae!++a.e
as+
+.a+
a is|+za+ae as e
e
| |ae|+se:.|aa+eaasaa+. a a+ t
1 a.+aa+s
|a|+aae|aaae|||aa.
Wcb": H+a|+saae|aaesaa +s.a
|e
'
.
.
+aaa a |as|eaa+,eseas+
a '
'""
"
'
.
'
`,'a(sa|:+_+,:do
e+r
_
|e|aaa.aa|as|eaa+]esae.||am
.
e. L +
aaca++.|a.aaea++. |+.ra..acsea+
L
|aaa...aa+aaea|am
, '
J + ||.+||a|am.|a,eaa.:.i .
`
.
a |as+taaesaea
'
seaa
.
,,,,,,,, 00 aa]e
,e||
'"
a
ae|
aa
' `
+
"
||
|,tcaa:c|a:|, '
.
,
'
C ptulo 2 "Introduccitn n lus aplicacles e Ja
E
v.t
. |a|a|ataa.e|as.aa.e.as,.aas|a..aes +-
a
a a+m+.a!++. s.e....
.1
.
raas|.+a+|asea
aplicaciones cae|e
aa+,e e
. .
+aaes
_
asa-+
aees|e.+
|
|a|
a.as|
|
'
|
a.
a |
.
.
ae|asa
.
a a.+.a+|asaaPW
o
r'
t asa+|aea
'
.a|ee |e.+ a.
s
|
..+s
|.|
|+ .+ae|ase+e|asa+|a,,.aaa.eaea
a
..|as
e
aaea|esaeinterfaz grdfca de usuario ,0|;
++a.
a a|.a|ee|asa e.a P
. t -
.
s
a ea|+a+,s+||a+se||e++.+ ae
decz'siones ,|.soperuczones a
n
tmetzca .
.esas \
'
a|+||+aaae|+toma e
+a+s
||.+||a|a2 |+a|eaa|.e.eaa+a+|.s.s
d Java": |esea|+|assubprogramas !++,aesaa
N+-
Ct tulo 3 "Introduccin a los subprogrmas
| ee.a|+:seeaa+e+aaes\ea(.aaN.|s.e e!++a|se+aas.+|.+asa|+.se+|+esae(a|eae
a
,
|+.:|asae|assaaa++saeaes|+..aaae
+|a.,M|easa||!a|eae||\|ae,.se.+.|a|a e
.+sae!++ae||e+a+.+aatareus sam+e+|as
.
|!uKuesaeses.aa.eassaaa
. .
t: |assaaa++s,|+s+|.+.aes
sem.|a,ea.aae -
. i as,a
|
i-ea.
'
+sea e
|
a.+sae|.+.ta|a2, ,e\||:+:eas|+ss.
'
eea(a.+eae|a.esaaeaes+a||aaea_++s. s
+
__
a
_
p
moioc,igo. Trilo ~''"" _
.|aa+|ea!++,|a:|a,eaaa| +e+ :+.aa
++|+|a+aeae.|s|aaes(i
f eif . . e BO
|| ae|asta..|aaess||esae.aa|a|
|+aa,|+ee||:|a.aa|a|+a+a
|
'
ru
(wh
v
i
o
_
e) 1+a|ea+a+|l:+as|+ee||.|a.aa
a
|c|+a+
ea
|
a
a
,
.
_
|
a+.|aae!++.|s|e.+.|a|aa||||-
e|:..aa +
a
eea|a e.e
a 1 a+.-
.ea||ae|+,,se|a|aaa.ea|sae+aa:s e
as|r:| i!a]aae.aaaa|+t+esae.+a+aa+ e +s
^
+a|+.+sae+.|||a+as.|esea0M|++H
.
0 5a:.aa|c|ae
.|aaesae.aata|
2" caa||a+a+a|+aaasaae|+sas .|e:.a C Captulo 5 "Instrucciones de control: te
'
.
|a..|aaeeee.|ado . w
hi
le, |+ms|a !
ae
e|asa;|+|asta..|aaeee|..a
f
or
,
.la ^
_
.a|ease|r.|a,eaa+a|s.as|asaa
'asae-
++,.a
'
. , . h 1
.
.a..|aaesbreuk y .aai:aae. .|aa:se|e..as.|. +sms
1
.+aaes||.asa:!++
||+aaae|asaa]e|as.|asaa]e|as.aa||eae
a+|a
Prefacio
0l0yIm0|000!0m0000I!0I0|0m0I000 p 1
.
.
.
0
!S0000I000O00m0I0|00l0,0I00!lRl0
0!l0 ! !0000|!!0!m 00!!00Im00Ic 0li0
.
I
00m0
e 0
I00I000 Ll I 0 0
0ImIU!g00V0|0m0I000I0000lmIm 0
.
. 0m 0 0 !00! 00m0I000(0 000|!
0 0Xl|0cl!m00I0.
_
m0|00!000Im
0
_
0m !0
``
0m!0y00
m00I0000|I|0I`h!m"
)0m0I|Y
_
Ca
ptul 7 "A 1
0 0eventos y 0lmanejo de eventos
U rrcg
D
LXl0! ll|I00!000' I 1
'
0000j0I0,000Y|0000|ml\00l00m!0m|
00!
d 600y
0l
|
1
[ I Im00I00l000m000l0m lI0
+
0S0 0Il00 mY0I|0 l m!\|0l '
0 I 0B00I00l0. L0 00ml0 00
0
CR0000m000 00 l0f!0 1 .
`
0I!i0l0l0m0I000y00|0l!00
.
, 1
0, 00!0!U0000|I0!m 0l!0000
1
000I00 0m000l0T
.
0 0 0
.
e|m0).U00!0I0!|I|0000I00|I0l0 ' ' 0 0
I|S 0 I0 000000I(000cI0|l|0
0
0
. I00R0 0lI000|' , t
0Sq00 ,u0I0 000 l!000I0|00 00 l 0u 0' 0
.
t 0m00
0 I0!000Iy!0l|2i
l|00l.
q00 a mn 00m0 00 m0j0! 0!m0I|0 00!0 l00q000
Captulo 8 "Programacin basada en ob 'ctos'' L
.
0l0.LI00|I0l0!0!000I00m
l
.
-
.
m02000I!0
00|00 m000Ill000!000 l
JIYI 0.I00!I0800!00 - 1 0
..
00!I00I ,I!Y00000l000]0(!V)0 0
.
0
.
S00N l!00!U0000I000l0Im
0000l0000y lI0!m|00l000ll0
_
0
h0m
_
0I0l|ml0
_
I00I0|00 00 000Y0I|0.o000-
0l0000l0m|0m0!0 00 000l00 00m
.
l
00 ]0I0. 0|00!0lIml0m00I0|00000l000!V
0
0Im0m00IIl 000lI00 0
+
`
I 0 0 m0!m00000 m00|H000!0
00_0I0000000I!00I0!0. Ll0|I0l000lI
t
!, 0
m0
Ilyl00l.m0|00|0l!00000 1
.
'I
..
0S 0I!0 00I00|I0I000li0 00m0 mS !U00I000Kl0y010l
.
0 `
0
__
0
;
I000
-
X!0l00!000|,00
00!00I|l|20|0000;0JIw!0 00l
__
!0000V
' J
'
0
!0
!m0
U00n00I0000j0I0, l00l0000!m
+ C 00 01mIl!
z
HII000l0l00XI00I0yl!!
0!It} l\!m00I0ni 00!00!l0!0I0- +
[ tI000V0!'l0I ''
000IU00U000!0l0y000l0 0l lL00|
.
0
0
0HS!0t|U000!0|0.1m0|0000l00!0l
I 1 0
, !0! 0! 00000 protect d I 1
.
'
0 00 0000|!00I0!000
g
00!0l
g
0y000l
.
1
. . ,
e
-S00!
-
00I!00I0|00|!00-
00m!l0!000| (!0l0|000`0 00`)
1
-
tCo, mg000q000lIw!0000l00!000|.Ll0|I0l0
Ca
ptulo 10 "P
`
000 .!t0m0I0!U0(!0l0IU00 lI000 00`)
.
rogramacwn orientada a objetos p r ,
+
0Rc0I000m00Il00 l!0Im0|000H00I0
00I08
Imr so !
.
LI00l0l000l00!00lI00!I-
00 LI0 0l|l0 00 !0o
!
L0|00 0 0Il
a
0|0!00000
000m000m0!Im|00I0 0l|m0
@
U!
II2000!' m00I0! !ml
,
1 . 00m0 ow|0 00!V. LI0 0l0l0000 1 0u
l0y000000lI!l000Ill000|ml0
00
0
_
0
'
0I
0
`
.
00!0000000I000clases anidadas,
l
0!
00,0l0
-II0l000m0
li000l!!|m0!l|0
0I!h2m00l00|00!00h!R!1
.
0
00ml0Il m00000 0V00I0. L00I000|00
. 0 m00| 0!0000V0I0
!0I0!|I!000I0l000 0I00I0l00
.
! VH000m0000I000 U.U0en-
. . q000000I000II00|0ml0 l| 0
000W0, 00j0!0Iq0|00H0I00000200 1
!0 00 00l!0!m0 00 |I0m00
0!00|0I0!2.
! 00L d0 abstract } 00j0!!q0000l00000020
Ca
ptulo 11 "Cadenas y caracters" LI00
.
1
,
0!0I0!0y!0000 0!0I0!0 !0
00Im
0 l0
l
|I00
o
0
lI
l00!00l!000m|00I000l0!, 0!0|000
T k
0 I0 Strin B ff
'
o nuer. 1m0I00!000Im0 lP!00!V !
'
X!0h00!00l!0(000Y00 lJZoL 1 .4), l00l
000||1000.
S0t0000I 00 0!0I0!0 q00000000!000 000 0|0!I00000
aptulo 12 "Grfcos y Java2D": LI000l !|m0!0 0
.
!7mI00I(h0y00 m0lIuR00|tl J H 0l
0 Yn00II0l000 l0q000!000I0l00-
' 0
0 V. d m000!cl0 `0 I t ' C 00,uM0I0!0y0yI0,0l000I!Ul0000l0! I| 00 1
0X0
} 000|0I0!I100,0l0 00]0 00
Ill y0lU|00j000l00, !00I000l0 i00I0l0 0
0 tr,t,
d
la m0I
0l0IU000l0Ill,l0m00000p0-
!0 00 0 0, !00I00l000m00|00l0,0l0,!00y
Prefacio xxxi
0l000. !000Im0 lP!!YZ,l00l0!000000!000!!m|00I!!0!100.LJ0! .J. 0
000j0ml000l0 00|lq000 0I|l|2ilA!!VZ !0!0!000I0000I0h0000ml00,00m0I0XI0!
y00!000.
Captulo 13 "Componentes de !u interfaz grfica de usuario, Parte 1": LI00|I0l0!000IVi|000
l0 componellles Swing 00 !V! 0!0i !0!m 000 |0I0I00 I00 00 00I|0 m|0l0 (U)
I000m0000I000U1independientes de la plataforma 0I0000I|I000ml0Im00I000!V,l0q000
g!00!0|0000(|10X|0|ll00L000m0000I0ow|0000000!00l|2!0f0m0j!0l!|00-
0|00llI0!m00L0I0|00l00 lq0000j000I00l!0!m,0000000Il!|000|Y|0l0I000!
00!Vi0!|00! 000I0!200 00I|0 |000I|0 00 I00 l lI0!m 00m0l0|000. Ll 00!I0ll0
00U 000I0m0XI000,0!l0q00l00|Y|0|m00000 0I0l0. LI0 0|I0l0000!000l mI0!|l000
0B0|00l000Il000m0i0Im|l|Il00I000!0i|0I0!00 0000!|0U0I|Yy000|00l0.LI00|I0-
l0u0|Il0I00||000lU,l j0!!q0|j avax. swing, l0I|q00I,00I000,l|I,0m000I0XI0,
000!0 00m0|000, 0|ll 00 Y0!||00|00,00I00000 00|00, 00l0,0lm00j0000V00I000!I00y00
I00l00,y l0 0m|0|l!00!0 000q00mI0|0|00!00m0000I0.Ll0lI0l0Im0|0000000|00
0lm00j0 000V00I0.
Ca
p
tulo 14 "Componentes de la interfaz grfca de usuario: Parte 2": LI0 0|l0l0000I|0u0000l
I0m00!0ow|0q000lII0000l0|I0l0 13. PltV0000!0!m,I0ly0|00j0l|00l0,0l 0|I0l0
|l0lIl0IB0||0000|00000U,l0!000I0XI0,00m00XI0000!l000m0000I0ow|0,l0000|!0-
l000l|20l0, l Y00I0,l0 m00u,m00u000I0XI0l0, 0000m0|Il!|000|V|0l, l |0I0!00
0000000m00I0 mull|l0,l0 00l0 000 h00 y 0l 00000m|0|I!00!0000q00mY0200."
Captulo 15 "Manejo de excepciones": I0000000l00|I0l0m0|m0!I0I0000ll|0!0,0000 0l
00I000V|l00 l0!00|00 00 l|00|00000`m||000!|||000000m0!0|00!|I|00. L0 !0!m00I0
0000|I0000!00!0 00:_q00000!I0 00000 0l00m0000I0 q00 llm0 ! 000!00lI0j0!000I0|J
00lI00`_L0m0m0 |00|0I00000m0000I0q00I0Y000!00l0m``!0l||2!00 00m0000I000!Y,0
0000!000!00l0 lm00!00m0000m0fl0000m0000I000000`ll00l000|00,|00Im-
0|00q00excepciones lanza 0000m000I000000l00l00ml.LI00|I0l0000l0|I|00|0000I!0
l0errores 00l |I0m,qU0000IlmI0!V0,yl excepciones. 10|0000l00!00l V0000l!|0
00lm00j0000Xc0p0|000, |00l0y0000l0bloques try, las clusulas catch y finally; 00m, |0I!000
00 l000V00|000000000m|00I0 00 uX000|000 00 l!.oL 1 .4. LlmI0!|l00 0l0 0ll0l0 0 |m-
!00|00|0l0nm000000 l00j0ml0000l!0I000l l|0I0.
Captulo 16 "Subproccsamiento mlti
p
le": LI00|I0l000l00!000m000!I0ll!!0!m00!-
Vq000000ll0V!000V!|0I|V|000000!m00000I!00I0.L00m0I00!0l|0000I!0|!0000
000l0!00000!, 0I0I000I00.P0l0lm00I0, l0!00000!00000Y02m00!I0, 00 m00!q00
0 0|0l0000I!0|! 00m0I00! 000V!|0!00000!0 q00 lf0j00 00!l0l0,0|00 00m0I00! 0
000000000m0multipmcesadores. Ll000000|0 |00l|00l!!B00I000|l00m0I00!q0000000!0-
2!0I 000|000. L0m0V0!0m0,0l00!000m|00I0m0lI|l00000I|Y00000|l0m00000 0l0!0-
0000!.Ll0|I0l0!000I!0!m00000!000m|00I0m0lI|l0,l000m00I!0l0 !00l0m q00
00000000II!0l!0Im0|0000000!!00I0.U00!0I0I|I|000l0|l0l0000XI000000j00I0000j0m-
l0q00m00I!00I0l|000!00l0my00m0!00lY0!l0.J0\0|00000!00l000!0000yl0m0I0-
00 00 l0mm0.AV02lIV0 00 l00|V0!00I00000000!0000 ylI!0|0|000 000I00 000
00!0!000I0|00!00000l0|0l000V|0000000!0000.A|m|m0,0|00!I000!0l!0!|00000l0
00!0000y00m0!0Im!00j0000|00.P0l|200!0l0|00!0000I0!l0000m|00!|0|00!0020|00,10
000iY0 l0!00l0mq00000!I00 y0 0l00|000l!00l0m000!u |00!00|20|0000l0 00!0000. !m-
l0m00I00!0l0|00!0000I0!l0000m|00!00000000!0|!00l!,y00|00!00|20|000000000000m0
0|I0!.0l00!0 l000!0000I|0`00m00|0,q000l000!000y ll0V0000I!000000
0y l0m0000|0l0 00d !00000!. !|0lm00I0,0l!000I0 q00 0I!I000!0l|0I0!2 Runnable,
q000m|I0l0 00j0I00j000I!000m000!0000 |0I000!q000!l0l0Th:ead 00m0000l0.
5. Nuesto libro complernentnrlo, Advanced Java 2 Plmjn How m Pmgrmn, prescnl In API 3D, til pum crear efectos tiidi"
mensionnles.
6. Los captulos t 0 6 de Advazzced .Java J ||:How l0 o,ofrece conceplos de In GUI ms avanzados.
Prefacio
Captulo 17 "Archivos y fluos" L|cc1 |u|ulr
judcd1lu\di|1giduh1ci1 ypruvcuiu|cdc
p
d |
1|1
h
ccrc1dc|1culr1dal1|id1quc\c|ugr11|r1vcdcuu
|
. c. u1rc ivu.Luc|cc1p|u| lr d
. mupcrs||culc.L|pruccudcpudcr1m1 d
.
u:c 1 uccu uubjc|u1uu |ur
h
ccu1r a|ucu1rch|\uUdc 1
.
1ccquc|uprugr1m1pucd1uuardrd1|
.
\pdt u1lr1vcdcrcdc cap|u|u |)
|
u\vcumumc1rccuuc L| `| 1
.
1 1jcuu`quUdcd1|u,cumcu1ududcdc| b` d
. cc1p|uucmp|c1cuuuu1iu|mducci0u
A
v
1
1 d
,
pa1ud1|u\1udipuili\udc1|maccu1m|
u| d
"'
u. u
1muc0mu|uprugr1m_
t 1
U ccuu ariucumu|ud|cu | u1maccuaducu cudipuili\u 11mb h
. .
. Y urm1cuqucrccupor1u|ud-
.
. v v icu 1y uu1d|cu|uuubrc|1 F ' l
.
.
p|ugrmL1p1r1ub|cucriu|u|m1ci0u1ccrc1dc 1
.
d
.
cac e
, qucc\ ul|||1d1pur|u\
d
. mcUvu\y ircc|unu Sccxp|
.
d
puc cucuvu|Ich1ci1 yrccibrcdcdc |ud | d
+ + Hdc mc|u upurc|cu1||uubclu
d
+ . ipu\iiVu\ c1lm1ccu1m | d `
,
uubrc|asNuc\1AFIdcLSdcu|ur d
!cuusccuu 1nu.mnb|cuhyuu1p1r|1-
Captulo 18 ''Red L
d
mtu 1\qucccumumc1u1lr1vcdcrc
+ v
rram|cul1 crcddcmcuu 1 1
s
muc|uu1uu\ubprugr1m1iu|cr1c|u1uducu |
.
d
rmvc cu
av1. Lucjcmp|udcc\|cc1p|u|u
/
b
.
d
uc u\cg1 urcu c|quc \ccjccul1 c d
. .
c ,cumuuic1u uccu|rcduprugr1m1\cu1 d
.
, rc1u u uu m|muavcg1dur
d
1\1mc t1u|cuckc|b11d . , t1 `
.
uprugr1m1cu11v1mcdi1u|cp1quc|cdcd1lu\ Uu`
u.yc ucg
c\1rb|lr1dupuruucr\idurcuuubprucc1miculumu|
1
.
1uccuc|c c1p|lu|ucc|dcID | M,
.
1 1p||c1cI0uc\dcmcu1cr1iu|1u|1uc1pu 1
h
cIc tcugcr,quc|mu|1 1much1dc
d
cu|cycu d b
,
u1cpcrmucu1|uuu1nudccumpu-
d
+ ` mp1ncru cu1 1u t d I e chcu!c/crvidur,cuu 130 l!uct\ub
.
r 1 vc\ c u|cmc|.L|ccmp|uprJclicu
.,
,
. pruccuicu|umuI| 1 l1 |
m1ckuprc\cu|1d1h1\|1c|cpuu|u L| 1
.
ip
.
c,l! l iz1 m1yun1dc|1lccuic1dcprur1
d
\cc1pI|uu|1mb|cucuu|mu1 I b
:
c|11JSL | ,cuuuu1iulruducci0u1|u\c|cc|urc | L/
umu
r1m|-
|
kuquccmu|r1ruu1u|ccuclcprcf1ciu,y
quc1|1rcccu . r
cvcc puulcrudc|r1|0u |
.
lIp.Uu1vcquch1y1|cduc|c1p|u|u c |r1 au
.
pu| uicouu,cv1mulr1uduc||ipudc
h `
, . a:upurprub1rludc\| |
` muc u
crc|ci0p1r1rc|1r|uyculrc|cucr|u,
4 1 ccmc1,pur|uqucch1uiuc|uidu
. .
Capitulo 20 "Estructuras de datos'': Lc cci1mcu|c
.
mvc|.L|cc1p||u|u \cr1ubrc H|ccu|
`
c1 u|!
p
d
vhuucucursusupcnurcdccguuduylcrccr
.
I iz1 1p1r1cmry m1u
`
1
cumu |1\cu|11d1 pi1 cu|y1i`b 1 p
.
cc ucur1 c 1|u,cprccul1u cjcmp|ucuu
b
`
crcumutimp|cmcu|1uc|1c|1c 1 cu nr1urapid1mcu|cc|uc|1m1yurl1d 1
, uprugr1m1durcdc11vides- c 1c|ruc|ur1dc d1|u qu
4 .
|cc1dcc|1c,cumu|1bib|iulcc1]ava. utiId !
.
c
.
utccI|1uc|1u d|puuib|crcu |1bib|iu-
Captulo 21 ''Paquete de utileras de Java
quc
cnb
cu|uc1p|u|u2 l y Z2.
|cc1j ava. util yh1b|1ubrc|u\upcr1durcd'm1ni
pa
.
n de ts Frccu|1\1ri1c|1cdc|1bib|iu-
cVector: uu1r|cg|udiu1micuqucpucd
pu1ckudcb||dc11v1.Uu1c|1ccpcci1|mcu|cu|i|
ccrcccryrcducirc
.
. .
|1c|1rc Stack, Hashtable lr t ,
cguucuccc1nu.1mb|cuh1b|1muubrc
Ca tulo "
"
,
, oper es
,
Random y.i tSet
. p ColecciOnes H1b|1ubrc|1c|1cd '
yquculrcccu imp|cmcu|1cuucprcdcHu| d1 d h
L J ava. ut qucpcr|cucccu1|1AFILu||cc|iuu
L
.
\
cmuc 1dc|1:c|ruc|u d d d `
a\cu|cccmuculrcccu1|uprugr1u1d d 1
.
r1\ c |u ccn|1cuc|c1p|u|u?Q
urc c 1\1uucuujuulu r d d
m +
ccu1ry rccupcrrd1|u,y uu cuuuu|uc|ud1rd |
o
[
o.ofrece un unallsts mucho ms profundo de las I0
hvu inalmb 1 J
YIB n mvocacmn U mtodos R I (RI) J
HC0 .Y Y02 Micro Ediiion) y CORDA (c Ob'
mo 05 . ava 2 Emerprise Edltiun
uyene de solldtud de objetos).
ommon ce Request Broker Archilccture, Arquiiecrunt comn ..
1
Prefacio xxiil
1ccudcu|cudcccudcu|c).L|cc1p|u|udcmuc|r1|1cu|ccciuuc|1ccumu|i|1cu|11d\,rbu|c\,m1pa
y cuuuu|u,y|ua|gurlmupaI1bucar,urdcu1r,cucuulr1rc|v1|urmXimu,c|muimuy1.ucci\1mcu|c
1dc:iIru||1ru|uciuuc\b11d1cuWcbquciu|cucluaucuub1c
dcd1|u1bcuchciudc|uc|icu|c,gcucr1ucuu|cuidupcruu1|i1ducu|urm1diuJmic1p1r1quc|umuclrcu
|uu1vcg1durc,y m1n|cucu iu|urm1ci0udc \ci0u uuic1purc1d1c|icu|c. L1AFI p1r1crv|cL dcJ1\1 pcr-
mi|c 1 |u dcrru||1durc 1umcu|a||1|uuciuu1|id1ddc|u crvidurcWcb p1|ah1ccrcc1rgudc|1pcUciu-
ucdc|uc|cu|c.Lucrv|c||1mbicupucdcurcu|i|i1rccu|1m1yud1dc|ucrvidurcWcbyp|1|1lurm1.
L|c c1plu|umuc|r1clmcc1uimu dc pclici0ulrcpuc|1dWcb prIucip1|mcu|c cuu|1pc|ciuuc get y
post dcHF),rcdirccciuu1udu|1pcliciuuch1ci1u|rurccurruciu|cr1c|u1nd0cuu|1b1cde d1|u 1
|mv0 dc1bL. L| c1p||u|uprccul1uu1 1p|ic1ci0u c|iculclcrvidurdc||cuivc|cqucd1cguimcuK1|1
rcpucl1dcuuuru1riucuuu1cucuc|1.
Captulo 25 "JavaServcr Pages (JSP)": Frccu|1uu1cX|cu\i0udc|1|ccuu|ug1dccr\|clcunucid1cu
mu!1v1ScrvcrF1gc(1SF). L1!SFpcnni|cu|uu dc c0u|cuiduWcbgcucr1duculunn1diuamic1. y uu
u|i|i1d1prucip1|mculcpur|udic1durcWcby|udu|uqucuuc|tiu|1mi|i1|I1ducuu|1prugr1m1ci0u
cu11v1.L1!SFpucdcucuulcucrc0digudc!1v1cuIurm1dccrp||cl.F1r11umcu|1rc|rcudimicn|u,c1d1
1SFccumpi|1cuuucr\|cldc!1v1,c|uuunn1|mcu|cucurrc|1primcr1vcqucuuc|icu|cu|ici|1|1!SF.L1
pc||ciuuc\ubccucu|cdc|uc|icu|cuu1|cudid1purc|crv|c|cumpi|1du.L|cc1plu|uprccu|1uu11pl-
c1ci0udc|ibrudc\ii|1lc,|ipuc|icu|c/crvidurdclrc uivc|c,quc1lm|ccu1|1uuurm1ci0udc|uvii|1u-
|ccuuu1bacdcd1|u.
Apndice A "Tabla de precedencia de operadores": Lu|i|1c1d1uuudc|uupur1durcdc!1\1ciudi-
c1uprcccdcuci1rc|1liv1yu1uci1|ivid1d.
Apndice B "Conjunto de caracteres ASCII": Lu|i|1|uc1I1clcrcdc|cuuuu|uASLII(L0diguc|iu-
d1rc|1duuuidcucpaItc|iu|crc1mbiudciuIurm1ci0u)c iudic1c|v1|urptu1c1d1uuudcc||ucuc0digudc
c1rc|cr.!1v1u0|i1c|cuujuu|udcc1r1clcrcUuicudc,cuuc1r1c|crcdc lobi|,p1r1rcprccu|1r|udu|uc1-
r1c|crccu|u|cugu1c "cumcrci1|mcu|ccuuidcr1b|c"cuc|muudu. Uuicudc iuc|uycc|c0diguASLucu
muuuubcuuuu|u.
Apndice C "Sistemas numricos": H1b|1ubrc|ui|cm1uumcricubIu1riu(b1c7),dccim1lb1c
10), uc|1| (b1c)yhcX1dccim1|(b1clo)
Lr|cm1lcII1|cv1liuupar1|ucuruiu|ruduclurucucicuci1
cumpu|1ciuu1|cciugcuicr1cumpul1ciuu1|.
Apndices D al F: LuulIcucu|1|mp|cmcu|1ci0udcuuc|ruccmp|uprJc|icuubrcicuuricul1du1ub-
c|ucuuUM!.Ir|ccdicu|ccu|1dccripci0ugcucr1|dc|ccmp|uprJc|icu.
Apndice G "Unicode": H1b|1:ubrcc|cuuuuludcc1r1clcrcUuicudc,c|cu1|pcU\ilc111v1mu|r1r|1
iulurm1ci0ucumuchu|cugu1|c.L|c1pcudicciuc|uycuuprugr1m111\1dcccmp|uqucmuc|r1"bicuvc-
uidu1Uuicudc cu\1rIu|cugu1c.
(Opcional) Un paseo por el ejemplo prctico sobre Diseo orientado
a objetos con UML
Luc|1ccci0uycu |1 iguicu|cd1rcmu uu p1cu1l|1\0dc |1dupnucip1|cc1r1c|cr||ic1upciuu1|cdc|
Ibruc|ccmp|uprc|icuupciuu1|dcdicuuricu|1du1ubc|ucuuU yuuc\|r1iu|ruducci0u1|upa|ru-
ucdcdicu.L|c]cmp|upric|icucuu11diui0uimpuI|1u|c1Cmo pmgramar Fh Java, S edicir. lcpacu
prccu|1 uu1v1uccdc| cuu|cuidu dc|1 ccciuuc "Accrc1dc |u1 ubc|u"y h1b|1 ubrc c0mu c rc|1ciuu1u
cuuc|ccmp|uprJc|icu.cpudcrc1li1rclcccmp|uprclIcu,u|cdh1bricump|c|1duel 0ic0uuricu|-
du1ubc|uy|1imp|cmcu|1ci0upT1uu11p|ic1ci0uimpur|1u|ccu!1v1.
XXIV Prefacio
Seccin 1.1 5, Acerca de los objetos: 1 ntroduccin a l tecnologa de objetas yel Lenguaje de modelado
unificado
Esta seccin introduce el ejemplo prctico de diseo orientado a objetos con U Aqu prescntmnns los an
tecedentes generales de lo que son los objetos y cmo interactan entre s. Tambin hablamos brevemente so
bre el estudo de la industria de la ingeniera de software y la forma en que UML ha influenciado los procelos
de anlisis y diseo orientado a objetos.
Seccin 2.9 (Ejemplo prctico opcional), Acerca de Jos objetos: Cmo examinar el enunciado
de rmproblema
Nuestro ejemplo prctico comienza con un enunciado de problema, el cual espccifca los requerimientos para
el sistema que vamos a crear. En este ejemplo prctico estudiamos e implementamos !u simulacin de un sis
tema de elevador en un edificio de dos plantas. Proporcionamos el diseo de nuestro sistema de elevador des
pus de investigar la estmctura y el comportamiento de los sistemas orientados a objetos en general. Hablamos
sobre cmo U facilita el proceso de diseo en las siguientes secciones "Acerca de los objetos", al ofrecer
nos varios tipos de diagramas para modelar nuestro sistema. Por ltimo, proporcionnmos una lista de referen
cias de URLs y libros que tratan sobre el diseo orientado a objetos con UML. Tal vez le sean tiles estas re
ferencias u medida que progrese a tmvs de la presentacin de nuestro ejemplo prctico.
Seccin 3.7 (Ejemplo prctico opcional), Acerca de los objetos: Cmo identificar las clases
eu el emmciado de UBproblema
En esta seccin empezamos a disear la simulacin del elevador
.
Identifcamos las clases o "bloques de cons
tmccin" de nuestra simulacin, extrayendo los sustantivos y las frases nominales del enunciado del problema
.
Ordenamos estas clases en un diagrama de clases de UML, el cual describe la estructura de clases de nuestra
simulacin. El diagrama de clases tambin describe las reladones, conocidas como asociaciones, entre las cla
ses (por ejemplo, una persona tiene una asociacin con el elevndor, ya que sta viaja en l).
Seccin 4.14 (Ejemplo prctico opcirmal), Acerca de los objetos: Cmo identificar los atribufl s
de una clase
Una clase contiene tanto atributos (datos) como operadort!s (comportamientos). Esta seccin se enfoca en los
atributos de las clases que se describieron en la seccin 3.7. Como veremos en secciones posteriores, los cam
bios en los atributos de un objeto a menudo afectan al comportamiento de ese objeto. Para detemtimu
los atri
butos para las clases en nuestro ejemplo prctico, extraemos los adjetivos que describen a los sustantivos y fra
ses nominales (que definen a nuestras clases) del enunciado del problema y despus colocaremos los atibutos
en d diagrama de clases que creamos en la seccin 3. 7.
Secci1 5.11 (Ejemplo prctico opcimral), Acerca tle los objetos: Cmo letrticar l1s estados
yactividades de los objetos
Un objeto, en cualquier momento dado, ocupa una condicin especfca conocida como estado. Una transicin
de estado ocun
e cuando ese objeto recibe un mensaje para cambiar de estado. UML cuenta con el diagrama de
estados. el cual identifica el conjunto de posibles estados que puede ocupar un objeto y modela las transicio
nes de estado de ese objeto. Un objeto tiene tambin una actividad: el trabajo desempeado por un objeto du
rante su vida. UML cuenta con el diagrma de actividades: un diagrama de flujo que modela l a actividad de
un objeto. En esta seccin utilizamos ambos tipos de diagramas para empezar a modelar ciertos aspectos espe
cfcos del comportamiento de nuestra simulacin de elevador, como la forma en que una persona viaja en el
e!evudor y cmo ste responde cuando se oprime un botn en un piso dado.
Seccin 6.15 (Eemplo prctico opcional), Acerca de los objetos: Cmo identificar las opercio1es
de una clase
En estu seccin identifcamos las operaciones, o servicios, de nuestras clases. Extrajimos del enunciado del pro
blema los verbos y fmses verbales que especifican las operaciones para cada clase. Despus moditlcamos el
diagrama de clases de la seccin 3. 7 para incluir cada opemcin con su clase asociada. En este punto del ejem
plo prctico, hemos recopilado toda la informacin posible del enunciado del problemu. Sin embargo, y a me
dida que los siguientes captulos introduzcan temLI como la herencia, el manejo de eventos y el subprocesa
miento mltiple, modificaremos nuestras clases y diagramas.
Y
Prefacio
. .
A . de los objetos: Colaboracirl emre objetos
Seccill 7.10 (Ejemplo practico opcttmal),
d
e
l
erca
d l uestro sistema de elevador. En esta seccin vemos
h d Un "borrado!" e mo e o pnrn n
.
'
En este punto emos eren o .
.
1 . 1
n
b
.
n
l b Jran y cundo lo hacen Presentamos un
.
E d' amt revela que o jetos co \
para modelar colabowcones. ste IUgr ^
1 d 1 1 d r
d;agrunm de colaboracin de las personas que entran y su en e e cva o .
Seccill 8.17 (Ejemplo prctico opciollal), cerca de los objetoN: Cmo empezar a programar las clases
pcra la simulacin del elevador
.
1 d 1 d
' . 0-0 del comportamiento de nuestro sistema.
descanso deJando a un a o Ise
'l' d 1
En esta secclon tomamos un ; . '
t'
.
1 material descrito en el captulo .UlJ lZan o e
1 d
.
plementacin pura en atiZar e .
4 1 4
Comenzamos e proceso e lm
.
7 los atributos y operaciones descritas en las seccwnes . . y
diagrama de clases de UML de la seccton 3 Y ,
de un diseo No implementamos todas las
.
l n ntar una el use en hva purttenuo
.
U''IL
6. 15, mostramos como !U p U! C
d d' , ' - Bas1ndonos en nuestros diagramas de ' crea-
clases, yu que no hemos completado el proceso e lseno. '
mos cdigo para lu clase Elevado:.
1 b
.
.. C' mo 1corporar la herencia a la simrt-
Seccitill 10.12 (Ejemplo prctico opcional), Acerca de os 1 etos. o
laci1 del elevador
.
. . . ' bJ' U tos Consideramos la herencia: las clases
t
Los cap1tulos 9 Y u
n so
h d 1 . t 'bulos y operaciones de una clase ''base n es a
C
l
UC comparten caractersticas similares pueden ere ar os d O
d b fciarse 't ptrtir del uso de la herencia.
t
tr . mulacin del elevador puc e ene ' '
.
seccin invesugamos como nues a '
.
d 1 ue modela las relaciones de herenc1a;
,
d b . n'entos en un dmoramu e C ases q
d 1
Documentamos nuestros escu | 1
.
0 ; , modilic'tmos el diurrama de clases e a
1.
n ' como genera/ztcrotws. espucs '
.
,
UML ,e reitere a estas re acw \
.
1. s chses con carlctersticas sumlares.
scccit 3.7 medianre el uso de la herencta, para ttgrupar v
1
.
/) A , . de los objetos: 'vf anejo de eventos
Seccil 11
.
9 (Ejemplo practica opwma ' cma .
1 b' etos en nuestra simulacin del elevador en-
.
1
1 terfaces ncceml
ts para que os 0
-
En est;J seccin U\ uunos us I
' `
.
ralmente enviando un evenw: una not
l
l-
b. t En Java 0 objetos se comumcan gene
t
vcn menajes u otros o Je os. q
_
'b 1 e to cntoiC"S re11iza una accin en respues a
v ;
El b eto que rec1 e \ cv l
c;tcin tc que ha ocurrdo un d acclon. o J
d ' tm En la seccin 7. 1 0 desclibimos el puso de
| b
_
. _
) en nuestro modelo. ut1 zan o u
1 .
.
mcnsaes (o lus co a macmncs
.
lo explicamos detalladamente como ,ts
amoeste diagrama para incluir el manejo de eventos y, como eJemp ' +
L .
'nulaclo' n se
tbrcn al momento de la llegada del elevador.
puertas en nuestra s1
. al A de los objetos: Disetio de inter
f
aces co/1 UML '
Seccin l2.9 (EJemplo practico opCWI ), cerca
d l 1 . relucioncs entre clases e interfaces en nuestra
En esta seccin diseamos un diagramu tlc clases que mo
.
e a
.
da
Ad a's enl'lstamos todas las operaciones
1 omo retnJcrvtteS. em
simulacin; UML se refere a estas re acJOnes
.
o q
l
ue
.
p
d 1 l vdor y su usuario Especficamente, invesd-
. , t nuestr s1mu acwn e C e '
cin hablamos sobre la mteracc
w
n
e
n re '
,
.
1
, '
l' o
'
l
!
y la simulaci
6n en s; este conjunto de ca
-
d
.
ntre el usuar1o ue a ap 1cac
L
omos los casos que puc en ocurr |
`
, 0 es utilizando diagramas caso de uso de UM +
os se conoce como caso de uso. Modelamos estas mter,JcCI n .
. .
\
.
, . de los ob 'etos: Mode/o-vista-coltr/ador
Seccin /4.13 (Ejemplo practico opcrmurl), ' cerca
. tes ClJda uno de los cuales tiene una responsa-
.
ue ons1stu de tres componen ,
'd
Discanms nuestro s1stema para q L
_
. .
h . 0 npletudo el primer componente, qmoct o
.
t t. l , mplo prncttco cas1 emos \ l
billdad distmta. En este pun o L CJC
1
.
1 "n o1
:...::
:,:.:::+++::..:.++|...+.+-...+.+:+.::.+:+.:..::|:+.:+:+:+:.,::..:+:..+::.:+:::+.::..
:.:::,:.::,+:+:::.+:.....::::+.:.t:::,:.::,+::..:+|::::+.::::.:+:.:+.:+:objetos de
escuch,; ::.::+::+.+,|:+.+..illlerfaces de escucha. r+::.::,:++..:.+,|:+:+..+::.:+.:|.:.|.:::
+:::+.:::.+.:|..::+:::.+.+..+..|.:.+.:,|:::,:.:.+++::..:.++|...+
Apndice E: Modelo del elevador
[Nota: Este apndice encuentr en el CD que viene con este libr. t.+.,:,..:+:|:,:+,|:,....:
.+:|+..:|+.:::+:|+:+:|:,::+:..,|:+..::,|.|...,+:|.:.++|...++:|:|:.+:.r+::.:.,:++..:
.+,|:+:+..+:::::+:+:|::+:..u..|.:.++:.:+::|::+...+.:+:uvt,+:.:.+::,,:::+..+::|.:
.|.:::+:..+:.::...:,...+,|:+:+..:|+:+:|:a,|..o::|::.:+.:,.::+:|+.:::::.:+..+:.:,:.::
.:+uvt,|.,:.+...+:.:+..+..:,:.::.,.:+:|+.:|+:..,+:+:.:+.,:++.:+|::..,.+|::
Apndice F: Vista del elevador
[Nota: Ete apndice se encuentra en el CD que viene con este libro.] r:.:.,:++..:+.|.+,|:+:+..|..,.
i:+....+.|+:++::...++|...++:|:|:.+:c..|.:.+:::|+.:+::+|:,+:,...+,|:+:+..In ...,+:
,.:..+,|.+:+..:|+:+:|:..:.+::.:+.:|.:.|.::::,+::.+.:,..:,:.+..|..:...+..|.:.++:|::+...
+.:+:uvt,.:+.:,::.|.:+::...:::+|::..,..+|::.a|:+.|+:::.:.,:++..:.+:.:++...:+,|:..+::|
+.:::,|..+,|:+:+....+.+.:|.+++:.a.|+:++:.:.:+...+::..|..::::+..::.:+|..:+r.:.+:
+..:.:+.:.:.:.:+.:+.::.:+:::..:+::|:,:+,|:,....::+,::...|:+i..+:i ,|i+:.:,+:,:
::+..+:::+++::.:|.:.:+,|:+:+...:Advanced Java 2 Platfomz How to Program ,|::..,::+:.,|...
..:+::,+:.:.+|::.+:.:::+::...:,:|::.:+.|::.r:,::.+::,+:.:+..++:::.++..++:.++.:++.:
,:|+++.+.+:|+.::::i:+..+:.:,:.::.:+cvt
(Opcional) Un paseo por las secciones "Descubrimiento de patrones de diseo"
n+.:.:.o:|.:.:+:|::,..:+::+:+.:::::::,..:.|:|.:+:..+.:::...:+.::,..:+.|::+:||.::a,+.
::+::|.::+:.|.+.+::..:..+:::.:::...:+::
l
1
Prefacio
S " 10 1? (Opciollal) Descubrimiento de los pairo/les e M n d d' e 0 1trod11ccin a los patro1es
XXII
eccum
a
de diselio de creacin, estructura y comportamzmto
1 +::::,..:+::+:+.:::..+.+::|.+.:.+ a,+.:+.:++.:|.:::...:+:::+|::,+:+.|.+::
::::
:+,:...+.:+.:t::,..:+::+:.:...
+ + U+:.-...:+ ::....+.Y L
.
+
:.++:..+.::..+:+,..:+::
: .:
+
.:. ..::+::+::.+..+.....+.:+|.:,+:...a+ C
r
:,:..:+.++.+:.:+:.:.+:..+..
+:
:.::.
|
.
,
+.:....+::+
:|:::,:.::r|::.:+:::..::.
|:::..::,|:..:+: :.:+
s | ,s.+.:.:+.::,v.+:+.:,r:..: d~
+ ,:...-.+.:....+.:+. r
+ ,s. + ' ::+:.+:i:.:+:
"
+ _ |
..+.+.:++.:.|++:: :...:,..:+
+
:|-:..+.:+:|::,..:+::+:+.::: .:,.:+|..+:..|+.+::..::ut:,..,:|++.:.+.::+
*
d d' . -
.
Patrones de diseio uti/zzados SeccitIZ 14.14 (Opcional), Descllbrimiento de los patrones e zww,
en /os paquetes )ava.avty)ava.o!nq
+
::|:,..:+:+:+.:::c:.++::|+..:..|+: . . ..+:++::.. .::+:.:+b
'
+
r:..::...:+.:+...+:++. +:+., L
1 13 14 . ::...+::.|++:::,:+,|::+:|+:: :,..: |::.:+,:+:+.::cus.++:..:+|::..,
..+::
|
|.
,
:
.
:
"
:::+::...:.|.:::+..|.:.+|::,..:+.:+: +:::+|::,.,+:.::j a
v
a
.
a
w
,
+ + ,a+,.
,
+:+.:,r.+--,,c:+,+::.:, :+,:.:
t javax BW:ng. . .+
c ., ,r . v:.+:+,a .,..: .
r
+.:::v:.:+:1:..
.. ..:,
c + ,c:++.++,
:
'
::,:+:.
'
.,
+,
:.
_
+
.
.+::..+.,
.:+,,:::+..+:::,:+,|::+: ..,:....,,,v:.:+:+:,|.+..||.,::+,|..:v:.: :.
.:+:.,.|..|::
s de diwio Patrones de dimio concurrentes Seccin 16.12 (Opcional), Descubrimiento de los pa
+
tro
+
+::+:,+:.|::,+::..:+:...+.:+:|..++. +
.
+ .:.:.a::,..:+:: : :+ .
.
+
r
t::+::.:||.+::: .+ ::.+
+ + :::+:.:+.+:+....+..+,:+: ,:.+ +:|::.+..:r+::..::...++.|.+::::
|::
..
,-+:
.
.:+;:...+.,c+.+:+s+:,:+:.:+,,r.: ..++:++::|::+,:.::,:.+|::::.+.+ :.+.+
,
t
k) :::+: ++:r.:::,::+.:::-
,
,.+/a.: :. Y %
....+,r.||.+,.r|:,+::+:|:..+:::.++.
_|t
|
.
' :+:+,:.::.|:+.:++|..,|:i+::...
:|:+.:+:+.:-+::+::..+::L
.
+...:+,.::.::.:+:|-+.::,
'rh d +..|.:.|:,..:+::+:.:+.+.+.. +::.+:|..|.::j ava . lang re a ;
Sccin 18,12 ( Opciollal), Descubrimiento de los patrones e e . d dis ,0 Patrones de disetin utilizados
en lo.v paquetes )ava . 1cy )ava. net
+ | .. :| ,.:.+::...+:: .++:: ,:+,|a: +:|
+ :| :: , :+:: C :: ..,. + .
- .
u:.++:: +..::.|:::L .::. UJ
t a|.+:::::.+::..:.|.:-:+..+:.|::,.:: . t j ava o y J ava. ne
.
. .
+::+:,..:+::.+ :,.,+::
0
, :..:
. +:+:..:+.:,::.+::+::,:.:,+: ' . ,+ :,:....+++.:+,++: b
:.+:.+:|::,..:+::+::,+...+., L |
+| . J ,.+::.:::+:.:.:+.:.+.:...+.+++:: T +.+.+,:..+.: : :.::+. r
.
t ,
:+.:+,++.:....+++.:.,:+. l
.
+
. ...::+..|.:.+|::,..:+::+:+.:::r:.: t ' l a.|.+::::-:.:+::...L
,..:+::.+:|,.,+..:j ava.
. .:+.|+:|.+.:.+:.+:::|::,..:+::+.+.::+:.::,+
: ..,:,:.:.,,:,:!...+:,i.:..:,r:..::.. y
d
'
+:.:++::::..,.:+::.:+:.:,+..
.
1 de tov 1atrones /e seno,
:
+:..+.+.::|+..:a.|+:Descummen .
.++..:+.+.:+.:+:|.a!+: d
| + . :++.+:,:.:+,:+:+: :% ..:.|::,..:+::+:+.::+:L .::Y : .+
+:||.:+:|.r.++.+:|::.+..:,c.+ ..::,+::+:.:+,|:...:.:+..:..|.|::.:+:++.+:,+:.:.:
:|r:+,.
Reconocimientos
. .
+ .s.::::|+::.:+:.::|::|+:::+:++.+.:+.:
,+:. u+:+:|::+.,:::,|..:::.|::.a++
'
.: : :
+ ...,: .::,::..+ .+.:..+,.:+,.+:+: +:+::,+.:.+:.,.::..+:+|.:..+..,:a.+,:.:+: .
.....|,..|.:|.:...++:::.:|.
:
+ h .:+:.:.-:.:,,:..:x:+:....:.:+:.:|:: v+.+.:+.::+o:..:|& a::.
....::.i...|:..:
-
.:|& a:::....::.!+..::+x...:.s:.+:.+.,,s+ ::|+:-:::+:++::.::.:|:.:+.:.:+,:.:+,|:.::+ :.
+.+,i:at.:..::|+.
xxxviil
Prefacio
Tem Nieto es egresado del Mussachusetts Institute of Technology. Imparte seminarios de X, Java,
Interet y Web, C, C++ y Visual Busic, y trabaja con nosotros en la escritura de libros de texto, el
desarrollo de cursos y creacin de multimedia. Es coautor de varios libros con nosotros, incluyendo In
teret & \-r/d Wide Web How ro Pmgram (segunda edicin), XL How lo Program, Visual Basic .NET
How to Program y C# How to Prgram. En este libro, Tcm particip como coautor en los captulos 12
a1 14 y 22, y en la seccin especial titulada "Construya su propio compilador" en el captulo 20.
Sean Stmlry, cgresado del Boston College (Ciencias computacionales y Filosofa) y coautor de Advan
ced ,lava 2 Platonn Huw ro Progmm y Java Web Servicesjir Experienced Programmers, edit todo
el manuscrito, dise e implement la aplicacin de red Deitcl Messenger en el cnptulo 18 (Redes),
contribuy en el diseo y actualiz el ejemplo pnctico opcional sobre 000/UML, y actualiz la in
troduccin opcional a los patrones de diseo.
Su Zhang posee ttulos B.Sc y M.Sc en Ciencias computacionales de la Universidad McGill. Su tesis
incluy el modelado y la simulacin, los sistemas de tiempo real y la tecnologa Java. Ella es coauto
ru con nosotros en Java Weh Serviccsjor Experienced Prgrammers y ha contribuido en otras publi
cucioncs Deitcl, incluyendo Advanced Java 2 Platorm How lo Prgram y Pytlwn How Program.
Ayud a actualizar varios captulos y cre los ejemplos que presentan nuevas caractersticas de Java
1 .4, como las Nuevas APis de E/S (de las cuales se habla en los captulos 1 7 y 1 8) y las excepciones
encadenadas (que se mencionnn en el captulo ! 5).
JeffListfeld es egresado en Ciencias computacionales del Harvnrd College. Su trabajo escolar
incluy
clases en grfcos computacionales, redes y teora computacional, y tiene experiencia de programacin
en C, C++, C#, Java, Perl y Lisp. Jetf es nuestro coautor en C# Huw Program, C# A Pmgrammer's
Introducticm y C# for Expcrienced Pmgrammers, adems contribuy en Per/ How lo Program. Jeif
ayud a actualizar varios capitulas en el libro, escribi nuevos ejemplos y secciones sobre expresiones
regulares en el captulo 1 1 , ordenamiento en el captulo 22 y partes de las secciones sobre la Nueva
API de EIS en los captulos 17 y 1 8).
Somos afortunados al haber trabajado en este proyecto con un talentoso y dedicado equipo de editores pro
fesionales. Apreciamos de manera especial el extraordinario esfuerzo de nuestra editora de Ciencias computa
cionales, Peta Rectcr y su jefa, nuestm mentom en la edicin, Murcia Hartan, directora editorial tle la divisin
de Ciencias de la computacin e ingenieda de Prentice Hall. Tom Manshreck hizo un estupentlo trabajo como
gerente de produccitn. Jcnnifer Cuppcllo hizo un excelente trabajo en el manejo del proceso de revisin.
El lave 2 Multimedia Cyber C/assroom, 5" edicin se desarroll en paralelo con Cmo programar CJava,
5" edicin. Sincemmente apreciamos la perspicacia, experiencia y habilidad tcnica de nuestro editor en jefe de
medios electrnicos, mentor y amigo, Mark Taub. l y nuestra editora de medios electrnicos, Karen Mclean,
hicieron un gran trabajo al lograr la publicacin de .lava 2 tVultimeditr Cyber Cltrssrom. 5" edicin bajo un es
trecho itinerrio.
Debemos un ttgradecimiento especial a Tamara Ncwnam (sma:t_art@earthlink. net), quien cre
el trabajo artstico para nuestros iconos de tips de programacin y l a portada. Ella cre la encantadora criatura
que compane con usted los tips de programacin del libro.
Sinceramente apreciamos los esfuerzos de nuestos 70 revisores de la cuarta edicin despus de su publi-
cacin, y de nuestros revisores de la quinta edicin:
Revisores de Sun Microsystems
Dibyendu Baksi (S un Microsystems)
Konstantin Kladko (Sun Microsystems)
Doug Kohlcrt (Sun Microsystems)
Pcter Jones (Sun Microsystems)
Puul Monday (Sun Microsystems)
Tomas Pavek (Sun Microsystems)
Brdlldon Taylor (Sun Microsystems)
R6visore, acadmicos
Rckha Bhowmik (St. Cloud S tate University)
Prefacio
Clint Bickore (Front Rangc Community Collegc)
Briun Blake (Georgetown Univcrsity)
Ayud Boudiub (Georgia Perimiter College)
Chudi Boudiub (Georgia Perimiter College)
Michnel Buckley (S tate University of New York-Bufalo)
Jarnes Chcgwidden (Tanant Coun
y Coll
ge)
Deborah Co:enlUn (Rochcster Insututc ol Technology)
Don Francis Costello (University of Nebr.ska)
Balazs Csizmazia (Univcrsity of Klugenftrt)
Tamura Dinev (Florida Atlnntic University)
Sarah Fix (The Career Center Wgh School)
Bill Freitas (Thc Lawrenccville School)
Thomas Grutte (Straycr University)
Balaji Janamanchi (Texas Tech University) .
Charles Lake (Faulkner S tate Community Collegc)
Brian Larson (Modesto Junior College)
Honn Lin (DeVry Univcrsity)
Dav`d McKain (Lakota East High School)
Andy Novobilski (U niversity o Tcn
Jessee-C
attanooga)
Richard Ord (University of Caltforma, San D1eo)
.
Gavin Osborne (Saskatchewan lnstitute f Applted s.aTech.)
e Menill Parker (Chattanoogu S tate Tcchmcal Commumty Colleg )
Donna Recsc (Mississippi State University)
Cruin Slinkmun (University of Texas, Arlington)
Gid,et Smith (Arkunsas State University)
Ron Sones (James Madison University)
.
csa
.
econoct
u acin am tecnologa de software para lnteret!orld Wtde
la creacin de contenido, con especmhzact
.
on e
l
n cd
,
c
.
(e usiness/c-commerce) y lenguajes de programacin.
, d ft e para comerciO e ectromco +
d b' t y los
Web tecnologlll e so war
. ,
I World Wide Web tecnologm e o e os
'
.
sobre programacton en nternct Y
1
H M D
La empresa proporctonu cursos
.
,
.
d es de Deitel & Associates, lnc. son el Dr. arvey I . et-
principules lenguajes de programacmn. Los funda or '
ress de cmputo ms grandes del mundo, agen
te! y Puul J
.
Deitel. Su clientes incluyen muchus de las emp
:
l A lo largo de su sociedad editorial con
d ejrcito y empresas comercta es. . .
l ' b
cas gubemamcnt
.
a]cs, sectorc
e
. b
.
d l' bros de texto de vanguardia sobre progrumacwn, t ros
Prentice Hall, Dellel & AssociUtes
.
Inc. ha pu ]ca o
'
C ber Classruoms. cursos va satlite y cursos de capa
profesionales, multimedia interacttva en D como lU
.y t s pueden ser contactados mediante correo elec
citacin basados en Web. Deitel & Assocmtes, lnc. y U uu ore
trnico en:
deitel@deitel . aom
.
bl'
.
su currculo corporatJvo mun-
p er ma' s acerca de Deitel & Associates. lnc., sus pu cactoncs y
ara conoc
.
.
.
dial en lnea, vea las ltimas pginas de este hbro o Vt>tte.
W.dei tel . com
1
, +
DED'EL BUZ ONLINE, en:
al bol,t'tn crratuito de correo e ectromco.
y suscn ase
w. deitel . com/newsletter/subscribe . html