Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Este libro presenta el lenguaje y el entorno de programación Java. Si eres desarrollador de software o simplemente alguien que utiliza Internet en su vida diaria, sin duda has oído hablar de Java. Su llegada fue uno de los acontecimientos más emocionantes de la historia de la Web, y las aplicaciones Java siguen impulsando los negocios en Internet. Java es, posiblemente, el lenguaje de programación más popular del mundo, utilizado por millones de desarrolladores en casi todos los tipos de ordenador imaginables. Java ha superado a lenguajes como C++ y Visual Basic en cuanto a demanda de desarrolladores y se ha convertido en el lenguaje de facto para ciertos tipos de desarrollo, especialmente para servicios basados en la web. La mayoría de las universidades utilizan ahora Java en sus cursos introductorios junto a otros lenguajes modernos importantes. ¡Quizá estés utilizando este texto en una de tus clases ahora mismo!

Este libro te proporciona una base completa de los fundamentos y la gramática de Java. Aprender Java, sexta edición, intenta hacer honor a su nombre trazando un mapa del lenguaje Java y sus bibliotecas de clases, técnicas de programación y modismos. Profundizaremos en áreas interesantes y al menos arañaremos la superficie de otros temas populares. Otros títulos de O'Reilly continúan donde lo dejamos y proporcionan información más completa sobre áreas y aplicaciones específicas de Java.

Siempre que es posible, proporcionamos ejemplos convincentes, realistas y divertidos, y evitamos limitarnos a catalogar funciones. Los ejemplos son sencillos pero insinúan lo que se puede hacer. No vamos a desarrollar la próxima gran "aplicación asesina" en estas páginas, pero esperamos darte un punto de partida para muchas horas de experimentación y jugueteo inspirado que te lleven a desarrollar una tú mismo.

Quién debería leer este libro

Este libro está dirigido a profesionales de la informática, estudiantes, técnicos y hackers finlandeses. Es para todos los que necesiten experiencia práctica en el uso de Java con vistas a crear aplicaciones reales. Este libro también podría considerarse un curso intensivo de programación orientada a objetos, hilos e interfaces de usuario. A medida que aprendas sobre Java, también aprenderás un enfoque potente y práctico del desarrollo de software, empezando por una comprensión profunda de los fundamentos de Java.

Superficialmente, Java se parece a C o C++, por lo que tendrás una pequeña ventaja para utilizar este libro si tienes alguna experiencia con alguno de estos lenguajes. Si no la tienes, no te preocupes. En muchos aspectos, Java se comporta como lenguajes más dinámicos, como Smalltalk y Lisp. El conocimiento de otro lenguaje de programación orientado a objetos sin duda te ayudará, aunque puede que tengas que cambiar algunas ideas y desaprender algunos hábitos. Java es considerablemente más sencillo que lenguajes como C++ y Smalltalk. Si aprendes bien con ejemplos concisos y experimentación personal, este libro te gustará.

Novedades

Cubrimos todas las características importantes de la última versión de "soporte a largo plazo" de Java, denominada oficialmente Java Standard Edition (SE) 21, OpenJDK 21. Sun Microsystems (el guardián de Java antes de Oracle) ha cambiado el esquema de nombres muchas veces a lo largo de los años. Sun acuñó el término Java 2 para englobar las principales novedades introducidas en la versión 1.2 de Java y abandonó el término JDK en favor de SDK. Con la sexta versión, Sun pasó de la versión 1.4 de Java a la 5.0, pero recuperó el término JDK y mantuvo su convención de numeración. Después tuvimos Java 6, Java 7 y Java 8. A partir de Java 9, Oracle anunció una cadencia de publicación regular (una acelerada). Las nuevas versiones se lanzan dos veces al año, y estamos en Java 21 mientras escribimos en 2023.

Esta versión de Java refleja un lenguaje maduro con cambios sintácticos ocasionales y actualizaciones de paquetes y bibliotecas. Hemos intentado captar estas novedades y actualizar todos los ejemplos de este libro para reflejar el estilo y las buenas prácticas actuales de Java.

Nuevo en esta edición (Java 15, 16, 17, 18, 19, 20, 21)

Esta edición del libro en continúa nuestra tradición de revisión para estar lo más actualizada posible. Incorpora los cambios de las últimas versiones de Java, desde Java 15 hasta Java 21 (acceso anticipado). Los nuevos temas de esta edición incluyen:

  • Hilos virtuales que permiten ganancias de rendimiento impresionantes en escenarios que requieren muchos, muchos hilos

  • Nueva cobertura de los flujos funcionales para el tratamiento de datos

  • Cobertura ampliada de las expresiones lambda

  • Ejemplos y análisis actualizados en todo el libro

  • Preguntas y ejercicios de repaso para ayudar a reforzar los temas tratados en cada capítulo

