Hola Mundo en Java
SOLUCIONARIO
Hola Mundo en Java
2024-06-21
Por
Occam's Razor

En esta entrega vamos a presentar el lenguaje Java y como empezar a trabajar con él.
/*
 * Este es un comentario utilizando
 * varias lineas
 */
class HelloWorldApp {
    public static void main (String[] args) {
    System.out.println ("Hello World!"); // Comment
    }
}

Java es otro lenguaje popular que podemos considerar compilado, si bien, no genera código nativo. En su lugar genera los denominados bytecodes, algo así como un código máquina para una máquina inventada, la auto-denominada Máquina Virtual Java, más conocida por sus siglas en inglés JVM.

SABIAS QUE…

El concepto de bytecode no es exclusivo de Java. Perl, Python e incluso TCL pueden ser compilados en bytescode, si bien Java fue el primer lenguaje/entorno en hacer esto explícito, especialmente debido a que separaba claramente el proceso de generación del bytecode y su ejecución por parte de la máquina virtual. Smalltalk ya soportaba este concepto, e incluso el BASIC de mi viejo MSX, tokenizaba los programas para almacenarnos en memoria de una forma más eficiente… algo que se puede ver como una versión primitiva y rudimentaria de lo que hoy en día conocemos como bytecodes.

 

Los ficheros con los programas Java (ćodigo fuente) utilizan la extensión .java. El bytecode generado por el compilador utiliza la extension .class. Proyectos más complejos que involucran muchas clases, agrupan varios ficheros .class en un fichero .jar que no es más que un fichero ZIP con una cierta estructura.

Java puede ser visto como una versión simplificada de C++ con una orientación a objetos más formal y también mucho más sencilla. La sintaxis es prácticamente igual. Usaremos ; como terminador de instrucciones que podremos agrupar utilizando las llaves {}. Los comentarios son idénticos a los utilizados por C++.

Como decíamos, Java proporciona una orientación a objetos mucho más simple (en el sentido que permite hacer menos cosas), pero más formal. Esa es la razón por la cual, incluso para nuestro sencillo programa Hola Mundo, debemos definir una clase y métodos para poder imprimir nuestro mensaje.

El mensaje se imprime con System.out.println que es una invocación a un método de un objeto estático en la clase System. Toma ya… Pero bueno, es más o menos lo mismo que el cout de C++, pero utilizando un método en lugar de un operador. En este libro no vamos a tocar el tema de la programación orientada o objetos más allá de los estrictamente necesario, así que, por el momento, quedaros con que para escribir un programa en Java tenéis que poner todo eso que aparece en el código de ejemplo.

SABÍAS QUE..

Hasta el momento, los lenguajes que hemos visto, o bien añaden o no añaden el retorno de carro. Veremos en el siguiente capítulo como controlar esto, normalmente llamando a una función diferente. Respecto de este particular tema, suele haber dos formas de nombrar a estas funciones. O bien, se utiliza una función de más bajo nivel que permite controlar si queremos usar el retorno de carro, o se usa una familia de funciones que añaden el prefijo ln a la función de imprimir. ln viene de line e indica que queremos utilizar el retorno de carro. Veremos esto en varios lenguajes. Para Java, print imprime la cadena sin más y println imprime la cadena con un retorno de carro.

 

Un cosa más. Java obliga a que el nombre del fichero que contiene las fuentes y la clase de alto nivel declarada en él coincidan…. Que lo sepáis.

Para compilar y ejecutar nuestro programa Java, ejecutaremos:

$ javac HelloWorld.java
$ java ./HelloWorld

Al ejecutar el programa con java, no es necesario indicar la extensión .class. Si queremos generar un fichero .jar y luego ejecutarlo:

$ javac HelloWorldApp.java
$ jar cvf HelloJava.jar HelloWorldApp.class
$ java -cp HelloJava.jar HelloWorldApp

Donde HelloWorldApp es el nombre de nuestra clase principal. Podemos evitar esto, añadiendo un manifiesto a nuestro fichero .jar.

$ javac HelloWorldApp.java
$ mkdir META-INF
$ echo "Main-Class: HelloWorldApp" >> manifest.txt
$ jar -cvmf manifest.txt hello.jar HelloWorldApp.class
$ java -jar hello.jar
 

binfmt_misc

Al igual que sucede con los fichero pyc de Pyhton, los ficheros .jar(una vez que les hemos dado permiso de ejecución) se pueden ejecutar directamente desde la línea de comandos si binfmt_misc está configurado en nuestro sistema.

 

Java fue originariamente desarrollado por James Gosling en Sun Microsystems (adquirida por Oracle en la actualidad) y liberado en 1995. Gossling junto con Mike Shreridan y Patrick Naugthon iniciaron el diseño del lenguaje en 1991 si bien, como hemos dicho, hasta 1995 no se libero el proyecto (una versión alpha en realidad). El proyecto se llamó inicialmente Oak, por el roble que se veía desde la oficina de Gossling. Luego se re-nombró como Green, para finalmente llamarse Java por el café de Java (Indonesia).

Si bien, java no fué, ni mucho menos, el primer entorno en utilizar bytecodes y ofrecer una solución con un alto grado de portabilidad, esa fue la principal novedad que se resalto cuando se lanzó. Diseñado inicialmente para el desarrollo de aplicaciones interactivas para televisión digital, se popularizo con un uso similar, pero en páginas web con los denominados Applets Java.

Su uso en la web decayó con el advenimiento de Flash (el cual también ha desaparecido, afortunadamente, gracias a HTML5 y tecnologías relacionadas), Java sigue siendo el lenguaje de programación original de los dispositivos Android, tanto como lenguaje como, como máquina virtual utilizada por otros lenguajes. Java también se sigue utilizando en el entorno empresarial.

SABIAS QUE

La máquina virtual Java utilizada originariamente por los dispositivos Android se conoce como Dalvik Virtual Machine, y no utiliza ficheros .class sino que usa un formato propietario con extensión .dex (Dalvik Executable). La máquina virtual Dalvik fue sustituida años mas tarde por ART (Android Runtime) que añade nuevas funcionalidades y es compatible con los fichero .dex originales. ART fue introducido en Android 4.4

 

En distribuciones basadas en Debian podéis instalar el SDK de Java usando el siguiente comando:

apt install openjdk-17-jdk

Quizás cuando estés leyendo esto tengas que cambiar el 17 por otro número más alto.

Resumen

  • Lenguaje compilado a bytecodes
  • Extension: java
  • Terminador de líneas : ;
  • Agrupa instrucciones con : {...}
  • Comentarios multilinea : Usando /* .. */
  • Comentarios misma línea: //
  • Delimitador de cadenas: "cadena¨
  • Puedes imprimir textos con System.out.println (Añade retorno de carro)
  • No soporta cadenas múltilínea nativamente
  • No soporta HERE-DOCS
  • Punto de Entrada: Método main

SOBRE Occam's Razor
Somos una revista libre que intenta explicar de forma sencilla conceptos tecnológicos y científicos de los que no podemos escapar. Al final, todo es más fácil de lo que parece!

 
Tu publicidad aquí :)