Frontend-Entwicklung ist überall um uns herum. Wann immer Sie durch das Internet stöbern und auf einer Seite landen, schauen Sie sich im Wesentlichen etwas an, das von einem Frontend-Entwickler erstellt wurde. Frontend-Entwickler sind dafür verantwortlich, das ursprüngliche Konzept (erstellt von einem Designer, Kunden oder jemand anderem) durch die Verwendung von Code in eine voll funktionsfähige Website umzusetzen.
Elemente wie das Logo, Buttons, Benutzerinteraktivität, das gesamte Layout der Website und wie Benutzer damit interagieren, werden alle vom Frontend-Entwickler erstellt. Darüber hinaus sind Entwickler auch dafür verantwortlich, dass die Website auf den meisten gängigen Geräten gut aussieht (auch bekannt als Responsive Design), einschließlich Smartphones, Tablets und Desktop-Computern.
Wichtigste Erkenntnisse
Kerntechnologien: HTML, CSS und JavaScript bleiben das wesentliche Trio für alle Webentwicklung.
Framework-Auswahl: React führt in Popularität und Flexibilität, während Angular und Vue strukturierte Alternativen für komplexe SPAs bieten.
Mobile Strategie: Wählen Sie Cross-Platform-Tools wie Flutter oder React Native für Kosteneffizienz oder native Sprachen (Swift/Kotlin) für maximale Performance.
Typsicherheit: TypeScript wird rasch zum Industriestandard gegenüber reinem JavaScript für große, wartbare Codebasen.
Performance-Optimierung: Moderne Frameworks wie Next.js und Svelte priorisieren die Reduzierung der clientseitigen Last durch Aktivierung von Server-Side-Rendering und Kompilierung.

In unserem Backend-Programmiersprachen-Leitfaden haben wir eine Liste der heute beliebtesten und am weitesten verbreiteten Backend-Programmiersprachen zusammengestellt. Die Implementierung von Frontend-Design erfordert ebenfalls Programmiersprachen, deren Funktionalitäten manchmal zwischen den beiden wichtigsten Entwicklungsparadigmen (Frontend und Backend) überlappen können. Ein Frontend-Entwickler könnte mit beiden vertraut sein, in welchem Fall sich das Paradigma zu Fullstack-Entwicklung ändert.
Aber das ist nur Semantik.
Lassen Sie uns nun untersuchen, welche Frontend-Sprachen es auf die Liste geschafft haben, ihre Verwendungszwecke und warum sie von praktizierenden Frontend-Entwicklern als gut angesehen werden.
HTML & CSS (HTML5 & CSS3)
HTML (HyperText Markup Language) gilt als die Standard-Auszeichnungssprache für Dokumente, die im Web angezeigt werden sollen, auch bekannt als Webseiten.
HTML wird normalerweise von CSS (Cascading Style Sheets) unterstützt, um einen visuell ansprechenderen Ansatz zu ermöglichen, und von JavaScript für das Hinzufügen interaktiver Elemente zu einer Website.
Die Hauptfunktionalitäten von HTML umfassen das Erstellen von Abschnitten, Links und Absätzen durch die Nutzung von Tags, Attributen und Elementen. HTML ist keine Programmiersprache (per Definition ist es eher einer Skriptsprache zugeordnet), da es Benutzern keine dynamischen Funktionalitäten bieten kann.

CSS gilt zusammen mit HTML und JavaScript als das ultimative Trio von Sprachen, die das gesamte World Wide Web unterstützen. CSS ist eine Stilsprache, was bedeutet, dass sie Seite an Seite mit HTML arbeitet, um den Dokumenten (Webseiten) ein visuell ansprechenderes Aussehen zu verleihen und dem Endbenutzer eine bessere Erfahrung zu bieten.
Sowohl HTML als auch CSS eignen sich gut für:
Webentwicklung: Entwickler haben die kreative Freiheit zu gestalten, wie HTML-Code in einem Browser angezeigt wird, einschließlich des Hinzufügens von Links, Text, Videos und anderen Mediendateien.
Navigation: Die Verwendung von HTML konzentriert sich hauptsächlich auf die Anordnung von Hyperlinks oder einfach Links. Benutzer können durch Klicken auf diese Links einfach zwischen Websites, Seiten und anderen Webmedien navigieren.
Web-Formatierung: HTML macht es einfach, Dokumente im Web zu organisieren, zu priorisieren und anzuzeigen, ähnlich wie ein Textverarbeitungsprogramm wie Microsoft Word.
Die aktuellen (neuesten) Versionen von HTML und CSS sind HTML5 und CSS3. Sie arbeiten zusammen, um interaktive Webseiten zu erstellen, die sowohl mit Desktop- als auch mit mobilen Browsern kompatibel sind.
In diesem Zusammenhang gehören zu den heute beliebtesten HTML- und CSS-Frameworks:
Bootstrap
Bootstrap ist das beliebteste und am weitesten verbreitete CSS-Framework zur Entwicklung schneller, responsiver und ansprechender Websites.
Die neueste Version von Bootstrap ist Bootstrap 5, die sehr einfach zu erlernen und hauptsächlich für die Entwicklung von Mobile-First-Websites gedacht ist. Dabei werden Bootstrap-Elemente wie Container, Tabellen, Schaltflächen, Farben, Karten und viele weitere Funktionen des Bootstrap-Frameworks genutzt.
Bootstrap ist bei Webentwicklern sehr beliebt aufgrund seiner:
Rastersystem: Bootstrap verfügt über ein vordefiniertes System für responsive Raster, das den Aufwand beseitigt, eigene Raster von Grund auf hart kodieren zu müssen. Darüber hinaus haben Sie auch die Möglichkeit, benutzerdefinierte Haltepunkte für jede Spalte in Ihrem Raster zu definieren. Neben dem standardmäßigen Haltepunkt-Snap können Sie auch zwischen extra klein, klein, mittel, groß und schließlich extra groß wählen.
Responsive Bilder: In Bootstrap können Sie Bilder automatisch basierend auf der Bildschirmgröße des Geräts skalieren. Um diese Herausforderung zu lösen, müssen Sie lediglich die Klasse img-responsive zu den Bildern hinzufügen, die Sie ändern möchten, und die CSS-Regel erledigt den Rest. Darüber hinaus gibt es weitere sehr nützliche Klassen wie img-rounded und img-circle, die Ihnen helfen, die Bildform noch weiter nach Ihren Wünschen anzupassen.
Komponenten: Bootstrap bietet außerdem Dutzende nützlicher Komponenten, um die Benutzererfahrung Ihrer Website weiter zu bereichern. Dinge wie Dropdown-Menüs, Vorschaubilder, Fortschrittsbalken und Navigationsleisten sind nur einige der Funktionen, die Sie hinzufügen können, um die Funktionalitäten Ihrer Website sofort zu verbessern – ganz ohne auf Code zurückgreifen zu müssen! Das ist eine Menge Feuerkraft direkt zur Hand.
Es gibt jedoch auch einige kleinere Nachteile bei der Verwendung von Bootstrap. Einer dieser Nachteile kann mehr oder weniger seine Größe sein. Tatsächlich ist dies eine der Hauptdebatten unter Entwicklern, die bis heute noch andauert.
Das Dilemma ist folgendes: Die Verwendung von Frameworks (in jeder Sprache) beschleunigt den Entwicklungsprozess erheblich, fügt jedoch der Liste der zu berücksichtigenden Dinge weitere Punkte hinzu, wie redundanten Code, erhöhte Dateigröße, potenzielle Sicherheitslücken und mehr.
Glücklicherweise ist der Bootstrap-Download in hohem Maße anpassbar, sodass Sie auswählen können, welche Funktionen ein- und welche ausgeschlossen werden sollen. Dies wird die Größe Ihrer Bootstrap-Datei erheblich reduzieren und das zusätzliche Gewicht verringern, was ein schnelleres clientseitiges Laden in Ihrer Webanwendung ermöglicht.
Tailwind
Tailwind ist ein CSS-Framework, das Entwicklern ermöglicht, schnell benutzerdefinierte Benutzeroberflächen zu erstellen. Es gilt als ein niedrigschwelliges, hochgradig anpassbares CSS-Framework, das alle Funktionen zur Erstellung intuitiver Designs bereitstellt, ohne globale vordefinierte Stile überschreiben zu müssen.
Tailwind legt keine gestalterischen Einschränkungen für das Aussehen Ihrer Website fest. Um Ihre spezifischen Stile zu erstellen oder einzufügen, kombinieren Sie einfach mehrere kleinere Tailwind-Komponenten zu einer vollwertigen Benutzeroberfläche. Die Funktionsweise dabei ist, dass Tailwind eine sogenannte rohe CSS-Datei übernimmt, diese weiterverarbeitet und eine endgültige Ausgabe erstellt.
Einige Vorteile der Verwendung von Tailwind sind:
Der Code wird auf ein absolutes Minimum reduziert.
Alle Designs sind vollständig anpassbar und bereit, für die Erstellung Ihrer bevorzugten Website-Komponenten verwendet zu werden.
Die Benennung von CSS-Klassen und CSS-IDs wird erheblich verbessert.
Unterstützt responsives Design.
Dateien können lokal geändert werden, ohne das gesamte CSS-Design zu beeinträchtigen.
JavaScript
JavaScript ist eine beliebte Sprache, die viele Website-Funktionalitäten erstellen kann, mit einem Hauptaugenmerk auf der Entwicklung der (einen oder mehreren) interaktiven Teile der Website.
Im Frontend-Design eignet sich JavaScript-Code zum Schreiben, Anordnen und Platzieren verschiedener UI-Komponenten wie Tabs, Akkordeon-Menüs, Pop-ups, Bild-Slider und andere interaktive Elemente an beliebiger Stelle Ihrer Website.
Und seine Anwendungsfälle hören dort nicht auf.
JavaScript kann auch für subtilere Operationen verwendet werden. Beispielsweise kann das Anklicken eines Kontrollkästchens in einem Formular ein Pop-up auslösen, das Ihnen eine andere Frage stellt. Zu diesem Zweck kann JavaScript Ihnen zusätzliche Funktionalitäten bieten, die andernfalls durch die alleinige Verwendung der Basisversionen von HTML und CSS nicht verfügbar wären.
Drittens kann JavaScript sich an Benutzeraktivitäten anpassen und später dynamische Änderungen an der Website vornehmen. All dies ist möglich, ohne die gesamte Seite neu zu laden. Das Benutzererlebnis wird nahtloser, schneller und weitaus ansprechender, während die dynamische Natur der Website dazu beiträgt, die Absprungrate zu senken und Besucher länger auf der Seite zu halten.
Schließlich nutzt JavaScript auch AJAX. In der Softwareentwicklung steht AJAX für Asynchrones JavaScript und XML. AJAX ist eine Sammlung mehrerer Tools, Lösungen und Entwicklungstechniken, die verschiedene Webtechnologien verwendet, um asynchrone Webanwendungen zu erstellen. Vereinfacht ausgedrückt ist es eine Funktionalität, die es einer Webseite ermöglicht, mit einem Webserver zu kommunizieren, ohne dass der Server die Seite neu laden muss.

