Ir al contenido principal

Lenguajes dependientes de la JVM (2da parte)

 

Java sigue siendo el lenguaje más popular y usado en la actualidad. Con el advenimiento de nuevos lenguajes de programación la elección a un verdadero sucesor se vuelve más compleja. Lenguajes como Ceylon, Scala y Kotlin han tenido el honor de ser considerados sus dignos sucesores. Sin embargo, realmente muy pocos dejan de considerar a Java como un lenguaje lejano y olvidable. Dejar proyectos hechos en este lenguaje ¡ni hablar!

¡Java sigue siendo el rey!

Lenguajes como Jabaco (imagen de abajo), Jython y JRuby son difíciles de aceptar como lenguajes sucesores o meramente usables en proyectos reales.

Otros, como Concurnas prometen mucho, pero Ceylon en su momento hizo lo mismo. Al final, los desarrolladores originales dejaron el proyecto a la fundación Eclipse. Triste historia.

public static class Holder<X>{
    private java.util.ArrayList<X> li = new  java.util.ArrayList<X>();

    public void add(X x) {
        li.add(x);
    }
}

Holder<Integer> hh = new Holder<Integer>();
hh.add(12);
hh.add(33);

Arriba, un ejemplo de código hecho con Concurnas.

Y la lista aumenta con lenguajes como Xtend, Gosu, Yeti, Frege, Golo y Fantom.

HolaMundo.fan

class HolaMundo{
  static Void main(){
    echo("Hola mundo en Fantom!!!")
  }
}

Este es un ejemplo de clase en el lenguaje de programación Fantom. Ver más aquí: https://fantom.org/doc/docIntro/HelloWorld

Java es y será un lenguaje demasiado importante como para dejarlo de usar.

Enlaces:

https://concurnas.com/
https://www.jabaco.org
https://gosu-lang.github.io/
https://www.jruby.org/
https://www.jython.org/
https://clojure.org/
http://mth.github.io/yeti/
https://github.com/Frege/frege
https://github.com/eclipse-archived/golo-lang
https://fantom-lang.org/
https://fantom.org/
https://www.eclipse.org/xtend/

Comentarios

Entradas populares de este blog

Java Tip 1: Importaciones por default

Tip 1 : Todas las clases del paquete java.lang se importan por defecto. Podríamos hacer algo como esto: import java.lang.System ; import java.lang.String ; import java.lang.Boolean ; import java.lang.Integer ; import java.lang.Short ; import java.lang.StringBuilder ; import java.lang.StringBuffer ; O cosas (aberrantes) como: //Traernos todas las clases del paquete java.lang import java.lang.* ; Sin embargo, no es necesario. Repitamos esto como un mantra: Todas las clases del paquete  java.lang  se importan por defecto, no es necesario escribir de más .

Java Tip 20: JDBC (2da parte)

Continuamos con esta serie sobre JDBC . Como dijimos la vez anterior JDBC( Java Database Connectivity ) es el estándar de conectividad de bases de datos de Java y proporciona un mecanismo para que los programas Java se conecten a las bases de datos. En este post veremos ejemplos de su uso. Requisitos: Tener nociones de Java.  Tener nociones de SQL (usaremos H2). Tener nociones de Maven. Creando una aplicación JDBC Crearemos una sencilla aplicación que se conecte a una BD H2 (ver  tutorial ). Pasos: Crearemos una tabla a la que llamaremos Cursos. La cual tendrá los siguientes campos: id, titulo, materia, instructor, fecha y hora. Crear la aplicación Java usando Maven. Crearemos instrucciones SQL para consultar la información, ingresar nuevos cursos, actualizar y eliminar registros. Ejecutar la aplicación con Maven. 1. Creamos la tabla con sus seis campos (agregaremos los datos con la aplicación Java): CREATE OR REPLACE TABLE CURSOS( id bigint ...

Java Tip 26: Stream API

La Stream API de Java sirve para procesar colecciones de datos de forma declarativa y funcional, evitando bucles explícitos y haciendo el código más legible, conciso y fácil de paralelizar. Los Streams representan una secuencia de elementos sobre la cual se pueden aplicar operaciones como filtrar, transformar, ordenar o reducir. No almacenan datos: simplemente transportan valores desde una fuente (colección, arreglo, I/O, etc.) a través de una pipeline de operaciones.   Permiten escribir código más expresivo y funcional, similar a otros lenguajes modernos. Operaciones principales Los Streams se dividen en dos tipos de operaciones: Intermedias (devuelven otro Stream): filter() → filtra elementos según una condición.   map() → transforma cada elemento.   sorted() → ordena los elementos. Terminales (devuelven un resultado): collect() → convierte el Stream en una colección.   forEach() → recorre los elementos.   red...