Para comprender el contexto de este prefacio hay que observar la distancia cronológica, entre las versiones 2.0 y la 2.1:
V-1.0 : 02/1999
V-2.0 : 10/1999
V-2.1 : 04/2015
Efectivamente; han pasado décadas... Y ahora que gestiono http://cruzado.info es hora de volver a publicar este tutorial, que sus patrocinadores y difusores han dejado en el habitual y comprensible olvido durante la migración de contenidos entre servidores y gestores de contenidos.
Me es significativamente entrañable ver cómo el lenguaje Java, incipiente en aquel momento ha logrado muchas de las cotas con las que soñabamos cuando lo redactamos.
Reconozco que el tutorial tiene algunos defectos, y que los que Sun publicó posteriormente (ahora en la web de Oracle, tras comprarla) son infinitamente mejores y más completos... aunque en inglés ;)
No obstante he mantenido muchas de sus deficiencias (especialmente estéticas, como el fondo de esta página), subsanando las pocas conceptuales que observo, porque siempre está bien poder echar la vista atrás... ¡para tomar carrerilla!
Por último, me es entrañable volver a escribir este texto desde una ubicación geográfica tan cercana al anterior, a pesar de las vueltas que he dado en el interim. Gracias a todos los que me habéis acompañado en este maravilloso viaje.
Nacho Cruzado Nuño
Burgos, Mayo de 2016
Cuando hace dos cursos el profesor Francisco José García Peñalvo nos propuso redactar el esbozo de un tutorial sobre Java, de carácter voluntario, y aunque los alumnos siempre somos reacios a una carga de trabajo sin compensación en la calificación, sorprendentemente, los alumnos aceptamos. La continua apuesta de "Fran" por su alumnado, y la confianza que en nosotros depositó, realmente nos estimuló a dar todo lo mejor de nosotros.
Aunque desgraciadamente aquel año no toda la clase pudiera superar la asignatura, sobre todo por la carga docente, pocas voces he oído en desacuerdo con las novedosas formas docentes que aquel año se experimentaron.
Aunque la redacción de la primera versión, hecha por diferentes grupos de trabajo, era muy vaga, heterogénea y estaba llena de erratas, ha sido el pilar de este tutorial, tanto como esquema de temas a tratar, como bibliografía a manejar.
En la redacción de este tutorial se ha pretendido abarcar el mayor número de aspectos posibles de la gran variedad de temas que rodean a Java. Espero no haber perdido nunca de vista que este tutorial debe de servir tanto a expertos informáticos como a programadores de cualquier tipo que, aun no teniendo idea de programación orientada a objetos, tengan interés en Java.
Así mismo espero que la bibliografía aportada sea suficiente para aquellos que hayáis quedado prendados de la potencia de este nuevo lenguaje de programación.
Debo decir que mientras desarrollaba este tutorial me ha impresionado la potencia de Java por tres motivos principales:
Esperemos que pronto los problemas de incompatibilidad entre Microsoft Explorer y Netscape Navigator se solucionen, con lo que se vivirá un futuro lleno de esplendor para Java.
ContenidosEste tutorial ha sido dividido en una serie de temas (cada uno de ellos compuesto de varios apartados) para una más fácil consulta y una mayor claridad en cuánto a qué se está intentando explicar.
A continuación se detalla de una forma general los contenidos de cada uno de los apartados.
En el primer tema "I. Introducción" se intenta acercar al lector el mundo Java desde una perspectiva global; su historia, sus características principales y una comparativa con otros lenguajes orientados a objeto, para que el lector pueda juzgar si le interesa aprender Java y para que vaya vislumbrando en qué puntos le va a interesar profundizar.
En un primer apartado se introducen todos los conceptos necesarios para poder entender un lenguaje de programación orientado a objeto, como es Java. Este apartado debe ser de especial interés para todos aquellos lectores que no hayan desarrollado jamás programas en un lenguaje orientado a objeto, y debe facilitar la comprensión de muchos conceptos básicos para un mejor entendimiento del resto del tutorial.
El segundo tema "II. Lenguaje" define todos los conceptos básicos y sintaxis del lenguaje Java; las estructuras que utiliza, su sintaxis, sus sistemas de control...
Los cuatro primeros apartados de este tema son fundamentales para comprender cualquier fragmento de código Java, y aunque sencillos son similares a los de cualquier otro lenguaje de programación.
Los temas cinco, seis y siete introducen los aspectos orientados a objeto del lenguaje Java, comenzando desde los más sencillos como son los objetos y las clases hasta los más complejos como pueden ser la herencia y el polimorfismo.
Entre los apartados ocho y once se comentan diversos aspectos propios del lenguaje Java, que dotan a los programas de una mayor potencia como son las excepciones, los threads, las interfaces y los paquetes.
Por último en el apartado doce se explican los fundamentos sobre la construcción de programas Java, aplicaciones que se pueden construir y diversos aspectos referentes a ellas.
El tercer tema "III. Bibliotecas de la API de Java" trata, de una forma global, todas las bibliotecas de la API de Java que servirán para dotar a los programas de una gran potencia con multitud de clases e interfaces estándar ya programadas y distribuidas por Sun.
Además, en un par de apartados se explican las gestiones de las cadenas y de los flujos de entrada/salida que hace Java. Estas acciones se realizan de forma sensiblemente diferente a la de otros lenguajes de programación, como por ejemplo C o C++.
En el cuarto tema "IV. Bibliotecas gráficas", se explican las dos bibliotecas que Java incorpora para desarrollar interfaces gráficas de usuario: AWT y la nueva Swing.
En el quinto tema "V. Java e Internet", se explica la potencia de Java para el desarrollo de aplicaciones en red, así como el paquete java.net, el cual da soporte a un montón de operaciones para el diálogo de diversas aplicaciones de red con aspectos como los sockets.
En el sexto tema "VI. Applets" se explica el fundamento de este tipo de aplicaciones especialmente diseñadas para su uso en Internet. Son características de Java y le aportan una potencia inusitada para el desarrollo de aplicaciones para Internet. Además en este tema se acompañan una serie de ejemplos para intentar aclarar el desarrollo y funcionamiento de este tipo de aplicaciones.
Por último al tutorial se le adjuntan una serie de apéndices que sirvan como breves reseñas sobre diferentes aspectos de Java que por una u otra cuestión se ha decidido que vayan aparte de lo que es el bloque del lenguaje.
Así en el primer apéndice "Apéndice I: JDK", se explica en detalle el funcionamiento del JDK, herramienta que distribuye Sun para el desarrollo de aplicaciones Java.
En el segundo apéndice "Apéndice II: Herramientas de desarrollo", se comentan las diferentes herramientas disponibles en el mercado para desarrollar aplicaciones Java, depurarlas y probarlas.
En un tercer apéndice "Apéndice III: Métodos Nativos" se explica mediante un ejemplo de cómo Java es capaz de utilizar código de aplicaciones escritas en otros lenguajes de programación.
En el cuarto apéndice "Apéndice IV: Guía de referencia de Java a C++" se explican las similitudes y diferencias entre estos dos lenguajes de programación, dado que Java es un lenguaje derivado de C++, pero con notables diferencias respecto a su predecesor. Este apéndice puede ser fundamental para aquellos programadores que proviniendo de C++ quieran conocer el lenguaje Java, ya que su similitud sintáctica es, en muchos casos, engañosa.
En el último apéndice "Apéndice V: Guía de referencia del lenguaje", se explican, a modo de resumen, las características fundamentales del lenguaje Java
AgradecimientosMe gustaría aprovechar este momento para felicitar a Francisco José García Peñalvo por el esfuerzo que hace por una docencia más moderna y atractiva, así como la confianza que deposita en su alumnado, y por el agradable clima de trabajo que ha creado para la realización de este tutorial.
Así mismo me gustaría agradecer al Área de Lenguajes y Sistemas Informáticos de la Universidad de Burgos la confianza depositada en mi así como toda la documentación bibliográfica que me han facilitado.
Por último me gustaría agradecer muy especialmente a Amelia Pajares Rojo su colaboración espontánea en este proyecto, consiguiendo así un tutorial mucho más claro y legible.
Espero que este tutorial realmente os agrade a todos.
Ignacio Cruzado Nuño
Burgos, Septiembre de 1999