main2 (1)

Eines der größten Alltagsdilemmas für Entwickler ist die Frage, welche Programmbibliothek man am besten nutzt. Soll man das gerade ach-so-beliebte neue Framework benutzten, oder dasselbe alte, langweilige aber bewährte, das es schon seit zehn Jahren gibt? Einer der Haupterfolgsfaktoren von Frameworks sind sie User- und Contributor-Gemeinschaften. Es mag einfach sein, herauszufinden, wie viele Leute an einem Projekt mitwirken (vor allem bei Open-Source-Projekten), aber es ist schon schwieriger, zu sagen, wie viele es eigentlich benutzen. Wir haben uns zu einem datenbasierten Ansatz entschlossen, um diese Fragen zu beantworten.

GitHub hostet mittlerweile mehr al seine Million Projekte. Dazu gehören kleine Utilitys und Testanwendungen bis hin zu Projekten mit massiver Infrastruktur und hunderten von Beteiligten. Damit bietet GitHub einen recht vielfältigen und aktuellen Datensatz, der auch Hinweise auf die Trends in der Closed-Source- und Firmen-Software gibt.

Wir haben die drei beliebtesten Sprachen auf GitHub ausgewählt – Java, Ruby und JavaScript. Für jede von ihnen haben wir 10.000 Projekte analysiert (also GitHub-Repositories), darunter die, die bei den Entwicklern am beliebtesten sind.
Wir haben die 100 meistgenutzten Komponenten analysiert und in verschiedenen Kategorien (z.B. Testing, DB, UI usw.) zusammengefasst. Die Unterschiede zwischen den Sprachen sind ziemlich interessant.

Hier sind einige interessante Ergebnisse und die zehn meistgenutzten Bibliotheken für jede Sprache (die vollständige Liste findet sich am Ende dieses Posts).

Java

Hie geht’s zum vollständigen Java-Bericht

Java1

Es ist Guava-Zeit – Google hat sich dem Mainstream angeschlossen. Spring- und Apache-Bibliotheken sind so verbreitet, dass sie quasi Teil der Sprache sind. Über 25% der Top-100-Bibliotheken sind ziemlich genau auf beide verteilt. Ein bisschen überraschend ist die Verbreitung der von Google erstellten Bibliotheken in Java, wie GWT und Guava, mit über 7% der Top 100. Also wohl noch ein Bereich in unserem Leben, in dem Google eine wichtige Rolle spielt.

BigData – Hadoop führt. Datenverarbeitung ist ein großer Bestandteil von Java. 16 der Top-100-Bibliotheken konzentrieren sich auf Datenbankverwaltung, im Gegensatz zu 12 bei Ruby und 5 in JavaScript (zugegebenermaßen immer noch eher eine Client-Sprache).

Interessanterweise kommt Hadoop den Erwartungen nach und ist die führende große Datentechnologie mit 168 Einträgen. Im Vergleich: MySql, eine der bekanntesten und verbreitesten SQL-Datenbanken, hat 225 Einträge. Postgre SQL, eine andere bekannte relationale Datenbank, kommt auf 121.

ElasticSearch, eine neue Technologie zum Durchsuchen großer Datensätze, ist mit über 100 Projekten auf GitHub ebenfalls beliebt

Testgetriebene Entwicklung (TDD) ist ein Riesenthema in Java und Ruby (noch nicht in JS) – in allen drei Sprachen spielt Testen eine sehr große Rolle. In Java und Ruby benutzen 40-50% der betrachteten Projekte ein automatisiertes Test-Framework. Die Größten sind dabei JUnit in Java und RSpec in Ruby. In JavaScript ist der Prozentsatz der Projekte, die in Test-Framework nutzen, wesentlich geringer: 25%.

Mocking, eine Simulationsmethode für Projekte aus der realen Welt in Test und Entwicklung, hat rasant an Fahrt gewonnen und wird jetzt in 10% der Java- und 7% der Ruby-Projekte eingesetzt. In JavaScript ist Mocking allerdings noch nicht angekommen.

