Familiarización con el entorno de programación Java


El objetivo de este laboratorio es experimentar con el entorno de programación Java. Para ello se creará un programa muy simple en Java HolaMundo utilizando el entorno de Consola de comandos (comandos: compilador javac, ejecución java) y el entorno NetBeans. 

Duración estimada: 60 minutos

Requisitos previos

Para esta práctica no se requiere experiencia en programación o una experiencia mínima.

Software Necesario

Antes de comenzar, es necesario instalar el siguiente software en su computadora. 

Lab Exercises


Ejercicio 0: Instalar Java SE y el IDE NetBeans


En este ejercicio, se instalará Java SE y NetBeans en un equipo. Si usted ya ha hecho la instalación, puede ir al Ejercicio 1 . El procedimiento de instalación se basa en la plataforma Windows. La instalación sobre otras plataformas como Linux, Mac y Solaris se hacen de manera similar.
  1. Descargar e instalar JDK en el equipo
  2. Descargar e instalar el IDE NetBeans en el equipo

(0.1) Descargar e instalar el JDK en su equipo


Si tiene instalado algún JDK 6 Update X en su ordenador , puede saltarse este paso.

1.  Descargar el JDK

Figura-0.10: Seleccionar JDK 6 Update x



Figura-0.11: Seleccionar el JDK para almacenarlo en disco.

2. Instalación del JDK

Figura-0.12: Fases de la instalación y formulario de registro
Figura-0.13: Selección del directorio de instalación
Figura-0.14: Especificación del directorio de instalación del JJRE
Figura-0.15: Notificación de la instalación
Figura-0.16: Formulario de registro después de la instalación



(0.2) Descarga e instalación de NetBeans IDE


1. Desde un navegador ir a la página de descarga del IDE NetBeans. 
2. Seleccionar el sistema operativo desde el menú desplegable. Se puede indicar el correo electrónico para el envio de noticias.
3. Descargar e instalar cualquier versión que contenga Java SE.


Figura-1.11: Descarga de NetBeans IDE



Ejercicio 1: Escribir, compilar, y ejecutar la aplicación Java HolaMundo usando la Consola de comandos

El objetivo de este ejercicio es presentar y experimentar el ciclo de desarrollo completo - escribir , compilar y ejecutar un programa sencillo en Java - usando la Consola de comandos MSDOS. Si tiene alguna experiencia de programación utilizando lenguajes de programación como C o C++, no se diferencia en mucho. (La diferencia es que en Java el compilador, llamado javac, compila el código fuente de Java en lo que se llama bytecode que se puede ejecutar en cualquier plataforma compatible con Java, lo que proporciona la portabilidad de los programas de Java. El bytecode es el fichero de clase Java, que tiene una extensión de fichero *. class. )


(1.1) Construir y ejecutar el programa Java HolaMundo usando el compilador "javac"y el comando "java"

1. Crear un directorio donde se vaya a escribir los programas Java

C:\>mkdir c:\ej_java
C:\>cd \ej_java

2. Escribir HolaMundo.java usando un editor de texto conocido (p.e. el bloc de notas o notepad de Windows o jedit) como se muestra en Code-1.10 abajo. Se recomienda escribir línea a línea para experimentar algunos errores de compilación.

C:\ej_java>notepad HolaMundo.java

/*
  * Ejemplo HolaMundo
  * Imprime el mensaje "Hola, Mundo!"
  */
   
public class HolaMundo {
    public static void main( String[] args ){
       
        System.out.println("Hola, Mundo!");
       
    }

}
Code-1.10: HolaMundo.java

3. Compilar HolaMundo.java usando el compilador javac.  El compilador javac viene en el J2SE SDK instalado antes. Se encuentra en el directorio %JAVA_HOME%\bin (en Windows). El resultado de la compilación será la creación del fichero HolaMundo.class.

C:\ej_java>javac HolaMundo.java


Solución de problemas #1: Si se produce el siguiente error, significa que no está añadido al path de Windows el directorio %JAVA_HOME%\bin. Se puede intentar con el comando C:\Archivos de programa\Java\jdk1.6.0_21\bin\javac HolaMundo.java si se quiere continuar sin configurar el path.

C:\ej_java>javac HolaMundo.java
"javac" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

Solución #a: Añadir C:\Archivos de programa\Java\jdk1.6.0_21\bin (para la plataforma Windows) a la variable de entorno path.

