Ceballos: Java 2 - Curso de Programación 4ed
Ceballos: Java 2 - Curso de Programación 4ed
Ceballos: Java 2 - Curso de Programación 4ed
Curso de Programación
4ª edición
Fco. Javier Ceballos Sierra
Profesor titular de la
Escuela Politécnica Superior
Universidad de Alcalá
http://www.fjceballos.es
Java 2: Curso de programación. 4ª edición.
© Fco. Javier Ceballos Sierra
© De la edición: RA-MA 2010
MARCAS COMERCIALES: Las marcas de los productos citados en el contenido de este libro
(sean o no marcas registradas) pertenecen a sus respectivos propietarios. RA-MA no está
asociada a ningún producto o fabricante mencionado en la obra, los datos y los ejemplos
utilizados son ficticios salvo que se indique lo contrario.
Según lo dispuesto en el Código Penal vigente ninguna parte de este libro puede ser
reproducida, grabada en sistema de almacenamiento o transmitida en forma alguna ni
por cualquier procedimiento, ya sea electrónico, mecánico, reprográfico, magnético o
cualquier otro, sin autorización previa y por escrito de RA-MA; su contenido está protegido
por la Ley vigente que establece penas de prisión y/o multas a quienes intencionadamente,
reprodujeren o plagiaren, en todo o en parte, una obra literaria, artística o científica.
Editado por:
RA-MA Editorial
C/ Jarama, 3A, Polígono industrial Igarsa
28860 PARACUELLOS DEL JARAMA, Madrid
Teléfono: 91 658 42 80
Telefax: 91 662 81 39
Correo electrónico: editorial@ra-ma.com
Internet: www.ra-ma.es y www.ra-ma.com
ISBN: 978-84-9964-032-7
Depósito Legal: M-xxxxx-2010
Autoedición: Fco. Javier Ceballos
Filmación e impresión: Closas-Orcoyen, S.L.
Impreso en España
Primera impresión: Noviembre 2010
RESUMEN DEL CONTENIDO
PARTE 1. PROGRAMACIÓN BÁSICA ................................. 1
CAPÍTULO 1. FASES EN EL DESARROLLO DE UN PROGRAMA ................. 3
QUÉ ES UN PROGRAMA................................................................................. 3
LENGUAJES DE PROGRAMACIÓN............................................................... 4
Compiladores ................................................................................................. 6
Intérpretes....................................................................................................... 6
¿QUÉ ES JAVA? ................................................................................................ 7
HISTORIA DE JAVA ......................................................................................... 8
¿POR QUÉ APRENDER JAVA? ....................................................................... 9
REALIZACIÓN DE UN PROGRAMA EN JAVA ............................................ 9
Cómo crear un programa ................................................................................ 11
Interfaz de línea de órdenes............................................................................ 11
¿Qué hace este programa?......................................................................... 12
Guardar el programa escrito en el disco.................................................... 13
Compilar y ejecutar el programa ............................................................... 13
Biblioteca de clases ................................................................................... 15
Guardar el programa ejecutable en el disco .............................................. 15
Depurar un programa ................................................................................ 16
Entorno de desarrollo integrado ..................................................................... 16
EJERCICIOS RESUELTOS ............................................................................... 16
EJERCICIOS PROPUESTOS............................................................................. 18
X JAVA 2: CURSO DE PROGRAMACIÓN
Hace pocos años, quizás “Java” nos traía a la mente una taza de café. ¿Por
qué una taza de café? Seguramente por las muchas que se tomaron sus creadores.
De hecho la taza de café ha pasado a ser su logotipo. Hoy en día, cualquiera que
haya tenido contacto con una página Web tiene otro concepto. Sabe que Java es
un lenguaje de programación introducido por Sun Microsystems cuyas caracterís-
ticas lo sitúan entre los productos ideales para desarrollar programas para la Web.
Cuando Java se introdujo de forma importante, allá por 1995, fue cuando su
uso en el diseño de páginas Web revolucionó la naturaleza de éstas. ¿Recuerda?
Todo el mundo hablaba de applets, esos pequeños programas que se ejecutan en
el contexto de una página Web en cualquier ordenador, introduciendo animación y
efectos especiales. Y quizás, esta idea esté enmascarando que “Java” no sólo es
eso. Java está también disponible para desarrollar aplicaciones de uso general; es-
to es, como muchos lenguajes, permite trabajar con todo tipo de datos, crear es-
tructuras dinámicas, trabajar con ficheros, atacar a bases de datos, diseñar
interfaces gráficas de usuario, etc. Más aún, Java es un lenguaje simple y potente
de propio derecho. Java está orientado a objetos. Su sintaxis incita al programador
a generar programas modulares y fácilmente mantenibles.
Por lo tanto, Java le permite crear programas para su uso personal, para su
grupo de trabajo, para una empresa, aplicaciones distribuidas a través de Internet,
aplicaciones de bases de datos y otras muchas que usted puede imaginar.
XXIV JAVA 2: CURSO DE PROGRAMACIÓN
La primera edición de este libro fue escrita con Java 2 SDK versión 1.3, la
segunda con la 1.4, la tercera con la 5.0 y esta cuarta ha sido revisada con la 6.0.
Casi en su totalidad está dedicado al aprendizaje del lenguaje Java, de la progra-
mación orientada a objetos y al desarrollo de aplicaciones. Un capítulo final le in-
troducirá también en otros conceptos como swing, applets y servlets. Esta materia
puede agruparse en los siguientes apartados:
• Programación básica.
• Mecanismos de abstracción.
• Diseño y programación.
simplemente leer ordenadamente los capítulos del libro, resolviendo cada uno de
los ejemplos que en ellos se detallan.
Pero si el autor finalizara el libro con las dos partes anteriores, privaría al lec-
tor de saber que aún Java proporciona mucho más. Por eso hay una tercera parte,
capítulos 15 a 18, que se dedica a estudiar las estructuras dinámicas de datos, los
algoritmos de uso común, los hilos, y a introducirle en el diseño de interfaces
gráficas de usuario, en el trabajo con applets y en aplicaciones para Internet.
Por eso el autor considera importante que antes de continuar, eche una ojeada
a los apéndices. En ellos se expone cómo utilizar el entorno de desarrollo integra-
do para Java NetBeans, la documentación sobre el JDK, se indica cómo proceder
para trabajar sobre la plataforma Linux, las principales diferencias de este lengua-
je con respecto a C/C++ (Java se crea a partir de C/C++, por lo que este apéndice
aporta información valiosa para los lectores que tienen conocimientos sobre este
lenguaje), ayuda para la instalación del software necesario para implementar las
aplicaciones expuestas en el libro, etc.
Agradecimientos
He recibido ayuda de algunas personas durante la preparación de este libro, y por
ello estoy francamente agradecido; pero en especial, quiero expresar mi agrade-
cimiento a mi colega Oscar García Población por sus buenas recomendaciones y
aportaciones en la primera versión, base de las siguientes; y a mis otros colegas
porque cuando a ellos he recurrido, de una forma u otra me han ayudado. Tam-
bién, expresar mi agradecimiento a Sun Microsystems por poner a mi disposición
en particular y de todos los lectores en general, los productos que la creación y el
estudio de esta obra requiere.
________________________
_________________________________
__________________________________________
Programación básica
• Fases en el desarrollo de un programa
• Introducción a Java
• Introducción a la POO
• Elementos del lenguaje
• Estructura de un programa
• Clases de uso común
• Sentencias de control
• Matrices
• Más sobre métodos y colecciones
PARTE
________________________
_________________________________
__________________________________________
Mecanismos de abstracción
• Clases y paquetes
• Subclases e interfaces
• Clases genéricas
• Excepciones
• Flujos
PARTE
________________________
_________________________________
__________________________________________
Diseño y programación
• Estructuras dinámicas
• Algoritmos
• Hilos
• Interfaces gráficas y aplicaciones para Internet
PARTE
________________________
_________________________________
__________________________________________
Apéndices
• Instalación del software
• Entorno de desarrollo integrado para Java
• Plataformas Unix/Linux
• Ficheros JAR
• Java comparado con C/C++
• Índice
APÉNDICE A
© F.J.Ceballos/RA-MA
J2SE 6.0
Java 2 Platform Standard Edition Development Kit 6.0 (abreviadamente, J2SE
Development Kit 6.0 o JDK 6.0) proporciona la base para desarrollar y distribuir
aplicaciones que se podrán ejecutar en un servidor o en un ordenador personal con
distintos sistemas operativos. Actualiza las versiones anteriores e incluye nuevas
características (desarrollo más fácil, más rápido y a menor coste y ofrece mayor
funcionalidad para servicios Web, soporte de lenguajes dinámicos, diagnósticos,
aplicaciones de escritorio, bases de datos, etc.), pero conservando la compatibili-
dad con la versión anterior y la estabilidad.
Instalación
Para instalar el paquete de desarrollo J2SE 6.0, siga los pasos indicados a conti-
nuación:
NetBeans 6.x
NetBeans 6.x es un entorno de desarrollo integrado para desarrollar y distribuir
aplicaciones multicapa distribuidas. Incluye un entorno gráfico de desarrollo de
Java, una utilidad para desarrollar aplicaciones Web, otra para desarrollar aplica-
ciones para dispositivos móviles y un servidor de aplicaciones (Apache Tomcat
6.x) y una serie de herramientas que facilitan el desarrollo y la distribución de las
aplicaciones.
Instalación
Para instalar el entorno de desarrollo NetBeans, siga los pasos indicados a conti-
nuación:
3. Para obtener ayuda acerca de la biblioteca de J2SE 6.0, sólo si instaló dicha
ayuda, es preciso que dicho entorno tenga conocimiento de la ruta de acceso a
la misma. Para ello, ejecute la orden Plataformas Java del menú Herramien-
tas y asegúrese de que en la lista de rutas mostrada en Javadoc hay una que
hace referencia a la carpeta donde se encuentra la ayuda mencionada; si no es
así, haga clic en el botón Agregar archivo ZIP/carpeta para añadirla.
Instalación
Cuando instaló NetBeans, también se realizó la instalación de Apache Tomcat jus-
to a continuación.
ENTORNO DE DESARROLLO
INTEGRADO PARA JAVA
Evidentemente, para poder escribir programas se necesita un entorno de desarrollo
Java. Sun Microsystems, propietario de Java, proporciona uno de forma gratuita,
J2SE Development Kit 6.0 (JDK 6.0) para Microsoft Windows, en todas sus ver-
siones, y para Linux. En el apéndice A se explica cómo obtenerlo e instalarlo.
Opcionalmente, puede instalar un entorno de desarrollo integrado (EDI) que
le facilite las tareas de creación de la interfaz gráfica de usuario, edición del códi-
go, compilación, ejecución y depuración, como por ejemplo: NetBeans de Sun
Microsystems. Para instalarlo, véase el apéndice A.
oculto el panel de inicio. La que está en la parte superior izquierda muestra el pa-
nel de proyectos; éste lista el nombre del proyecto y el nombre de los ficheros que
componen el proyecto. Observe el fichero HolaMundo.java; contiene el código de
las acciones que tiene que llevar a cabo nuestra aplicación. También distinguimos
un elemento Bibliotecas que hace referencia a las bibliotecas que pueden ser nece-
sarias para compilar la aplicación. Finalmente, la ventana que hay debajo de la de
proyectos permite navegar por el código del proyecto. Puede visualizar otras ven-
tanas desde el menú Ventana; por ejemplo, la ventana Salida, que será utilizada
para mostrar los resultados de la compilación y de la ejecución.
Por ejemplo, para depurar una aplicación utilizando el depurador del entorno
de desarrollo NetBeans, debe establecer un punto de parada inicial. Para ello, haga
clic con el botón secundario del ratón sobre la sentencia a partir de la cual quiere
ejecutar el código de su aplicación paso a paso y ejecute la orden Ocultar/Mostrar
APÉNDICE B: ENTORNO DE DESARROLLO INTEGRADO PARA JAVA 787
línea de punto de interrupción del menú contextual que se visualiza, o haga clic
en la zona sombreada a su izquierda:
Después, ejecute la orden Depurar > Depurar Proyecto Principal, o bien pul-
se la tecla Ctrl+F5 para iniciar la depuración. Continúe la ejecución paso a paso
utilizando las órdenes del menú Depurar o los botones correspondientes de la ba-
rra de herramientas Depurar (para saber el significado de cada botón, ponga el
puntero del ratón sobre cada uno de ellos).
De forma resumida, las órdenes disponibles para depurar una aplicación son
las siguientes:
Para ver los valores intermedios que van tomando las variables ponga el cur-
sor sobre ellas, o bien utilice las ventanas Watches, Local Variables, etc., del fon-
do del EDI. Para añadir o quitar ventanas ejecute la orden Window > Debuggin.
VARIABLE CLASSPATH
La opción –classpath del compilador debe incluir las rutas de todas las carpetas
donde se deben buscar las clases necesarias para compilar una aplicación. Algunas
de estas clases podrían, incluso, encontrarse empaquetadas en un fichero .jar.
1. Diríjase al panel del proyecto, haga clic con el botón secundario del ratón so-
bre el nombre del mismo y seleccione la orden Propiedades del menú contex-
tual que se visualiza. Se muestra el diálogo siguiente:
APÉNDICE B: ENTORNO DE DESARROLLO INTEGRADO PARA JAVA 789
4. Una vez seleccionado el fichero que desea añadir, haga clic en el botón Agre-
gar al proyecto archiovs JAR y, finalmente, cierre el diálogo. El fichero JAR
seleccionado será añadido.
set classpath=%classpath%;.;c:\Java\ejemplos;c:\lib\milib.jar
5. Para finalizar, haga clic en el botón Terminar. El EDI crea la carpeta Ejem-
plos\Apen_B\AplicacionNetBeans en la que guardará el proyecto.
APÉNDICE B: ENTORNO DE DESARROLLO INTEGRADO PARA JAVA 791
Una vez creado un proyecto vacío, el paso siguiente consistirá en añadir una
nueva clase derivada de JFrame que nos sirva como contenedor de la interfaz
gráfica (en el capítulo 18 se explican los contenedores).
Para añadir una ventana marco (objeto JFrame) al proyecto, haga clic sobre
el nombre del mismo, utilizando el botón secundario del ratón, y seleccione del
menú contextual que se visualiza la orden Nuevo > Formulario JFrame.
Se visualizará una ventana en la que puede elegir el nombre para la nueva cla-
se de objetos que vamos a añadir. En nuestro caso, elegiremos como nombre, por
ejemplo, CAplicacion.
792 JAVA 2: CURSO DE PROGRAMACIÓN
Observe también que encima del formulario hay una barra de herramientas
con una serie de botones. Los dos primeros (Fuente y Diseño) le permitirán alter-
nar entre el panel de edición (el que muestra el código fuente de la clase CAplica-
cion) y el panel de diseño (el que se está mostrando).
A la izquierda del formulario, debajo del panel del proyecto, hay otra ventana
con dos paneles: el supervisor (Inspector) y el navegador (Navegador). El super-
visor permite ver y seleccionar los componentes que forman la interfaz gráfica y
APÉNDICE B: ENTORNO DE DESARROLLO INTEGRADO PARA JAVA 793
Ejecutar la aplicación
Si ahora compilamos y ejecutamos esta aplicación, para lo cual tendremos que
elegir la orden Ejecutar Proyecto Principal (F6) del menú Ejecutar, o bien hacer
clic en el botón correspondiente de la barra de herramientas del EDI, aparecerá
sobre la pantalla la ventana de la figura mostrada a continuación y podremos ac-
tuar sobre cualquiera de sus controles (minimizar, maximizar, mover, ajustar el
tamaño, etc.).
Ésta es la parte que NetBeans realiza por nosotros y para nosotros; pruébelo.
Para finalizar, haga clic en el botón para cerrar la ventana.
panel de propiedades del formulario; esto es, estando en el panel de diseño, selec-
cionamos el formulario, nos dirigimos al panel de propiedades y asignamos a la
propiedad title el valor “Aplicación”, y para establecer el tamaño del formulario,
nos dirigimos a la plantilla de diseño, hacemos doble clic sobre el borde cuando el
cursor del ratón toma la forma que permite redimensionar la misma y, en el diálo-
go que se visualiza, escribimos las dimensiones de la ventana; esta acción asigna a
la propiedad preferredSize del formulario los valores introducidos, con lo que
también podríamos haber procedido modificando directamente el valor de esta
propiedad.
Los componentes, tales como cajas de texto, botones, etiquetas, marcos, listas
o temporizadores, son objetos gráficos que permiten introducir o extraer datos. El
contenedor más los componentes dan lugar al formulario que hace de interfaz o
medio de comunicación con el usuario.
1. Haga clic con el botón secundario del ratón sobre el formulario y seleccione
Activar gestor de distribución en el menú contextual.
2. Y, a continuación, haga clic en el administrador de diseño deseado.
Redimensionamiento automático
Un control puede ser anclado arriba y a la izquierda, abajo y a la derecha, etc., se-
leccionándolo, haciendo clic sobre él con el botón secundario del ratón y eligien-
do Anclaje > Izquierda (o Anclaje > Parte inferior, etc.) del menú contextual. Así
798 JAVA 2: CURSO DE PROGRAMACIÓN
Para añadir un botón, puede repetir los pasos descritos en el apartado anterior, o
bien realizar los siguientes:
mensaje “¡¡¡Hola mundo!!!”. Para ello, tiene que existir una conexión entre el
botón y la etiqueta, lo que se traducirá en la ejecución de un método que asigne
esa cadena de caracteres a la etiqueta como respuesta al evento clic.
Para facilitar la realización del tipo de conexiones al que nos hemos referido,
NetBeans proporciona un asistente para conexiones, el cual permite añadir el
código que un componente tiene que ejecutar para responder al mensaje que otro
componente le ha enviado, y todo ello con muy poca intervención del desarrolla-
dor. Para utilizar este asistente, debe realizar los pasos indicados a continuación:
1. Diríjase a la ventana de diseño. Observe los botones que hay en su parte supe-
rior.
2. Cambie al modo de conexión haciendo clic en el botón Modo Conexión:
jBtSaludo.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
jBtSaludoActionPerformed(evt);
}
});
// ...
jEtSaludo.setText("¡¡¡Hola mundo!!!");
}
Compilar la aplicación
Una vez finalizada la aplicación, puede compilarla y ejecutarla. Para compilar la
aplicación, ejecute la orden Generar proyecto principal (F11) del menú Ejecutar.
Depurar la aplicación
Apoyándonos en la aplicación que acabamos de diseñar, enumeramos una serie de
pasos que le enseñarán cómo trabajar con el depurador:
1. Diríjase a la ventana de edición y haga clic con el botón izquierdo del ratón a
la izquierda de la llamada al método setForeground que hay en el método
jBtSaludoActionPerformed, sobre la columna que muestra el número de línea.
Ha establecido un punto de parada; esto es, cuando se ejecute la aplicación y
haga clic en el botón jBtSaludo según indica el punto siguiente, la ejecución
será detenida en ese punto. Para quitar el punto de parada, proceda de igual
forma.
También puede establecer un punto de parada haciendo clic con el botón se-
cundario del ratón sobre la línea de código y ejecutar la orden Ocul-
tar/Mostrar línea de interrupción (Ctrl+F8) del menú contextual que se
visualiza.
Paso a paso por sentencias significa ejecutar cada método del programa paso a
paso. Si no quiere que los métodos invocados por el método actualmente en
ejecución se ejecuten sentencia a sentencia, sino de una sola vez, utilice la te-
cla F8 en vez de F7.
4. Cuando la ejecución está detenida, puede inspeccionar los valores que van
tomando las variables del programa. El panel Elementos observados (menú
Ventana > Depuración), entre otros como Variables, del espacio de trabajo de
depuración será el encargado de presentarnos los valores deseados. Para aña-
dir una variable que aparece en el código fuente a esta lista, haga clic sobre la
variable utilizando el botón secundario del ratón, ejecute la orden Nuevo ele-
mento observado del menú contextual que se visualiza y pulse el botón Acep-
tar de la ventana que se muestra. Para eliminar una variable del panel de
inspección, haga clic sobre ella utilizando el botón secundario del ratón y eje-
cute la orden Eliminar del menú contextual que se visualiza.
Como alternativa a las órdenes mencionadas del menú Depurar en los puntos
anteriores, puede utilizar los botones correspondientes de la barra de herramientas
o las teclas de acceso directo.
806 JAVA 2: CURSO DE PROGRAMACIÓN
Para añadir uno de estos diálogos, por ejemplo un JDialog, puede optar por
alguna de las siguientes opciones:
1. Añada un objeto JDialog desde la paleta Ventanas Swing. Una vez añadido,
diríjase al supervisor de componentes, haga doble clic sobre el nuevo diálogo
añadido y complételo de acuerdo a sus necesidades.
PROYECTOS
Un proyecto permite agrupar los ficheros requeridos para producir una aplicación
o un applet. Esto presenta ventajas como poder compilar todo el proyecto sin te-
ner que especificar los ficheros que incluye, especificar la clase principal del pro-
yecto, ver bajo la pestaña Archivos del explorador todos los ficheros que
componen el proyecto, configurar el entorno de desarrollo integrado para cada
proyecto, etc. De esto se deduce que para un determinado proyecto podemos con-
figurar un escenario particular que será guardado cuando se finalice la sesión, lo
APÉNDICE B: ENTORNO DE DESARROLLO INTEGRADO PARA JAVA 807
que permitirá recuperarlo automáticamente la próxima vez que se cargue ese pro-
yecto.
Por ejemplo, según puede verse en la figura anterior, cuando haya escrito CA-
plicacion(). aparecerá una lista de los posibles métodos que pueden ser invocados;
seleccione el adecuado y pulse la tecla Entrar.
OBTENER AYUDA
La orden Búsqueda de índice de Javadoc del menú Ayuda (Mayúsculas+F1) per-
mite obtener ayuda acerca de múltiples temas. Pero si quiere obtener ayuda acerca
de la biblioteca de clases de Java (suponiendo que la ha instalado), es preciso que
dicho entorno tenga conocimiento de la ruta de acceso a la misma. Para ello, eje-
cute la orden Plataformas Java del menú Herramientas y asegúrese de que en la
lista de rutas mostrada en el panel Javadoc hay una que hace referencia a la carpe-
ta donde se encuentra la ayuda mencionada; si no es así, añádala.
APÉNDICE B: ENTORNO DE DESARROLLO INTEGRADO PARA JAVA 809
Después del proceso anterior, cuando pulse las teclas Mayúsculas+F1, se vi-
sualizará el panel que se muestra en la figura siguiente, donde podrá solicitar ayu-
da acerca de la clase que quiera. También puede dirigirse al editor de código,
colocar el cursor sobre el nombre de la clase, método, etc., de la cual quiere ayuda
y pulsar las teclas Mayúsculas+F1.
index.html
Así mismo, puede obtener ayuda acerca del desarrollo de aplicaciones y del
EDI pulsando la tecla F1, o bien ejecutando la orden Ayuda Contenidos del menú
Ayuda.
CREAR UN APPLET
Para ejecutar un applet en una aplicación Web, hay que crearlo separadamente
como un proyecto de tipo Class Library (biblioteca de clases) y empaquetar des-
pués el fichero JAR del applet en la aplicación Web.
Para crear un applet desde el entorno de desarrollo NetBeans siga los pasos
indicados a continuación:
1. Seleccione Archivo > Proyecto Nuevo > Java > Java Class Library.
3. Una vez creado el proyecto, haga clic sobre el nombre del mismo utilizando el
botón secundario del ratón y seleccione Nuevo > Otro… > Java > JApplet.
5. Si es necesario, añada una página html para desplegarlo. Para ello, haga clic
sobre el nombre del proyecto utilizando el botón secundario del ratón y selec-
cione Nuevo > Otro… > Otro > Archivo HTML.
APLICACIÓN JSP-SERVLET
En el capítulo 18 explicamos cómo desarrollar aplicaciones para Internet utilizan-
do servlets. NetBeans también permite este tipo de desarrollos.
812 JAVA 2: CURSO DE PROGRAMACIÓN
Inicie una nueva aplicación: Archivo > Proyecto Nuevo > Java Web > Web
Application.
Ya tiene creado el módulo Web. Escriba entre las etiquetas <html> y </html>
del fichero index.jsp el contenido del fichero tutorias.html. Así, este fichero pasa a
llamarse ahora index.jsp.
Así, para añadir el servlet Tutorias, haga clic con el botón secundario del
ratón sobre el nombre ApWeb del proyecto, y seleccione Nuevo > Servlet. En la
ventana que se visualiza, introduzca el nombre del fichero Tutorias.
814 JAVA 2: CURSO DE PROGRAMACIÓN
PLATAFORMAS UNIX/LINUX
Aunque este libro se ha escrito sobre una plataforma Windows, todos los ejerci-
cios han sido probados también en una plataforma Linux; concretamente en un
ordenador personal con el sistema operativo Linux. Quiere esto decir, que si su
caso es éste último, recurra a la dirección de Internet http://www.oracle.com de la
web de Oracle, para obtener el JDK y el EDI NetBeans que debe instalar. Por
ejemplo, puede descargar de la web mencionada el paquete NetBeans+J2SEDK
(JDK 6 Update 21 with NetBeans 6.9.1 o una versión más actualizada) y seguir el
libro normalmente.
Para arrancar NetBeans haga clic sobre la orden que se ha añadido al menú
correspondiente.
$ export JDK_HOME=/usr/local/jdk1.6.0_21
$ export PATH=$PATH:$JDK_HOME/bin
FICHEROS JAR
Los ficheros Java (JAR – Archive Java) son ficheros comprimidos con el formato
ZIP. Típicamente, un fichero JAR contendrá los ficheros de clases y de recursos
de applets o de aplicaciones. La utilización de este tipo de ficheros proporciona,
entre otras, las siguientes ventajas:
jar
Operación Sintaxis
META-INF\MANIFEST.MF
APÉNDICE D: FICHEROS JAR 821
Para que el fichero JAR pueda ser ejecutado el manifiesto debe contener una
línea que especifique el nombre de la clase principal:
Main-Class: nombre-clase-principal
Por lo tanto, tendrá que editar este fichero y añadir esta línea.
package Cap01.EstructuraAp;
set path=%path%;c:\Java\jdk1.6.0\bin
cd c:\java\ejemplos
c:\java\ejemplos>jar -cvf Cap01\EstructuraAp\EstructuraAp.jar
Cap01\EstructuraAp\*.class
Main-Class: Cap01.EstructuraAp.CAplicacion
4. Para ejecutar EstructuraAp.jar hay que cambiar a la carpeta donde está y eje-
cutar la orden indicada a continuación:
cd c:\java\ejemplos\Cap01\EstructuraAp
822 JAVA 2: CURSO DE PROGRAMACIÓN
TIPOS DE DATOS
Los tipos de datos de Java fueron expuestos en el capítulo 4. Los tipos de datos
primitivos de Java tienen tamaños y comportamiento idénticos en cualquier plata-
forma (Windows, Unix, Solaris, etc.). Esto no ocurre en C/C++, puesto que el ta-
maño de algunos de sus tipos depende de la plataforma.
En Java no hay tipos de datos sin signo como ocurría en C/C++, excepto el ti-
po char; éste tiene un tamaño de 16 bits y representa un carácter según el código
Unicode.
Java aporta el tipo boolean que no tiene C pero sí C++ estándar (aquí se de-
nomina bool). Las variables de este tipo pueden tomar un valor true o false; estos
valores no se consideran enteros. Esto marca claras diferencias a la hora de escri-
bir una condición cuando se utilizan sentencias de control. Por ejemplo, en C po-
díamos escribir:
int a = 10;
while (a--)
printf("%d ", a);
printf("\n");
Pero una condición en una sentencia Java requiere siempre un resultado boo-
lean. Por lo tanto tendremos que escribir:
824 JAVA 2: CURSO DE PROGRAMACIÓN
int a = 10;
while (a-- > 0)
System.out.print(a + " ");
System.out.println();
Las palabras clave struct, union y typedef del lenguaje C/C++ no se contem-
plan en Java, ya que los tipos compuestos en Java se obtienen a través de las cla-
ses. La palabra clave enum se incluyó en el JDK 5.0.
fDato = float(dDato);
fDato = (float)dDato;
OPERADORES
Java no contempla el operador coma (,) de C/C++, permite utilizar + para enlazar
cadenas e introduce el operador >>> (desplazamiento a la derecha sin signo).
En una operación lógica puede utilizarse tanto el operador && como &, pero
con un ligero matiz; si se utiliza && (no &) y el primer operando es false, el se-
gundo operando no es evaluado. Con respecto a || y | el razonamiento es similar
(vea el capítulo 4). Los operadores & y | también se pueden utilizar en operacio-
nes a nivel de bits.
new miClase().método;
crea primero el objeto, para poder después acceder al método. Fíjese que hay una
llamada a un método que no se puede efectuar sin new. La expresión anterior
sería equivalente a:
(new miClase()).método;
APÉNDICE E: JAVA COMPARADO CON C/C++ 825
MATRICES
En el capítulo 8 vimos que en Java las matrices son objetos de una clase genérica
“matriz”. Cada elemento de una matriz unidimensional es de un tipo primitivo, o
bien una referencia a un objeto; y cada elemento de una matriz multidimensional
es, a su vez, una referencia a otra matriz (a un objeto).
Los límites de las matrices son estrictamente obligatorios; intentar leer más
allá de estos límites supone un error de compilación o de ejecución. Todo ello,
marca una clara diferencia con respecto a C/C++.
CADENAS
A diferencia de C, en Java las cadenas de caracteres son objetos. Por lo tanto, los
métodos que las manipulan pueden tratarlas como una única entidad. Esto es, no
son matrices de caracteres finalizadas de forma predeterminada con el carácter
‘\0’ como ocurre en C/C++, aunque C++ estándar ya incorpora la clase string.
PUNTEROS
Java no tiene un tipo de puntero explícito. En lugar de punteros, utiliza referen-
cias. En realidad, los punteros y las referencias son lo mismo, excepto que con las
referencias no se puede hacer aritmética de direcciones.
ARGUMENTOS
En Java, a diferencia de C/C++, los objetos son todos pasados por referencia y los
argumentos de tipos primitivos son pasados siempre por valor.
El argumento args[0] del método main en Java es el valor del primer argu-
mento pasado en la línea de órdenes; en C/C++ es el nombre del programa.
ADMINISTRACIÓN DE MEMORIA
La administración de memoria en Java es automática. La memoria se asigna au-
tomáticamente cuando se crea un objeto y un recolector de basura se encarga de
liberarla cuando ya no exista ninguna referencia a ese objeto.
826 JAVA 2: CURSO DE PROGRAMACIÓN
OTROS
Para definir constantes, Java utiliza la palabra reservada final en lugar de const
que utiliza C/C++.