Archivo de la etiqueta: shiro

Integrando Kotlin en aplicaciones web

Java, pese a las impresionantes mejoras que trae en su versión 8, siempre me ha parecido un lenguaje un poco verboso y con algunas incomodidades con respecto a C#.

Lenguajes como Python, Ruby o ECMAScript son cómodos y ágiles, pero no me gustan para proyectos de cierta envergadura puesto que, siendo tan despistado como soy, prefiero lenguajes con tipado estático que me muestren los errores en tiempo de compilación y ahorrarme tener que buscarlos con el depurador.

Groovy es un gran lenguaje, aunque un tanto lento. A la filosofía Scala no me he acabado de acostumbrar, y siempre acabo haciendo programas con la misma estructura que si de un programa Java se tratara. Además, he tenido algunos problemas tratando de integrar Scala con librerías Java.

A pesar de las críticas que programadores “new age” lanzan por una cuestión de moda, me gusta la Máquina Virtual de Java y el impresionante número de librerías y frameworks maduros que posee. No cambiaría para irme a Rails o Node, a pesar de sus muchas otras ventajas. Quizás la cambiaría para irme a .NET si éste finalmente llega a ser completamente multiplataforma (otro sacrilegio, no solo para programadores “new age”  si no también para aquellos que asocian automáticamente Microsoft con malvado y malo).

Durante estas vacaciones he tenido tiempo de probar por encima Kotlin, y la verdad es que las primeras impresiones han sido buenas. Principalmente, me ha gustado, entre otras:

  • Es estáticamente tipado
  • Le quita verbosidad a Java
  • Getters y setters directamente definidos en los atributos, y no como métodos (al estilo de C# o Groovy)
  • Null safety
  • Sobrecarga de operadores al estilo de C++
  • Data classes
  • Lo extremadamente bien que se integra con las librerías existentes de Java
  • El soporte de Jetbrains le da en su IDE, incluida la funcionalidad de traducir automáticamente código Java a Kotlin

Como demostración (y para mi utilidad propia en aplicaciones futuras), he creado este pequeño proyecto web que integra Kotlin con algunas librerías para el desarrollo web, tales como Struts 2 y Tiles para la gestión del Modelo Vista Controlador, Shiro para la gestión de la seguridad, y Jersey para la implementación de servicios REST.

El enlace en cuestión, con sus respectivas instrucciones de puesta en marcha: https://github.com/mariomac/kwebbt