Java, PHP, Node js... Und wenn die wahre Überraschung .NET wäre ?

Warum die Sprache von Microsoft den Schwergewichten der Webentwicklung in nichts nachsteht…

Illustrationsbild zu Artikel

Ich habe neulich einen Artikel mit dem Titel ❝ Warum Node.js besser ist als PHP und .NET? ❞ gelesen.

Und das hat mich motiviert, einen Überblick darüber zu geben, was .NET / C# heute wirklich bieten! Denn ja, es gibt Debatten, die schon immer gespalten haben: Berliner vs Pfannkuchen, Berliner oder Pfannkuchen, Ketchup oder Mayo zu Pommes, Java, PHP, Node.js oder .NET. So überraschend es auch klingen mag, im kleinen Kosmos der Entwickler tobt dieser Kampf seit Jahrzehnten.

Ja, jede dieser Sprachen hat ihre Qualitäten, ihre Anwendungsfälle, ihre Philosophie.

PHP, Motor des Aufstiegs des dynamischen Webs, hat sich im Laufe der Zeit weiterentwickelt. Aber seine Vergangenheit, geprägt von Stilfreiheit und eher variablen Ansätzen, wiegt noch immer auf der Klarheit und Kohärenz mancher moderner Projekte. Java, solide und stark in der Industrie vertreten, bleibt ein Grundpfeiler der Back-End-Welt und von Android. Es entwickelt sich vorsichtig, im Takt wohlüberlegter Updates, aus Angst, die Stabilität eines riesigen Produktionsökosystems zu gefährden. JavaScript zeigt eine unglaubliche Agilität, allgegenwärtig vom Frontend bis zum Backend mit Node.js, aber zum Preis eines sich ständig wandelnden Ökosystems, in dem jedes Quartal einen neuen Trend bringt.

Und dann gibt es .NET und C#, oft ins Microsoft-Lager abgeschoben, zu schnell beiseitegelegt wegen Vorurteilen, mangelnder Sichtbarkeit, oder als wäre es ein Schimpfwort... brrrr!

🟣 Spoiler: Das ist ganz und gar nicht der Fall !

Wenn Sie schon einmal Java geschrieben haben, haben Sie wahrscheinlich schon vor einer NullPointerException geschrien, die aus dem Nichts auftauchte, dieser gefürchtete Fehler, der auftritt, wenn man versucht, eine Variable zu verwenden… die gar nichts enthält. Und die, anstatt nett zu warnen, einfach alles ohne Vorwarnung abstürzen lässt.

In C# ermöglichen seit Version 8 die Nullable-Typen mit Annotationen (string?, int?), schon beim Kompilieren abzufangen, was Java meist erst zur Laufzeit durchlässt… ganz im Sinne von vorbeugen statt bestrafen. Gut, ich gebe es zu: die neueren Java-Versionen haben Fortschritte bei der Nullbehandlung gemacht. Aber es ist weder nativ noch so integriert wie in C#. Und ehrlich gesagt, bin ich mir nicht sicher, ob das wirklich alle Fälle abdeckt.

Selbst Lambda-Ausdrücke sind lesbar:

var books = myDb.Books.Where(b => b.Author == "agatha-christie").ToList();

Denn .NET ist nicht nur eine Sprache. Es ist ein komplettes Ökosystem, ein einheitlicher und kohärenter Werkzeugkasten, mit einer gemeinsamen Basis für Web (ASP .NET Core), Desktop und Mobile (.NET MAUI), oder auch die Cloud mit Azure.

Plattformübergreifendes .NET-Ökosystem für Web, Mobile, Cloud, Desktop und KI.

Mit .NET 6, 7 und 8 schreibt man eine einzige Anwendung und führt sie unter Linux, Windows, macOS, Power, Android oder iOS aus, ohne den Stack zu wechseln und ohne die Werkzeuge zu vervielfachen. Das Ganze mit dem gleichen SDK und nur einem einzigen Befehl:

dotnet build

Übrigens, wenn Sie Ihre App bereitstellen möchten, genügt eine einzige Zeile, um sie mit Docker zu containerisieren:

docker build -t myapp .

Visual Studio kann automatisch ein Dockerfile erzeugen, das Image bauen und veröffentlichen, ganz ohne eigenes Skript. In der Kommandozeile wird das Image in wenigen Sekunden gebaut, ist plattformübergreifend und bereit, wohin auch immer Sie es schicken möchten. Im Gegensatz dazu muss man bei den meisten der oben genannten Stacks alles selbst zusammensetzen: das Dockerfile von Hand schreiben, Abhängigkeiten verwalten, die Umgebung konfigurieren, alles mit externen Tools orchestrieren… kurz gesagt, es ist mühsam, fehleranfällig und selten einheitlich.

NET Core hat technisch wirklich an Reife gewonnen, und das ist kein Zufall. Schnell, leichtgewichtig, skalierbar, es kombiniert solide Performance mit einer Multithread-Architektur und etabliert sich als bevorzugte Lösung für moderne Backends. Mit etwa 610.000 Requests pro Sekunde laut den aktuellen TechEmpower Benchmarks liegt es vor den meisten PHP, und Node.js-Stacks, selbst in realistischen Szenarien mit Datenbank. Es gilt daher als eines der effizientesten Frameworks für Unternehmensprojekte und Web-Backends.

