|
|
21 | (4) |
|
Y este libro...¿para quien es? |
|
|
22 | (1) |
|
Una ayuda mas: informacion de soporte |
|
|
22 | (1) |
|
Convenios utilizados en este libro |
|
|
23 | (2) |
|
Introduccion. Directo al grano |
|
|
25 | (390) |
|
|
26 | (1) |
|
|
26 | (2) |
|
|
28 | (1) |
|
¿Por que hemos elegido Java? |
|
|
29 | (1) |
|
|
30 | (13) |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
34 | (1) |
|
Con arquitectura independiente |
|
|
34 | (1) |
|
|
35 | (1) |
|
La maquina virtual de Java (Java Virtual Machine) |
|
|
36 | (2) |
|
|
38 | (1) |
|
|
39 | (2) |
|
|
41 | (1) |
|
Multihilo (multithread) y la programacion concurrente |
|
|
42 | (1) |
|
|
42 | (1) |
|
|
43 | (1) |
|
|
44 | (2) |
|
|
44 | (1) |
|
|
45 | (1) |
|
|
45 | (1) |
|
|
46 | (1) |
|
Lo que ves es lo que hay: applets |
|
|
47 | (30) |
|
Introduccion: What you see is what you get |
|
|
48 | (1) |
|
|
48 | (2) |
|
Hola World Wide Web. Nuestro primer applet |
|
|
50 | (8) |
|
|
50 | (5) |
|
|
55 | (1) |
|
|
55 | (2) |
|
|
57 | (1) |
|
Creacion y ejecucion de un applet con NetBeans |
|
|
58 | (1) |
|
|
59 | (5) |
|
|
61 | (2) |
|
|
63 | (1) |
|
¿Que ocurre dentro de un applet? El ciclo de vida de un applet |
|
|
64 | (2) |
|
Profundizando en los applets: un ejemplo mas completo |
|
|
66 | (8) |
|
|
66 | (1) |
|
Ejemplo del ciclo de vida |
|
|
67 | (1) |
|
Animaciones en los applets |
|
|
68 | (6) |
|
|
74 | (3) |
|
Programar es un juego: sintaxis de Java |
|
|
77 | (32) |
|
Introduccion: Javarkanoid |
|
|
78 | (1) |
|
Aprender a gatear: colocacion, comentarios, identificadores y palabras reservadas |
|
|
79 | (7) |
|
|
79 | (2) |
|
|
81 | (3) |
|
|
84 | (1) |
|
|
85 | (1) |
|
Descubrir los pies: tipos de datos |
|
|
86 | (4) |
|
Tipos primitivos de datos |
|
|
86 | (2) |
|
|
88 | (1) |
|
|
88 | (1) |
|
|
89 | (1) |
|
|
90 | (1) |
|
Otro tipo de datos: String |
|
|
90 | (1) |
|
Dar nuestro primer paso: literales y variables |
|
|
90 | (17) |
|
|
91 | (1) |
|
|
91 | (1) |
|
|
91 | (1) |
|
|
92 | (1) |
|
|
93 | (1) |
|
|
94 | (1) |
|
|
94 | (1) |
|
Inicializacion de las variables |
|
|
95 | (1) |
|
Scope: alcance de una variable |
|
|
96 | (1) |
|
¿Que hacemos con todo esto? |
|
|
97 | (1) |
|
Aprender a andar: operadores |
|
|
98 | (1) |
|
|
99 | (1) |
|
Conversion de tipos automatica |
|
|
99 | (1) |
|
Casting: conversion de tipos explicita |
|
|
100 | (1) |
|
|
101 | (1) |
|
|
102 | (1) |
|
|
103 | (2) |
|
|
105 | (1) |
|
|
105 | (1) |
|
Operadores de gestion de memoria |
|
|
106 | (1) |
|
Precedencia de operadores |
|
|
106 | (1) |
|
|
107 | (2) |
|
Sintaxis de Java (parte II) |
|
|
109 | (30) |
|
Introduccion: pasar de andar a correr |
|
|
110 | (16) |
|
Correr y esquivar obstaculos: instrucciones de control de flujo |
|
|
110 | (1) |
|
Instrucciones condicionales |
|
|
111 | (1) |
|
|
111 | (3) |
|
|
114 | (3) |
|
|
117 | (1) |
|
Bucles: instrucciones iterativas |
|
|
117 | (1) |
|
|
117 | (3) |
|
|
120 | (2) |
|
|
122 | (1) |
|
|
123 | (1) |
|
Instrucciones de control general |
|
|
124 | (1) |
|
|
124 | (2) |
|
|
126 | (1) |
|
Practica: una bola rebotona |
|
|
126 | (11) |
|
|
126 | (2) |
|
Evitar parpadeos: doble buffer |
|
|
128 | (2) |
|
Cargar nuestras imagenes: MediaTracker |
|
|
130 | (1) |
|
|
131 | (6) |
|
|
137 | (2) |
|
Arrays, queues, tipos enumerados y autoboxing/unboxing |
|
|
139 | (22) |
|
|
140 | (1) |
|
|
140 | (11) |
|
|
141 | (1) |
|
Declarar el tipo base de los elementos del array |
|
|
141 | (1) |
|
Reservar espacio de memoria para el array |
|
|
141 | (1) |
|
Anadir elementos en el array |
|
|
142 | (1) |
|
Acceder a los elementos del array |
|
|
142 | (1) |
|
Arrays multidimensionales |
|
|
143 | (2) |
|
Obtener la longitud de un array |
|
|
145 | (1) |
|
Ejemplo de uso de arrays: ladrillos |
|
|
145 | (4) |
|
Otras operaciones de los arrays |
|
|
149 | (2) |
|
|
151 | (1) |
|
|
152 | (1) |
|
Anadir elementos en la queue |
|
|
152 | (1) |
|
Sacar elementos de la queue |
|
|
152 | (1) |
|
|
152 | (4) |
|
Crear y utilizar un tipo enumerado |
|
|
153 | (1) |
|
Caracteristicas de los tipos enumerados |
|
|
153 | (1) |
|
Ejemplos de uso de tipos enumerados |
|
|
154 | (2) |
|
Autoboxing y auto-unboxing |
|
|
156 | (4) |
|
|
157 | (1) |
|
|
157 | (1) |
|
Uso de operadores en las clases wrapper |
|
|
158 | (1) |
|
Uso de condicionales en las clases wrapper |
|
|
159 | (1) |
|
|
160 | (1) |
|
Hacer las cosas bien: Programacion Orientada a Objetos |
|
|
161 | (20) |
|
Introduccion: pensar orientado a objetos |
|
|
162 | (1) |
|
Objetos: todo es un objeto |
|
|
163 | (1) |
|
Clases: todo objeto viene de una clase |
|
|
163 | (11) |
|
|
164 | (1) |
|
|
165 | (1) |
|
|
166 | (8) |
|
Todo junto: instanciar clases para obtener objetos |
|
|
174 | (3) |
|
Crear una referencia al objeto |
|
|
175 | (1) |
|
|
175 | (1) |
|
A tener en cuenta con las referencias: aliasing y duplicacion de objetos, paso de parametros y operadores de comparacion |
|
|
176 | (1) |
|
Aliasing y duplicacion de objetos |
|
|
176 | (1) |
|
Paso de referencias por parametro |
|
|
176 | (1) |
|
|
177 | (1) |
|
|
177 | (2) |
|
|
179 | (2) |
|
Programacion Orientada a Objetos (parte II) |
|
|
181 | (18) |
|
|
182 | (1) |
|
|
182 | (6) |
|
|
184 | (1) |
|
|
185 | (2) |
|
|
187 | (1) |
|
|
188 | (1) |
|
|
189 | (1) |
|
|
190 | (2) |
|
|
192 | (1) |
|
|
193 | (4) |
|
|
193 | (1) |
|
|
194 | (1) |
|
Paquetes interesantes de Java |
|
|
194 | (1) |
|
Importar elementos estaticos |
|
|
195 | (2) |
|
|
197 | (2) |
|
Nuestras clases y las clases de Java |
|
|
199 | (28) |
|
|
200 | (1) |
|
Nuestras clases: mas Javarkanoid |
|
|
200 | (15) |
|
Las clases base: Sprite, Movible y Colisiona |
|
|
200 | (1) |
|
Las clases principales: Ladrillos, Bola y Pala |
|
|
201 | (8) |
|
El applet que une todo: la clase Javarkanoid |
|
|
209 | (6) |
|
|
215 | (11) |
|
|
216 | (4) |
|
|
220 | (2) |
|
|
222 | (1) |
|
|
222 | (2) |
|
|
224 | (1) |
|
|
225 | (1) |
|
|
226 | (1) |
|
|
226 | (1) |
|
Todos cometemos errores: manejo de errores en Java |
|
|
227 | (18) |
|
Introduccion: los otros errores, las excepciones |
|
|
228 | (1) |
|
La jerarquia de las excepciones |
|
|
229 | (1) |
|
Capturar excepciones: uso de try, catch y finally |
|
|
229 | (1) |
|
Intenta y captura: try...catch |
|
|
230 | (5) |
|
|
235 | (1) |
|
Capturar excepciones mas genericas |
|
|
236 | (2) |
|
|
238 | (1) |
|
Lanzar excepciones: throw y throws |
|
|
239 | (2) |
|
Lanzar excepciones con throw |
|
|
239 | (1) |
|
Lanzar excepciones con throws |
|
|
240 | (1) |
|
Crear nuestras propias excepciones |
|
|
241 | (2) |
|
|
243 | (2) |
|
|
245 | (10) |
|
|
246 | (1) |
|
El modelo de delegacion de eventos |
|
|
246 | (3) |
|
|
247 | (1) |
|
|
247 | (1) |
|
|
248 | (1) |
|
Un gran evento: manejo de eventos |
|
|
249 | (3) |
|
Solo para tus ojos: mejoras de Javarkanoid |
|
|
252 | (1) |
|
|
253 | (2) |
|
Otra manera de interactuar: entrada/salida |
|
|
255 | (16) |
|
|
256 | (1) |
|
El flujo de datos: stream |
|
|
256 | (3) |
|
|
256 | (1) |
|
|
257 | (1) |
|
|
258 | (1) |
|
Para que nos interesan los stream de bytes |
|
|
259 | (2) |
|
Ejemplo de lectura y escritura en la consola |
|
|
261 | (1) |
|
Ejemplo de lectura y escritura en ficheros |
|
|
262 | (2) |
|
Para que nos interesan los otros stream: stream de caracteres |
|
|
264 | (3) |
|
Javarkanoid y la entrada/salida: editor de niveles |
|
|
267 | (1) |
|
|
267 | (2) |
|
|
269 | (2) |
|
Juntos, pero no revueltos: Mutithreading |
|
|
271 | (12) |
|
Introduccion: que es la programacion concurrente |
|
|
272 | (1) |
|
Como programar concurrentemente en Java: los threads |
|
|
272 | (10) |
|
|
273 | (1) |
|
|
274 | (1) |
|
En ejecucion: comenzar y ejecutar |
|
|
274 | (1) |
|
|
274 | (1) |
|
Muerto: dificilmente reanudable |
|
|
275 | (1) |
|
|
276 | (1) |
|
Crear nuestros propios threads |
|
|
277 | (1) |
|
Crear una subclase de Thread |
|
|
277 | (1) |
|
Implementar la interfaz Runnable |
|
|
278 | (4) |
|
|
282 | (1) |
|
|
283 | (14) |
|
|
284 | (1) |
|
Todos juntos: sincronizacion |
|
|
284 | (4) |
|
|
284 | (1) |
|
|
285 | (2) |
|
Sincronizar bloques de codigo |
|
|
287 | (1) |
|
No revueltos: comunicacion entre threads |
|
|
288 | (4) |
|
El nuevo paquete concurrency |
|
|
292 | (4) |
|
|
293 | (1) |
|
|
294 | (1) |
|
|
295 | (1) |
|
|
295 | (1) |
|
|
295 | (1) |
|
|
295 | (1) |
|
|
296 | (1) |
|
|
296 | (1) |
|
Una interaccion conocida: ventanas en Java con Swing |
|
|
297 | (22) |
|
Introduccion: ventanas en Java |
|
|
298 | (1) |
|
|
298 | (1) |
|
Como funciona Swing: jerarquia de contenedores y componentes |
|
|
299 | (14) |
|
Paso 1: los contenedores de nivel mas alto |
|
|
300 | (1) |
|
|
301 | (1) |
|
La clase JDialog y JOptionPane |
|
|
302 | (3) |
|
|
305 | (1) |
|
Paso 2: contenedores intermedios |
|
|
305 | (1) |
|
|
306 | (1) |
|
Gestor de ubicacion de componentes: la interfaz LayoutManager |
|
|
307 | (2) |
|
|
309 | (1) |
|
|
310 | (1) |
|
|
311 | (2) |
|
Los eventos en los componentes |
|
|
313 | (2) |
|
Cambiando el Look&Feel de las aplicaciones |
|
|
315 | (3) |
|
|
318 | (1) |
|
Multimedia: imagen, Java2D y sonido |
|
|
319 | (22) |
|
Introduccion: un mundo de imagenes y sonidos |
|
|
320 | (1) |
|
Graficos bidimensionales: Java2D |
|
|
320 | (15) |
|
|
321 | (1) |
|
|
321 | (1) |
|
Figuras basicas: geometrias |
|
|
322 | (6) |
|
|
328 | (2) |
|
Render: procesar los graficos |
|
|
330 | (1) |
|
|
330 | (1) |
|
|
331 | (1) |
|
|
331 | (1) |
|
|
331 | (1) |
|
|
332 | (2) |
|
Muchas mas caracteristicas en Java2D |
|
|
334 | (1) |
|
¿Se me escucha ahi fuera? Sonido en Java |
|
|
335 | (3) |
|
Reproduccion de sonido en un applet |
|
|
335 | (1) |
|
Reproduccion de sonido en una aplicacion standalone |
|
|
336 | (1) |
|
|
336 | (1) |
|
|
337 | (1) |
|
|
338 | (3) |
|
Multimedia y realidad: Java3D |
|
|
341 | (26) |
|
Acercarnos a la realidad: Java3D |
|
|
342 | (1) |
|
|
342 | (1) |
|
Filosofia de Java3D: diagramas |
|
|
343 | (6) |
|
|
344 | (1) |
|
La correspondencia con las clases Java3D |
|
|
345 | (1) |
|
La correspondencia con los programas Java3D |
|
|
346 | (1) |
|
El universo simplificado: SimpleUniverse |
|
|
347 | (2) |
|
Nuestro primer ejemplo: un cuadrado que se convierte en un cubo |
|
|
349 | (4) |
|
Dibujo del diagrama de escena |
|
|
349 | (1) |
|
Codigo y ejecucion del programa |
|
|
349 | (2) |
|
¿Un applet, una aplicacion standalone o las dos cosas a la vez? |
|
|
351 | (1) |
|
|
351 | (1) |
|
Las etapas del programa 3D |
|
|
352 | (1) |
|
|
352 | (1) |
|
Construir la rama de contenido |
|
|
352 | (1) |
|
Compilar el diagrama de escena |
|
|
353 | (1) |
|
Crear el objeto SimpleUniverse y adaptarlo a nuestras necesidades |
|
|
353 | (1) |
|
Unir los subdiagramas a Locale |
|
|
353 | (1) |
|
Movernos en tres dimensiones: transformaciones |
|
|
353 | (3) |
|
|
354 | (1) |
|
|
354 | (1) |
|
|
355 | (1) |
|
|
355 | (1) |
|
Ejemplo de rotacion: cubo en perspectiva |
|
|
356 | (2) |
|
Dibujo del diagrama de escena |
|
|
356 | (1) |
|
Codigo y ejecucion del programa |
|
|
356 | (2) |
|
¡Esto se mueve!: animaciones |
|
|
358 | (4) |
|
Capacidad de modificacion en tiempo de ejecucion |
|
|
359 | (1) |
|
Anadir animaciones a nuestras escenas |
|
|
360 | (2) |
|
Ejemplo de animacion: todo me da vueltas |
|
|
362 | (3) |
|
Dibujo del diagrama de escena |
|
|
362 | (1) |
|
Codigo y ejecucion del programa |
|
|
362 | (3) |
|
|
365 | (1) |
|
|
366 | (1) |
|
|
367 | (34) |
|
Podriamos no parar de leer nunca |
|
|
368 | (1) |
|
JDBC: acceso a bases de datos |
|
|
368 | (4) |
|
Bases de datos relacionales |
|
|
369 | (1) |
|
SQL: Structured Query Language |
|
|
370 | (1) |
|
JDBC: Java DataBase Connectivity |
|
|
370 | (2) |
|
|
372 | (3) |
|
Ciclo de vida de un servlet |
|
|
373 | (1) |
|
Clases y objetos necesarios para crear un servlet |
|
|
374 | (1) |
|
|
374 | (1) |
|
|
374 | (1) |
|
Responder a las peticiones |
|
|
375 | (1) |
|
|
375 | (3) |
|
Entre el HTML y los servlet |
|
|
375 | (2) |
|
Componentes de una pagina JSP |
|
|
377 | (1) |
|
|
377 | (1) |
|
|
377 | (1) |
|
|
377 | (1) |
|
|
377 | (1) |
|
|
378 | (1) |
|
Java Beans y Enterprise Java Beans(EJB) |
|
|
378 | (4) |
|
|
378 | (1) |
|
Estructura de un JavaBean |
|
|
379 | (1) |
|
|
379 | (1) |
|
|
380 | (1) |
|
|
380 | (1) |
|
|
380 | (1) |
|
|
381 | (1) |
|
|
381 | (1) |
|
|
382 | (5) |
|
Errores frecuentes de las arquitecturas |
|
|
382 | (1) |
|
|
383 | (1) |
|
|
384 | (1) |
|
|
384 | (1) |
|
Arquitectura MVC(Modelo Vista Controlador) |
|
|
385 | (2) |
|
|
387 | (5) |
|
|
388 | (1) |
|
|
388 | (1) |
|
|
388 | (1) |
|
|
389 | (1) |
|
|
389 | (1) |
|
|
390 | (1) |
|
|
390 | (1) |
|
|
390 | (1) |
|
¿Como mezclamos todo esto con Java? |
|
|
391 | (1) |
|
|
391 | (1) |
|
|
391 | (1) |
|
|
391 | (1) |
|
Java y XML: la union hace la fuerza |
|
|
392 | (1) |
|
RMI: Remote Method Invocation |
|
|
392 | (2) |
|
Esquema de funcionamiento RMI |
|
|
392 | (1) |
|
Clases necesarias para utilizar RMI |
|
|
393 | (1) |
|
Pasos para crear una aplicacion RMI |
|
|
394 | (1) |
|
Java IDL y CORBA: programacion distribuida |
|
|
394 | (2) |
|
|
395 | (1) |
|
Pasos para crear una aplicacion con Java IDL |
|
|
396 | (1) |
|
|
396 | (1) |
|
¿Cuando es interesante utilizar JMS? |
|
|
397 | (1) |
|
JMS junto a otras tecnologias de la plataforma J2EE |
|
|
397 | (1) |
|
|
397 | (2) |
|
|
398 | (1) |
|
|
399 | (1) |
|
|
399 | (1) |
|
|
399 | (1) |
|
|
400 | (1) |
|
J2ME: Nuestro pequeno gran hombre |
|
|
401 | (14) |
|
Que es y que necesitamos para desarrollar en J2ME |
|
|
402 | (1) |
|
|
402 | (1) |
|
Herramientas de desarrollo: WTK |
|
|
403 | (1) |
|
Ciclo de vida de un midlet |
|
|
403 | (2) |
|
Crear aplicaciones con componentes estandar |
|
|
405 | (5) |
|
|
405 | (3) |
|
Libreria estandar de formularios |
|
|
408 | (1) |
|
|
408 | (1) |
|
|
408 | (1) |
|
|
409 | (1) |
|
|
409 | (1) |
|
|
409 | (1) |
|
|
409 | (1) |
|
|
410 | (1) |
|
|
410 | (1) |
|
Desarrollo de juegos en J2ME |
|
|
410 | (3) |
|
|
411 | (1) |
|
El paquete javax.microedition.lcdui.game |
|
|
411 | (1) |
|
|
412 | (1) |
|
|
413 | (1) |
|
|
413 | (2) |
|
|
415 | (30) |
|
Apendice A. Instalacion Java |
|
|
417 | (1) |
|
|
417 | (1) |
|
|
418 | (2) |
|
|
420 | (3) |
|
Variable PATH en Windows 2000 y NT |
|
|
420 | (1) |
|
Variable PATH en Windows XP |
|
|
421 | (1) |
|
Variable PATH en Windows ME |
|
|
422 | (1) |
|
|
423 | (1) |
|
|
423 | (1) |
|
|
424 | (3) |
|
Apendice B. Instalacion de NetBeans |
|
|
427 | (1) |
|
|
427 | (1) |
|
|
428 | (1) |
|
|
429 | (1) |
|
|
430 | (5) |
|
|
431 | (2) |
|
|
433 | (1) |
|
Compilar y ejecutar nuestro programa Java |
|
|
434 | (1) |
|
Conclusiones del uso de NetBeans |
|
|
435 | (1) |
|
Programar en Java sin utilizar NetBeans |
|
|
435 | (1) |
|
|
435 | (2) |
|
Apendice C. Novedades Java |
|
|
437 | (2) |
|
|
437 | (1) |
|
|
437 | (1) |
|
|
438 | (1) |
|
Enumeraciones (Enumerations) |
|
|
438 | (1) |
|
Importar estaticos (Static Imports) |
|
|
439 | (1) |
|
|
439 | (1) |
|
Novedades en la maquina virtual |
|
|
439 | (1) |
|
|
439 | (1) |
|
Recolector de basura (Garbage Collector) |
|
|
440 | (1) |
|
|
440 | (1) |
|
|
440 | (1) |
|
|
440 | (1) |
|
|
440 | (1) |
|
|
440 | (1) |
|
|
441 | (1) |
|
|
441 | (1) |
|
Monitorizacion y mantenimiento |
|
|
441 | (1) |
|
|
441 | (1) |
|
|
441 | (1) |
|
CORBA, JavaIDL y RMI-IIOP |
|
|
441 | (1) |
|
|
442 | (1) |
|
|
442 | (1) |
|
|
442 | (1) |
|
|
442 | (1) |
|
|
442 | (1) |
|
|
443 | (1) |
|
|
443 | (1) |
|
|
443 | (2) |
Indice alfabetico |
|
445 | |