Cómo utilizar este libro

Este libro está organizado en de la siguiente manera:

  • Los capítulos 1 y2 proporcionan una introducción básica a los conceptos de Java y un tutorial para iniciarte en la programación Java.

  • El Capítulo 3 trata de las herramientas fundamentales para desarrollar con Java (el compilador, el intérprete, jshell y el paquete de archivos JAR).

  • Los capítulos 4 y5 introducen los fundamentos de la programación y, a continuación, describen el lenguaje Java propiamente dicho, empezando por la sintaxis básica y abarcando las clases y los objetos, las excepciones, las matrices, las enumeraciones, las anotaciones y mucho más.

  • El Capítulo 6 trata de las excepciones, los errores y las funciones de registro propias de Java.

  • El capítulo 7 trata de las colecciones junto con los tipos genéricos y parametrizados en Java.

  • El Capítulo 8 cubre el procesamiento de texto, el formateo, el escaneado, las utilidades de cadena y muchas de las utilidades básicas de la API.

  • El Capítulo 9 trata de las funciones de hilos integradas en el lenguaje, incluidos los nuevos hilos virtuales.

  • El Capítulo 10 trata de la E/S de archivos de Java y del paquete NIO.

  • El capítulo 11 trata de las técnicas de programación de funciones en Java.

  • El capítulo 12 trata los fundamentos del desarrollo de interfaces gráficas de usuario (GUI) con Swing.

  • El Capítulo 13 trata de la comunicación en red tanto para clientes como para servidores, así como del acceso a recursos web.

Si eres como nosotros, no lees los libros de principio a fin. Si eres realmente como nosotros, normalmente no lees el prefacio en absoluto. Sin embargo, por si acaso lo ves a tiempo, aquí tienes algunas sugerencias:

  • Si ya eres programador y sólo necesitas aprender Java en los próximos cinco minutos, probablemente estés buscando los ejemplos. Quizá quieras empezar echando un vistazo al tutorial del Capítulo 2. Si eso no te convence, al menos deberías echar un vistazo a la información del Capítulo 3, que explica cómo utilizar el compilador y el intérprete. Esto te ayudará a empezar.

  • Enel Capítulo 12 se tratan las funciones gráficas de Java y la arquitectura de componentes. Deberías leerlo si te interesa escribir aplicaciones Java gráficas de escritorio .

  • El Capítulo 13 es el lugar al que debes dirigirte si te interesa escribir aplicaciones de red o interactuar con servicios basados en la web. Las redes siguen siendo una de las partes más interesantes e importantes de Java.

Recursos en línea

Hay muchas fuentes de información sobre Java en .

Consulta el sitio web oficial de Oracle para temas relacionados con Java, como el software, las actualizaciones y las versiones de Java. Aquí encontrarás la implementación de referencia del JDK, que incluye el compilador, el intérprete y otras herramientas.

Oracle también mantiene el sitio OpenJDK. Ésta es la principal versión de código abierto de Java y las herramientas asociadas. Utilizaremos el OpenJDK para todos los ejemplos de este libro.

También deberías visitar el sitio web de O'Reilly. Allí encontrarás información sobre otros libros de O'Reilly tanto para Java como para una creciente variedad de otros temas. También deberías echar un vistazo a las opciones de aprendizaje en línea y conferencias: O'Reilly es un verdadero defensor de la educación en todas sus formas.

Y, por supuesto, ¡puedes consultar la página principal de Aprender Java!

Convenciones utilizadas en este libro

Las convenciones tipográficas utilizadas en este libro son bastante sencillas.

La cursiva se utiliza para:

  • Nombres de ruta, nombres de archivo y nombres de programa

  • Direcciones de Internet, como nombres de dominio y URL

  • Nuevos términos donde se definen

  • Nombres de programas, compiladores, intérpretes, utilidades y comandos

  • Énfasis en los puntos importantes

Constant width se utiliza para:

  • Cualquier cosa que pueda aparecer en un programa Java, incluidos nombres de métodos, nombres de variables y nombres de clases

  • Etiquetas que pueden aparecer en un documento HTML o XML

  • Palabras clave, objetos y variables de entorno

Constant width bold se utiliza para:

  • Texto que escribe el usuario en la línea de comandos o en un diálogo

Constant width italic se utiliza para:

  • Elementos sustituibles en código

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