Nehmen wir zum Beispiel eine Liste von Veranstaltungen, die auf einer Seite vorhanden sind. Angenommen, diese Veranstaltungen sind nach Monat, Veranstaltungstyp und Preis sortiert. Durch das Ändern des Filters, um den Veranstaltungstyp zu priorisieren (anstatt die neuesten anzuzeigen), wird ein Signal gesendet, das einen Hintergrundvorgang auslöst, um die Liste zu aktualisieren, ohne die Seite neu zu laden. Der Benutzer bleibt genau dort, wo er war, die Seite ruckelt nicht, und das Gesamterlebnis ist dadurch weitaus angenehmer als es sonst wäre.
Einige beliebte JavaScript-Frameworks, die auf die Frontend-Entwicklung ausgerichtet sind, sind nachfolgend aufgeführt.
TypeScript
TypeScript ist eine statisch typisierte Obermenge von JavaScript, die Benutzern Schnittstellen, Klassen und Debugging zur Kompilierungszeit bietet.

Im Jahr 2021 ergab eine StackOverflow-Umfrage, dass TypeScript bei 30 % der befragten Entwickler beliebt war. Bis 2022 stieg die Zahl auf 40 %.
Darüber hinaus kann Ihnen das Hinzufügen statischer Typisierung zu JavaScript zusätzliche Funktionalitäten bieten, von denen drei besonders hervorstechen:
Sie können versteckte Fehler wie das „gefürchtete"
undefined is not a functionschnell beheben.Sie können die Komplexität großangelegter Systeme leichter navigieren.
Sie können Code leichter refaktorieren.
Die größere Flexibilität der dynamischen Typisierung ist zugleich ihr eigener Nachteil. Sie führt häufig zu Fehlern, die die Code-Effizienz verringern und die Kosten durch das Hinzufügen neuer Codezeilen erhöhen können.
Die Unfähigkeit von JavaScript, Typen und Fehlerprüfungen während des Debuggings zu unterstützen, ist eine suboptimale Wahl für serverseitigen Code in komplexen Projekten. Im Gegensatz dazu unterstützt TypeScript die meisten Funktionalitäten von JavaScript, mit dem zusätzlichen Vorteil, dass es auch skaliert.
Einer der Hauptgründe, warum TypeScript in den letzten Jahren an Popularität gewonnen hat, ist jedoch, dass Angular auf TypeScript basiert. Auf Angular werden wir später noch näher eingehen.
Und wie steht es mit einigen Nachteilen?
Erfordert Kompilierung: JavaScript erfordert keine Kompilierung des Codes, während TypeScript dies tut. Die meisten mit JavaScript erstellten Anwendungen erfordern jedoch einen Build-Vorgang zum Ausführen. Ein Build-Schritt ist bei JavaScript immer erforderlich.
Hat ein komplexes Typisierungssystem: Manchmal kann das Typisierungssystem in TypeScript übermäßig komplex sein. Dies ist kein ausschließlicher Nachteil von TypeScript, sondern vielmehr ein Nachteil, der eine vollständige JavaScript-Interoperabilität verhindert.
Vermittelt ein „falsches" Sicherheitsgefühl: Das Typisierungssystem in TypeScript kann Entwickler manchmal in ein falsches Sicherheitsgefühl „wiegen". Tatsächlich kann eine zu starke Abhängigkeit von TypeScript selbst, um alle Unvollkommenheiten in Ihrem Code zu beheben, zu Selbstgefälligkeit führen und letztendlich dazu führen, dass man seinen Vorsprung verliert. TypeScript ist nicht zu 100 % kugelsicher.
TypeScript VS JavaScript
Die Entscheidung zwischen JavaScript und TypeScript für die Frontend-Entwicklung hängt letztendlich von einer Sache ab: dem Kontext Ihres Vorhabens. Wenn Sie jedoch wirklich eine Wahl treffen müssen, lässt sich die Entscheidung, welche der beiden Optionen besser ist, auf mehrere Überlegungen reduzieren:
Merkmal | JavaScript | TypeScript |
|---|---|---|
Leistung | Native Ausführung; die Leistung hängt von der Codequalität ab. | Muss zu JS kompiliert werden; die Leistung ist an das resultierende JS gebunden. |
Beliebtheit | Von 98 % der Websites verwendet; der Industriestandard. | Viertbeliebteste Sprache; wächst in professionellen Umgebungen rasant. |
Skalierung | Am besten für kleine bis mittelgroße Anwendungen geeignet; kann schwer zu verwalten werden. | Für großangelegte Systeme konzipiert; bietet besseres Refactoring und Debugging. |
React.js
React.js ist die beliebteste JavaScript-Bibliothek zur Entwicklung von Webanwendungen und zur Erstellung schneller, interaktiver und zuverlässiger Benutzeroberflächen.
Derzeit gibt es eine anhaltende Debatte darüber, ob React.js eine Bibliothek oder ein Framework ist, wobei die Entwickler gespalten sind. In Bezug auf seine Funktionalität ist React.js nur für das Rendering der Benutzeroberfläche (UI) zuständig und überlässt die meisten anderen Funktionalitäten dem Projektentwickler, um sie nach seinen Vorstellungen zusammenzustellen.
In Bezug auf die Verfügbarkeit von Tools, Funktionalität und den allgemeinen Arbeitsablauf kann React.js jedoch durchaus auch als Framework betrachtet werden. Der einfachste Ansatz ist es, anzuerkennen, dass React.js Funktionalitäten teilt, die sowohl den Definitionen von Bibliotheken als auch von Frameworks entsprechen, und damit weiterzumachen.
Der Hauptanwendungsfall von React.js, den alle JavaScript-Bibliotheken und Frameworks ebenfalls teilen, ist die Erstellung dynamischer Benutzeroberflächen, die Aktualisierungen ohne Seitenaktualisierung ermöglichen. Neben der Vermeidung der Notwendigkeit, den Bildschirm ständig zu aktualisieren, vermeidet diese Art von Technologie auch die Verarbeitung des gesamten Codes.
Aber warum ist React.js so beliebt?
Zunächst wurde React.js von Ingenieuren bei Facebook (heute Meta) entwickelt, was zu seiner heutigen Beliebtheit beigetragen haben mag oder auch nicht.
Noch wichtiger ist, dass React.js möglicherweise eine der flexibelsten (wenn nicht die flexibelste) JavaScript-Bibliotheken ist, mit einer linearen Lernkurve. Das bedeutet, dass Entwickler, die von einem anderen Tech-Stack kommen, React.js leicht übernehmen können, ohne ihr gesamtes Programmierparadigma neu gestalten oder das Programmieren von Grund auf neu erlernen zu müssen.