Solución #b: Se puede especificar el path completo como sigue:

C:\ej_java>C:\"Archivos de programa"\Java\jdk1.6.0_21\bin\javac HolaMundo.java


4. Asegurarse que el fichero HolaMundo.class se ha creado.  El fichero HolaMundo.class contiene la representación bytecode de la clase HolaMundo.

C:\ej_java>dir HolaMundo.class
 
El volumen de la unidad C es ACER
  El número de serie del volumen es: 58CE-B0DC

  Directorio de C:\ej_java

06/08/2010  12:16                 424 HolaMundo.class
               1 archivos               424 bytes
               0 dir(s)  21,578,907,648 bytes libres

5 . Ejecutar el programa HolaMundo usando el comando java. El comando java inicia la Java Virtual Machine y ejecuta el programa HolaMundo en este ejemplo.  Un programa Java puede estar compuesto de múltiples clases Java y un conjunto de librerías de clases.  En este ejemplo, el programa HolaMundo sólo contiene una clase simple llamada HolaMundo.class. Se puede referir al comando java como el intérprete Java .

C:\ej_java>java HolaMundo
Hola, Mundo!


Solución de problemas #2: Si experimenta el siguiente error de condición, es muy probable que se haya compilado con una versión anterior del JDK y ejecutarlo con una versión posterior.

C:\ej_java>java HolaMundo
Exception in thread "main" java.lang.UnsupportedClassVersionError: HolaMundo (Unsupported major.minor version 49.0)

Solución: Añadir C:\"Archivos de programa"\Java\jdk1.6.0_21\bin delante de la lista de la variable de entorno path.

Solución de problemas #3: Si se obtiene el siguiente error de condición, es probable que se tenga la variable de entorno CLASSPATH asignada sin el directorio en curso.

C:\ej_java>java HolaMundo
Exception in thread "main" java.lang.NoClassDefFoundError: HolaMundo

Solución: Probar el comando "java -classpath . HolaMundo" (hay un punto. después de -classpath)como sigue. Después se estudiará la opción classpath.

C:\ej_java>java -classpath . HolaMundo
Hola, Mundo!


7. Modificar HolaMundo.java como se muestra en Code-1.11.  El fragmento de código que requiere ser cambiado se muestra en color azul.

/*
  * Ejemplo HolaMundo
  * Imprime el mensaje "Este es mi primer programa Java! y 3+2 es: " ??
  */

public class HolaMundo {   
    public static void main( String[] args ){
       
        System.out.println("Este es mi primer programa Java! y 3+2 es: "+(3+2));
       
    }
}

Code-1.11: Modificación de HolaMundo.java

8. Compilar y ejecutar el programa. Observar el nuevo mensaje mostrado.

C:\ej_java>javac HolaMundo.java

C:\ej_java>java HolaMundo
Este es mi primer programa Java! y 3+2 es: 5

                                                                                                                        Volver al inicio del ejercicio

(1.2) Experimentar con el compilador "javac"

Es este paso, se mostrará cómo usar varias opciones en la línea de comandos del compilador javac.

1. Mostrar la información de uso del compilador javac usando la opción -help

C:\ej_java>javac -help

Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are u
sed
-classpath <path> Specify where to find user class files and annotati
on processors
-cp <path> Specify where to find user class files and annotati
on processors
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-endorseddirs <dirs> Override location of endorsed standards path
-proc:{none,only} Control whether annotation processing and/or compil
ation is done.
-processor <class1>[,<class2>,<class3>...]Names of the annotation processors t
o run; bypasses default discovery process
-processorpath <path> Specify where to find annotation processors
-d <directory> Specify where to place generated class files
-s <directory> Specify where to place generated source files
-implicit:{none,class} Specify whether or not to generate class files for
implicitly referenced files
-encoding <encoding> Specify character encoding used by source files
-source <release> Provide source compatibility with specified release

-target <release> Generate class files for specific VM version
-version Version information
-help Print a synopsis of standard options
-Akey[=value] Options to pass to annotation processors
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system

2. Ejecutar el compilador javac con la opción -verbose

C:\ej_java>javac -verbose HolaMundo.java

