Ir al contenido principal

Lenguajes JVM: Clojure & Groovy

Un lenguaje dependiente de la JVM es aquél que corre bajo, valga la redundancia, la Java Virtual Machine.

Java tiene la filosofía de: "Escribe una vez, ejecuta en todas partes" o "Write once, run everywhere". Lo que significa que una vez compilado y creado el .class, tu programa debería ejecutarse en cualquier Sistema Operativo.

Lenguajes como Clojure, Groovy, Kotlin, Scala y otros más, en teoría, cumplen con la misma filosofía.

Clojure

Es un lenguaje de programación:

  • Multiparadigma.
  • Basado en LISP.
  • Permite la programación funcional y orientada a objetos.
  • Dinámico.
  • Promueve la inmutabilidad, incluyendo las estructuras inmutables.

Clojure fue creado por Rich Hickey. Si te interesa leer la historia de este lenguaje, echa un vistazo acá:

https://clojure.org/about/history

holamundo.clj

(println "Hola, mundo!!")

Clojure tiene una sintaxis casi idéntica a LISP. El manejo de paréntesis es su sello particular. También se le "acusa" de ser un lenguaje algo difícil de aprender.

Groovy

Es un lenguaje de programación:

  • Multiparadigma.
  • Permite la programación orientada a objetos, a aspectos, la funcional e imperativa.
  • Además se permite crear pequeñas rutinas o scripts.
  • Similar a Ruby y/o Python.
  • De tipado dinámico y estático.

Groovy fue creado por James Strachan.

HolaMundo.groovy

println "Hola, mundo!!"

Interoperabilidad con Java

En teoría, programas hechos en Clojure y Groovy pueden interoperar con código hecho en Java. Abajo un ejemplo del uso de la librería ``javax.swing`` en código Clojure.

modal.clj

;; Importamos la librería
(import '(javax.swing JOptionPane)) ;'

(JOptionPane/showMessageDialog nil,
     (str "Mensaje desde Clojure")
)

Como se puede apreciar, es una muestra de interoperabilidad entre Clojure y Java.

Tipos de datos

Clojure

Básicamente son los mismos de Java. Sin embargo para declarar variable lo haremos de la siguiente forma:

(def cadena "ABC")
(def longitud (count cadena));; Devuelve 3, el tamaño de la cadena "cadena"
(def entero 45)
(def booleano true)
(def real 45.45)
(def car '@')

Groovy

Básicamente son los mismos de Java:

  1. short y la clase wrapper Short.
  2. byte y la clase wrapper Byte.
  3. char y la clase wrapper Character.
  4. int y la clase wrapper Integer.
  5. float ... y Float.
  6. long ... y Long.
  7. double ... y Double.
  8. boolean ... y Boolean.
  9. String.
  10. Etc.

Donde podemos declararlas de la siguiente forma (ya sea especificando el tipo o usando ``def`` ):

def entero = 32;
int numero = entero;
String titulo = "Historia de Groovy";
def valor = getNumero();
byte x = 3;
char c = '@';
def booleano = 34 > 0;

La palabra ``def`` nos permitirá definir una variable sin especificar el tipo. También se usa para crear funciones.

def hola(){
   "Hola, mundo"
}

Tanto Clojure como Groovy son lenguajes que, bien usados, pueden servir para crear aplicaciones robustas y funcionales.

En próximas entregas continuaremos con este tema.

Enlaces:

https://en.wikipedia.org/wiki/List_of_JVM_languages
https://javatutorial.net/jvm-explained/
https://stackoverflow.com/questions/2506014/java-virtual-machine-jvm-in-what-language-jvm-coded
https://groovy-lang.org/
https://clojure.org/

Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...