Es ist kein Geheimnis, dass React.js in letzter Zeit täglich komplexer wird. Um diesem Trend entgegenzuwirken, ist ein neuer Bedarf entstanden: die Entwicklung weiterer React.js-Frameworks, um den Arbeitsablauf zu verbessern und der bestehenden JS-Bibliothek neue Funktionalitäten hinzuzufügen.
Nachfolgend finden Sie einige der beliebtesten React.js-Frameworks:
Redux
Redux ist ein quelloffener, vorhersehbarer Zustands-Container (ebenfalls eine JavaScript-Bibliothek) zur Verwaltung von JavaScript-Anwendungen. Es wird hauptsächlich zusammen mit React.js verwendet, um den Zustand Ihrer Apps zu verbessern und zu zentralisieren, kann aber auch mit anderen JavaScript-Bibliotheken, Anwendungen oder anderen JS-kompatiblen Tools verwendet werden.
Redux gilt als leichtgewichtig (nur 2KB groß, einschließlich Abhängigkeiten), sodass Entwickler sich keine Sorgen machen müssen, die Größe ihrer Anwendungs-Assets unnötigerweise insgesamt zu erhöhen.
Genauer gesagt ermöglicht Redux die Verwaltung des Anwendungszustands an einem einzigen Ort und das Nachverfolgen von Änderungen in Ihrer Anwendung auf eine leicht nachvollziehbare und äußerst vorhersehbare Weise.
Manchmal kann dies andere Probleme im Entwicklungsprozess verursachen: nämlich das Hinzufügen von Boilerplate-Code. Boilerplate-Code kann die Komplexität erhöhen und es schwieriger machen, Dinge später im Prozess zu verstehen und zu debuggen. Dies hängt jedoch stark von der allgemeinen Architektur des Projekts selbst ab.
Redux ist gut, weil es:
Wartbar: Redux ist streng in der Art und Weise, wie es den Code organisiert, sodass jeder mit React.js- und JavaScript-Kenntnissen leichter verstehen kann, wie Redux-Anwendungen funktionieren. Dies macht es einfacher, große Anwendungen zu verstehen, zu warten und zu aktualisieren.
Vorhersehbar: Der Zustand von Anwendungen ist in Redux immer vorhersehbar. Reducer sind reine Funktionen, sodass Sie immer dasselbe Ergebnis erhalten, wenn demselben Reducer immer derselbe Zustand übergeben wird.
Leicht testbar: Das Testen von Apps in Redux ist so einfach wie möglich. Redux verwendet immer Funktionen, um den Zustand zu ändern, sogenannte reine Funktionen.
Leistungsstark: Mit Redux, insbesondere React Redux, beeinträchtigt das globale Halten des Anwendungszustands nicht die Leistung. Redux optimiert intern seinen Arbeitsablauf, sodass neue Komponenten Ihres Projekts nur dann neu gerendert werden, wenn dies erforderlich ist.
Leicht debuggbar: Einfaches Debugging ist ein wesentlicher Vorteil der Verwendung von Redux. Tatsächlich ist es sehr einfach, Netzwerkfehler, Codierfehler und andere Arten von Fehlern im Code zu verstehen, wenn jede Aktion und jeder Zustand in jedem Schritt ordnungsgemäß protokolliert wird.
Und was sind die Nachteile von Redux, falls vorhanden? Redux ist nicht geeignet für:
Einfache Benutzeroberflächen: Wenn Ihre Anwendung einfache Änderungen der Benutzeroberfläche benötigt und selbst einfach aufgebaut ist, brauchen Sie keine komplexe UI-Lösung wie Redux. Die Verbesserung des Codes und die Einführung der Zustandsfreigabe zwischen Komponenten könnte besser funktionieren als die Verwendung von Redux.
Einzelne Datenquellen: Wenn Ihr Projekt keine Daten aus mehreren Quellen benötigt, müssen Sie Redux höchstwahrscheinlich nicht verwenden. Probleme mit Dateninkonsistenz werden kein Problem sein, wenn Ihre Anwendung eine einzige Datenquelle pro Ansicht verwendet.
Next.js
Next.js ist ein quelloffenes React.js-Framework zur Erstellung statischer (einseitiger) JavaScript-Anwendungen, Websites und anderer webbasierter Projekte.
Lassen Sie sich jedoch nicht von den Definitionen „dynamisch" und „statisch" täuschen: Mit Next.js können Sie ein hybrides Entwicklungsmodell nutzen, um letztendlich Apps zu erstellen, die statisch generierte Seiten mit dynamischen Funktionalitäten enthalten. Diese Funktion wird als Automatische Statische Optimierung bezeichnet.
Die Vorteile der Verwendung von Next.js sind folgende:
Automatische Code-Aufteilung: Next.js ist „intelligent", da es nur das JavaScript und CSS lädt, das zum Rendern einer bestimmten Seite erforderlich ist. Dies beschleunigt die Ladezeiten erheblich, während der Browser des Benutzers keine Rechenressourcen aufwenden muss, um unnötiges JavaScript und CSS herunterzuladen, das für die Seite nicht benötigt wird. Die Leistung steigt, der Browser „drosselt" nicht, und der Benutzer ist zufriedener, da die Seitenladezeiten deutlich kürzer werden.
Serverseitiges Rendering: React.js-Komponenten, die auf der Benutzerseite der Website erscheinen, werden zunächst auf der Serverseite gerendert. Mit anderen Worten: Sobald der HTML-Code an den Browser des Benutzers gesendet wurde, verfügt der Benutzer über alle erforderlichen Ressourcen, um den Inhalt einer beliebigen Website anzuzeigen, die er aufrufen möchte. Dies führt wiederum zu deutlich schnelleren Seitenladezeiten und einem insgesamt besseren Erlebnis für den Benutzer.
Gatsby.js
Gatsby.js ist ein React-basiertes Frontend-Framework mit der Funktionalität eines Static-Site-Generators. Das bedeutet, dass es die besten Teile von React, GraphQL und anderen Frontend-Tools übernimmt und sie zu einem übersichtlichen Paket für das optimale Entwicklungserlebnis zusammenfasst. Der Teil „Static-Site-Generator" in der Definition bezieht sich mehr auf die historische Bezeichnung der Technologie als auf die modernen Fähigkeiten von Gatsby.
Funktional verwendet Gatsby.js eine robuste Vorkonfiguration, um eine Website zu erstellen, die nur statische Dateien bereitstellt. Dies ermöglicht unglaublich schnelle Seitenladezeiten, intelligentes Bildladen, Datenvorfüllung und viele weitere Funktionen direkt aus dem Stand.
Das Gute an Gatsby ist, dass Sie nach wie vor für das Programmieren und Entwickeln Ihrer Website verantwortlich sind, und Gatsby nimmt diesen Code und verwandelt ihn in eine einzige HTML-Datei – einschließlich aller statischen Assets der Website. Die HTML-Datei befindet sich in einem Ordner, und Sie können diesen Ordner bei einem Hosting-Anbieter Ihrer Wahl hochladen. Es ist sehr effizient, um die Arbeit zu erledigen.
Genauer gesagt nutzt Gatsby GraphQL, um die sogenannte Datenschicht aufzubauen. Eine Datenschicht ist eine Sammlung aller Daten in Ihrem Projekt, wo auch immer dieses Projekt sich befindet und wofür es auch immer verwendet wird. Zum Beispiel kann Gatsby Daten aus JSON, Markdown, WordPress, anderen APIs und vielem mehr sammeln! Anschließend erstellt es einen GraphQL-Server (zur Build-Zeit) unter Verwendung all dieser Daten, der von React über dieselbe GraphQL-Datenschicht abgefragt wird.
Eine Frage, die bei Gatsby-Neulingen häufig aufkommt, lautet: „Ich weiß nicht, wie ich mit GraphQL arbeiten soll – werde ich in der Lage sein, Gatsby zu verwenden?" Dies ist bis zu einem gewissen Grad eine berechtigte Frage. Wenn Sie jedoch weder mit React noch mit GraphQL vertraut sind, könnte Gatsby sehr wohl der perfekte Einstiegspunkt für Sie sein.
Abschließend stellt sich die Frage: Können Sie an Gatsby arbeiten, ohne React oder GraphQL einzubeziehen? Die Antwort auf diese Frage ist ein klares NEIN.
Angular
Derzeit wurde Angular.js zugunsten von Angular eingestellt. Es hat einen Zustand erreicht, der in der Programmiersprache als End of Life (EOL) bezeichnet wird.
Im Jahr 2010 von Google veröffentlicht, wurde Angular.js von Entwicklern häufig für die Erstellung von Geschäftsanwendungen, mobilen Apps und anderer Software eingesetzt. Sein Nachfolger, Angular, ist mit TypeScript entwickelt und wird zur Erstellung von Anwendungen in den Bereichen E-Commerce, Bankwesen, Gesundheitswesen und mehr verwendet.
Kurz gesagt ist Angular ein quelloffenes TypeScript-Framework zur Entwicklung robuster, einseitiger Anwendungen. Darüber hinaus bietet es eine ausreichend intuitive Struktur, mit der gearbeitet werden kann, während es Entwicklern auch ermöglicht, komplexe Software zu erstellen, die leicht zu aktualisieren und zu warten ist.
Die Hauptmerkmale von Angular sind folgende:
Document Object Model (DOM): Das DOM behandelt ein HTML- oder XML-Dokument als eine erweiterte Baumstruktur, in der Knoten Teile des Dokuments darstellen. Visuell würde es etwa so aussehen:

