Tutorial Raspberry Pi - Cómo compilar y ejecutar código Java desde la terminal

¡Hola! Últimamente hemos recibido unas cuantas peticiones de un tutorial que explique cómo ejecutar código Java en nuestra Raspberry Pi, ya sea un JAR o una única clase. Bueno, pues aquí lo tenéis. Para realizar este tutorial, tendremos que instalar Java en la Raspberry Pi. En realidad, este tutorial vale tanto para Raspberry Pi como para cualquier ordenador con Linux, en este caso.

Si conocéis nuestros tutoriales de Java, veréis que he estado usando NetBeans para mis desarrollos. En este tutorial veremos esto de dos formas. La primera será usando NetBeans, es decir, programaré el código Java en mi ordenador y luego lo pasaré a la Raspberry Pi para ejecutarlo. En la segunda forma, lo programaré y compilaré en la Raspberry Pi desde la consola (al más puro estilo old school).

El proyecto tendrá tres 4 clases: Triangle, Circle, Rectangle y Geometry, que será la clase principal. En la clase principal crearemos tres objetos, un Triangulo, un Cuadrado y un Circulo. Asignaremos a cada uno sus correspondientes parámetros y devolveremos su área. Voy a llamar al proyecto Geometry y las clases estarán en el paquete geometry.

Este es mi proyecto y por ahora, todas las clases están vacías:

La clase Circle tendrá el siguiente código: package geometry; /** * @author Mario Pérez Esteso <mario@geekytheory.com> * @web geekytheory.com */ public class Circle { int radius; public Circle(int radius) { this.radius = radius; } public float area() { return (float) (Math.PI*this.radius*this.radius); } } La clase Rectangle tendrá el siguiente código: package geometry; /** * @author Mario Pérez Esteso <mario@geekytheory.com> * @web geekytheory.com */ public class Rectangle { int side1, side2; public Rectangle(int side1, int side2) { this.side1 = side1; this.side2 = side2; } public int area() { return this.side1*this.side2; } } La clase Triangle tendrá el siguiente código: package geometry; /** * @author Mario Pérez Esteso <mario@geekytheory.com> * @web geekytheory.com */ public class Triangle { int base, height; public Triangle(int base, int height) { this.base = base; this.height = height; } public float area() { return (float) (this.base*this.height)/2; } } La clase principal Geometry tendrá el siguiente código: package geometry; /** * @author Mario Pérez Esteso <mario@geekytheory.com> * @web geekytheory.com */ public class Geometry { public static void main(String[] args) { // Triangle parameters int base = 5, height = 3; // Rectangle parameters int side1 = 4, side2 = 2; // Circle parameter int radius = 6; System.out.println("I am going to create 3 objects (Triangle, Circle and Rectangle) and print their areas"); // Triangle Triangle tri = new Triangle(base, height); System.out.println("Triangle area: " + tri.area()); // Circle Circle cir = new Circle(radius); System.out.println("Circle area: " + cir.area()); // Rectangle Rectangle rect = new Rectangle(side1, side2); System.out.println("Rectangle area: " + rect.area()); } } Bueno, ahora lo ejecutamos con NetBeans y obtenemos el siguiente resultado: I am going to create 3 objects (Triangle, Circle and Rectangle) and print their areas Triangle area: 7.5 Circle area: 113.097336 Rectangle area: 8 BUILD SUCCESSFUL (total time: 0 seconds)El archivo JAR lo creamos desde el menú Run-> Build Main Project, o pulsando F11. Se creará la carpeta dist dentro del proyecto. Si ahora pasamos este código a nuestra Raspberry Pi, nos debería dar el mismo resultado. Antes de hacer esto, tendremos que tener Java instalado en la Raspberry Pi, como ya he mencionado antes.  Crearé una carpeta que se llame JavaCode y ahí meteré el proyecto. Ahora mismo está el directorio vacío, como podéis ver:

Ahora voy a subir el proyecto con FileZilla a la carpeta JavaCode y listaré el directorio. También veremos el archivo JAR:

Vamos a ejecutarlo con el siguiente comando: java -jar Geometry.jar

Todo bien por ahora. Obtenemos el mismo resultado que desde NetBeans.

A continuación vamos a hacerlo para los puristas, los que programan desde la consola (no conozco a nadie que programe proyectos grandes desde consola).

Dentro de la carpeta JavaCode voy a crear una subcarpeta que se llamará MyProject. Dentro de esta carpeta crearé una subcarpeta llamada geometry (por el nombre del paquete) donde tendré los archivos Java Triangle.java, Circle.java, Rectangle.java y Geometry.java. Además, crearé un archivo llamado Manifest.mf en el mismo directorio que esta carpeta, es decir, bajo MyProject. Este archivo Manifest tendrá el siguiente contenido:

Manifest-Version: 1.0 Main-Class: geometry/Geometry Es importante que la última línea se acabe con salto de línea (pulsar retorno de carro, tecla Enter).

Ahora mismo tenemos lo siguiente: Manifest.mf (archivo) y carpeta geometry con los archivos Java.

Para compilar los archivos Java nos situaremos en la carpeta MyProject e introduciremos el siguiente comando:

javac geometry/*

De esta manera compilaremos los archivos .java que estén dentro de la carpeta geometry. A continuación, crearemos el archivo .jar con el siguiente comando:

jar cmf Manifest.mf Geometry.jar geometry/*.class Y ya lo podemos ejecutar con: java -jar Geometry.jar El resultado lo podemos ver en la siguiente imagen, igualito que en NetBeans:

Bueno, pues aquí acaba este tutorial. Si tenéis alguna duda o petición de algún tutorial, dejad un comentario y os contestaré lo antes posible.

Podéis ver el código de todo el proyecto, tanto NetBeans como el creado en la terminal en GitHub:

¡Un saludo!