Apronta las armas para este breve vistazo a algunas de las más nuevas (e innovadoras) herramientas que existen por ahí. En caso de que no te hayas enterado, RebelLabs acaba de hacer públicos los resultados de una encuesta internacional sobre el panorama de las herramientas y tecnologías Java. A la par de los grandes nombres y las herramientas más establecidas, el mercado está ardiendo con herramientas y frameworks de los que no mucha gente ha oído hablar (aún). En este artículo, he decidido reunir en una lista algunas de dichas herramientas, la mayoría de las cuales han sido lanzadas recientemente. Algunas fueron específicamente diseñadas para Java, mientras que otras soportan más lenguajes. Pero todas ellas son excelentes para proyectos en Java y tiene en común el ir tras la simplicidad. Aquí vamos.
Lanzado el pasado septiembre, JClarity ahora ofrece dos productos relacionados al desempeño de Java: Illuminate y Censum. Illuminate es una herramienta para el monitoreo del desempeño, mientras que Censum es una aplicación centrada en el análisis del registro de la recolección de basura. Más que únicamente recolectar o visualizar datos, ambas herramientas brindan información procesable para resolver los problemas que detecten.
“Lo que queremos lograr es llevar el problema desde la recolección de datos hasta su análisis y procesamiento” Ben Evans, cofundador de JClarity.
Características clave:
Detección de cuellos de botella (periférico de E/S [Disk I/O], recolección de basura, bloqueos mutuos [deadlocks], y otros).
Plan de acción: recomendaciones para solucionar el problema, tales como “La aplicación necesita incrementar el número de hilos activos”.
Explicación: definición del problema en general y de sus causas más comunes, como por ejemplo “Un alto porcentaje de tiempo pausado en el GC [recolector de basura] puede indicar que el montón [heap] sea demasiado pequeño”.
Lo que tiene de particular: ofrece el siguiente paso tras el monitoreo y la identificación de los problemas de desempeño: información procesable para resolver los inconvenientes en el momento.
Entre bambalinas: JClarity, ubicada en Londres, fue fundada por Martijn Verburg, Kirk Pepperdin y Ben Evans, todos ellos viejos conocidos en el mundo del desempeño en Java. Averigua más sobre cómo JClarity fue dada a luz, por aquí.
Los desarrolladores Java se mantienen en la oscuridad, por decirlo de alguna manera, al importar librerías de repositorios “anónimos”. Bintray le pone una cara al código y, en realidad, actúa como una plataforma social donde los desarrolladores pueden compartir paquetes de código abierto (¿Alguien dijo “GitHub para binarios”? Inicia sesión con GitHub para que todo el efecto, desde el comienzo, tenga lugar). Tiene más de 85.000 paquetes en 18.000 repositorios, a la vez que destaca repositorios más populares y nuevos lanzamientos.
Características clave:
Sube tus binarios para que el mundo entero pueda verlos y darte sus opiniones, y también interactúa con otros desarrolladores.
Descarga librerías con Gradle / Maven / Yum / Apt, o simplemente de forma directa.
Administra notas y documentación de los lanzamientos.
API REST: busca / extrae binarios y automatiza su distribución.
Lo que tiene de particular: La funcionalidad básica de Bintray es similar a Maven Central. De todos modos, el primero añade una capa social y ofrece un proceso simple para subir archivos a una CDN (red de entrega de contenidos).
Entre bambalinas: Bintray es desarrollado por JFrog, ubicado en Israel y en California. Fue hecho público el pasado abril y ganó el premio Duke’s choice en la última conferencia JavaOne. JFrog es asimismo la compañía detrás de Artifactory. Que también está almacenada en Bintray. Por supuesto.
Librato es un servicio en línea destinado a monitorear y administrar aplicaciones en la nube, que puede crear paneles de administración personalizados en cuestión de segundos sin necesidad de configurar o implementar ningún software. ¡Ah... y la verdad que luce tan brillantemente suave en comparación a otros paneles!
“El valor de los datos depende de cuánta información procesable puedas cosechar de ellos”, dice Joe Ruscio, su cofundador y CTO (director tecnológico).
Características clave:
Recolección de datos: integración con Heroku, AWS, decenas de agentes de recolección (hasta el Nest) y bindings de lenguajes puros con Java, Clojure y otros.
Informes personalizados: estadísticas y alertas por correo electrónico, HipChat, Campfire, y hasta solicitudes HTTP POST para integrarlo con lo que se te ocurra.
Visualización de datos: gráficos vistosos con opciones para embeber, compartir, anotaciones y correlaciones.
Alertas: notificaciones automáticas cuando las estadísticas pasan ciertos umbrales.
Lo que tiene de particular: Resultaría difícil encontrar algo con lo que Librato no sepa cómo comunicarse para facilitar la comprensión de su respectiva información.
Entre bambalinas: Ubicada en San Francisco, Librato fue fundada por Fred van den Bosch, Joe Ruscio, Mike Heffner y Dan Stodin.
Takipi fue creado con un objetivo claro en mente: decirle a los desarrolladores cuándo y por qué el código de producción falla. En cualquier momento en que se lanza una nueva excepción u ocurre un error de registro, Takipi lo captura y te muestra qué estado de variable lo causó, a través de métodos y máquinas. Takipi resaltará esto sobre el código que se ejecutó precisamente en el momento del error, para que puedas analizar la excepción como si estuvieras allí cuando ocurrió.
Características clave:
Detección: excepciones capturadas/no capturadas, errores registrados y http.
Priorización: cuán a menudo los errores ocurren a través de tu clúster, si se producen con código nuevo o modificado, y si la frecuencia está aumentando.
Análisis: puedes ver el estado de variable y el código en el momento del inconveniente, aún a través de distintas máquinas y aplicaciones.
Lo que tiene de particular: God mode en la producción de código. Te muestra el estado de variable y el código exacto al momento del error, como si hubieras estado ahí cuando ocurrió.
Entre bambalinas: Shhh... somos nosotros. Takipi fue fundada en 2012 y ubicada en San Francisco y en Tel Aviv. Cada tipo de excepción y de error tiene un monstruo en particular que lo representa.
Elasticsearch ha estado por aquí hace rato, pero Elasticsearch 1.0.0 fue lanzado recientemente el pasado febrero. Es un proyecto de código abierto construido sobre Apache Lucene y almacenado en GitHub con más de 200 colaboradores. Puedes ver el código por aquí. La principal promesa que Elasticsearch presenta es la de una búsqueda RESTful simple de usar, escalable y que se puede distribuir.
Características clave:
Almacenamiento de documentos casi en tiempo real, donde cada campo es indexado y puede ser objeto de búsquedas.
Búsqueda distribuida con una arquitectura construida a escala para todas las aplicaciones, desde las más pequeñas a las más grandes.
RESTful y, entre otras, una API Java nativa. También tiene una librería para Hadoop.
Es muy intuitiva y no necesariamente requiere un entendimiento profundo de las búsquedas; también puede ser usada sin esquema, así que puedes comenzar realmente rápido.
Lo que tiene de particular: Tal como dice en el envase, es elástica. Construida con la flexibilidad y la simplicidad de uso en mente, brinda un lugar sencillo para comenzar y para escalar sin comprometer las características más cruciales, así como también opciones de personalización.
Entre bambalinas: Elasticsearch fue fundada por Shay Banon allá por 2010 y hace poco juntó USD 70 millones de financiamiento. Antes de fundarla, Banon realizó el proyecto de código abierto Compass y a esta altura es un renombrado experto en las búsquedas. ¿Cuál fue su motivación para trabajar en este campo? Una aplicación que creó para su esposa que almacenaba y extraía sus recetas favoritas.
Volvamos al Java puro, Spark es un framework, inspirado en Sinatra, destinado a crear aplicaciones web de una manera rápida. Fue reescrito este año para soportar Java 8 y las lambdas. Spark es de código abierto y su código está disponible en GitHub, por aquí. Está siendo desarrollado por Per Wendel y un reducido número de colaboradores a lo largo de los últimos años, comprometidos con la misión de soportar la creación rápida de aplicaciones web con un mínimo esfuerzo.
Características clave:
Configuración sencilla y rápida para tu primera implementación.
Comparador de rutas intuitivo.
Un motor de plantillas para crear componentes reutilizables que soporta Freemarker, Apache Velocity y Mustache.
La versión Standalone de Spark corre en Jetty, pero también puede correr en Tomcat.
Lo que tiene de particular: Una imagen vale más que mil palabras, pero una captura de pantalla sería todavía más directa. Constátalo.
Entre bambalinas: Per Wendel es el sueco que fundó Spark, y trabaja en ello junto a más de 20 colaboradores. Visita el grupo de discusión y averigua más sobre Spark, y sobre cómo puedes colaborar y resolver algunas situaciones.
Adentrándose en la JVM, el Recolector de Basura busca objetos que ya no estén siendo usados. De cualquier manera, los desarrolladores a veces mantienen en memoria referencias a objetos que ya no usan. Allí es cuando se producen las pérdidas de memoria, y cuando Plumbr entra en acción. Plumbr detecta si la aplicación tiene problemas de pérdida de memoria y brinda información procesable para arreglarlos.
Características clave:
Detección de pérdidas de memoria y alertas en vivo.
Un informe que abarca el tiempo, tamaño, velocidad (MB/h) y la significancia de la pérdida.
La ubicación de la pérdida de memoria dentro de tu código.
Lo que tiene de particular: Veloz y derecho al punto, recoge información de tu código y te dice qué es lo que necesitas solucionar.
Entre bambalinas: Ubicada en Estonia, Plumbr fue fundada por Priit Potter, Ivo Mägi, Nikita Salnikov-Tarnovski y Vladimir Šor. Ellos unen sus fuerzas en un equipo sumamente experimentado en Java, principalmente conocido como “los chicos que dan una mano en proyectos que están trancados”. Tiene sentido.
¿Nos faltó alguna otra herramienta interesante? ¿Cuál es la mejor de las nuevas herramientas que tú usas? Déjanos saberlo con tus comentarios más abajo.