Wenn 15 Aktualisierungen an der HTML-Seite vorgenommen werden, überspringt Angular die bereits aktuellen Elemente und geht direkt dazu über, den gesamten Baum mit neuen HTML-Tags zu aktualisieren.
Datenbindung: Dies ist eine Methode, mit der Sie Elemente auf einer Website über Ihren Webbrowser manipulieren können. Sie verwendet dynamisches HTML und erfordert weder Programmierung noch Skripting. Beispiele für Datenbindung finden sich in Webkomponenten mit Interaktivität, wie Taschenrechner, Spiele, Tutorials, Foren und mehr. Für Seiten mit großen Datenmengen kann Angular die inkrementelle Anzeige dieser Seiten verbessern. Darüber hinaus verwendet Angular ein bidirektionales Bindungsmodell. Wenn die UI-Elemente aktualisiert werden, spiegelt der Modellzustand all diese Änderungen wider. Dies funktioniert auch umgekehrt: Wenn der Modellzustand aktualisiert wird, ändert sich der UI-Zustand. Dies gewährleistet letztendlich einen ununterbrochenen Informationsaustausch zwischen dem DOM, den Modelldaten und dem Controller.
MVC-Architektur: Angular nutzt das MVC-Modell (Model-View-Controller). Es bietet umfangreiche Dokumentation darüber, wie Ihre Anwendungen strukturiert sein sollten und wie alles aussehen sollte. Darüber hinaus stützt es sich auf die bidirektionale Datenflussmethodik, die mit dem echten DOM verbunden ist.
Testing: Angular integriert sich in das Jasmine-Framework, um robuste Testfähigkeiten für das Schreiben einer breiten Palette von Testfällen bereitzustellen. Einige der Tests können auch mit Karma, Angulars eigenem Test-Framework, ausgeführt werden. Karma wurde aus der Notwendigkeit heraus entwickelt, als die damaligen Test-Tools Angulars Anforderungen nicht erfüllen konnten. Die Jasmine- und Karma-Frameworks funktionieren sehr gut zusammen, weshalb sie die am meisten empfohlenen Testumgebungen für Angular sind.
Vue.js
Vue.js ist ein quelloffenes JavaScript-Framework, das sich für die Entwicklung von SPAs (Single-Page-Anwendungen) und UIs (Benutzeroberflächen) eignet. Vue.js verwendet die MVVM-Design-Architektur (Model-View-View-Model).
Darüber hinaus wurde Vue.js im Jahr 2014 entworfen, als der leitende Designer Evan You (damals ein Google-Ingenieur) die besten Funktionen aus dem (inzwischen eingestellten) Angular.js extrahieren und etwas Leichtgewichtiges, Intuitives und Einfach zu Bedienendes schaffen wollte.
Auch hier dreht sich die Hauptstruktur von Vue.js um das MVVM-Muster. Dieses Muster ermöglicht es, das Modell (auch als Geschäftslogik bekannt) von der Ansicht (auch als grafische Oberfläche bekannt) zu unterscheiden. Diese Unterscheidung bildet wiederum die Grundlage für einen sehr intuitiven Arbeitsablauf, sowohl im Frontend- als auch im Backend-Bereich der Webentwicklung.
Darüber hinaus verfügt Vue.js auch über eine Kernbibliothek, deren Hauptfokus auf dem View-Teil des MVVM-Modells liegt. Weitere Funktionalitäten können durch die zahlreichen unterstützenden Vue.js-Bibliotheken hinzugefügt werden, weshalb Vue.js das Attribut „progressiv" erhalten hat.
Die wichtigsten Merkmale von Vue.js sind jedoch seine Direktiven. Im Frontend-Bereich sind Direktiven HTML-Attribute, die es Entwicklern ermöglichen, vorhandenes HTML zu erweitern, was letztendlich die Struktur der Elemente auf einer Website bestimmt.
Hier sind einige der beliebtesten Vue.js-Bibliotheken:
Vuetify
Vuetify ist ein quelloffenes Material-Komponenten-Framework für Vue.js, das bestrebt ist, umfangreiche, saubere und semantisch anpassbare Komponenten bereitzustellen, um die Entwicklung von Anwendungen so einfach wie möglich zu gestalten.
Vuetify übernimmt einige Teile des architektonischen Designs von mehreren anderen Frameworks, insbesondere von Semantic UI, Materialize CSS, Bootstrap 4 und Material Design Lite. Vuetify wird hauptsächlich für die Frontend-Entwicklung verwendet und kann der Frontend-Kategorie von Tech-Stacks zugeordnet werden.
Es gibt einige Hauptgründe, warum Sie Vuetify verwenden könnten:
Es wird wöchentlich gepatcht, aktualisiert und gewartet.
Es hat eine sehr aktive Community und Unterstützung von sowohl erfahrenen als auch aufstrebenden Entwicklern.
Es bietet 18 Monate Support für die vorherige Version nach der Veröffentlichung einer neuen Haupt-Vuetify-Version.
Nuxt.js
Nuxt.js ist ein quelloffenes Framework zur Entwicklung von Vue.js-Anwendungen. Das Hauptziel von Nuxt.js ist es, Entwicklern zu helfen, die neuesten Technologien, Paradigmen und Programmiertrends zu nutzen, um leistungsstarke, schnelle und performante Anwendungen zu erstellen.
Für den Einstieg benötigen Entwickler nicht unbedingt ein umfassendes Verständnis von Nuxt.js; sie benötigen jedoch ein grundlegendes Verständnis davon, wie Vue.js in der Praxis funktioniert.
Einige wichtige Nuxt.js-Funktionen, die es zu beachten gilt, sind:
Leistungsstarkes Datenabrufen: Sie können Ihre Daten aus beliebigen Quellen in Ihren Vue.js-Komponenten abrufen.
SEO-bereit: Es bietet eine intuitivere Verwaltung von Meta-Tags sowie eine bessere Inhaltsindizierung.
Einfache Konfiguration: Sie können sofort mit der Arbeit beginnen, ohne komplizierte Einrichtungsschritte durchlaufen zu müssen.
Starke Konventionen: Sie arbeiten mit einer robusten Verzeichnisstruktur und starken Konventionen, die die perfekte Grundlage für eine effiziente Teamarbeit bieten.
Automatischer Import: Nuxt.js importiert Ihre Komponenten mithilfe von intelligentem Code-Splitting, während Sie frei sind, Ihre Zeit dem Schreiben von Code zu widmen.
Svelte
Svelte ist ein quelloffener Compiler (in TypeScript geschrieben), der hochoptimierten JavaScript-Code generiert. Svelte unterscheidet sich von React.js und Vue.js dadurch, dass es einen Großteil der Arbeit in einen Kompilierungsschritt verlagert, der ausgeführt wird, wenn Sie mit der Erstellung Ihrer Anwendung beginnen. Im Vergleich dazu erledigen sowohl React.js als auch Vue.js den Großteil ihrer Arbeit in Ihrem Browser, während die Anwendung bereits läuft.
Dieser Arbeitsablauf liefert eine insgesamt bessere Leistung für alle Apps. Anwendungen sind kleiner, enthalten weniger Bundles, und das gesamte Entwicklungserlebnis ist benutzerfreundlicher für Entwickler mit begrenzter Programmiererfahrung in einigen der anderen beliebten JavaScript-Frameworks sowie in Svelte selbst.
Drittens enthält Svelte im Vergleich zu den anderen verfügbaren Optionen deutlich weniger Tools, Konzepte und andere Hilfsmittel, die erlernt werden müssen. Stattdessen folgt es eng dem Entwicklungsmodell von HTML, CSS und JavaScript, fügt jedoch auch mehrere Erweiterungen zu HTML und JS hinzu.
Einer der Nachteile der Verwendung von Svelte liegt darin, dass es sich um ein relativ neues – ich wage es zu sagen – Framework handelt. Seine Umgebung gilt daher als mangelhaft in Bezug auf Support, Plugins, Dokumentation, Design-Muster und andere Paradigmen. Außerdem gibt es weniger Stellenangebote, was sich jedoch in einen Vorteil verwandeln könnte, wenn Sie sich entscheiden, die innere Funktionsweise von Svelte eingehender zu untersuchen.
Einige der Anwendungsfälle von Svelte umfassen:
Ressourcensparende Web-Apps: Svelte-Anwendungen sind kleiner in der Größe. Dies ist sehr praktisch für Geräte, die mit langsamen Internet-/Netzwerkverbindungen und entsprechend langsameren Prozessoren arbeiten. Außerdem bedeuten weniger Codezeilen weniger Ressourcen zum Herunterladen, Ausführen und Speichern. Dadurch läuft alles schneller, reibungsloser und hoffentlich auch stabiler.
Komplexe Visualisierungen und interaktive Seiten: Wenn Sie an Datenvisualisierungen mit einer großen Anzahl von DOM-Elementen arbeiten, wäre ein Framework ohne Laufzeit-Overhead die bevorzugte Wahl für dieses Projekt. Svelte gewährleistet schnelle, reaktionsschnelle Benutzerinteraktionen, die zu erheblichen Leistungsverbesserungen führen.
Einfaches Onboarding: Eines der Highlights von Svelte ist seine sanfte Lernkurve. Entwickler mit grundlegenden Kenntnissen in HTML, CSS und JavaScript werden in der Lage sein, die Besonderheiten schnell zu erlernen. Mit Svelte ist die Entwicklung von Webanwendungen so einfach wie möglich.
Plattformübergreifende mobile App-Entwicklung
Die heutige Entwicklungsumgebung umfasst mehrere Betriebssysteme, verschiedene Gerätetypen (d. h. Desktop, Mobilgerät, Tablet, Hybridgeräte) und eine zunehmende technologische Komplexität, die mit jedem Jahr wächst. Daher besteht naturgemäß die Nachfrage, all diese Geräte miteinander kommunizieren zu lassen, ohne unerwartete Unterbrechungen des normalen Geschäftsbetriebs.

