miércoles, 4 de noviembre de 2020

Como compilar y ejecutar desde sublime Java sin tener que salir de Sublime usando la consola del Sistema Operativo



Como compilar y ejecutar desde sublime Java sin tener que salir de Sublime usando la consola del Sistema Operativo

https://commons.wikimedia.org/wiki/File:DalNet-Mac.jpgExisten ciertos programas de aplicación Java que son utilizados desde terminales, donde todo se envía y se recibe en texto, tal cual se hacía en los inicios de la informática, durante los cuales aparecieron los primeros terminales de video. En un principio fueron usados aparatos de TV en blanco y negro. Luego aparecieron los famosos terminales VT que integraban un teclado, los mas extendidos.

En aquella época todo se manejaba escribiendo en una pantalla negra con letras verdes o ambar, y lo que eran imágenes no eran mas que lineas rectas, horizontales, diagonales y matrices de pixeles en la pantallas y de unos y ceros en las hojas impresas, con los que se lograban incluso fotografías en dos colores.

Hoy en día este tipo de aplicación es utilizada para equipo de control básico, como ciertos equipos de cadena de montaje, la domótica, controles de temperatura, detección de movimientos, niveles de líquido, etc... donde la carga inicial de los parámetros que servirán de rangos de servicio, se suelen introducir desde una terminal con una pantalla mínima.

Si se desea entender mas sobre el tema se aconseja mirar los proyectos basados en Arduino, Raspberry Pi, etc... donde este tipo de aplicación es muy utilizado, en diferentes lenguajes. 


Debido a esto me he animado a realizar este tutorial, porque por lo general esos programas son bastantes sencillos y Sublime sería ideal para desarrollar estas aplicaciones sin necesidad de instalar un IDE sofisticado tipo NetBeans o Eclipse, para realizar estas tareas.

Vamos entonces a entrar en materia, diciendo que para que Sublime compile y ejecute una aplicación java vamos a llamarlo tipo  consola interactiva, debe hacerlo desde la consola del sistema operativo en donde se encuentra instalado Sublime, o sea, CMD en Windows, y el Terminal en Linux.

Para ello Sublime debe invocar internamente una llamada a la consola ya sea de Window o el Terminal de Linux internamente y pasarle la aplicación para que se compile y sea ejecutada.



En este tutorial explicaremos como se hace para los sistemas basados en Linux.


Para Linux debemos crear un script tipo bash, y para ello abrimos el Terminal(consola) de Linux pulsando en el teclado la combinación de teclas Ctrl + Alt +t , en Ubuntu ó Alt + t  para distros basados en Debian, y escribimos nano o vi, según la preferencia de cada uno, lo cual abrirá un editor de texto muy sencillo. Yo abriré el nano, que me resulta mas lógico de usar.

Para usuarios mas nuevos en estos es recomendable que usen gedit, o algún editor de texto gráfico similar.


Ya abierta la terminal escribimos nano y pulsamos Entrar (Enter,Intro,Return, etc..)




Cuando estemos dentro del editor vamos escribir la siguiente lo siguiente:



#!/bin/bash
gnome-terminal -e "/bin/bash -c 'javac $1; java $2; echo; read -p 'Pulse_Enter_para_terminar.'; exit; exec /bin/bash'; &"




Pulsamos Ctrl + o , para guardar, lo cual va a solicitar antes que le pongamos un nombre al archivo.

Escribiremos un nombre que tenga sentido para nosotros y asociarlo para la compilación y ejecución del java desde Sublime y pulsamos Enter. Este nombre tiene que terminar en .sh.

Escribimos ConsolaJavaLinux.sh



Debemos obtener algo parecido a la siguiente imagen:



Pulsamos Ctrl +x, y salimos del nano.

Lo anterior ha grabado el archivo justo en el directorio donde nos encontramos en este momento, con lo cual debemos tomar debida nota de esto, ya que es primordial para luego ubicarlo donde mejor nos convenga o dejarlo alli si se desea.

Para saber donde en que directorio estamos escribimos en el terminal pwd (printing working directory), que significa imprime directorio de trabajo:



Con esto vemos en que directorio hemos creado nuestro archivo, y ahora utilizaremos el administrador de archivos nautilus, que por ser gráfico se verá mejor lo que vamos hacer.

Para invocar este programa solo tenemos que escribir nautilus en el Terminal


y esto nos abrirá el administrador de archivo



Ya sabemos que el archivo esta en el directorio /home/josem, esto equivale a Carpeta personal en el administrador de archivos (home/josem es sustituído por Carpeta personal), por la tanto vamos a Carpeta personal y buscamos allí el archivo ConsolaJavaLinux.sh, que hemos creado anteriormente.


Ahora procedemos a copiar el archivo al destino que hemos decidio, marcamos el archivo ConsolaJavaLinux.sh y pulsamos el botón derecho del raton y escogemos la opción Cortar (equivalente Ctrl + x), nos permite copiar el archivo en su destino y a la vez se elimina del directorio fuente, donde no lo necesitaremos para nada.


Ahora vmaos a la carpeta de destino. Por razones de mantener coherencia, en mi opinión es mejor colocar este archivo dentro de la carpeta de sublime que esta dentro del directorio oculto .config en Carpeta personal. Para poder ver los archivos ocultos con nautilus solo hay que ir al menú de tareas, pulsar sobre Ver y marcar Mostrar los archivos ocultos, o pulsar Ctrl + h.



Con esto ya ver los archivos y carpetas ocultos, ubicamos la carpeta .config y  buscamos dentro de ella la carpeta de sublime:




Vemos que solo hay una carpeta sublime nombrada como sublime-text-2, entramos en la carpeta, y dentro de ella pulsamos el botón derecho del ratón y pulsamos sobre Pegar para copiar ahí el archivo:


Y aquí vemos que ya tenemos el archivo dentro de la carpeta deseada:




Ahora marcamos el archivo ConsolaJavaLinux colocandonos sobre el pulsamos el botón derecho del ratón y luego pulsamos sobre Propiedades lo que nos abrirá una ventana donde escogeremos la pestaña Permisos y marcamos el recuadro de Ejecución: Permitir ejecutar el archivo como un programa.





Con esto ya estamos preparados para crear el Build System que necesitamos en Sublime, procedemos entonces abrir Sublime y en el menú superior de opciones vamos directamente a ToolsBuild System y New Build System...


Esto nos abre una ventana de edición en cuya pestaña nos indica un nombre sugerido untitled con la extensión .sublime-build. Vamos a sustituir el contenido que tiene por defecto al abrirse, por las siguientes líneas:

{
 "cmd": ["~/.config/sublime-text-2/ConsolaJavaLinux.sh ${file_name} ${file_base_name}"],
 "shell": true

}


Las partes importantes de estas líneas está en la primera línea, que es la que contiene la ubicación en donde se encuentra el archivo script de Linux que creamos y el nombre de este, por lo tanto las partes en rojo son las que cambian según la decisión que tome cada usuario:

Para aquellos que los desconozcan, en Linux este simbolo "~" equivale a la ubicación por defecto que Linux hace del usuario que usando el equipo. En otras palabras cuando Linux ve ~ ya sabe que lo tiene que sustituir por /home/nombre_usuario/.

Es decir, el directorio /home/ dentro del cual se crean todos los subdirectorios de los usuarios que se creen en el sistema operativo, /home/nombre_usuario. Es lo que equivale en Windows c:/Users/ dentro del cual se crea las carpetas de usuario /nombre_usuario/, La diferencia es que en Linux solo se crean las carpetas de los usuarios, mientras que Windows crea carpetas adicionales por defecto

Repasemos una vez más esta parte de la línea, ya que cualquier error aquí, simplemente hará que no funcione la consola.

      Ubicación el archivo         nombre del script
~/.config/sublime-text-2/ConsolaJavaLinux.sh

Una vez aclarado esto, toca ahora guardar el archivo Build System, y para ello vamos al menú principal de sublime y pulsamos sobre File y entre las opciones pulsamos Save:


Se nos abre la siguiente ventana en donde vamos a escribir el nombre que le daremos a este Build System. Solo modificaremos la parte sombreada naranja, y usaremos para este ejemplo un nombre como ConsolaRealLinux_Java.


Escribimos el nombre y pulsamos guardar.



Con esto hemos terminado de configurar todo para poder compilar y ejecutar las aplicaciones Java que requieran que se introduzcan datos desde la consola del sistema.


Solo resta probar que todo funciona vamos de nuevo al menú principal de Sublime, Tools, Build System y buscamos el nombre que le hemos dado al Build System que acabamos de crear, el cual era ConsolaRealLinux_Java y lo dejamos marcado  con el tilde:


Ahora simplemente es cuestión de buscar un programa que use la consola como entrada de datos, para probar que funciona:

Vamos a utilizar el siguiente:

import java.util.Scanner;
import java.io.*

 public class ExisteArchivo{

    public static void main(String args[]){   
        Scanner teclado = new Scanner(System.in);
        System.out.print ("Entra el nombre del fichero :");
        String nombre = teclado.nextLine();
        File fichero = new File (nombre);
       
        if ( !fichero.exists()){
         System.out.println ("El fichero no existe");
         } else {
             System.out.println ("El fichero existe!!!");           
       }
    }        
 }




Puedes copiar y pegar el código anterior de prueba o crear uno propio.



Recordar que el nombre del archivo debe ser el mismo que el nombre de la clase, en nuestro caso el nombre de este programa será ExisteArchivo.java

Una vez este guardado, pulsamos la tecla Ctrl y dejandola pulsada pulsamos la tecla b, y veremos como se inicia la apertura de la consola del sistema, compilará el programa y lo ejecutará.

Tenemos que ver algo similar a la siguiente imagen si usamos el programa anterior:


Podemos ver el terminal del Ubuntu 16.04 que es el SO que estoy usando y en el cual me esta solicitando un nombre del archivo, ya que el programa solo verifica que el mismo exista o no.

Con esto se ha probado que funciona como se esperaba, y siguiendo con la prueba, escribo cualquier cosa, para que comprueba si existe o no y devuelva un mensaje:


Y vemos que todo ha funcionado bien. Finalmente me pide que pulse Enter para terminar y cerrar la consola.

Espero que este tutorial les sirva de ayuda, y he sido especialmente detallista por cuestión de enseñar a los mas novatos, pero el mismo proceso es un poco complicado, porque tiene aspectos que no tiene que ver con la programación en si y he tratado de aclarar posibles dudas.

Sin embargo, si  alguien sigue teniendo alguna no dude en comentarlo y trataré de ayudarle gustosamente.


Como siempre si detectas algún error u omisión, o hacer alguina observación importante, por favor deja un comentario, para corregir o cambiar los conceptos que sean necesarios. Muchas Gracias por visitar mi blog.

No hay comentarios:

Publicar un comentario

Tu comentario puede ser muy útil, asi que no dudes en dejar el tuyo.
Si es relacionado con algún problema, error. etc. trata de ser muy explicito, y detallar el problema y las circunstancias en las que se produjeron. Si lanza algún error trata de copiarlo y pegarlo junto con una descripción del problema, ya que a veces los errores del sistema no son en realidad la causa del problema.

Vistas de página en total