frameworks, libraries und tools

Ohne Frameworks, Libraries und “Tools” lässt sich praktisch keine Software mehr entwickeln. Dies ist mit ein Grund für den Siegeszug von Open Source, denn Software-Projekte bauen fast immer und zu grossen Teilen auf bereits bestehendem Code auf. Je besser man diese einsehen, verstehen und vor allem anpassen kann, desto besser eignen sie sich für Entwicklerinnen beim Projekteinsatz. 

Wer bereits von den 115 Sprachen im vorherigen Abschnitt (Link) überrascht war, muss sich festhalten. Frameworks und Libraries gibt es zu Tausenden. Wenn hier “nur” 220 genannt wurden, dürfte das daran liegen, dass die Studienteilnehmer nicht alles auflisten wollten, was irgendwo noch als Abhängigkeit in einem Projekt genutzt wird. (Eine Library oder ein Framework wird auch oft als Dependency/Abhängigkeit bezeichnet.) Auch lässt sich kontrovers diskutieren, was jetzt am ehesten ein Framework, eine Library oder ein Tool ist. Die Grenzen sind nicht klar und viele Projekte bewegen sich mehr oder weniger in allen Bereichen.

Dennoch ist die richtige Wahl des Frameworks genauso relevant für den Erfolg einer Lösung und die Zufriedenheit der Entwickler/innen wie bei den Programmiersprachen. Durch die Wahl des richtigen Frameworks lässt sich sogar manchmal eine wenig beliebte Sprache aufwerten und die Arbeit macht wieder Spass. Umgekehrt kann ein mühsames Framework oder eine anstrengende Bibliothek jeden Spass an einer Sprache zerstören.

Allgemein ist hier die Vergleichbarkeit weniger stark gegeben als bei Programmiersprachen, da die Frameworks, Libraries und Tools aus sehr unterschiedlichen Bereichen kommen können und nicht immer austauschbar sind.

>Relevante Daten als Online-Excel

Frameworks etc., die Entwickler/innen nutzen

Allgemein gab es auch hier weniger zusätzliche Nennungen über die Vorauswahl hinaus als 2019 – dies sicher auch, weil wir aufgrund der Rückmeldungen aus dem letzten Jahr die Vorauswahl adaptiert haben.

Diese Anpassungen aus 2019 sorgten vor allem bei Maven und Gradle für einen starken Effekt: Allein durch die Aufnahme in die Vorauswahl sprangen beide in die ersten Ränge. Das könnte damit zusammenhängen, dass beide Lösungen im Zusammenhang mit Java-Projekten gebraucht werden. Ähnlich verhält es sich bei Java EE und Hibernate, die im Vorjahr nicht als eigenes Framework gelistet waren und nach der Aufnahme in die Vorauswahl jetzt vorne mitmischen (beides sind Java-Lösungen). Die ursprüngliche Vorauswahl wurde aufgrund internationaler Statistiken zusammengestellt. Diese starken Abweichungen zeigen, wie stark die Schweiz nach wie vor auf Java baut, während international Python bereits die Führung übernommen hat.

Im Frontend-Bereich halten sich wieder Angular, React und Vue.js. Dabei liegt Angular klar und stabil vorne, während React etwas Boden gut machen konnte.

Zurückgefallen sind dagegen .NET und .NET Core – dies wohl auch, weil 2020 trotz gestiegener Gesamtteilnehmerzahl weniger C#- Entwickler am Survey teilnahmen.

Noch stärker ist der Rückgang beim einst als Killer-Framework gepriesenen Ruby on Rails – dies wohl auch, weil viele Frameworks in anderen Sprachen mittlerweile auf den von Rails etablierten Konzepten aufbauen. Die Rails-Konzepte leben also weiter, während die Sprache Ruby ihre Kraft als Treiber verloren zu haben scheint.

2020

  2019  