Die plattformübergreifende mobile Entwicklung versucht genau das zu erreichen. Im Fachjargon eines Entwicklers bezieht sich die plattformübergreifende mobile Entwicklung auf die Entwicklung von mobilen Anwendungen, die mit allen gängigen Betriebssystemen auf den weltweit beliebtesten Mobilgeräten kompatibel sind.
Anfänglich wurde die Komplexität der Entwicklung mobiler Anwendungen auch durch die Schwierigkeit multipliziert, eine Backend-Umgebung zu schaffen, die auf allen mobilen Plattformen funktionieren würde. Tatsächlich war es einfacher, native Apps für jedes bevorzugte Betriebssystem (OS) zu entwickeln, als eine universell kompatible App zu erstellen, die überall funktionieren würde.
Das Hauptproblem bei diesem Ansatz war jedoch, dass der für ein Betriebssystem erstellte Quellcode (zum Beispiel iOS) auf einem anderen (wie Android) nicht funktionieren würde.
Heute ist es für Entwickler sehr einfach, plattformübergreifende mobile Anwendungen zu entwickeln. Einige der beliebtesten Ansätze sind:
Progressive Web Apps (PWAs): Websites sehen aus, fühlen sich an und verhalten sich wie mobile Anwendungen. Progressive Web Apps nutzen die nativen mobilen Funktionen in vollem Umfang, ohne dass der Benutzer einen App-Store aufsuchen, die App herunterladen oder lokal auf seinem Gerät installieren muss. Stattdessen sind die Apps ab dem Moment kompatibel, in dem sie im Web live gehen.
Hybrid-Apps: Entwickler haben die Möglichkeit, den Code der Anwendung in JavaScript oder HTML5 zu schreiben und dann einen sogenannten nativen Geräte-Wrapper um die App zu legen.
Universelle Windows-Apps: Das Ziel dieses Ansatzes ist es, dieselbe Anwendung auf allen wichtigen Windows-Geräten auszuführen, einschließlich PC, Smartphones, Tablets, Xbox oder Smartwatches.
Rapid Mobile App Development (RMAD): Entwickler können verschiedene Tools und Ansätze verwenden, um ihre App zu erstellen, ohne Code zu schreiben. Dies ist oft die bevorzugte mobile Entwicklungsmethode (gegenüber der Verwendung von Programmiersprachen und Frameworks, wie zum Beispiel Ruby on Rails), da sie kostengünstiger ist und einen spezifischen Bedarf decken kann, ohne das gesamte Budget zu belasten.
Ich habe kürzlich einige der beliebtesten plattformübergreifenden Entwicklungstools gesichtet, und die leistungsstärksten sind nachfolgend aufgeführt.
Cordova
Cordova (Apache Cordova) ist ein quelloffenes Framework, das es Ihnen ermöglicht, die Syntax von HTML, CSS und JavaScript zu nutzen, um native Apps für eine Vielzahl verschiedener mobiler Plattformen zu entwickeln.
Cordova rendert Ihre Webanwendung innerhalb eines sogenannten nativen WebViews. Ein WebView gilt als eine Anwendungskomponente, die zur Anzeige von Webinhalten innerhalb einer nativen Anwendung verwendet wird.
Vereinfacht ausgedrückt können Sie sich WebView als einen abgespeckten Browser vorstellen, ohne die Funktionalitäten (oder UI-Elemente) von Standardbrowsern wie Safari oder Chrome. Die Anwendung innerhalb dieses Containers verhält sich wie eine normale Web-App, die in einem Browser läuft. Sie kann Seiten öffnen, HTML-Elemente rendern, JavaScript-Code ausführen, mit Servern kommunizieren und Multimedia-Dateien abspielen. Per Definition wird diese Art von Anwendung als Hybrid-Anwendung bezeichnet.
Normalerweise laufen Webanwendungen in einer Sandbox, was bedeutet, dass sie keine Kontrolle über die Hardware und Software des Geräts haben, auf dem sie laufen. Beispielsweise ist die Kontaktdatenbank auf Ihrem Smartphone (die Nummern, E-Mail-Adressen und andere Daten enthält) für eine Webanwendung NICHT zugänglich.
Hier kommt Cordova ins Spiel. Es bietet sowohl ein Framework zum Ausführen der Webanwendung innerhalb einer nativen Anwendung als auch JavaScript-APIs, um Zugang zu einer Vielzahl von Gerätefunktionen zu ermöglichen – wie die bereits erwähnte Kontaktdatenbank. Diese Funktionen werden durch eine Vielzahl von Plugins ermöglicht. Die Plugins stellen eine Verbindung zwischen der Webanwendung und der nativen Funktionalität des Geräts her.
Eine weitere wichtige Sache, die erwähnt werden sollte, ist der Unterschied zwischen Cordova und PhoneGap. Cordova begann 2008 als PhoneGap, als Teil des Webentwicklungsunternehmens Nitobi. Adobe kaufte Nitobi im Jahr 2011, und die Rechte am PhoneGap-Framework wurden an die Apache Foundation übertragen. PhoneGap wurde dann in Cordova umbenannt.
Jedoch, und hier wird es etwas verwirrend, sind Apache Cordova und Adobe PhoneGap nicht dasselbe. Cordova ist die quelloffene Version, während PhoneGap die Adobe-gebrandete Version des Frameworks ist. Beide Versionen des Frameworks teilen einige Gemeinsamkeiten und Unterschiede. Die Verwendung beider für die Entwicklung eines einzelnen Projekts wird nicht empfohlen.
React Native
React Native ist ein quelloffenes JavaScript-Framework zur Entwicklung nativer mobiler Apps für die Betriebssysteme iOS und Android. Lassen Sie sich jedoch nicht vom Begriff „native" in seinem Namen irreführen. React Native verwendet Code, der mit den meisten anderen gängigen Plattformen (macOS, iOS, Windows, Web) kompatibel ist, was es einfach macht, Code von einer Plattform auf eine andere zu übertragen, ohne die Kompatibilität zu verlieren. Mit anderen Worten kann React Native auch als plattformübergreifendes Entwicklungs-Framework betrachtet werden.
Ähnlich wie React.js für die Entwicklung von Webanwendungen werden React Native-Apps mit einer Mischung aus JavaScript und einer XML-ähnlichen Auszeichnungssprache namens JSX erstellt. Anschließend rendert React Native die nativen APIs in Java (Android) und Objective-C (iOS). Daher wird Ihre Anwendung so aussehen, als wäre sie nativ für Mobilgeräte entwickelt worden, anstatt über die WebView-Funktion gerendert zu werden. Sie wird das Aussehen und das Gefühl einer wirklich nativen mobilen Anwendung erreichen.
React Native verbindet auch die JavaScript-Schnittstelle mit Plattform-APIs, sodass Ihre React Native-Anwendung auf Gerätefunktionen wie den Standort des Smartphones des Benutzers, die Kamera oder die Kontaktdatenbank zugreifen kann.
Die Vorteile der Verwendung von React Native als bevorzugtes mobiles Entwicklungs-Framework sind vielfältig:
Kompatibler Code: Sie können eine einzige Codebasis verwenden, um Ihre Anwendung auf beiden Plattformen, d. h. Android und iOS, zu rendern. Wenn Sie den nativen Weg gegangen wären, müssten Sie separaten Code schreiben und mindestens zwei Entwickler einsetzen, um die Arbeit zu erledigen. Mit React Native bleibt der Code gleich.
Konsistenz: Android und iOS sind unterschiedliche Betriebssysteme. Natürlich wird es einige Unterschiede geben, wie sie Operationen durchführen oder UI-Elemente innerhalb von Anwendungen handhaben. Die gemeinsame Codebasis (für React Native) bewältigt all das und hält alles plattformübergreifend konsistent.
Bessere Budgetverteilung: Die plattformübergreifende Entwicklung ist mindestens 30 % günstiger als die Entwicklung nativ kompatibler Anwendungen. Die Möglichkeit, Code wiederzuverwenden, führt zu einer schnelleren Entwicklung und reduziert die Projektkosten erheblich.
React VS React Native
Lassen Sie uns einige Missverständnisse ausräumen. React Native ist nicht die neueste Version von React.js; React Native verwendet jedoch React.js in gewissem Umfang.
Zur Erinnerung: React.js ist eine JavaScript-Bibliothek, die von Meta (ehemals Facebook) zur Entwicklung von Frontend-Komponenten für beliebige Websites entwickelt wurde.
Andererseits ist React Native (ebenfalls auf React.js basierend) ein Framework zur einfachen und schnellen Entwicklung von Android- und iOS-Anwendungen.
Beide Frameworks teilen dieselben grundlegenden Prinzipien, unterscheiden sich jedoch in wesentlichen Punkten. Beispielsweise unterscheidet sich die Syntax zum Rendern von JSX-Elementen zwischen React.js und React Native. Darüber hinaus verwendet React.js auch HTML und CSS, während React Native Entwicklern ermöglicht, native mobile UI-Elemente zur Entwicklung ihrer Anwendungen zu verwenden.
Ionic
Ionic ist ein quelloffenes Software Development Kit (SDK) und ein Framework für die plattformübergreifende Entwicklung mobiler Anwendungen. Es wurde 2013 von Ben Sperry und Max Lynch erstellt und läuft derzeit auf der Capacitor.js-Code-Ausführungsschicht (im Gegensatz zur anfänglichen Ausführung auf dem Apache Cordova-Framework).
Ionic verwendet die WebView-Anwendungskomponente, um nativ wirkende UI-Elemente zu rendern. Mit Ionic können Sie Apps mit React.js, Vue.js, Angular oder dem Stencil-Framework entwickeln. Ionic unterstützt sowohl die iOS- als auch die Android-Mobilentwicklung.

