Recomendar por email:


Java ha estado siempre orientado a satisfacer las necesidades tecnológicas más punteras. Como lenguaje independiente de la plataforma, ha facilitado enormemente la labor de miles de desarrolladores web, posibilitando la creación de programas que se ejecutan eficazmente con independencia del sistema operativo. La edición de la plataforma estándar de Java 2, versión 5.0 cuenta con mejoras tan significativas que la convierten en la actualización más amplia a la que hemos asistido. Tanto si es un principiante como un programador con experiencia, en este manual único encontrará respuestas a todas sus dudas sobre Java, así como innumerables aplicaciones de muestra y cientos de ejemplos. Hallará una cobertura exhaustiva del lenguaje y sus bibliotecas más importantes y de tecnologías consolidadas como Java Beans o Java Swing. En poco tiempo será además capaz de obtener el máximo partido de las nuevas y potentes características de Java 2 v5.0, como los genéricos, autoboxing, enumeraciones o metadatos, descritas mediante explicaciones detalladas y de fácil comprensión.
Introducción Un libro para programadores Contenido Código del libro Parte I. El lenguaje de Java 1. Historia y evolución de Java El linaje de Java El nacimiento de la programación moderna: C El paso siguiente: C++ Todo est preparado para Java La creación de Java La conexión con C# Por qué Java es tan importante para Internet Los applets de Java Seguridad Portabilidad La magia de Java: el bytecode Las palabras de moda de Java Simple Orientado a objetos Robusto Multiproceso Arquitectura neutra Interpretado y de alto rendimiento Distribuido Din mico La evolución de Java La revolución de J2SE 5 La cultura de la innovación 2. Introducción a Java Programación orientada a objetos Dos paradigmas Abstracción Los tres principios de la programación orientada a objetos Encapsulado Herencia Polimorfismo Polimorfismo, encapsulado y herencia Primer programa de prueba Introducción del programa Compilación del programa Primer programa de prueba en profundidad Segundo programa breve Dos sentencias de control La sentencia if El bucle for Utilización de los bloques de c¢digo Cuestiones de léxico Espacios en blanco Identificadores Literales Comentarios Separadores Las palabras clave de Java Las bibliotecas de clases de Java 3. Tipos de datos, variables y matrices Java es un lenguaje muy tipificado Los tipos primitivos Enteros byte short int long Tipos en coma flotante float double Caracteres Booleanos Literales en profundidad Literales enteros Literales de coma flotante Literales booleanos Literales de tipo car cter Literales de cadena Variables Declaración de una variable Inicialización dinámica Ámbito y tiempo de vida de las variables Conversión de tipos Conversiones automáticas de Java Conversión de tipos incompatibles Promoción automática de tipos en expresiones Reglas de la promoción de tipos Matrices Matrices unidimensionales Matrices multidimensionales Sintaxis alternativa de la declaraci¢n de una matriz Unas breves notas acerca de las cadenas Una nota sobre los punteros para los programadores de C/C++ 4. Operadores Operadores aritméticos Operadores aritméticos básicos El operador m¢dulo Operadores de asignación aritmética Incremento y decremento Operadores a nivel de bit Operadores lógicos a nivel de bit El operador NOT El operador AND El operador OR El operador XOR Utilización de los operadores lógicos a nivel de bit Desplazamiento a la izquierda El desplazamiento a la derecha Desplazamiento a la derecha sin signo Asignaciones con operadores a nivel de bit Operadores relaciones Operadores lógicos booleanos Operadores l¢gicos en cortocircuito El operador de asignación El operador "?" Operador de prioridad El uso de paréntesis 5. Sentencias de control Sentencias de selección de Java if if anidados if-else-if múltiple switch Sentencias switch anidadas Sentencias de iteración while do-while for Declaración de variables de control del bucle dentro del bucle Utilización de la coma Algunas variaciones de los bucles for La versión for-each del bucle for Iteración a través de la matriz multidimensional Aplicación de la versión mejorada de for Bucles anidados Sentencias de salto Utilización de break Utilización de la sentencia break para salir de un bucle Utilización de la sentencia break como forma de goto Utilización de continue return 6. Introducción a las clases Fundamentos de las clases Forma general de una clase Una clase sencilla Declaración de objetos El operador new Asignación de variables de referencia a objetos Introducción a los métodos Incorporación de un método a la clase Box Devolución de un valor Métodos con par metros Constructores Constructores con par metros La palabra clave this Ocultación de variables de instancia Recogida de basura El método finalize( ) La clase Stack 7. Métodos y clases Sobrecarga de métodos Sobrecarga de constructores Utilización de objetos como par metros Paso de argumentos Devolución de objetos Recursividad Control de acceso static final Matrices Introducción a las clases anidadas e interiores La clase String Argumentos de la línea de órdenes Argumentos de longitud variable: varargs Sobrecarga de métodos vararg Los varargs y la ambigedad 8. Herencia Fundamentos de la herencia Acceso a miembros y herencia Un ejemplo más práctico Una variable de superclase puede referirse a un objeto de una subclase super Utilización de super para llamar a constructores de la superclase Una segunda utilización de super Creación de una jerarquía multinivel Orden de ejecución de los constructores Sobreescritura de métodos Selección dinámica de métodos ¿Por qué se sobreescriben los métodos? Aplicación de la sobreescritura de métodos Clases abstractas Utilización de final con herencia Utilización de final para evitar la sobreescritura Utilización de final para evitar la herencia La clase Object 9. Paquetes e interfaces Paquetes Definición de un paquete Paquetes y CLASSPATH Breve ejemplo de un paquete Protección de acceso Un ejemplo de acceso Importación de paquetes Interfaces Definición de una interfaz Implementación de una interfaz Acceso a implementaciones a través de las referencias de la interfaz Implementación parcial Aplicación de las interfaces Variables en interfaces Las interfaces se pueden extender 10. Gestión de excepciones Fundamentos de la gestión de excepciones Tipos de excepciones Excepciones no capturadas Utilización de try y catch Descripción de una excepción Cláusulas catch múltiples Sentencias try anidadas throw throws finally Excepciones incorporadas en Java Creación de subclases de excepción propias Excepciones encadenadas Utilización de las excepciones 11. Programación multihilo El modelo de hilo de Java Prioridades del hilo Sincronización Mensajes La clase Thread y la interfaz Runnable El hilo principal Creación de un hilo Implementación de la interfaz Runnable Extensión de Thread Elegir una opción Creación de hilos múltiples Utilización de isAlive( ) y join( ) Prioridades de los hilos Sincronización Utilización de métodos sincronizados La sentencia sincronizada Comunicación entre hilos Bloqueo Suspensión, reanudación y finalización de hilos Suspensi¢n, reanudación y finalización de hilos con Java 1.1 y versiones anteriores La forma moderna de suspensión, reanudación y finalización de hilos Programación multihilo 12. Enumeraciones, autoboxing y metadatos (anotaciones) Enumeraciones Enumeraciones fundamentales Los métodos values( ) y valueOf( ) Las enumeraciones de Java son tipos de clases Las enumeraciones heredan enum Otro ejemplo de enumeración Envoltorios de tipo Character Boolean Envoltorios de tipos numéricos Autoboxing Autoboxing y los métodos Autoboxing y auto-unboxing en expresiones Autoboxing y auto-unboxing de valores booleanos y caracteres Autoboxing y auto-unboxing ayudan a evitar errores Advertencia Metadatos (anotaciones) Fundamentos de la anotación Especificaci¢n de una política de retención Cómo obtener anotaciones en el momento de la ejecución utilizandola reflexión Un segundo ejemplo de reflexión Obtención de todas las anotaciones La interfaz de elemento anotado Utilización de los valores por defecto Anotaciones de marca Anotaciones de un miembro Anotaciones incorporadas @@Retention @@Documented @@Target @@Inherited @@Override @@Deprecated @@SuppressWarnings Algunas restricciones 13. E/S, applets y otros temas Fundamentos de E/S Flujos Flujos de bytes y flujos de caracteres Las clases de flujos de bytes Las clases de flujos de caracteres Flujos predefinidos Entrada por consola Lectura de caracteres Lectura de cadenas Salida por consola La clase PrintWriter Archivos de lectura y escritura Fundamentos de los applets Los modificadores transient y volatile instanceof strictfp Métodos nativos Problemas con los métodos nativos assert Validar e invalidar aserciones Importación estática 14. Genéricos ¿Qué son los genéricos? Un sencillo ejemplo de genéricos Los genéricos sólo funcionan con objetos Los tipos genéricos difieren en sus argumentos de tipo Cómo contribuyen los genéricos a la mejora de la seguridad de tipo Una clase genérica con dos parámetros de tipo Forma general de una clase genérica Tipos limitados Utilización de argumentos comodín Comodines delimitados Creación de un método genérico Constructores genéricos Interfaces genéricas Tipos primitivos y el código heredado Jerarquías de clases genéricas Utilización de una superclase genérica Una subclase genérica Comparaciones de tipo de ejecuci¢n dentro de la jerarquía genérica Conversión Sobrescritura de métodos en una clase genérica Borrado Métodos puente Errores de ambigedad Algunas restricciones genéricas Los par metros de tipo no pueden tener instancias Restricciones en los miembros estáticos Restricciones de matriz genéricas Restricción de excepción genérica éltimos toques a los genéricos Parte II. La biblioteca Java 15. Gestión de cadenas Constructores String Constructores String incorporados por J2SE 5 Longitud de una cadena Operaciones especiales con cadenas Literales de cadena Concatenación de cadenas Concatenación de cadenas con otros tipos de datos Conversión de cadenas y toString( ) Extracción de caracteres charAt( ) getChars( ) getBytes( ) toCharArray( ) Comparación de cadenas equals( ) y equalsIgnoreCase( ) regionMatches( ) startsWith() y endsWith( ) equals( ) frente a == compareTo( ) B£squeda en las cadenas Modificación de una cadena substring( ) concat( ) replace( ) trim( ) Conversión de datos utilizando valueOf( ) Intercambio de mayúsculas y minúsculas dentro de una cadena Otros métodos String StringBuffer Constructores StringBuffer length( ) y capacity( ) ensureCapacity( ) setLength( ) charAt( ) y setCharAt( ) getChars( ) append( ) insert( ) reverse( ) delete( ) y deleteCharAt( ) replace( ) substring( ) Mtodos adicionales de StringBuffer StringBuilder 16. An lisis java.lang Envoltorios para los tipos simples Number Double y Float Los métodos isInfinitive( ) y isNaN( ) Byte, Short, Integer y Long Conversión entre números y cadenas Character Otros extras de Character para punto de código de Unicode Boolean Void Process Runtime Gestión de memoria Ejecución de otros programas ProcessBuilder System currentTimeMillis( ) Uso de arraycopy( ) Propiedades del entorno Object El método clone( ) y la interfaz Cloneable ClassLoader Math Funciones trascendentes Funciones exponenciales Funciones de redondeo Otros métodos de Math StrictMath Compiler Thread, ThreadGroup y Runnable La interfaz Runnable Thread ThreadGroup ThreadLocal e InheritableThreadLocal Package RuntimePermission Throwable SecurityManager StackTraceElement Enum La interfaz CharSequence La interfaz Comparable Appendable Iterable Readable Los subpaquetes de java.lang java.lang.annotation java.lang.instrument java.lang.management java.lang.ref java.lang.reflect 17.java.util parte 1: la estructura de las colecciones Introducción a las colecciones Cambios que introduce la versión J2SE 5 Los genéricos cambian de forma radical la estructura de colecciones El mecanismo de autoboxing facilita el uso de tipos simples El bucle for for-each Las interfaces de colección La interfaz Collection La interfaz List La interfaz Set La interfaz SortedSet La interfaz Queue Las clases de Collection La clase ArrayList Obtención de una matriz a partir de una ArrayList La clase LinkedList La clase HashSet La clase LinkedHashSet La clase TreeSet La clase PriorityQueue La clase EnumSet Acceso a Collection a través de un iterador Usar un iterador La alternativa for-each a los iteradores Almacenamiento de clases definidas por el usuario en colecciones La interfaz RandomAccess Trabajar con mapas Las interfaces de mapa La interfaz Map La interfaz SortedMap La interfaz Map.Entry Las clases Map La clase HashMap La clase TreeMap La clase LinkedHashMap La clase IdentityHashMap La clase EnumMap Comparadores Uso de un comparador Los algoritmos de Collection Arrays ¿Por qué colecciones genéricas? Herencia de clases e interfaces La interfaz Enumeration Vector Stack Dictionary Hashtable Properties Uso de store( ) y load( ) Resumen de las colecciones 18. java.util parte 2: m s clases de utilidades StringTokenizer BitSet Date Calendar GregorianCalendar TimeZone SimpleTimeZone Locale( ) Random Observable La interfaz Observer Un ejemplo con la interfaz Observer Timer y TimerTask Currency Formatter Constructores de Formatter Métodos Formatter Los fundamentos del formateo Formatear cadenas y caracteres Formatear números Formatear la fecha y la hora Especificadores %n y %% Especificar un ancho mínimo de campo Especificar la precisión Uso de las marcas de formato Justificación de la salida Las marcas de espacio, +, 0 y ( La marca coma La marca # La opción de las mayúsculas &n de argumento La conexión printf() de Java Scanner Los constructores de Scanner Fundamentos de Scanning Algunos ejemplos de Scanner Establecer los delimitadores Otras caracter¡sticas de Scanner Subpaquetes de java.util java.util.concurrent, java.util.concurrent.atomic y java.utilconcurrent.locks java.util.jar java.util.logging java.util.prefs java.util.regex java.util.zip 19. Entrada/Salida: an lisis de java.io Las clases e interfaces de E/S de Java File Directorios Utilización de FilenameFilter La alternativa listFiles( ) Creación de directorios Las interfaces Closeable y Flushable Las clases Stream Los flujos de bytes InputStream OutputStream FileInputStream FileOutStream ByteArrayInputStream ByteArrayOutputStream Flujos de bytes filtrados Flujos de bytes con b£fer BufferedInputStream BufferedOutputStream PushbackInputStream SequenceInputStream PrintStream DataOutputStream y DataInputStream RandomAccessFile Flujos de caracteres Reader Writer FileReader CharArrayReader CharArrayWriter BufferedReader BufferedWriter PushbackReader PrintWriter Utilización de flujos de E/S Mejorar wc( ) con StreamTokenizer Serialización Serializable Externalizable ObjectOutput ObjectOutputStream ObjectInputStream ObjectInputStream Un ejemplo de serializaci¢n Ventajas de los flujos 20. Trabajar en red Fundamentos del trabajo en red Introducción a los conectores Cliente/servidor Conectores reservados Servidores proxy Direcciones de Internet Servicio de nombres de dominio (DNS) Java y la red Las clases e interfaces de trabajo en red InetAddress Métodos de fábrica Métodos de instancia Inet4Address e Inet6Address Conectores TCP/IP para clientes Un ejemplo Whois URL Formato URLConnection Conectores TCP/IP para servidores Un servidor HTTP proxy cach Código fuente MimeHeader.java HttpResponse.java UrlCacheEntry.java LogMessage.java httpd.java HTTP.java Datagramas DatagramPacket Servidor y cliente de datagramas La clase URI Nuevas clases que se incorporan con J2SE 5 21. La clase Applet Fundamentos de la clase Applet La clase Applet Arquitectura de un applet Estructura de un applet Comienzo y final de un applet init( ) start( ) paint( ) stop( ) destroy( ) Sobrescribir update( ) Métodos sencillos para la visualización de applets Repintar Un sencillo applet Usar la barra de estado La etiqueta APPLET de HTML Paso de par metros a los applets Mejora del applet que muestra una frase getDocumentBase( ) y getCodeBase( ) AppletContext y showDocument( ) La interfaz AudioClip La interfaz AppletStub Salida a la consola 22. Gestión de eventos Dos mecanismos para gestionar eventos El modelo de delegación de eventos Eventos Fuentes de eventos Oyentes de eventos Clases de eventos La clase ActionEvent La clase AdjustmentEvent La clase ComponentEvent La clase ContainerEvent La clase FocusEvent La clase InputEvent La clase ItemEvent La clase KeyEvent La clase MouseEvent La clase MouseWheelEvent La clase TextEvent La clase WindowEvent Fuentes de eventos Interfaces de oyente de eventos La interfaz ActionListener La interfaz AdjustmentListener La interfaz ComponentListener La interfaz ContainerListener La interfaz FocusListener La interfaz ItemListener La interfaz KeyListener La interfaz MouseListener La interfaz MouseMotionListener La interfaz MouseWheelListener La interfaz TextListener La interfaz WindowFocusListener La interfaz WindowListener Uso del modelo de delegación de eventos Gestión de eventos de ratón La gestión de eventos de teclado Clases adaptadoras Clases internas Clases internas an¢nimas 23. Introducción a AWT: trabajo con ventanas, gráficos y texto Clases AWT Fundamentos básicos de las ventanas Component Container Panel Window Frame Canvas Trabajar con ventanas Frame Ajustar las dimensiones de una ventana Ocultar y mostrar una ventana Poner título a una ventana Cerrar una ventana de tipo Frame Creación de una ventana Frame en un applet Gestión de eventos en una ventana Frame Creación de un programa con ventanas Visualizar la información dentro de una ventana Trabajar con gráficos L¡neas de dibujo Dibujar rectángulos Dibujar elipses y círculos Dibujar arcos Dibujar polígonos Tamaño de los gráficos Trabajar con color Métodos de la clase Color Uso del matiz, la saturación y el brillo getRed( ), getGreen( ), getBlue( ) getRGB( ) Establecimiento del color para los gráficos Ejemplo de applet con colores Establecer el modo de pintar Trabajar con fuentes Determinación de las fuentes disponibles Creación y selección de una fuente Información sobre las fuentes Gestión de la salida del texto utilizando FontMetrics Visualización de varias líneas de texto Centrar el texto Alineamiento de un texto de varias líneas 24. AWT controles, gestores de organización y menús Fundamentos de los controles Incorporación y eliminación de controles Responder a los controles Etiquetas Uso de los botones Gestionar botones Checkbox Gestionar las checkbox Grupo Checkbox Controles Choice Gestión de las listas Choice Listas Gestión de listas Barras de desplazamiento Gestión de las barras de desplazamiento TextField Gestión de TextField TextArea Gestores de organización FlowLayout BorderLayout Insets GridLayout CardLayout GridBagLayout Barras de menús y menús Cuadros de diálogo FileDialog Gestión de eventos extendiendo los componentes AWT Extender Button Extender Checkbox Extender un grupo de Checkbox Extender Choice Extender List Extender Scrollbar Controles, menús y gestores de organización 25. Imágenes Formatos de archivo Fundamentos de las imágenes: Creación, carga y visualización Creación de un objeto imagen Cargar una imagen Visualización de una imagen ImageObserver Doble almacenamiento en búfer MediaTracker ImageProducer MemoryImageSource ImageConsumer PixelGrabber ImageFilter CropImageFilter RGBImageFilter ImageFilterDemo.java PlugInFilter.java LoadedImage.java Grayscale.java Invert.java Contrast.java Convolver.java Blur.java Sharpen.java Animación de celdas Otra clase de imágenes 26. Las utilidades de la concurrencia Paquetes concurrentes de API java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks Objetos de sincronización Semaphore CountDownLatch CyclicBarrier Exchanger Utilización de un Executor Un sencillo ejemplo de Executor Utilización de Callable y Future La enumeración TimeUnit Las colecciones concurrentes Locks Operaciones atómicas Las utilidades de la concurrencia frente al método tradicional de Java 27. NIO, Expresiones regulares y otros paquetes Los paquetes del núcleo API de Java NIO Fundamentos NIO Búfer Canales Conjuntos de caracteres y selectores Utilización del sistema NIO Lectura de un fichero Escritura de un archivo Copiar un archivo utilizando NIO ¿Es NIO el futuro de la gesti¢n de E/S? Proceso de las expresiones regulares Pattern Matcher Sintaxis de expresión regular Ejemplo de la demostración de patrones Utilización de comodines y cuantificadores Trabajar con clases de caracteres Utilización de replaceAll() Utilización de split() Dos opciones de comparación de patrones Expresiones regulares Reflexión Invocación a método remoto (RMI) Una aplicación sencilla de cliente/servidor usando RMI Primer paso: escribir y compilar el código fuente Segundo paso: generar un stub Tercer paso: instalar archivos en los equipos cliente y servidor Cuarto paso: iniciar el registro de RMI en el equipo servidor Quinto paso: iniciar el servidor Sexto paso: iniciar el cliente Formatear textos La clase DateFormat La clase SimpleDateFormat Parte III. Desarrollo de software utilizando Java 28. JavaBeans ¿Qué es JavaBeans? Ventajas de los Java Beans Introspección Patrones de diseño para las propiedades Propiedades simples Propiedad indexada Patrón de diseño para eventos Métodos y patrones de diseño Uso de la interfaz BeanInfo Propiedades limitadas y restringidas Persistencia Customizers JavaBeans API Introspector PropertyDescriptor EventSetDescriptor MethodDescriptor Ejemplo de Bean 29. Un recorrido por Swing Applet JFrame y JComponent Iconos y etiquetas Gestión de Threading Campos de texto Botones La clase JButton Casillas de verificación Botones de radio Cuadros combo Paneles de fichas Paneles de desplazamiento Árboles Análisis de Swing Origen 30. Servlets El ciclo de vida de un servlet Utilización de Tomcat para el desarrollo de los servlets Un servlet simple Creación y compilación del código origen de Servlet Iniciar Tomcat Iniciar un navegador y solicitar el servlet API de servlet El paquete javax.servlet La interfaz Servlet Interfaz ServletConfig La interfaz ServletContext La interfaz ServletRequest La interfaz ServletResponse La clase GenericServlet La clase ServletInputStream La clase ServletOutputStream Las clases Servlet Exception Lectura de los par metros Servlet El paquete javax.servlet.http Interfaz HttpServletRequest La interfaz HttpSession La interfaz HttpSessionBindingListener La clase Cookie La clase HttpServlet La clase HttpSessionEvent La clase HttpSessionBindingEvent Gestión de las peticiones y respuestas HTTP Gestión de peticiones HTTP GET Gestión de peticiones HTTP POST Utilización de las cookies Rastreo de la sesión Parte IV. Aplicar Java 31. Applets y servlets financieros Calcular los pagos de un préstamo Los campos de RegPay El método init( ) El método actionPerformed( ) El método paint( ) El metodo compute( ) Cálculo del valor futuro de una inversión Cálculo de inversión inicial necesaria para alcanzar un valor futuro Cálculo de la inversión necesaria para una anualidad deseada Cálculo de la anualidad máxima para una inversión determinada Cálculo del balance restante de un préstamo Creación de los servlets financieros Conversión del applet RegPay en servlet El servlet RegPay Algo para probar 32. Creación de un gestor de descarga en Java Descargas de Internet Visión general del gestor de descargas La clase Download Variables de Download El constructor Download El método download( ) El método run( ) El método stateChanged( ) Los métodos de acción y de acceso La clase ProgressRenderer La clase DownloadsTableModel El método addDownload( ) El método clearDownload( ) El método getValueAt( ) El método update( ) La clase DownloadManager Las variables de DownloadManager El constructor DownloadManager El método verifyUrl( ) El método tableSelectionChanged( ) El método updateButtons( ) Gestión de los eventos de acción Compilación y ejecución de un gestor de descargas &n A. Empleo de los comentarios de documentación de Java Las etiquetas de javadoc @@author {@code} @@deprecated {@docRoot} @exception {@inheritDoc} {@link} {@linkplain} {@literal} @@param @@return @@see @@serial @@serialData @@serialField @@since @@throws {@value} @@version Forma general de un comentario de documentación Salida de javadoc Un ejemplo que utiliza comentarios de documentación alfabético
Otro libro de Schildt, Herbert es Java 7.
Otros clientes que compraron Java 2 v5.0 también compraron:
Otros libros de la colección La biblia de (Anaya Multimedia):
Otros libros de Programación. Otros:
Categorías principales