Node.js 317 Node.js 344
Spring 257 Angular 234
Maven 255 jQuery 224
Angular 230 Spring 194
jQuery 227 .NET 160
Gradle 159 .NET Core 149
Bootstrap 156 React 134
React 148 ASP.NET 109
Java EE 143 Vue.js 92
Hibernate 142 Ansible 68
.NET 135 Express 66
.NET 126 Xamarin 47
Ansible 96 Django 45
ASP.NET 95 Pandas 40
Vue.js 95 Cordova 39
Redux 66 Ruby on Rails 38
Express 62 TensorFlow 37
Jakarta 47 Flask 35
Vaadin 46 Symfony 31
Terraform 43 Laravel 28
Pandas 40 React Native 27
Jupyter 39 Unity 3D 26
Django 38 Puppet 21
TensorFlow 37 Spark 19
Flask 36 Hadoop 18
Laravel 31 Grails 17
Puppet 31 Torch/PyTorch 16
Cordova 30 Apache 11
Unity 3D 29 Chef 11
Symfony 28 Vaadin* 10
Qt 28 Unreal Engine 9
GWT 27 Flutter 9
Ruby on Rails 24 Terraform* 7
Xamarin 19 Docker* 7
React Native 19 Kubernetes* 6
Torch/PyTorch 18 Maven* 6
Apache Spark 14 Keras* 6
Spark 13 CryEngine 6
Flutter 13 Hibernate* 5
Play! Framework 13    
Keras 12    
Hadoop 9    
Grails 8    
Chef 6    
Unreal Engine 5    
Quarkus* 8    
Akka* 6    
Tailwind CSS* 5    

Frameworks etc., die Entwickler/innen gerne nutzen würden

  • Neu nutzen wollen viele Entwickler/innen weiterhin React, Vue.js und Angular – allerdings ist die Begeisterung im Vergleich zu 2019 zurückgegangen. Erklärt werden kann das wohl teilweise durch die gestiegene Adaption, zum Beispiel von React, das 2019 von 134 Entwickler/innen genutzt wurde und heuer von 148.  Nichtsdestotrotz dominieren Web Frontend Frameworks weiterhin die Top 5 dieser Rangliste.
  • Wichtig im Hinterkopf zu behalten ist hier, dass der swiss developer survey nicht vorwiegend “Webentwickler” anspricht, sondern dass immer mehr, wenn nicht sogar der grösste Teil der Entwickler/innen fürs Web entwickelt. Dies auch, weil mittlerweile praktisch alle Lösungen ins Web wandern und kaum mehr etwas als Desktop-Applikation gebaut wird.
  • Ein wenig zurück gerutscht ist Machine Learning mit TensorFlow, wobei es weiterhin in den  Top 5 ist. Auch PyTorch als Alternative zu TensorFlow hat nachgelassen.
  • Die Auswertung legt ausserdem nahe, dass das Absinken einiger Frameworks gegenüber dem Vorjahr nicht auf sinkendem Enthusiasmus beruht: Vielmehr wurden die Stimmen breiter verteilt und weniger gebündelt, während gleichzeitig die Menge abgegebener Stimmen in diesem Bereich um 10 Prozent nachliess, obwohl es rund 10 Prozent mehr Teilnehmern gab.
  • 2020 wurde ausserdem Quarkus aufgenommen – eine Lösung, die sich als die Wunderwaffe für Java in einer heute vermehrt containerisierten Welt versteht.
  • Ebenfalls spannend ist, dass zwar viele Entwickler/innen Java EE und nutzen, aber kaum jemand es neu nutzen möchte – im Unterschied zu Spring, welches heuer mehr genutzt wird, aber trotzdem anscheinend weiterhin Interesse weckt.

Gewünscht 2020

  Gewünscht 2019  