Ionic funktioniert dank seiner drei Hauptschichten:
Widgets-Toolkit
Capacitor.js
Host-Anwendung
Das Widgets-Toolkit ist in Stencil geschrieben. Stencil-Komponenten sind mit den meisten gängigen Frontend-Frameworks kompatibel, einschließlich Angular, React.js und Vue.js.
Capacitor.js (auch als JavaScript-to-Native-Bridge bekannt) konvertiert native API-Aufrufe in JSON-Nachrichten. Anschließend sendet es diese Nachricht an die WebView-Schnittstelle der Host-Anwendung, während die Host-Anwendung auch über die JavaScript-Bridge mit der Webanwendungsschicht kommunizieren kann.
In Bezug auf die Kommunikation mit dem nativen Software Development Kit (SDK) des Betriebssystems verwendet Ionic einen ähnlichen Ansatz wie React Native mit einer JavaScript-Bridge.
Flutter
Flutter ist ein quelloffenes Benutzeroberflächen (UI) Software Development Kit (SDK), das von Google entwickelt wurde. Es ermöglicht die Erstellung von Anwendungen in Dart mit einem sogenannten Widget-Baum-basierten Layout. Ursprünglich wurde Flutter zur Erstellung von Android- und iOS-Anwendungspaketen verwendet, aber in jüngerer Zeit wurde seine Funktionalität auf Windows, Linux, macOS, Fuchsia und webbasierte Apps ausgeweitet.
Flutter verwendet sein eigenes UI-Toolkit zur App-Entwicklung. Für das Grafik-Rendering verwendet Flutter die Skia Graphics Engine-Bibliothek.

