¿Han usado Kotlin? ¿Qué es lo que ofrece respecto a Java y otros lenguajes dependientes de la JVM?
Últimamente he estado usando Kotlin por mera curiosidad. Nada de proyectos reales. Por lo que veo y he notado se está llevando de corbata a lenguajes como Scala y Groovy. Y más aún dado que ahora hasta Google promueve su uso para desarrollar en Android (el matador de memoria preferido por los programadores masoquistas).
Proyectos como Ceylon prometían mucho, pero es un hecho que éste lenguaje (Kotlin) lleva la delantera. Migrar un proyecto hecho en Java a otros lenguajes es muy arriesgado. Java es un mundo enorme, siempre hay algo nuevo que ver. Con Kotlin se abre otro mundo.
No es sorpresa saber que existen 1010101010 de alternativas para nosotros los desarrolladores. Que si es mejor usar Angular, Vue, React, Node y olvidarte de Java, porque Java es difícil y es mejor Javascript por que es el futuro (lo he escuchado).
Ahora sería mu útil saber si alguien lo ha usado y qué ventajas ha encontrado respecto a lenguajes como Ceylon, Scala, Groovy y el propio Java.
- Inicie sesión o regístrese para enviar comentarios
Como en todas las tecnologias actuales
Depende de que estes buscando con respecto a java, en lo personal creo que es ligeramente mas lento que java (en practicidad no se nota) pero te ofrece programacion funcional mas amigable sin ser puramente funcional como clojure, compila a javascript aunque yo no hago eso porque en lo personal me gusta javascript, definitivamente escribes menos y es compatible con java aunque como en todo hay excepciones.
Tal vez su mejor caracteristica es el soporte de co-rutinas, algo asi como async/await en otros lenguajes, definitivamente inspirado por go y con mucho en comun con event loop en javascript, por lo que la programacion concurrente y ayncrona no deberia tantos dolores de cabeza como en java solito o en c++.
Comparación
Lo bueno de Kotlin, que no tenga Java 8:
Lo malo de Kotlin:
¿Y Ceylon, apa'?
Disculpa el off-topic, Sr. Negativo, pero tengo curiosidad en saber qué ha sucedido con Ceylon. Quizás @ezamudio pueda decir algo al respecto.
Re: ¿Y Ceylon, apa'?
¡Uy! ¿Demasiado ocupados en otra cosa o se ha perdido el interés?:
:-/
Se ha perdido el interés
Me he dado cuenta que conforme pasa el tiempo se ha perdido el interés en esta comunidad, hace algunos años afecto la compra de SUN por parte de Oracle, en la actualidad afecto la noticia de que Java 11 sera de pago, algunos chamacos utilizaban este foro para que la gente les ayudara con las tareas de su escuela (obvio a nadie le interesaba responder).
Pasa mucho
Pasa como muchos proyectos incluida la version 2 de javamexico, nacen con mucho interes y apoyo, pero se apagan poco a poco ya sea por falta de tiempo de los involucrados, falta de interes o que no se ve realmente un beneficio o existe algo mejor.
Ceylon
Pues no hay anuncio ni nada, pero lo que ha pasado últimamente ha sido:
La conclusión se deja como ejercicio al lector.
Java 11
Mientras tanto, en el mundo empresarial... yo siento que Kotlin no tiene suficientes ventajas como para competir con Java 11/12. Hace 3-5 años había mucha diferencia, pero conforme salieron nuevas versiones de Java, pues empezaron a ponerse al corriente en cosas que le faltaba para modernizarse... entre lambdas, streams y Optional la verdad yo por ejemplo ya siento que Java está bastante mejor que Groovy (por mencionar otro, porque la verdad el mayor atractivo de Groovy, al menos para mi, eran los métodos adicionales que tenían las colecciones, que ahora se puede hacer con streams y que incluso los de Groovy dicen que son más eficientes los streams).
Con Lombok, te olvidas de estar escribiendo (o generando con el IDE) los setters y getters, el toString y hashCode. También tiene anotaciones para generar constructores para todos los campos finales de una clase. Puedes hacer builders incluso. Con eso ya estás muy cerca de tener algo como las data classes de Kotlin, y tienes lo mismo que con las propiedades de clase de Kotlin y Groovy.
En general Kotlin tiene varias cosas que no me parece que hayan sido muy bien diseñadas, y no sé si van a tener en el futuro los mismos problemas de Scala: que cualquier feature que se les ocurre se lo agregan, haciendo que el lenguaje sea innecesariamente complicado. Los métodos de extensión y la sobrecarga de operadores parecen cosas muy buenas pero en realidad pueden dañar la legibilidad del código y causar confusión.
Lo único que me llama la atención de Kotlin ahorita son las corrutinas (o co-rutinas o como quieran llamarles, coroutines pues) porque es un modelo de concurrencia muy pero muy sencillo y que no se tiene en Java. Es algo que debió haber implementado Ceylon en vez de insistir en dejar la concurrencia a bibliotecas externas para no meter cosas al lenguaje que no se pudieran hacer en Javascript.
Java 11...
Es el acabose
Entonces como conclusión, en
Entonces como conclusión, en términos generales si se quiere continuar desarrollando para el ecosistema de la JVM lo mas conveniente es continuar programando en las nuevas versiones de Java (8 - 11) ?
lo más fácil
Pues depende de qué conveniencia hablas, @javadicto. En general creo que en cualquier proyecto va a ser más fácil que te dejen usar una versión más nueva de Java, que introducir un lenguaje nuevo.
Buena experiencia con Kotlin
Hola, en Creditas estamos teniendo una buena experiencia con Kotlin en el backend y incluso estamos dejando Ruby de lado y creando toda nuestra nueva arquitectura en Kotlin. Escribimos un blog post contando ese histórico si les interesa:
Saludos