React 100 React 157
Vue.js 95 Vue.js 101
Node.js 73 TensorFlow 90
Angular 69 Angular 77
TensorFlow 69 Node.js 71
React 40 React Native 55
Ansible 36 Hadoop 45
Flutter 35 Unity 3D 43
Unreal Engine 34 Unreal Engine 42
Spring 32 .NET Core 36
.NET Core 31 Spring 35
Unity 3D 30 Flutter 36
Terraform 23 Xamarin 34
.NET 22 Ansible 32
Hadoop 21 Django 32
Xamarin 18 Spark 31
Gradle 18 .NET 26
Apache Spark 17 jQuery 21
jQuery 16 Apache Spark 21
Django 15 Torch/PyTorch 20
Ruby on Rails 14 Ruby on Rails 18
Spark 13 Cordova 17
Vaadin 13 Flask 17
Micronaut 13 Puppet 15
Jupyter 13 Express 13
Flask 12 Pandas 10
Laravel 12 Laravel 10
Torch/PyTorch 12 Chef 10
Qt 12 ASP.NET 9
Redux 12 CryEngine 8
Pandas 11 Symfony 7
Keras 11 Grails 7
Express 10    
Cordova 8    
Symfony 8    
Puppet 8    
ASP.NET 7    
Hibernate 7    
Quarkus* 6    
Bootstrap 6    
Grails 5    
CryEngine 5    
Jakarta EE 5    
Java EE 5    

Frameworks etc., die Entwickler/innen mögen

Bei dieser Frage sehen wir eine eifrigere Stimmabgabe als im letzten Kapitel sowie eine breitere Verteilung. Durch die Ergänzung der Vorauswahl um die Vorschläge von 2019 wird die Realität in der Schweiz ausserdem besser getroffen. Gleichzeitig sind viele Verschiebungen wohl durch  diese Ergänzungen erklärbar.

Eindeutig ist allerdings, dass die Top 10 von Java und JavaScript (TypeScript) Lösungen dominiert werden. 

2020

  2019  
Node.js 217 Node.js 173
Spring 210 Angular 158
Angular 178 Spring 141
React 168 .NET Core 139
Maven 141 React 121
jQuery 140 .NET 117
.NET Core 129 Vue.js 95
Bootstrap 121 jQuery 92
Vue.js 119 ASP.NET 58
Gradle 113 TensorFlow 48
.NET 112 Django 47
Hibernate 86 Ansible 46
Ansible 78 Unity 3D 45
Java EE 73 Xamarin 38
ASP.NET 67 Flask 38
TensorFlow 62 Laravel 38
Redux 58 React Native 35
Express 54 Ruby on Rails 35
Django 48 Express 31
Unity 3D 47 Pandas 31
Jupyter 45 Symfony 26
Flask 40 Unreal Engine 23
Terraform 40 Cordova 22
Qt 40 Spark 21
Pandas 39 Hadoop 17
Laravel 39 Puppet 17
Ruby on Rails 38 Flutter 17
Unreal Engine 34 Torch/PyTorch 15
React Native 33 Apache Spark 12
Jakarta EE 33 Grails 11
Symfony 32 Chef 7
Flutter 30 Qt* 5
Xamarin 28    
Vaadin 28    
Torch/PyTorch 23    
Puppet 22    
Hadoop 22    
Apache Spark 21    
Keras 19    
Spark 18    
Cordova 13    
Micronaut 13    
GWT 12    
Play! Framework 9    
Grails 8    
CryEngine 8    
Chef 6    
quarkus 5    

Frameworks etc., die Entwickler/innen nicht mögen

Auch hier gibt es eine stärkere Verteilung aufgrund der grösseren und zugeschnittenen Vorauswahl. Dabei zeigt sich wieder, dass es bei Lösungen mit vielen Anhängern und Nutzern auch viele Teilnehmer gibt, die sie nicht mögen.

Ein Ausreisser ist dabei Google Web Toolkit (GWT), welches mehr Leute “nicht mögen” als es nutzen. Dabei ist gut zu wissen, dass die meisten GWT-Applikationen mittlerweile durch Angular oder allgemein webbasierte Single Page Applikationen ersetzt werden. Hier werden Frontend und Backend durch eine gut definierte Schnittstelle getrennt. GWT hingegen stammt aus einer Zeit, als man Backend und Frontend eng koppeln wollte – eine Strategie, die sich genauso wenig bewährt hat wie Drag’n’Drop Entwicklungsumgebungen.

