Siempre que lees un informe que “intenta” predecir tendencias de futuro o que analiza estadísticas/encuestas hay que cogerlo con pinzas. Hace unos días cayó en mis manos el informe Geek Choice Award 2014 realizado por RebelLabs. El objetivo era seleccionar ese puñado de tecnologías que han marcado y siguen marcando la forma de desarrollar para un programador, en este caso Javero, aunque veréis que hay tecnologías para los que no lo sean.
¿Cuáles son ese puñado de tecnologías que “amas”? Entendamos amar como que al menos no te sacan de quicio todos los días y han influido en la forma de desarrollar software. El estudio basa su leitmotiv en tres puntos valiosos: cuota de mercado, feedback positivo en diversas encuestas, el ruido mediático que hacen (noticias, tweets, presencia en conferencias) y, por supuesto, las experiencias de los desarrolladores con esas tecnologías.
Obviamente, todas tienen que aportar un valor: resolver problemas, hacer más eficiente la tarea de desarrollar y reimaginar algo ya preestablecido para hacerlo mejor. Sin duda, son buenas caracteristicas.
De entre todas, 10 son las elegidas. La podemos llamar “modern technologies” que siempre suena mejor, aunque son tecnologías muy presentes y algunas de ellas ya llevan una década aportando valor.
Git
Git fue lanzado en 2005. Es uno de los sistemas distribuido de control de versiones más utilizados. Como nota reseñable que marcó su andadura resaltamos que fue impulsado por Linus Torvalds para organizar mejor las contribuciones que se realizaban en el Kernel de Linux.
Su evolución en estos años ha venido marcada por la migración de muchas compañía de SVN a Git. Uno de los mayores impulsores de la adopción de esta tecnología es Github (un inmenso repositorio de proyectos Open Source).
En las gráficas que acompañan el estudio marcan esa tendencia y su posición en el mercado. En el lado contrario nos encontramos a un tecnología como CVS que lleva desde 2008 sin sacar ninguna nueva release. ¿Alguien sigue usando CVS?
Gradle
Gradle es una herramienta para automatizar la generación de build, gestión de dependencias, despliegue y mucho más. Entra en un mercado que ha ido evolucionando desde Ant, Maven y ahora parece que Gradle es el que marca la tendencia. Fue lanzado en 2012 cada vez más IDE apuestan integrandolo. Sustituyen las configuraciones XML (algo que muchos detestamos) por un lenguaje más cercano al JSON bajo un DSL Groovy.
Su uso aún está alejado de Maven pero, sinceramente, muchos desearíamos poder migrar nuestras configuraciones a Gradle. Google lo ha seleccionado oficialmente para el desarrollo de Android.
Entre sus puntos fuertes se encuentra su verdadero soporte multiplataforma, una versátil API y facilidad para extenderlo y crear nuestros propios plugins.
Groovy
Groovy es un lenguaje que se ejecuta sobre la JVM. Es totalmente interoperable con Java. Uno de sus principales puntos a favor es que tiene una sintaxis muy similar a Java, pero aportando simplicidad a ciertas tareas comunes que normalmente suelen implicar muchas más líneas de código en Java. Simplicidad y productividad.
Dispone de diversas herramientas entorno al lenguaje como el mencionado Gradle, Grails como framework o Griffon.
No es el principal lenguaje JVM pero sí que es uno de las primeras elecciones para aprender. En estas categoría se enfrenta con Scala, Clojure, Xtend, Ceylon, o Kotlin.
IntelliJ IDEA
IntelliJ IDEA es un IDE desarrollado en Java que cubre prácticamente todas las necesidades de un desarrollador javero “moderno”. Soporta multitud de lenguajes como Java, Scala, Groovy o Android. Dispone de una comunidad bastante activa y aunque es un IDE de pago cuenta con versiones Open Source apoyadas por la comunidad.
En el tema de IDEs Java entramos en un terreno dominado por Eclipse. Muchos desarrolladores habituados desean un cambio a IntelliJ IDEA, parece que esa transición es exitosa. De nuevo, volvemos a hablar de Google pero es que Android Studio está basado en este IDE y parece que también apuesta por una transición desde Eclipse. A parte de Eclipse, IntelliJ IDEA se bate en duelo contra Netbeans o entornos basados en Eclipse como el incipiente Spring Tool Suite apoyado en el soporte amplio del framework Spring.
Jenkins
Jenkins es una herramienta de integración continua que proporciona tareas automaticas de build y despliegue. Surgido como fork de Hudson, ha alcanzado más popularidad. La integración continua es un asunto muy importante en el desarrollo software, aún queda mucho camino por recorrer por gran parte de empresas que se asoman erróneamente a la integración continua como un par de pruebas en los entornos de pre. Entre las alternativas a Jenkins se encuentran Bamboo, TeamCity, Travis CI y Cruise Control.
JIRA y Confluence
JIRA es gestor de proyectos para organizar tareas e incidencias utilizado por más de 25.000 empresas en todo el mundo. Dispone de diversos distintas opciones para gestionar los proyectos, incluyendo metodologías ágiles con Greenhoper para poder crear tablones Kanban o Scrum dentro de Jira. Es una herramienta fundamental de comunicación entre desarrolladores.
Confluence forma parte del ecosistema de Atlassian y se integra con Jira como herramienta para documentación. Al ser colaborativo permite la comunicación versátil entre proyectos.
MongoDB
MongoDB es una consolidada base de datos NoSQL basada en documentos. La potencia con la que se integra con Java permite almacenar directamente objetos lo que facilita a los desarrolladores interactuar con ella hablando un lenguaje más natural de consulta.
El mercado noSQL continúa madurando poco a poco. Quizás MongoDB sea una de las que más trabajo está haciendo con una numerosa comunidad, pero existen importantes actores como Apache Cassandra, Redis, Hazelcast o Neo4J.
Scala
Scala es un lenguaje basado en la JVM orientado a objetos. Posee el poder de la abstracción moderna, traits (la unidad básica de reutilización de código en Scala) o implicits, checkeo de tipos nulos, bloques (fundamentales para tener un código sólido).
Empresas como Twitter y Linkedin apuestan por él en sus desarrollos con alta disponibilidad y escalabilidad. Uno de los puntos a favor es su gestión de la concurrencia y análisis en tiempo real.
Tomcat
Tomcat es quizás uno de los contenedores de aplicaciones Java más conocidos. El más veterano de la lista surgido en 1999 pero que sigue evolucionando como con Tomcat 8 adaptándose a las exigencias de las aplicaciones web modernas.
Le sigue otras alternativas como JBoss, el ligero Jetty, Glassfish, WebLogic, WebSphere o TomEE.
Vía | RebelLabs
En Genbeta Dev | Las diez tecnologías mejor pagadas que un programador puede aprender