Genau wie Ionic hat Flutter ebenfalls drei Hauptschichten:
Dart-basiertes Framework (stellt Widgets, Animationen und die Implementierung vollständig zugänglicher Anwendungsbausteine bereit)
C++-basierte Engine (stellt einen Kommunikationskanal zwischen der Embedder-App und dem Dart-basierten Framework bereit)
Embedder-App (Host-App)
Flutters Hauptarchitektur basiert auf der Simple DirectMedia Layer-Grafikbibliothek, die es APIs ermöglicht, alle plattformunabhängigen UI-Komponenten zu rendern. Darüber hinaus verwendet Flutter auch eine Art JavaScript-Protokoll, um mit nativen (OS-Level) APIs zu kommunizieren.
Kurz gesagt:
Flutter verwendet keine plattformgebundenen Benutzeroberflächen-Toolkits (wie Android UI oder Cocoa).
Flutter rendert Widgets intern, indem es seine eigene Architektur nutzt.
Flutter kommuniziert mit nativen APIs auf OS-Ebene über ein binäres Protokoll.
Mit Flutter erstellte Apps sind plattformübergreifend, universell und unabhängig.
Flutter-Anwendungen sind mit allen Plattformen kompatibel, die eine Flutter-Engine und Skia-Grafiken unterstützen können.
In vielerlei Hinsicht rendert Flutter Apps wie eine Spiele-Engine.
Dart
Dart ist eine objektorientierte, statisch typisierte Programmiersprache, die hauptsächlich für die Webentwicklung, clientseitige Entwicklung und mobile Anwendungen verwendet wird. Die neueste Dart-Version ist 2.0, und mit der Einführung von Flutter gelten beide Tools nun als vielversprechendes Duo, da sie sehr gut zusammenarbeiten.
Im Gegensatz zu einigen anderen Sprachen wurde Dart darauf ausgelegt, schnell, effizient und für Entwickler so komfortabel wie möglich zu sein. Daher enthält es eine Vielzahl leistungsstarker Tools, darunter einen integrierten Paketmanager, Parser, Formatierer, Compiler und Transpiler.
Was Dart ebenfalls einzigartig macht, ist die Dart Virtual Machine. Die VM und der sogenannte Just-in-Time-Build führen alle Codeänderungen unmittelbar bei ihrer Vornahme aus. Dart-Code kann in einer nativen Umgebung kompiliert werden, oder im Fall der Webentwicklung in JavaScript-Code.
In Bezug auf seine Syntax ähnelt Dart Java, JavaScript und C++. Für Entwickler mit Vorkenntnissen in einer dieser Sprachen wäre das Erlernen von Dart ein Kinderspiel.
Dart kann auf folgende Weise verwendet werden:
Für Webanwendungen;
Auf Servern;
Für die mobile Entwicklung;
Für Konsolenanwendungen.
Dart eignet sich für die Webentwicklung durch die Nutzung der Funktionalitäten seiner dart:html-Bibliothek. Der Transpiler konvertiert den Dart-Code in JavaScript, der dann zur Ausführung zur Laufzeit bereit ist. Eine weitere Möglichkeit, Dart für die Entwicklung von Webanwendungen zu nutzen, ist AngularDart.
Dart verfügt über zwei Bibliotheken (neben anderen Tools), die der Serverarbeit gewidmet sind: nämlich die dart:io- und die dart:http-Bibliotheken. Ein weiteres Tool für diesen Zweck wäre das Aqueduct-Framework.
Dart kann dank Flutter auch für die Entwicklung mobiler Anwendungen verwendet werden. Derzeit steigen die Jobmöglichkeiten für Flutter-Entwickler kontinuierlich an.
Native iOS-App-Entwicklung
Die meisten Anwendungen im App Store (von Apple) sind in der Regel in Objective-C geschrieben und verwenden die Xcode-Entwicklungsumgebung.
Um eine iOS-App nativ zu erstellen, müssen Sie innerhalb von OS X arbeiten. Einige der Entwicklungstools, die Sie möglicherweise benötigen, sind das iOS 7 Software Development Kit und Xcode 5. Beide Tools sind kostenlos nutzbar.
Sie können die App dann über den iOS-Simulator ausführen, der in das iOS SDK integriert ist. Um Ihre Anwendung jedoch auf einem echten Gerät laufen zu lassen, müssen Sie etwa 99 $/Jahr bezahlen. Dieser Preis deckt auch die Verfügbarkeit der App im Apple App Store ab.
Einige der anderen Tools, die Sie für die native iOS-Entwicklung verwenden können, sind folgende:
Swift
Swift ist eine leistungsstarke quelloffene Programmiersprache zur Erstellung von Anwendungen, die mit den meisten Apple-basierten Produkten, Geräten und Umgebungen kompatibel sind – einschließlich iOS, macOS, Apple Watch und Apple TV.
Swift wurde 2014 von Apple selbst entwickelt und hat seitdem eine Reihe von neuen Versionen und Verbesserungen erfahren. Einer der ursprünglichen Zwecke der Entwicklung von Swift war es, C-basierte Programmiersprachen zu ersetzen, oder genauer gesagt, Objective-C zu ersetzen.
Heute unterliegt Swift ständigen Verbesserungen und Änderungen. Sie können den Quellcode auf GitHub finden, was sehr praktisch für Entwickler ist, die sofort mit der Erstellung ihrer iOS-Anwendungen beginnen möchten.
Einige der wichtigsten Swift-Funktionen sind:
Hier ist die Übersetzung auf Deutsch:
Klassen und Strukturen: Sowohl Klassen als auch Strukturen können in einer einzigen Swift-Datei definiert werden. Die externe Schnittstelle kann auch von anderem Code verwendet werden.
Debugging: Swift verwendet den LLDB-Debugger (Teil der LLVM-Bibliothek), der eine nahtlose, integrierte Debugging-Umgebung bietet. Weitere Funktionen des LLDB-Debuggers umfassen Fehlererkennung und -behebung, konsistente Formatierung und Ausdrucksauswertung.
Generics: Funktionen sind dank der Einbindung von Generics in Swift wiederverwendbar und flexibel. Es ist ein leistungsstarkes Werkzeug, das in Kombination mit dem typsicheren Paradigma einen nahtlosen Entwicklungsworkflow ermöglicht.
Paketmanager: Der Paketmanager ist eine robuste, plattformübergreifende Lösung mit mehreren Anwendungsfällen. Damit können Sie Apps und Swift-kompatible ausführbare Dateien erstellen, testen und ausführen.
Speichersicherheit: Der Speicher wird automatisch von Swift verwaltet. Es verhindert, dass Speicherfehler oder unerwünschtes Verhalten überhaupt auftreten.
Fehlerbehandlung: Swift kann Laufzeitfehler abfangen. Es bietet auch Unterstützung für das Weitergeben, Auslösen und Manipulieren von Fehlern.
Binärkompatibilität: Swift unterstützt auch Binärkompatibilität. Die meisten Bibliotheken sind im Betriebssystem enthalten, sodass jede Anwendung die neueste Version der Bibliothek direkt vom Betriebssystem nutzt und Sie die App ausführen können, ohne den Code neu zu kompilieren.
Tupel: Tupel ermöglichen es Ihnen, mit Werten und Wertgruppierungen zu arbeiten (einschließlich Erstellen und Teilen). Sie können Tupel verwenden, um mehrere Werte in einen einzigen umzuwandeln.
Syntax: Swifts Closure-Syntax ist einfach, leichtgewichtig und übersichtlich. Ein klarer Programmierstil ist eines der Hauptmerkmale der Verwendung von Swift.
Swift hat jedoch auch seine eigenen Nachteile. Hier sind einige der häufigsten Nachteile, die Sie von der Sprache erwarten können:
Es ist neu: Swift ist eine relativ neue Programmiersprache. Einige ihrer Fähigkeiten werden nicht mit einigen älteren Sprachen (JavaScript, Objective-C) mithalten können.
Es wird ständig aktualisiert: Als neue Sprache wird Swift gepflegt und erhält häufige Updates. Je nach Ihrem Arbeitsablauf, Ihren Gewohnheiten und Bedürfnissen kann dies leicht zu einem Vorteil werden – vorausgesetzt, Sie finden die richtigen Tools für die Aufgabe.
Es ist nicht zu 100 % plattformübergreifend kompatibel: Swift unterstützt macOS (einschließlich der meisten Apple-Plattformen und -Geräte), Windows und Linux. Es ist jedoch hauptsächlich für die native iOS-Entwicklung gedacht.
Xcode hat seine Schwächen: Apples ursprüngliche integrierte Entwicklungsumgebung (IDE) unterstützt keine Autovervollständigung, Syntaxhervorhebung, Kompilierung und Refactoring.
Objective-C
Objective-C ist eine objektorientierte, allgemeine Programmiersprache, die der Sprache C zusätzliche Funktionalitäten hinzufügt. Es gilt als eine Obermenge der Programmiersprache C, aber in der Praxis ist Objective-C nicht an eine bestimmte Plattform, ein Betriebssystem oder ein Computergerät gebunden.
Am bekanntesten ist Objective-C durch seine Verwendung durch Apple zur Entwicklung von macOS. Darüber hinaus war Objective-C die Hauptsprache für die Entwicklung von iOS-Apps über seine zwei Haupt-APIs: Cocoa und Cocoa Touch. Mit der Einführung von Swift im Jahr 2014 ist Objective-C jedoch bei Entwicklern, die einen zeitgemäßeren Ansatz zur Entwicklung moderner, robuster Anwendungen bevorzugen, allmählich in Ungnade gefallen.
Objective-C ist für eine Vielzahl von Aufgaben nützlich. Zum einen eignet es sich hervorragend für die Speicherverwaltung in Ihren Apps. Bestimmte Compiler sind in der Lage, Ihren Objective-C-Code in eine sogenannte statische Code-Analyse umzuwandeln, die dann von der Sprache selbst verwendet werden kann, um nützliche Informationen herauszufiltern (und zu behalten) und den Rest zu verwerfen.
Heute steht Objective-C in Konkurrenz zu Swift. Es gibt eine anhaltende Debatte darüber, welche Sprache überlegen ist. Betrachten wir zunächst ihre Unterschiede, um ein besseres Verständnis dafür zu bekommen, wie sie später verwendet werden sollen.
Objective-C VS Swift
Wie ich oben erwähnt habe, stützt sich Objective-C stark auf das objektorientierte Programmierparadigma. Der Grund dafür ist, dass OOP es Ihnen ermöglicht, komplexe Software-Logik in kleinere Code-Abschnitte zu zerlegen, um die Entwicklung und Wartung eines bestimmten Projekts zu erleichtern.
Die kleineren Abschnitte sind in diesem Fall Objekte. Jedes Objekt erfüllt eine wichtige Funktion für sich und koordiniert mit anderen Objekten, damit Ihre Anwendung wie beabsichtigt funktioniert.
Ein weiterer wichtiger Punkt ist, dass Swift nicht der Nachfolger von Objective-C ist. Beide Sprachen funktionieren eigenständig und können zusammen verwendet werden, um mobile Anwendungen zu erstellen.
Die folgende Tabelle kann mehr Licht auf die wesentlichen Unterschiede zwischen Objective-C und Swift werfen.
Merkmal | Objective-C | Swift |
|---|---|---|
Syntax | Komplex, C-basiert, weitschweifig. | Sauber, modern, prägnant. |
Sicherheit | Risiken durch manuelle Speicherverwaltung. | Typsicher mit automatischer Speicherverwaltung. |
Wartung | Erfordert die Verwaltung von zwei Dateien (.h und .m). | Verwaltung einer einzigen Datei (.swift). |
Leistung | Standard-Leistung auf C-Niveau. | Bis zu 2,6-mal schneller als Objective-C. |
Swift ist eindeutig die optimale Sprache für die iOS-Entwicklung. Sie ist schneller, sicherer, zuverlässiger und intuitiver. Darüber hinaus bietet sie Objective-C-Interoperabilität, was bedeutet, dass Swift-Code neben Objective-C-Komponenten koexistieren kann.
Schließlich ermöglicht Ihnen die Verwendung von Swift auch die Arbeit mit Objective-C-APIs.
Native Android-App-Entwicklung
Wenn jemand die native Android-Anwendungsentwicklung erwähnt, bezieht er sich in der Regel auf das Android Native Development Kit (NDK). Das Android NDK ist eine Sammlung von Tools, die es Ihnen ermöglicht, entweder C- oder C++-Code direkt in Ihre Android-Anwendungen zu implementieren. Dieser Code wird auch als nativer Code bezeichnet und ist hauptsächlich nützlich, weil er Ihnen ermöglicht, eine Kombination der folgenden Aktionen durchzuführen:
Portierung Ihrer Anwendungen auf andere Plattformen
Leistungsverbesserung bei anspruchsvollen Anwendungen wie Spielen
Wiederverwendung von Bibliotheken oder Hochladen eigener Bibliotheken zur späteren Verwendung
Hinweis: Das NDK ist möglicherweise nicht für Android-Entwickler geeignet, die nur Framework-APIs und Java-Code für die Entwicklung ihrer Anwendungen benötigen.
Bevor Sie mit der Arbeit an Ihren zukünftigen Android-Apps beginnen, müssen Sie die folgenden NDK-Komponenten verstehen:
Native Shared Libraries: Die Dateien haben eine .so-Erweiterung, während das NDK sie aus Ihrem C- oder C++-Quellcode erstellt.
Native Static Libraries: Die Dateien haben eine .a-Erweiterung und können in andere Bibliotheken integriert werden.
Java Native Interface: Das JNI stellt einen Kommunikationskanal zwischen den C++- und Java-Komponenten dar.
Manifest: Das Schreiben von Anwendungen ohne Java-Komponenten würde die Deklaration der sogenannten NativeActivity-Klasse im NDK-Manifest erfordern.
Application Binary Interface: Das ABI definiert, wie der Maschinencode Ihrer Anwendung zur Laufzeit mit Ihrem System interagiert. Android NDK unterstützt ABI-Kompatibilität für 32-Bit-ARM-, AArch64-, x86- und x86-64-Architekturen.
Kotlin
Kotlin ist eine quelloffene, statisch typisierte, allgemeine Programmiersprache für JVM (Java Virtual Machine) und Android-Entwicklung. Es unterstützt Interoperabilität, eine intuitivere Syntax und zusätzliche plattformübergreifende Funktionalität.
Kotlin wurde 2010 vom Team bei JetBrains entwickelt und ist seit 2012 quelloffen. Bis heute hat es mindestens 300 Beitragende zum Kotlin-Projekt auf GitHub gegeben.
Kurz gesagt kann Kotlin als eine verfeinerte Version von Java beschrieben werden. Beispielsweise erfordert die Definition von Java-Variablen in Kotlin deutlich weniger Code als in Java. Funktionen werden mit dem Schlüsselwort fun definiert, während Semikolons am Zeilenende in Kotlin nun optional sind.
Ähnlich dazu wird das Schlüsselwort var verwendet, um entweder eine lokale Variable oder eine veränderliche Eigenschaft zu definieren. Sowohl var als auch fun können jedoch nur verwendet werden, wenn der Typ ordnungsgemäß abgeleitet wird. Andernfalls müssen Sie den Typ deklarieren. Dies macht Kotlin per Definition stark typisiert.
Bemerkenswerte Vorteile der Verwendung von Kotlin sind:
Weniger Code schreiben: Kotlin ermöglicht es, weniger Code zu schreiben und gleichzeitig den Code lesbarer zu gestalten und die Syntax zu verbessern. Weniger Code bedeutet bessere Chancen, weniger Fehler zu produzieren. Wenn die Sprache bestimmte sich wiederholende Aspekte übernimmt, haben Sie als Entwickler mehr Zeit, sich auf die wichtigeren Teile des Code-Schreibens zu konzentrieren.
Gut mit Java zusammenarbeiten: Kotlin ist vollständig mit Java kompatibel und bietet Entwicklern alle Java-Frameworks, Tools und Bibliotheken, um klaren und präzisen Code zu erstellen. Android-Entwickler können nun beide Sprachen verwenden, um ihre mobilen Anwendungen zu erstellen und ihre Apps von Java auf Kotlin zu migrieren.
Entwicklerherausforderungen lösen: Kotlin wurde entwickelt, um reale Branchenherausforderungen zu bewältigen – insbesondere solche, die von der Komplexität von Java betroffen sind. JetBrains prüfte die Alternativen, war mit dem, was ihnen damals zur Verfügung stand, nicht zufrieden, und schuf ihre eigene Lösung – Kotlin.
Mehr Sicherheit bieten: Kotlin ist semantisch so konstruiert, dass es Fehler während der Anwendungsausführung verhindert. Das bedeutet, dass Kotlin mehr Sicherheit als Java bietet.
Geschäftliche Vorteile bieten: Mit Kotlin erstellte Anwendungen sind einfacher und unkomplizierter zu warten. Darüber hinaus ist Kotlin-Code prägnanter, was zu schnelleren Codierungszeiten und insgesamt weniger Code führt. Der Wechsel von Java zu Kotlin kann manchmal dazu führen, dass mindestens 40 % der Zeilen aus Ihrem vorhandenen Code herausgeschnitten werden. Es gibt auch einen automatischen Konverter von Java zu Kotlin, der zusätzliche Zeit spart. Die steigende Popularität von Kotlin wird es einfacher machen, Ihre Anwendung bei Bedarf von einer Plattform auf eine andere zu migrieren.
Java
Java ist eine objektorientierte, klassenbasierte, nebenläufige Programmiersprache, die 1995 von Sun Microsystems entwickelt wurde. Java verwendet das WORA-Paradigma (Write Once, Run Anywhere), was bedeutet, dass Java auf allen Java-unterstützten Plattformen ausgeführt werden kann, ohne den Code neu zu kompilieren.
Java ist in allen möglichen Anwendungen, Plattformen und anderer Software vorhanden. Tatsächlich ist es manchmal notwendig, Java auf Ihrem Computer installiert zu haben, um Websites anzuzeigen oder eine Vielzahl von sowohl webbasierten als auch Desktop-Anwendungen zu öffnen.
Was sind die häufigsten Verwendungszwecke von Java?
Java kann verwendet werden, um robuste Anwendungen zu erstellen, deren Kompatibilität von der Nutzung auf einem einzelnen Computer bis hin zu mehreren Servern, Plattformen und anderen webbasierten Clients in einer Online-Umgebung reicht. Java kann auch verwendet werden, um kleine Anwendungsmodule namens Applets zu erstellen, entweder als eigenständige Anwendungen oder als Teil eines größeren Projekts (wie einer Webseite). Im Programmierjargon bezeichnet ein Applet in der Regel eine kleine Anwendung mit einzigartiger Funktionalität, die Teil eines größeren Programms, Widgets oder Plugins ist.
Hier sind einige der wichtigsten Java-Highlights:
Schreiben von Anwendungen auf einer Plattform und Ausführen dieser auf anderen Plattformen;
Erstellen von serverseitigen Anwendungen wie Umfragen, Shops, Foren, Formularverarbeitung und mehr;
Verwendung von Java zum Kombinieren, Anpassen und Abstimmen einer Vielzahl von Anwendungen und Diensten;
Erstellen von webbereiten Anwendungen mit der Möglichkeit, innerhalb eines bestimmten Browsers zu laufen;
Erstellen von Anwendungen für eine breite Palette von Geräten und Maschinen, einschließlich Smartphones, Prozessoren, drahtlosen Modulen, Gateways, Mikrocontrollern und mehr.
Trotz seiner Eigenschaft als ältere Programmiersprache (zumindest im Vergleich zu seinen vielen Nachfolgern) sind sowohl die Programmiersprache als auch die Java-Plattform zweifellos zukunftssicher.
Blazor
Blazor
Blazor ist ein quelloffenes, einseitiges Webentwicklungs-Framework zur Entwicklung von Webanwendungen mit HTML und C#. Sein Name leitet sich von zwei Wörtern ab: Browser und Razor, wobei letzteres auf die HTML-View-Generierungs-Engine im .NET-Framework verweist. Der Clou ist, dass Blazor, anstatt Razor-Views auf der Serverseite auszuführen (um HTML für den Browser zu rendern), diese auf der Clientseite ausführen kann.
Was Blazor so interessant macht, ist, dass keine zusätzlichen Plugins auf der Serverseite installiert werden müssen, um im Browser zu laufen. Blazor funktioniert auf zwei Hauptarten:
Es läuft auf der Serverseite, was bedeutet, dass es auf einem Server ausgeführt wird und den Browser als eine Art Vermittler zwischen Blazor und dem Endbenutzer verwendet.
Es läuft innerhalb des Browsers mithilfe von WebAssembly (einem binären Anweisungsformat für virtuelle Maschinen).
WebAssembly gilt heute als Webstandard und wird von allen gängigen Browsern und Plattformen unterstützt. Daher werden clientseitige Blazor-Anwendungen mühelos in jedem Browser auf einem Windows-, Mac-, Android- oder iOS-Gerät ausgeführt.
Wie ich bereits erwähnt habe, ist Blazor quelloffen. Es gehört der .NET Foundation, einer gemeinnützigen Organisation, die Projekte im gesamten .NET-Framework unterstützt.
Und das war es! Haben wir etwas vergessen? Was ist Ihre bevorzugte Sprache oder Ihr bevorzugtes Framework für die Entwicklung Ihrer Apps? Teilen Sie uns Ihre Gedanken in den Kommentaren unten mit.