Im Mobile-Bereich sieht man, dass Lösungen wie Xamarin, React Native oder Cordova für App Entwicklung nicht viel Anklang finden. Vielleicht hängt das damit zusammen, dass es mittlerweile immer weniger Sinn macht, Apps zu entwickeln. Der Weg über den App Store ist eine grosse Hürde für den Nutzer und viele Menschen betrachten es als nervig Apps zu installieren, die sie nur einmal im Jahr nutzen.

Nicht mögen 2020

  Nicht mögen 2019   Genutzt 2020    
jQuery 159 Angular 99 Node.js 317
Angular 121 Node.js 91 Spring 257
Node.js 102 jQuery 90 Maven 255
Maven 83 Spring 47 Angular 230
Spring 69 Cordova 44 jQuery 227
.NET 64 Xamarin 43 Gradle 159
Java EE 63 ASP.NET 42 Bootstrap 156
ASP.NET 54 React 41 React 148
.NET Core 48 .NET Core 33 Java EE 143
GWT 45 .NET 32 Hibernate 142
React 44 Ruby on Rails 26 .NET 135
Cordova 42 React Native 20 .NET 126
Gradle 42 Symfony 19 Ansible 96
Xamarin 38 Django 16 ASP.NET 95
Hibernate 36 Flutter 16 Vue.js 95
Bootstrap 33 Laravel 15 Redux 66
React Native 29 Puppet 14 Express 62
Django 28 Ansible 12 Jakarta 47
Vaadin 26 Grails 12 Vaadin 46
Vue.js 25 Unity 3D 10 Terraform 43
Ansible 25 CryEngine 10 Pandas 40
Symfony 23 Vue.js 9 Jupyter 39
Puppet 23 TensorFlow 9 Django 38
Ruby on Rails 22 Flask 9 TensorFlow 37
Redux 22 Chef 9 Flask 36
Jakarta EE 20 Spark 8 Laravel 31
Laravel 19 Express 7 Puppet 31
Unity 3D 18 Hadoop 7 Cordova 30
Grails 16 Pandas 6 Unity 3D 29
Play! Framework 16     Symfony 28
Terraform 15     Qt 28
Express 14     GWT 27
Qt 14     Ruby on Rails 24
Hadoop 13     Xamarin 19
Chef 13     React Native 19
Flutter 13     Torch/PyTorch 18
Flask 12     Apache Spark 14
Spark 11     Spark 13
Pandas 10     Flutter 13
Apache Spark 10     Play! Framework 13
Jupyter 10     Keras 12
Keras 9     Hadoop 9
TensorFlow 8     Grails 8
Torch/PyTorch 7     Chef 6
Micronaut 7     Unreal Engine 5
Unreal Engine 6     Quarkus* 8
CryEngine 6     Akka* 6
        Tailwind CSS* 5

Frameworks etc., die Entwickler/innen einführen möchten

  • Auch hier sind die JavaScript Frameworks stark, wobei React, Vue.js und Angular alle gleichermassen stark zulegen konnten.
  • Neu hochgerutscht ist Spring, wohl als Ersatz für Java EE, wie wir in den folgenden Abschnitten sehen werden.
  • Spannender Newcomer ist hier sicher Terraform, welches in die gleiche Ecke wie Ansible oder Puppet gehört: Dabei geht es um die Darstellung von Infrastruktur als Code – sprich darum, die klassisch imperative Arbeitsweise von Systemadministratoren durch Code basierte Automatisierung zu ersetzen. Mit anderen Worten wird Infrastruktur, von Servern über Firewall bis hin zu Storage, komplett deklarativ definiert und dann durch Lösungen wie Terraform aufgesetzt, aktualisiert oder adaptiert. Somit werden Systemadministratoren zu Softwareentwicklern und Prozesse wie Versionsverwaltung als auch CI/CD können auch für Operations gelebt werden. Somit ist auch hier der Fokus auf “Everything is Code”.
  • Wer gehört hier nicht zu den üblichen Verdächtigen? Sicher TensorFlow mit Bezug auf Machine Learning,  Ansible mit dem Thema Automatisierung von Server-Infrastrukturen oder Spark, ein Framework für Kotlin zum Bau von Webapplikationen. Heisst dies, dass einige Java-Entwickler lieber mit Kotlin und Spark arbeiten würden als mit Spring?
  • Nicht-Entwickler mögen sich fragen, ob diese Thematik wirklich wichtig ist: Darauf ein definitives JA! Zeit und Energie, die man in das Lernen dieser Frameworks und Bibliotheken steckt, sind hoch. Die damit entwickelte Software bleibt und muss meist über einen langen Zeitraum weiterentwickelt und gewartet werden. Die ganze Welt drum herum ändert sich konstant, falls etwas nicht mithält, kann dies je nach Bereich sehr schmerzhaft für Entwickler und damit auch kostspielig für Firmen sein. 