❝ .NET ist perfekt für Enterprise-Anwendungen… Node.js glänzt im Echtzeitbereich, aber .NET schlägt es bei CPU-Leistung und Sicherheit. ❞
TechMagic

Und um das volle Potenzial auszuschöpfen, braucht man natürlich auch Tools, die dem Niveau gerecht werden, zum Coden, Debuggen, Testen und Deployen unter guten Bedingungen. Und da ist es schwer, Visual Studio zu übertreffen (oder JetBrains Rider, wenn Sie es besonders anspruchsvoll mögen). Es ist vielleicht die komfortabelste und vollständigste IDE auf dem Markt.

Schrittweises Debugging sogar in asynchronem Code, mit „IntelliSense“-Autovervollständigung auf Steroiden, Hot Reload zum Ändern des Codes während der Ausführung, ohne die App neu zu starten, integriertes Profiling zur Analyse von CPU-, Speicher- oder Ausführungszeitverbrauch… alles ist darauf ausgelegt, den Entwicklungszyklus zu beschleunigen und zuverlässige Releases zu liefern.

Und wenn Sie ein Fan von Kommandozeile, sauberem Versioning und Automatisierung sind, ermöglichen Ihnen .NET CLI, GitHub Actions Workflows und DevOps-Tools die vollständige Orchestrierung: Kompilierung, Tests, Deployment und sogar Veröffentlichung in der Cloud.

Visual Studio IDE für C#-Projekt mit Entwicklungs- und Debugging-Tools.

Microsoft (und die .NET Foundation Community) treiben die Weiterentwicklung von C# schnell, aber sauber voran. Zur Erinnerung: C# (ausgesprochen C sharp) ist die Hauptsprache von .NET (dotnet). Alle zwei Jahre erscheint eine neue Version: stabil und konsistent, ohne bestehende Anwendungen zu zerstören. Moderne Ergänzungen wie das pattern matching ermöglichen es heute, Bedingungen viel lesbarer zu schreiben als eine Kette von if- oder switch-Anweisungen. Es ist nicht mehr nötig, den Typ zu prüfen und anschließend zu casten: C# übernimmt das für uns:

if(obj is Person p && p.Age > 18)
	Console.WriteLine($”{p.Name} ist volljährig”);

Oder die record types, eine einfache Möglichkeit, unveränderliche Objekte zu deklarieren – perfekt zur Darstellung von Business-Daten oder DTOs (Data Transfer Objects), mit Wertgleichheit, Destrukturierung und sogar Unterstützung für with (Kopie mit Änderung).

public record Book(string Title, string Author);

Anschließend können Sie Folgendes tun:

var book1 = new Book(“1984”, “Orwell”);
var book2 = book1 with {Title = “Animal Farm”};

Und da records anhand ihres Wertes verglichen werden:

book1 == book2 // false, da die Titel unterschiedlich sind

Eine weitere Neuerung, die das Leben erleichtert: die top-level statements. Kein Main() mehr nötig, um ein Programm zu starten:

Console.WriteLine("Hello Aumerial!");

Und das sind nur einige Beispiele. C# wird mit jeder Version präziser, und macht Tools und Skripte lesbarer und schneller zu schreiben. Es ist sauber, nützlich und pragmatisch.

Also ja, der Hype ist vielleicht woanders...

Aber ernsthafte Projekte suchen nach Stabilität, Performance und einer einfachen Architektur, die sich weiterentwickeln lässt, ohne alles zu zerstören. Und genau das bieten .NET und C#: ein solides Backend, eine seriöse UI und eine Plattform, die funktioniert überall.

Denn letztlich – was ist eigentlich der wahre Luxus in der Entwicklung ? Ein zuverlässiges Werkzeug zu haben, das täglich angenehm zu benutzen ist, durchgängig konsistent, und vollständig genug, um alle Bedürfnisse abzudecken, vom Web bis zum Embedded.

Mit .NET ist alles zentralisiert: eine einzige Sprache, ein einziges Runtime, eine einzige Entwicklungsumgebung. Ob Sie eine REST-API entwickeln, eine Mobile-App, einen Cloud-Service, eine Desktop-Oberfläche oder sogar ein Videospiel mit Unity… Sie verwenden immer die gleiche Syntax, die gleichen Konzepte, die gleiche Umgebung, und sehr oft den gleichen Einstiegspunkt (program.cs).

Ein einziges Framework, ein einziges Know-how, eine einzige Sprache, die man beherrschen muss.
Ein echter Vorteil, wenn man industrialisieren, ein Team aufbauen oder einfach die Kontrolle behalten will.

Also, wenn Ihnen das nächste Mal ein Kollege sagt:
Java, PHP und Node.js sind besser !

Stellen Sie ihm nur eine einzige Frage:
Hast du C# überhaupt mal richtig ausprobiert ? 😉”


Quentin Destrade