En el cuerpo principal del texto, siempre utilizamos un par de paréntesis vacíos después del nombre de un método para distinguir los métodos de las variables, clases y otras criaturas.

En los listados de fuentes Java, seguimos las convenciones de codificación más utilizadas en la comunidad Java. Los nombres de las clases empiezan con mayúsculas; los nombres de las variables y los métodos empiezan con minúsculas. Todas las letras de los nombres de las constantes van en mayúscula. No utilizamos guiones bajos para separar palabras en un nombre largo; siguiendo la práctica común, ponemos en mayúsculas las palabras individuales (después de la primera) y las unimos. Por ejemplo thisIsAVariable, thisIsAMethod(), ThisIsAClass, yTHIS_IS_A_CONSTANT. Observa también que diferenciamos entre métodos estáticos y no estáticos cuando nos referimos a ellos. A diferencia de algunos libros, nunca escribimos Foo.bar() para referirnos al método bar() de Foo a menos que bar() sea un método estático (paralelamente a la sintaxis de Java en ese caso).

Para los listados de fuentes de programas de ejemplo, el listado comenzará con un comentario indicando el nombre del archivo relacionado (y el nombre del método, si es necesario):

// filename: ch02/examples/HelloWorld.java

  public static void main(String args[]) {
    System.out.println("Hello, world!");
  }

Puedes consultar el archivo anotado en tu editor o IDE. Te animamos a que compiles y ejecutes los ejemplos. Y, sobre todo, ¡te animamos a juguetear!

Para trabajar en jshell, conservaremos siempre el prompt jshell:

jshell> System.out.println("Hello, jshell!")
Hello, jshell!

Otros fragmentos sin nombre de archivo o prompt jshell pretenden ilustrar la sintaxis y estructura válidas, o presentar un enfoque hipotético para manejar una tarea de programación. Estos listados sin decorado no están pensados necesariamente para ser ejecutados, aunque siempre se te anima a crear tus propias clases para probar cualquier tema del libro.

Utilizar ejemplos de código

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos, pero generalmente no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Aprendiendo Java por Marc Loy, Patrick Niemeyer y Daniel Leuck (O'Reilly). Copyright 2023 Marc Loy, 978-1-098-14553-8".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita https://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

Tenemos una página web para este libro en la que enumeramos las erratas y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/learning-java-6e.

Puedes visitar GitHub para obtener los ejemplos de código. Enel Apéndice A encontrarás más información sobre cómo descargar y trabajar con los ejemplos.

Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.

Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media

Síguenos en Twitter: https://twitter.com/oreillymedia

Míranos en YouTube: https://youtube.com/oreillymedia

Agradecimientos

Muchas personas han contribuido a la elaboración de este libro, tanto en su versión Explorando Java como en su forma actual, Aprendiendo Java. Ante todo, queremos dar las gracias a Brian Guerin, Editor Senior de Adquisiciones, y a Zan McQuade, Director de Contenidos, por dar el pistoletazo de salida a esta edición. De hecho, queremos dar las gracias a todo el equipo de O'Reilly, incluidas Sarah Grey, Editora de Desarrollo; Ashley Stussy, Editora de Producción; y Kristen Brown, Directora de Servicios de Contenido. Es difícil imaginar una empresa más dedicada al éxito de sus empleados, autores y lectores. Sarah merece un aplauso especialmente fuerte por su trabajo de edición de esta sexta edición. Los autores suelen dar las gracias a sus editores independientemente del género del libro, pero este agradecimiento y elogio es doblemente importante en el caso de los temas técnicos. Sarah es una colaboradora incansable que nos levantó el ánimo casi tan a menudo como mejoró la calidad de nuestros escritos.

Varios revisores nos proporcionaron valiosos comentarios mientras preparábamos esta edición. Duncan MacGregor orientó varios temas por caminos más útiles. Eric van Hoose ajustó nuestra prosa. David Calabrese señaló puntos en los que los nuevos programadores podrían necesitar más información. Y Alex Faber ayudó a validar el código de todos nuestros ejemplos y ejercicios. Como en tantas otras cosas, los ojos adicionales son indispensables. Tenemos suerte de haber contado con pares tan atentos.

La versión original del glosario procede del libro de David Flanagan Java in a Nutshell (O'Reilly). También tomamos prestados varios diagramas de jerarquía de clases del libro de David. Estos diagramas se basaban en diagramas similares de Charles L. Perkins.

Por último, un caluroso agradecimiento a Ron Becker por sus acertados consejos e interesantes ideas desde la perspectiva de un profano bastante alejado del mundo de la programación.

Get Aprender Java, 6ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.