Como Programar en Java (9na Ed.) - DeITEL
Como Programar en Java (9na Ed.) - DeITEL
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
PEARSON
/ Datos de catalogación bibliográfica
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.
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
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.
PEARSON
'En memoria delsargento Sfírive,¡
'Elprimer director del Cuerpo de Paz yfundador
de numerosas organizaciones sociales:
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
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
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
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
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).
• 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.
• 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
'
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:
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.
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.
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.
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
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/
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/
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:
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.
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.
Si no establece la variable PATH de manera correcta, cuando utilice las herramientas del JDK reci-
birá un mensaje como éste:
.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.
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 (: ).
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
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
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.
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
Fig. 1.1 1 Unos cuantos usos para las computadoras (parte I de 3).
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.
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.
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.
Sa11y Ne.gr o
Tom Azu l
Iris Naran ja
Randy Roj o
J
t
u d y Clmpo
t
00000000 01001010 Clrkter Unicode)
t
1 Bit
• •
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.
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.
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).
+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:
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
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.
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.
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).
7 developers.facebook.com/opensource/.
l. 7 Sistemas operativos 15
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.
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++.
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.
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/
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:
[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].
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.
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).
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
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.
Memoria
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.
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----.
&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.
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 .
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.
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.
-
. ,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.
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
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.
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
Fig. 1. 1S I La aplicación del ATM muestra la información del saldo de la cuenta del usuario.
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
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.
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
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.
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.
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.
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
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.
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.