2020

  2019  
React 72 Node.js 57
Node.js 64 React 49
Vue.js 58 Vue.js 47
Spring 56 .NET Core 44
.NET Core 55 TensorFlow 39
Angular 52 Angular 31
Gradle 48 Spring 29
Ansible 35 .NET 22
TensorFlow 32 Ansible 21
Terraform 24 React Native 18
Maven 24 Spark 15
Bootstrap 23 Xamarin 14
Flutter 21 Django 13
Redux 19 Unity 3D 13
jQuery 18 jQuery 12
Unreal Engine 17 Express 11
Pandas 14 Unreal Engine 11
.NET 13 Ruby on Rails 10
Laravel 13 Laravel 10
Hibernate 13 Hadoop 10
Jakarta EE 13 Pandas 10
Express 12 Torch/PyTorch 10
Flask 12 Cordova 9
React Native 12 Flutter 10
Java EE 12 Flask 9
ASP.NET 11 ASP.NET 7
Django 11 Puppet 6
Symfony 11 Apache Spark 6
Unity 3D 11 Symfony 5
Torch/PyTorch 11    
Jupyter 11    
Hadoop 9    
Apache Spark 9    
Qt 9    
Ruby on Rails 8    
Spark 7    
Micronaut 7    
Xamarin 6    
Vaadin 6    
Keras 6    
Puppet 5    

Frameworks etc., die Entwickler/innen ersetzen möchten

  • Sind Maven und Java EE in vorherigen Kapiteln durch die Aufnahme in die Vorauswahl direkt an die Spitze gesprungen, so sind sie auch bei den zu ersetzenden Lösungen ganz vorne mit dabei.
  • ASP.NET hat an Stimmen verloren, dafür hat .NET allgemein an Stimmen gewonnen – zum Ersetzen wohl gemerkt. Dabei ist jedoch wichtig zu wissen, dass als Ersatz in der Regel .NET Core am nächsten liegt, welches bei den einzuführenden Lösungen ganz vorne auf Platz 5 liegt.
  • jQuery wollen die meisten mittlerweile loswerden, obwohl sie es eigentlich gerne nutzen. Dies dürfte vor allem damit zusammenhängen, dass die zu Grunde liegende Technologie (klassisches JavaScript/ES5) ersetzt werden soll.

Ersetzen 2020

  Ersetzen 2019   Genutzt 2020    
