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/historyholamundo.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:
- short y la clase wrapper Short.
- byte y la clase wrapper Byte.
- char y la clase wrapper Character.
- int y la clase wrapper Integer.
- float ... y Float.
- long ... y Long.
- double ... y Double.
- boolean ... y Boolean.
- String.
- 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_languageshttps://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
Publicar un comentario