[search path for source files: [.]]
[search path for class files: [C:\Archivos de programa\Java\jdk1.6.0\jre\lib\res
ources.jar, C:\Archivos de programa\Java\jdk1.6.0\jre\lib\rt.jar, C:\Archivos de
programa\Java\jdk1.6.0\jre\lib\sunrsasign.jar, C:\Archivos de programa\Java\jdk
1.6.0\jre\lib\jsse.jar, C:\Archivos de programa\Java\jdk1.6.0\jre\lib\jce.jar, C
:\Archivos de programa\Java\jdk1.6.0\jre\lib\charsets.jar, C:\Archivos de progra
ma\Java\jdk1.6.0\jre\classes, C:\Archivos de programa\Java\jdk1.6.0\jre\lib\ext\
dnsns.jar, C:\Archivos de programa\Java\jdk1.6.0\jre\lib\ext\j3dcore.jar, C:\Arc
hivos de programa\Java\jdk1.6.0\jre\lib\ext\j3dutils.jar, C:\Archivos de program
a\Java\jdk1.6.0\jre\lib\ext\jai_codec.jar, C:\Archivos de programa\Java\jdk1.6.0
\jre\lib\ext\jai_core.jar, C:\Archivos de programa\Java\jdk1.6.0\jre\lib\ext\loc
aledata.jar, C:\Archivos de programa\Java\jdk1.6.0\jre\lib\ext\mlibwrapper_jai.j
ar, C:\Archivos de programa\Java\jdk1.6.0\jre\lib\ext\sunjce_provider.jar, C:\Ar
chivos de programa\Java\jdk1.6.0\jre\lib\ext\sunmscapi.jar, C:\Archivos de progr
ama\Java\jdk1.6.0\jre\lib\ext\sunpkcs11.jar, C:\Archivos de programa\Java\jdk1.6
.0\jre\lib\ext\vecmath.jar, ., C:\Pedro\Pedro\Java\NeatVision, C:\Archivos de pr
ograma\Java\jre6\lib\ext\QTJava.zip]]
[parsing started HolaMundo.java]
[parsing completed 62ms]
[loading C:\Archivos de programa\Java\jdk1.6.0\lib\ct.sym(META-INF/sym/rt.jar/ja
va/lang/Object.class)]
[loading C:\Archivos de programa\Java\jdk1.6.0\lib\ct.sym(META-INF/sym/rt.jar/ja
va/lang/String.class)]
[checking HolaMundo]
[loading C:\Archivos de programa\Java\jdk1.6.0\lib\ct.sym(META-INF/sym/rt.jar/ja
va/lang/System.class)]
[loading C:\Archivos de programa\Java\jdk1.6.0\lib\ct.sym(META-INF/sym/rt.jar/ja
va/io/PrintStream.class)]
[loading C:\Archivos de programa\Java\jdk1.6.0\lib\ct.sym(META-INF/sym/rt.jar/ja
va/io/FilterOutputStream.class)]
[loading C:\Archivos de programa\Java\jdk1.6.0\lib\ct.sym(META-INF/sym/rt.jar/ja
va/io/OutputStream.class)]
[wrote HolaMundo.class]
[total 3703ms]

3. Experimentar errores de compilación.
/*
  * Ejemplo HolaMundo
  * Imprime el mensaje "Este es mi primer programa Java! y 3+2 es: " ??
  */   
public class HolaMundo { 
    public statict void main( String[] args ){
       
        System.out.println("Este es mi primer programa Java! y 3+2 es: "+(3+2));
       
    }
}
Code-1.20: Código que contiene un error sintáctico

C:\ej_java>javac HolaMundo.java
HolaMundo.java:6: <identifier> expected
    public statict void main( String[] args ){
                       ^

1 error

                                                                                                                       Volver al inicio del ejercicio


(1.3) Experimentar con el comando "java"

Es este paso, se mostrará cómo usar las opciones en la línea de comandos del comando java.  Se puede considerar el comando java como la Java Virtual machine.

1. Mostrar la información de uso del comando java cocon la opción -help o -?.

C:\ej_java>java -help
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -client       to select the "client" VM
    -server       to select the "server" VM
    -hotspot      is a synonym for the "client" VM  [deprecated]
                  The default VM is client.

    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A ; separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -jre-no-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                    see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image

2. Ejecutar el comando java con la opción -verbose

C:\ej_java>java -verbose HolaMundo
[Loaded java.lang.Object from shared objects file]
[Loaded java.io.Serializable from shared objects file]
[Loaded java.lang.Comparable from shared objects file]
[Loaded java.lang.CharSequence from shared objects file]
....
....
[Loaded java.security.ProtectionDomain$2 from C:\Archivos de programa\Java\jre6\lib\rt.jar]
[Loaded java.security.ProtectionDomain$Key from C:\Archivos de programa\Java\jre6\lib\rt.jar]
[Loaded java.security.Principal from shared objects file]
[Loaded HolaMundo from file:/F:/ej_java/]
Este es mi primer programa Java! y 3+2 es: 5
[Loaded java.lang.Shutdown from shared objects file]
[Loaded java.lang.Shutdown$Lock from shared objects file]

3. Ejecutar el comando java con la opción -version. Observar que se muestra el número de versión. 

C:\ej_java>java -version
ava version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)