jQuery 175 jQuery 122 Node.js 317
Maven 69 Angular 54 Spring 257
Java EE 67 ASP.NET 51 Maven 255
Angular 65 .NET 34 Angular 230
.NET 58 Node.js 30 jQuery 227
GWT 42 Cordova 29 Gradle 159
Node.js 41 Spring 28 Bootstrap 156
ASP.NET 32 Xamarin 20 React 148
Cordova 32 React 19 Java EE 143
Bootstrap 32 Ruby on Rails 18 Hibernate 142
Spring 29 .NET Core 13 .NET 135
Xamarin 25 Django 13 .NET 126
Hibernate 23 Symfony 13 Ansible 96
Vaadin 18 React Native 11 ASP.NET 95
Jakarta EE 18 Vue.js 10 Vue.js 95
Ruby on Rails 17 Puppet 10 Redux 66
.NET Core 15 Grails 10 Express 62
React 15 CryEngine 9 Jakarta 47
Puppet 15 Laravel 7 Vaadin 46
Vue.js 14 Flutter 7 Terraform 43
React Native 14 Express 6 Pandas 40
Redux 14 Unreal Engine 5 Jupyter 39
Django 13 Chef 5 Django 38
Gradle 12     TensorFlow 37
Ansible 11     Flask 36
Symfony 11     Laravel 31
Play! Framework 11     Puppet 31
Express 8     Cordova 30
Grails 8     Unity 3D 29
Laravel 7     Symfony 28
Unity 3D 7     Qt 28
Qt 7     GWT 27
TensorFlow 5     Ruby on Rails 24
Chef 5     Xamarin 19
Flutter 5     React Native 19
Terraform 5     Torch/PyTorch 18
Jupyter 5     Apache Spark 14
        Spark 13
        Flutter 13
        Play! Framework 13
        Keras 12
        Hadoop 9
        Grails 8
        Chef 6
        Unreal Engine 5
        Quarkus* 8
        Akka* 6
        Tailwind CSS* 5

Frameworks etc., die Entwickler/innen behalten wollen

Bei den zu behaltenden Frameworks ziehen wir wieder den Vergleich zu den “zu ersetzenden”.

  • So gehen die Meinungen bei Angular stark auseinander: 65 Entwickler/innen wollen Angular ersetzen, während 119 überzeugt sind, dass es weiter genutzt werden sollte. Das sind mehr als im Vorjahr. 
  • Anders verhält es sich bei Java EE – so empfehlen 67 Entwickler es zu ersetzen und nur 45 wollen es behalten. Besonders hart trifft es ausserdem GWT, welches 42 Entwickler/innen ersetzen möchten, aber nur 3 (deswegen nicht auf der Liste) behalten.

Behalten 2020

  Behalten 2019   Ersetzen 2020  
Spring 152 Node.js 145 jQuery 175
Node.js 142 Angular 101 Maven 69
Angular 119 Spring 101 Java EE 67
Maven 100 React 86 Angular 65
Gradle 84 .NET Core 68 .NET 58
React 80 .NET 59 GWT 42
.NET Core 79 jQuery 56 Node.js 41
Bootstrap 63 Vue.js 46 ASP.NET 32
Hibernate 61 ASP.NET 30 Cordova 32
.NET 60 Ansible 28 Bootstrap 32
jQuery 58 Django 26 Spring 29
Vue.js 50 Express 24 Xamarin 25
ASP.NET 45 TensorFlow 24 Hibernate 23
Java EE 45 Xamarin 19 Vaadin 18
Ansible 44 Symfony 16 Jakarta EE 18
Redux 29 Pandas 16 Ruby on Rails 17
Django 21 Unity 3D 15 .NET Core 15
Pandas 21 Ruby on Rails 14 React 15
Express 20 React Native 14 Puppet 15
Laravel 20 Flask 13 Vue.js 14
Symfony 19 Puppet 12 React Native 14
TensorFlow 18 Laravel 12 Redux 14
Qt 17 Cordova 11 Django 13
Ruby on Rails 16 Unreal Engine 8 Gradle 12
Unity 3D 16 Hadoop 7 Ansible 11
Vaadin 16 Spark 6 Symfony 11
Terraform 16 Torch/PyTorch 6 Play! Framework 11
Jakarta EE 16 Chef 5 Express 8
Flask 15     Grails 8
Puppet 12     Laravel 7
Xamarin 11     Unity 3D 7
Jupyter 11     Qt 7
Cordova 10     TensorFlow 5
Unreal Engine 9     Chef 5
React Native 8     Flutter 5
Spark 8     Terraform 5
Hadoop 8     Jupyter 5
Torch/PyTorch 7        
Flutter 5        

>Inhaltsverzeichnis Detail anzeigen Detail verbergen