Introducción a la programación en Java

A través de esta serie de artículos podrás conocer el lenguaje de programación Java desarrollando una versión de la aplicación Pong, uno de los primeros videojuegos que existieron dado que fue creado en el año 1972. Aprovecharemos las ventajas que ofrece el desarrollo de videojuegos para iniciarte en la programación de aplicaciones, ya que permite conocer distintos aspectos básicos de cualquier lenguaje de programación.

Lenguaje Java

El lenguaje de programación Java está muy extendido ya que permite el desarrollo de una gran variedad de tipos de aplicaciones (multipropósito) e incluso para diversos sistemas (multiplataforma) como Windows, Mac, Linux, empotrado en sistemas integrados como electrodomésticos, y más actualmente, en dispositivos móviles como Android.

JavaFX

Aunque el núcleo de estas aplicaciones se desarrollan usando el lenguaje de programación Java, es necesario conocer otros complementos (librerías, frameworks, etc) del lenguaje Java que permitan desarrollar aplicaciones que usen características más específicas de cada plataforma. Por ejemplo, no es lo mismo desarrollar una aplicación para un frigorífico que para un móvil Android, aunque puede que el núcleo de la lógica de la aplicación sea el mismo (la manera de programar una suma de 2 + 2 será igual para ambos sistemas, pero la manera de presentar la información será diferente).

En nuestro caso, vamos a necesitar conocer alguna librería complementaria de Java que nos permita el desarrollo de aplicaciones con entornos gráficos para poder mostrar los elementos del juego en pantallas gráficas como la de los PC. Las librerías Java que permiten el desarrollo de aplicaciones con entornos gráficos son bastante diversas, y cada una con sus diferencias, pero conociendo alguna de ellas podrás aprender rápidamente otra si tuvieras la necesidad. Las librerías gráficas "oficiales" han ido históricamente desde AWT (1995), Swing (1997) y la más reciente JavaFX (2008). Además JavaFX tiene la gran ventaja de permitir el desarrollo de aplicaciones para dispositivos móviles, mientras que las anteriores librerías gráficas no lo permitían. Así que desarrollaremos nuestro juego Pong usando Java como lenguaje de programación para desarrollar la parte lógica y el complemento ofrecido por JavaFX para presentar la información en pantalla.

JRE y JDK

Para poder desarrollar una aplicación en Java necesitarás una herramienta que realice la compilación (conversión o traducción) del código fuente Java, en un lenguaje comprensible por el ordenador o dispositivo donde se desee ejecutar la aplicación. Hay que recordar que los sistemas informáticos sólo reconocen las aplicaciones en lenguaje máquina (binario). Además cada sistema tiene su propio lenguaje máquina, es decir, Windows, Linux, macOS, videoconsolas, Android ... cada uno tiene su propio lenguaje máquina y por eso no se puede ejecutar un juego compilado para una Xbox en una PlayStation.

Pero las aplicaciones Java pueden ser multiplataforma (si no se utilizan librerías o complementos exclusivos para determinados sistemas), por lo que se necesita un componente intermedio que haga de puente entre el código Java escrito por el programador y el código máquina del sistema. Esta herramienta es el JRE (Java Runtime Environment) o máquina virtual Java.

JRE 383c0

Por tanto si el usuario desea ejecutar una aplicación Java, deberá tener instalado previamente en el sistema la máquina virtual de Java (lo que generalmente se conoce como tener instalado Java). Para ello el usuario simplemente deberá entrar en la web de Java (www.java.com) y descargar la versión de Java correspondiente al sistema que tenga el usuario en su dispositivo. En tu caso como programador no necesitarás descargarlo, aunque seguramente en tu equipo ya se encuentre instalado Java porque alguna otra aplicación lo haya requerido anteriormente.

Screen Shot 2018 01 08 at 20.34.49 c1210

Pero tú como desarrollador de aplicaciones Java necesitarás otra herramienta que te permita complilar la aplicación que hayas escrito en código fuente Java. Esa herramienta es el JDK (Java Development Kit). Esa herramienta, como indica su nombre, es un conjunto o kit de utilidades para el desarrollo de aplicaciones Java. Una de esas utilidades es el compilador java (javac), que permite tomar una aplicación que hayas escrito en código fuente Java y traducirla en una aplicación Java compilada para que pueda ser ejecutada posteriormente por el usuario (recuerda que el código fuente Java no puede ser ejecutado).