Resumen

En este ejercicio se ha construído y ejecutado un programa sencillo en Java HolaMundo utilizando el compilador javac compiler y el comando java.  Se ha aprendido algunas opciones del compilador javac y del comando java.
   
                                                                                                                                   Volver al inicio


Ejercicio 2: Escribir, compilar, y ejecutar el programa Java HolaMundo utilizando el IDE NetBeans

En este ejercicio se va a construir la misma aplicación que el Ejercicio 1 anterior utilizando el IDE NetBeans.

  1. Ejecutar NetBeans
  2. Crear un proyecto en NetBeans
  3. Construir y ejecutar el programa

(2.1) Ejecutar NetBeans

1. Hacer doble-click en el icono de NetBeans IDE en el escritorio (Figura-2.10) para iniciar el IDE NetBeans.  Aparece la página de inicio de NetBeans (Figura-2.10.1)


Figura-2.10: Icono de NetBeans IDE en el escritorio


Figura-2.10.1: NetBeans IDE

                                                                                                                   Volver al inicio del ejercicio

(2.2) Crear un proyecto NetBeans

1. Seleccionar File del menú principal y seleccionar la opción New Project.  (Figura-2.20) 


Figura-2.20: Creación de un nuevo proyecto

2. Observar que aparece el diálogo de New Project.
3. Seleccionar Java en la sección Categories y Java Application en la sección Projects. (Figura-2.21)
4. Hacer click en el botón Next.


Figura-2.21: Creación de un proyecto Java Application

5. En la sección Name and Location, en el campo Project Name, escribir HolaApp.
6. En el campo Create Main Class, escribir HolaMundo.  (Figura-2.22)
7. Dejar la opción Set as Main Project seleccionado.
8. Hacer click en el botón Finish


Figura-2.22: Dar un nombre al proyecto

8. Observar que el nodo HolaApp se ha creado en la pestaña Projects del entorno NetBeans IDE.
9. Modificar HolaMundo.java en el editor como se muestra en la Figura-2.23.


Figura-2.23: Modificación de HolaMundo.java

10. Introducir un error sintáctico en el programa y observar que NetBeans IDE inmediatamente indica el problema como se muestra en la Figura-2.24.  Detecta que la palabra reservada void está mal escrita como voidx.


Figura-2.24: NetBeans IDE detecta un error sintáctico en modo edición

11. Eliminar el error sintáctico.

                                                                                                                   Volver al inicio del ejercicio

(2.3) Construir y ejecutar el programa

1. Hacer click con el botón derecho sobre HolaApp y seleccionar Run (Figura-2.30). Con ello se construye (Build) y se ejecuta el proyecto en un solo paso.


Figura-2.30: Construir y ejecutra el proyecto

2. Observar que HolaMundo.java se compila y ejecuta   (Figura-2.31)


Figura-2.31: Resultado de la ejecución de HolaApp

3. Observar en la pestaña Files del proyecto la organización de ficheros en el directorio del proyecto (Figura-2.32)

 
Figura-2.32: Organización de ficheros dentro del directorio del proyecto HolaApp

                                                                                                                   Volver al inicio del ejercicio

Resumen

En este ejercicio se ha construido y ejecutado la aplicación Java HolaMundo utilizando el IDE NetBeans.

                                                                                                                   Volver al inicio


Tarea


  1. La tarea consiste en repetir los ejercicios expuestos y grabar la sesión para el caso de uso de la Consola de comandos de Windows en un fichero texto. En el caso de Netbeans se pide comprimir el directorio asociado al proyecto en un fichero.
  2. Subir ambos ficheros a la plataforma Moodle en la tarea correspondiente.