Ruby

Ruby

SQL führ weiterhin. NoSQL-Datenbanken sind zwar der angesagte Trend, aber relationale Datenbanken führen weiterhin in der Ruby-Welt – Sqlite, postgreSQL und MySql werden in 25% der Projekte eingesetzt, während Redis und mongo nur in 3% aller Projekte auftauchen.

MongoDB ist trotzdem beliebt mit 185 Einträgen in Rube – doppelt so viele Projekte wie in Java.

In der Web-Entwicklung haben neue Frameworks in den letzen Jahren zwar Aufwind erhalten (z.B. Sinatra mit 570 Einträgen), aber Ruby ist immer noch Rails-fixiert, mit über 7000 Projekten. Bei Web-Servern wird Thin (mit 487 Einträgen) doppelt so häufig in Projekten verwendet wie Unicorn.

CoffeeScript, eine neue in JavaScript transcompilierte Sprachebene, wird von den Ruby-Web-Entwicklern gut angenommen und kommt auf über 1000 Projekte.

Twitter hat ebenfalls Einzug in Ruby gehalten, mit 3 Bibliotheken in den Top 100 und 382 Projekten insgesamt. Das ist ziemlich groß, aber trotzdem nicht so groß wie Googles Einfluss auf Java.

JavaScript

Javascript

JS ist gesplittert. Die Top-Komponenten erreichen 30% der Java-Projekte; in Ruby sind das ungefähr 20%. In JavaScript sind es allerdings nicht einmal zehn Prozent. JS entwickelt sich rasant, um mehr Arten von Anwendungen zu unterstützen, und viele neue Fähigkeiten wurden von der Sprache oder den Standard Bibliotheken noch nicht aufgenommen. Deshalb sehen wir in den Top 100 in JS 50% mehr Frameworks als in Java und Ruby, was bezeugt, dass die Sprache noch in den Kinderschuhen steckt.

Grunt ist eine Riesensache. Das Grunt-Automatisierungs Framework spielt eine sehr große Rolle in der JS-Entwicklung (vor allem bei node.js): Über 23% der Top-100-Bibliotheken machen davon Gebrauch. Grunt scheint die Lücke im Erstellungs, Test- und Entwicklungs Kreislauf von JS zu schließen. Dies wird projektextern in Sprachen wie Java durch andere große Tools wie Maven oder Jenkins umgesetzt.

Netzwerke sind immer noch ein großes Problem. Viele JavaScript-Bibliotheken (7% der Top 100) konzentrieren sich auf Netzwerke und Client-Server-Kommunikation. Das ist dreimal mehr als in Java und Ruby. Wahrscheinlich liegt dies einerseits daran, dass es Web-Entwickler auf der Browserseite mit einem gesplitterten Ökosystem zu tun haben und andererseits daran, dass der Server-Stack noch ziemlich jung ist.
Bei der Web-Entwicklung auf Server-Seite führt das express-Framework für node.js mit 631 Einträgen.

Strukturbestrebungen. JavaScript verfügt außerdem über die größte Anzahl an Spracherweiterungen mit 844 Einträgen. JavaSCript ist zwar eine flexible Sprache, aber interessanterweise versuchen die Entwickler, sie zu etwas Strukturierterem zu formen. Underscore.js bietet funktionale Programmiermöglichkeiten ähnlichen jenen der strukturierteren Sprachen wie Scala und kommt auf 416 Einträge, womit es die fünfthäufigste JS-Bibliothek ist.

Hier geht es zur vollständigen Liste der Top-100 Bibliotheken.

Duke-T-shirt

Java/Scala developers – Install Takipi now and get a free T-shirt

Yoda

Join over 30,254 Java developers

Get new posts directly to your inbox about Java, Scala and everything in between

Watch a live demo
Yoda
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.