Otra de las herramientas que se encuentran dentro de este kit es la máquina virtual de Java que se ha comentado anteriormente, por lo que cuando instales JDK también tendrás disponible JRE para ejecutar las aplicaciones Java.

Los archivos correspondientes a aplicaciones Java de escritorio (Windows y similares) compiladas suelen tener la extensión .jar, mientras que los archivos que contienen código fuente Java tienen la extensión .java.

JRE y JDK 8744a

Para instalar el JDK descárgalo desde la página de descargas Java de Oracle (http://www.oracle.com/technetwork/java/javase/downloads/index.html) donde podrás ver que hay distintas versiones (JDK 9, JDK 8, etc). En el momento de escribir este artículo Java 9 es muy reciente (Java SE 9.0.1), por lo que descarga el JDK correspondiente a la versión 8 para asegurar la compatibilidad con otras herramientas que se utilicen. Por ejemplo, Java SE 8u152 (que corresponde a la actualización 152 del JDK para Java 8), o la más moderna que encuentres en este momento.

Screen Shot 2018 01 08 at 21.31.48 be704

En la siguiente página podrás encontrar distintas versiones del JDK según el sistema donde se desee instalar. Acepta los términos de la licencia y utiliza el enlace para descargar la versión correspondiente a tu sistema.

Screen Shot 2018 01 08 at 21.34.01 27788

 

Entorno de desarrollo NetBeans

Para desarrollar una aplicación Java se podría usar algo tan sencillo como un editor de textos básico como el bloc de notas de Windows, y realizar luego la compilación desde el terminal realizando una llamada al compilador de Java por comandos.

Con el fin de que el desarrollo de aplicaciones sea más sencillo se suelen utilizar entornos de desarrollo que hacen más sencilla la escritura del código fuente y la compilación de la aplicación. Para Java puedes utilizar entornos de desarrollo como NetBeans, EclipseIntelliJ IDEA, etc. En este tutorial se va a utilizar NetBeans por ser un entorno fácil de configurar para el desarrollo Java y que es mantenido por Oracle, que es la empresa que también mantiene Java actualmente.

Accede a su página de descargas (https://netbeans.org/downloads/) donde podrás encontrar distintos perfiles de este entorno de desarrollo. Para este tutorial puedes descargar la correspondiente a Java SE que incorpora los componentes que vamos a utilizar. Recomiendo que utilices la versión en Inglés ya que es el idioma más extendido entre los programadores y así te acostumbras a los términos utilizados.

Screen Shot 2018 01 08 at 21.52.55 82229

Realiza la instalación del paquete descargado y al abrir la aplicación aparecerá una ventana de inicio con algunas demos y tutoriales que puedes cerrar, e incluso indicar que no se abra más al iniciar NetBeans si desmarcas la opción Show On Startup

Screen Shot 2018 01 08 at 22.00.34 9fcaf

Creación del proyecto

Para crear el nuevo proyecto que vas a desarrollar, utiliza el menú File > New Project o el icono correspondiente de la barra de herramientas. Selecciona la categoría JavaFX, ya que vamos a utilizar esa sistema gráfico en esta aplicación, y dentro de ella la opción JavaFX Application:

Screen Shot 2018 01 08 at 22.05.53 d6bdb

En la siguiente ventana indica los siguientes valores:

  • Project Name: Indica el nombre para el proyecto. Para este caso puedes indicar algo como PongFX. Se acostumbra a empezar en mayúsculas.
  • Project Location: Selecciona o crea la carpeta donde desees que se genere el contenido del proyecto. Procura utilizar una carpeta dedicada a tus proyectos de aprendizaje.
  • Create Application Class: Deja seleccionada esta opción para que autimáticamente se genere un archivo con la estructura básica de una aplicación JavaFX. Este nombre está compuesto por varios elementos separados por puntos. La última parte será el nombre del archivo .java (en este ejemplo de indica Main) y los anteriores determinan lo que se denomina el paquete donde se va a crear el archivo. Los archivos de código fuente Java se organizan en paquetes, que vienen a ser como carpetas. Lo habitual es indicar ahí el nombre del dominio (al revés) de la empresa que desarrolla la aplicación, y el nombre del proyecto. Los nombres de los paquetes se acostumbra a empezar en minúsculas, mientras que el nombre del archivo .java se empieza en mayúsculas. Observa cómo se ha indicado en la siguiente ventana y adáptalo a tí: 

Screen Shot 2018 01 08 at 22.09.28 4fb85

Recuerda que se acostumbra a que los nombres de los archivos Java comiencen y se separen las palabras en mayúsculas. Cada archivo contendrá una clase Java con el mismo nombre exactamente.

Al finalizar se creará el contenido inicial del proyecto, con la estructura del proyecto en la parte izquierda y el contenido (código fuente) del archivo Main.java en la parte derecha.

Screen Shot 2018 01 08 at 22.20.47 dafd8

Puedes ver que el archivo Main.java se crea automáticamente un código fuente incluido. No te preocupes de momento en exceso en comprender su contenido, porque poco a poco irás conociendo algo de él.

De momento puedes probar ya a ver cuál es el resultado que produce la aplicación ahora mismo si se ejecuta. Para ejecutarla desde el propio entorno de desarrollo NetBeans, utiliza la opción del menú Run > Run Project o el icono o la tecla de acceso rápido correspondiente.

Screen Shot 2018 01 08 at 22.28.46 3c056

Puede ver que se muestra una ventana con un botón. Si pulsas el botón aparecerá en la ventana Output de NetBeans el mensaje Hello World!. Esa consola es importante que la tengas en cuenta porque en ella aparecerán mensajes ofrecidos por la aplicación que se desarrolle, y también mensajes del compilador que pueden informar de errores que hayas cometido al escribir el código fuente. Recuerda que el código fuente debe cumplir una serie de reglas impuestas por el lenguaje de programación, y en caso de no cumplirlas no puede ser compilada la aplicación hasta que se resuelva el error.

Screen Shot 2018 01 08 at 22.32.27 d6575

Por ejemplo, prueba a quitar el carácter punto y coma que aparece al final de la sentencia System.out.println("Hello World!"). Observa que en el editor aparecerá marcada en rojo esa línea indicando el error. Si colocas el ratón sobre el icono rojo de error aparece un mensaje emergente con el error detectado. Además si intentas ejecutar la aplicación, aparecerá el mensaje de error del compilador en la ventana Output, indicando el tipo de error encontrado, en qué archivo y en qué línea (Main.java: 25). Esos mensajes de Output son enlaces, por lo que si haces clic en él te llevará a la línea donde se ha detectado el error.

Screen Shot 2018 01 08 at 22.35.19 67d76

Todas las sentencias de código Java deben terminar en punto y coma.

Creación del archivo ejecutable

Si deseas que esta aplicación pueda ser ejecutada por otra persona sin que disponga del código fuente (que será lo habitual cuando distribuyas una aplicación que desarrolles), deberás generar el archivo ejecutable que tiene en estos casos la extensión .jar

Vuelve a poner el punto y coma que habías suprimido en el punto anterior, y cambia el mensaje que se muestra en el botón por algo personalizado como tu nombre y el mensaje en español. El texto que se muestra en el botón es el que aparece entre comillas detrás de la sentencia btn.setText de la línea 20.

Screen Shot 2018 01 08 at 22.53.22 14b22

El carácter \n permite introducir un salto de línea dentro de un texto.

Realiza una primera prueba de la aplicación desde NetBeans para comprobar que su funcionamiento es correcto.

Screen Shot 2018 01 08 at 22.56.07 84d37

Ahora crea el archivo ejecutable desde la opción de menú Run > Clean and Build Project o la tecla o botón correspondiente. Comprueba en la ventana Output que todo ha ido correctamente, si aparece el mensaje BUILD SUCCESSFUL.

Desde el explorador de archivos de tu equipo accede a la carpeta donde se encuentra tu proyecto y dentro de ella se ha debido crear una carpeta llamada dist con los archivos que puedes enviar a la persona que desees que pruebe tu aplicación.

Screen Shot 2018 01 08 at 23.00.15 749e0

Prueba a enviar el archivo PongFX.jar a otra persona e indícale que lo abra para comprobar que funciona correctamente. La carpeta dist contiene otros archivos para la versión de la aplicación ejecutable desde un navegador web, pero los navegadores actuales suelen bloquear por defecto la ejecución de este tipo de aplicación por seguridad.

Recuerda que para que un usuario pueda ejecutar una aplicación Java debe tener instalado Java (lo que llamamos los programadores JRE o máquina virtual Java) en su equipo.

Observa que al ejecutar la aplicación desde fuera de NetBeans, no aparece el mensaje al pulsar el botón, ya que el código fuente indicaba que se mostrara el mensaje en la salida estándar del sistema (System.out.println), y no en la ventana de la aplicación.