main2 (1)

 

Una de los mayores dilemas que los desarrolladores enfrentan a diario es el de qué librerías utilizar. ¿Será mejor inclinarse por el nuevo framework que está rompiendo todos los esquemas o por el “aburrido”, ya probado y comprobado, que ha estado en la vuelta los últimos 10 años? Una de las principales claves del éxito de un framework es su comunidad de usuarios y colaboradores. Es cierto que puede ser muy fácil averiguar cuántos colaboradores están envueltos en un proyecto (sobre todo si es de código abierto), pero es mucho más difícil saber cuántos verdaderamente lo usan. Hemos optado por abordar el tema desde el punto de vista estadístico para poder responder a estas interrogantes.

Hoy en día, GitHub alberga más de un millón de proyectos, los cuales van desde pequeñas utilidades y aplicaciones de prueba hasta proyectos gigantes, que cuentan con una infraestructura masiva y cientos de colaboradores. Por lo tanto, es una fuente genuina, actualizada y diversa de datos y -gracias a ello- una señal indicativa de las tendencias dominantes, asimismo, en el ambiente del código cerrado y del software empresarial.

Elegimos los tres lenguajes principales en GitHub: Java, Ruby y JavaScript. Para cada uno de ellos, analizamos 10,000 proyectos (o sea, repositorios en GitHub), inclinándonos mayormente por aquellos que cuentan con el favoritismo de la mayoría de los desarrolladores.

Analizamos cuáles son los 100 componentes más utilizados, y los agrupamos en categorías (como por ejemplo Aplicación de Prueba, Base de Datos, Interfaz de Usuario, etc.). Resulta muy interesante ver cómo cambian para los diferentes lenguajes.

He aquí algunos hallazgos destacables y las 10 librerías más empleadas para cada lenguaje (también podrás ver la lista completa al final de este artículo):

Java

Haz clic aquí para ver el informe completo de Java

Java1

 

Estamos en temporada de Guava: el código de Google se ha puesto de moda. Las librerías de Spring y Apache predominan de tal forma que ya son parte del lenguaje. Más de un 25% de las 100 librerías más importantes pertenecen a alguno de los dos. Algo curioso es la preponderancia de librerías, como GWT y Guava, escritas por Google en Java, con un 7% de las mayores 100. Parece que también existe otra área en la cual Google tiene un papel clave en nuestras vidas.

BigData – Hadoop lidera en las gráficas. El procesamiento de datos conforma una parte importante de Java, con 16 de las 100 librerías más importantes dedicadas a la administración de bases de datos, en comparación a las 12 con las que cuenta Ruby y las 5 de JavaScript (por cierto, mayormente un lenguaje del lado del cliente).

Es interesante ver cómo Hadoop está cumpliendo con su promesa de ser la tecnología líder en big data con 168 entradas. Para ponernos en contexto, MySql, una de las bases de datos SQL más renombradas y populares, cuenta con 225 entradas, mientras que Postgre SQL, otra base de datos relacional muy conocida, tiene 121.

ElasticSearch, una nueva tecnología para realizar búsquedas a lo largo de conjuntos grandes de datos, está gozando de popularidad en GitHub, con más de 100 proyectos que la están empleando.

El desarrollo guiado por pruebas (TDD por sus siglas en inglés) está muy difundido en Java y Ruby (aunque aún no en JS): en los tres lenguajes vemos que las pruebas juegan un papel preponderante. En Java y Ruby, entre el 40 y el 50% de los proyectos revisados utilizan un framework de automatización de pruebas. Los más empleados son JUnit en el caso de Java y RSpec en el de Ruby. JavaScript cuenta con un porcentaje más bajo (alrededor del 25%) de proyectos que utilicen frameworks de pruebas.

Mocking (simulación), un método para simular objetos de la vida real durante las pruebas y el desarrollo, ha ganado un montón de interesados. Actualmente lo aplican el 10% de los proyectos en Java y el 7% de los proyectos en Ruby. En JavaScript, el mocking prácticamente aún no existe.

Find the Crap in Your Java App

Show me how >>

Fred

Ruby

Ruby

SQL aún domina. Aunque las bases de datos NoSQL hacen furor en esta época, las bases de datos relacionales (SQL) aún dominan el mundo de Ruby: SQLite, PostgreSQL y MySQL son utilizadas en un 25% de los proyectos, mientras que Redis y MongoDB apenas aparecen en un 3% de ellos.

MongoDB es aún, de todos modos, popular en Ruby, donde cuenta con 185 entradas, el doble de lo que ocurre en Java.

En el desarrollo web apreciamos que, aunque hay nuevos frameworks que se han ganado la atención en los últimos años (como Sinatra, con 570 entradas), Ruby aún se centra en Rails, en el que se desarrollan 7000 proyectos. Para servidores web, Thin es el más empleado, con 487 entradas, el doble que Unicorn.

CoffeeScript, una nueva capa de lenguaje montada sobre JavaScript, parece ser bien recibido entre los desarrolladores web de Ruby, con más de 1000 proyectos.

Twitter ha producido un profundo impacto en Ruby, con 3 librerías entre las 100 más importantes y 382 proyectos empleándolas. Si bien es cierto que esas cifras son altas, no se puede comparar a la influencia de Google en Java.

JavaScript

Javascript

JS está fragmentado. La mayor cifra de utilización que los principales componentes alcanzan en Java es un 30% de los proyectos. En el caso de Ruby, ese tope por ahora es del 20%. En JS, no llega ni al 10%. Como JavaScript está en permanente (y veloz) evolución para soportar cada vez más tipos de aplicaciones, muchas nuevas posibilidades aún no han sido absorbidas en el lenguaje o en las librerías estándar. Por ese motivo, encontramos un 50% más de frameworks empleados en JavaScript que en Ruby y Java dentro de las 100 más importantes, demostrando ello que este lenguaje todavía en sus etapas tempranas.

Grunt es grande. El framework de automatización Grunt juega un papel bien importante en el desarrollo en JS (y sobre todo el node.js) con un 23% de las 100 librerías más importantes conectándose a él. Grunt parece haber puesto la pieza que faltaba en el ciclo de compilación, prueba e implementación en JS. Mientras, Java y otros lenguajes manejan esto de forma externa por medio de otras reconocidas herramientas, tales como Maven o Jenkins.

Las redes todavía representan un desafío. Una parte significativa de las librerías JavaScript (un 7% de las 100 más importantes) se orienta a las redes y a la comunicación cliente/servidor. Hablamos de tres veces más que lo que Java y Ruby destinan a ese fin. La razón detrás de ello radica en que los desarrolladores web deben lidiar con un ecosistema fragmentado del lado del navegador y a la etapa temprana de desarrollo en que se encuentran sus servidores.

En desarrollo web del lado del servidor, el framework express para el node.js es el que lidera las tablas con 631 entradas.

Pugnando por la estructura. JavaScript también tiene el mayor número de extensiones de lenguajes: 844 entradas. Es interesante remarcar que aunque JavaScript es, en sí mismo, un lenguaje realmente flexible, los desarrolladores buscan incesantemente maneras de adaptarlo a algo más estructurado. Underscore.js, que brinda posibilidades programáticas funcionales similares a las que encontramos en lenguajes más estructurados como Scala, cuenta con 416 entradas, lo que la convierte en la quinta librería JS más notoria.

Haz clic aquí para ver la lista completa de las 100 librerías más importantes

email
Tal is the CEO of OverOps. Tal has been designing scalable, real-time Java and C++ applications for the past 15 years. He still enjoys analyzing a good bug though, and instrumenting code. In his free time Tal plays Jazz drums.