Java, PHP oder Kotlin: Welche Programmiersprache sollte man lernen?
Ján Halaša|28.03.2023
Du möchtest Programmieren lernen und weißt nicht, mit welcher Programmiersprache du anfangen sollst? Dieser Artikel hilft dir bei der Entscheidung.
Programmiersprachen haben oft einen Zweck, für den sie entwickelt wurden, oder eine Domäne, in der sie sich hervorgetan haben. Es ist normalerweise einfacher, eine Sprache basierend darauf auszuwählen, welche Arten von Anwendungen darin einfach zu schreiben sind, als nur basierend auf den Eigenschaften der Sprache. Daher werden wir die verschiedenen Anwendungskategorien, die dafür geeigneten Sprachen sowie deren Vor- und Nachteile durchgehen.
1. Mobile Anwendungen
Die Entwicklung mobiler Anwendungen geht schnell voran, denn jedes Kleinkind hat bereits ein Handy. Mobile Anwendungen können vom Entwickler in nativen Sprachen programmiert werden, für Android ist es Java/Kotlin und für iOS ist es Objective-C/Swift, oder in sogenannten Multi-Plattform-Frameworks, in denen der Entwickler idealerweise, den Quelltext der Anwendung einmal schreibt und kann dann die Anwendung sowohl für Android, als auch für iOS zusammenstellen.
Android
Java
Java ist eine objektorientierte Sprache. Es ist seit zwei Jahrzehnten eine beliebte Sprache und wurde 2018 zur fünftbeliebtesten Technologie gekürt. Sie ist eine plattformübergreifende Sprache, in der Desktop-, Server- und mobile Anwendungen für alle gängigen Betriebssysteme entwickelt werden können.
Vorteile
Es ist eine sehr beliebte und weit verbreitete Sprache, daher gibt es genügend Materialien zum Lernen und eine riesige Community, die bei allen Schwierigkeiten hilft. Aufgrund ihrer Verbreitung gibt es auch mehr Stellenangebote für diese Sprache. Wenn eine Person Java lernt, kann sie mehrere Arten von Anwendungen erstellen.
Nachteile
Google bevorzugt als Android-Entwicklungsunternehmen Kotlin für die Entwicklung von Android-Anwendungen. Das liegt wohl vor allem an Lizenzstreitigkeiten mit Oracle, aber es ist möglich, dass Google Java sukzessive vernachlässigt.
Auch die Unterstützung für neue Java-Versionen kommt mit Verzögerung.
Java fehlen auch einige moderne Elemente der Sprache, z. Unterstützung der Unveränderlichkeit von Objekten (Immutability) oder Überprüfung, ob Variablen nicht leer sind - einige andere Sprachen verlangen, dass Variablen, die leer sein können, markiert werden, was die Fehleranfälligkeit im Code verringert.
Kotlin
Kotlin ist eine statisch typisierte Programmiersprache, die in Java-Bytecode übersetzt, der auf der Java Virtual Machine ausgeführt wird. Es ist eine moderne objektorientierte Sprache, mit der du Quelltexte effizient schreiben kannst.
Vorteile
Kotlin ist so konzipiert, dass es beim Schreiben seines Codes effizient ist. Wenn du also eine in Java geschriebene Anwendung mit einer in Kotlin geschriebenen Anwendung vergleichst, enthält die Kotlin-Anwendung weniger Quelltext. Wenn du dich an Kotlin gewöhnst, wird der Quelltext für dich leichter lesbar und klarer. In Kotlin kannst du auch in Java geschriebene Bibliotheken verwenden und sogar Java und Kotlin gleichzeitig in einem Projekt verwenden, da beide Sprachen in Java-Bytecode übersetzt werden.
Nachteile
Kotlin ist seit seiner Einführung im Jahr 2016 nicht viel gewachsen, daher gibt es weniger Material zum Lernen und eine kleinere Community, die bei Problemen helfen kann. Kotlin lässt sich im Vergleich zu Java auch langsamer kompilieren.
Kotlin hat eine komplexere Syntax (Code-Schreiben) als Java und erfordert mehr Aufwand, um es zu lernen.
iOS
Swift
Swift ist eine kompilierte Programmiersprache von Apple. Sie ist relativ neu und dient hauptsächlich der Entwicklung von Anwendungen für Apple-Plattformen (macOS und iOS), ist aber auch für Linux und Windows verfügbar. Um iOS-Anwendungen zu entwickeln, ist ein Apple-Computer (z. B. MacBook) erforderlich. Die XCode-Umgebung wird hauptsächlich für die Entwicklung verwendet.
Vorteile
Im Vergleich zu seinem Nachfolger Objective-C enthält es Elemente moderner Programmiersprachen und reduziert die Fehleranfälligkeit, indem es einige von der C-Sprache geerbte Elemente entfernt.
Nachteile
Die Sprache ist fast ausschließlich für Apple-Plattformen nutzbar und es ist schwer abzuschätzen, ob sich ihre Nutzbarkeit in Zukunft ausweiten wird.
2. Multiplattform-Mobilanwendungen
Dies sind Anwendungen, die du einmal schreibst und für mehrere Betriebssysteme erstellen kannst. Es gibt weitere Tools, die zum Schreiben plattformübergreifender Anwendungen verwendet werden können. Zum Beispiel Flutter, React Native, Cordova, Xamarin. Flutter ist der Jüngste, aber in kurzer Zeit wurde er wahrscheinlich der meistgenutzte von Ihnen.
Flutter
Die Flutter-Technologie verwendet Dart als Programmiersprache zum Erstellen von Anwendungen. Es ist eine objektorientierte Sprache mit vielen Errungenschaften, die moderne Sprachen verwenden. Wenn du eine Anwendung in Flutter schreiben möchtest, musst du nur eine Sprache lernen – nämlich Dart – und die Komponenten kennen, die Flutter verwendet. Du musst keine andere Technologie beherrschen.
Vorteile
Dart hat eine einfache Syntax, die an C#, Java erinnert. Sie ist sehr einfach zu erlernen und eignet sich daher auch für Anfänger. Diese Programmiersprache ist intuitiv und effizient zu tippen.
Nachteile
Die Dart-Sprache wurde nicht auf andere Technologien außer dem Flutter-Framework erweitert, obwohl es Bemühungen gab, sie in Angular (Apps, die im Browser ausgeführt werden) zu verwenden, und sie kann auch zum Schreiben von Serveranwendungen verwendet werden. Daher bringt Ihnen das Erlernen der Sprache nicht den gleichen Vorteil wie beispielsweise das Erlernen der Java-Sprache, die eine breitere Verwendung hat.
3. Anwendungen, die im Browser ausgeführt werden
Dies sind Client-Server-Anwendungen, bei denen der Client-Teil (Benutzeroberfläche) in einem Webbrowser ausgeführt wird. Ein Beispiel kann ein E-Mail-Client (Gmail) oder ein E-Shop sein. Diese Anwendungen benötigen meist die Serverseite als Anbieter von Daten und anderen Diensten. Es ist jedoch auch möglich, getrennte Anwendungen zu erstellen. Diese Anwendungen werden normalerweise nicht installiert, sondern müssen auf einem Server mit einer öffentlichen URL-Adresse bereitgestellt werden. Sie haben auch ihre Einschränkungen, die durch den Browser gegeben sind - z. B. sie können nicht einfach auf Dateien zugreifen, die auf der Festplatte des Benutzers gespeichert sind.
JavaScript
In Browsern kann nur JavaScript-Code ausgeführt werden. Es gibt Sprachen, deren Quellcodes in JavaScript umgewandelt werden können, daher ist es nicht notwendig, JavaScript direkt zu verwenden, aber es ist sehr gut, es zu kennen. JavaScript ist eine interpretierte (nicht kompilierte) Sprache, die die Deklaration von Variablentypen nicht erzwingt.
Vorteile
Der Hauptvorteil liegt wohl darin, dass das JavaScript-Programm in jedem modernen Browser lauffähig sein wird. Die JavaScript-Entwicklung ist standardisiert, man muss nur aufpassen, dass nicht alle Browser alle neuen Funktionalitäten unterstützen.
Für die Entwicklung von JavaScript-Anwendungen ist keine spezielle Entwicklungsumgebung erforderlich – schreib einfach den Code und öffne ihn in einer HTML-Seite im Browser. Browser bieten auch Entwicklertools zum Debuggen und zur Leistungsoptimierung.
JavaScript verwendet weitgehend die Syntax (Notationsform), die mit Sprachen wie C, Java oder C# gemeinsam ist, daher ist es von Vorteil, sie zu kennen, wenn Sie später eine dieser Sprachen lernen möchten.
Nachteile
JavaScript hat ein anderes Konzept der Objektprogrammierung als die meisten anderen gängigen Sprachen (Java, C#, Python). Es zu verstehen, erfordert zusätzliches Studium, ist aber zunächst nicht notwendig - meistens reicht es aus, zu wissen, wie man die vorhandenen Klassen verwendet.
Die Typlosigkeit von Variablen erhöht die Schwierigkeit, größere Programme zu warten oder zu entwickeln.
Sie müssen besonders vorsichtig sein, wenn Sie Objekte mit dem Operator "==" vergleichen, da dies zu unerwarteten Ergebnissen führen kann (z. B. [ ] == 0). Es reicht aber aus, stattdessen den alternativen Operator „===“ zu verwenden.
Um eine größere Anwendung zu erstellen, ist es notwendig, ein Framework wie Angular, React.js, Vue.js auszuwählen und zu lernen.
TypeScript
TypeScript ist eine Sprache, die JavaScript hauptsächlich um typisierte Variablen erweitert. Sie ist sehr hilfreich bei der Erstellung größerer Anwendungen, da der Sprachübersetzer uns mehr Fehler aufzeigen kann und die Entwicklungsumgebung (IDE) beim Schreiben von Code hilfreicher sein kann - sie versteht besser, was der gegebene Code tut.
TypeScript wird in JavaScript übersetzt und übernimmt alle vorhandenen Funktionen, sodass der Wechsel einfach ist, es erfordert nur einen zusätzlichen Übersetzungsschritt – es kann nicht direkt im Browser ausgeführt werden.
HTML, CSS
Weder HTML noch CSS sind Programmiersprachen, aber es sind Technologien, die man kennen muss, um Anwendungen für Webbrowser zu erstellen. HTML ist eine Sprache zur Strukturierung von Dokumenten oder Anwendungen. CSS ist eine Sprache zur visuellen Gestaltung von HTML-Elementen. Sie sind leicht zu erlernen und am Anfang reicht es, nur einen kleinen Teil dieser Sprachen zu beherrschen.
4. Desktop-Anwendungen und Spiele
Windows mit Fenstern
C#
C# wurde von Microsoft als Alternative zu Java entwickelt. Es ist eine objektorientierte, kompilierte, typisierte Sprache. Ähnlich wie Java wird C# in das IL-Bytecode-Format kompiliert und beim Start in nativen Code konvertiert. Es ist ziemlich an das .NET-Framework gebunden und es gibt auch ein beliebtes Tool zur Spieleerstellung dafür - Unity.
Vorteile
Es ist wahrscheinlich die am besten geeignete Sprache für die Entwicklung von Windows-Anwendungen, bei denen die Leistung nicht der wichtigste Faktor ist. Die Sprache enthält viele moderne Funktionen und verfügt über eine große Anzahl von Bibliotheken, die zum Erstellen von Anwendungen verwendet werden können.
Nachteile
Die Entwicklung von GUI-Anwendungen in C# ist immer noch nur für Windows. Ihre Geschwindigkeit ist im Allgemeinen langsamer, als wenn sie in C++ geschrieben wären.
C++
C++ hat sich aus C entwickelt, indem Unterstützung für Klassen und Objekte hinzugefügt und eine größere Standardbibliothek erstellt wurde. Es ist eine kompilierte, typisierte Sprache. Die größte Popularität erlebte er in den 90er Jahren. Viele Spiele sind in C++ geschrieben. Unreal Engine ist wahrscheinlich das bekannteste Tool zum Erstellen von Spielen. Es ist auch möglich, Anwendungen für viele Plattformen zu schreiben.
Vorteile
Sein Hauptvorteil ist die Fähigkeit, hochoptimierten Code zu schreiben. Es ist auch möglich, Anwendungen zu schreiben, die auf andere Plattformen übertragen werden können.
Nachteil
Die Sprache hat viele Nachteile der C-Sprache – hauptsächlich die Anfälligkeit für Fehler im Zusammenhang mit der Verwaltung des Betriebsspeichers und die Notwendigkeit, Header-Dateien zu erstellen.
Keine GUI
Diese Kategorie ist ziemlich allgemein und hat keine wesentlichen Einschränkungen. Programme ohne grafische Umgebung - zum Ausführen von der Befehlszeile aus können in den meisten Programmiersprachen erstellt werden. Dabei handelt es sich häufig um Programme zur Datenverarbeitung oder Automatisierung von Betriebssystemprozessen.
Python
Python ist eine skriptbasierte, nicht typisierte Allzwecksprache. Es wird oft für mathematische Berechnungen, Statistiken und maschinelles Lernen verwendet. Sein Vorteil ist, dass es eine große Anzahl von Bibliotheken dafür gibt. Darin geschriebene Anwendungen können auf den verschiedenen Plattformen ausgeführt werden, auf denen Python verfügbar ist. Es kann auch verwendet werden, um plattformübergreifende Desktop-Anwendungen mit einer grafischen Umgebung (über PyQT) zu erstellen.
Bash
Bash ist eine Sprache, die hauptsächlich als Shell (Befehlszeileninterpreter) in Betriebssystemen wie Linux oder macOS verwendet wird. Es ist daher auf diesen Systemen fast immer verfügbar, sodass darin geschriebene Skripte einfach zu verwenden sind. Seine Grundkenntnisse sind für fortgeschrittene Benutzer dieser Betriebssysteme sehr nützlich. Die Sprache kann die Funktionalität externer Programme problemlos nutzen und kombinieren. Aber zum Verfassen allgemeiner Anwendungen ist es nicht geeignet.
5. Serveranwendungen
Dies sind Anwendungen, die auf Servern ausgeführt werden, auf die über das Netzwerk zugegriffen wird. Sie lassen ihre Client-Anwendungen meist im Browser oder in mobilen Anwendungen laufen. Sie sind daher eine geeignete Wahl für Programmierer, die keine Benutzeroberflächen erstellen möchten.
Java
Java ist wahrscheinlich die am weitesten verbreitete Sprache zum Schreiben von Serveranwendungen. Seit etwa 20 Jahren gibt es eine große aktive Community, die Tools zum Erstellen dieser Anwendungen entwickelt - entweder eine standardisierte Version (jetzt Jakarta EE genannt) oder unabhängige Tools (z. B. Spring Framework). Für Java gibt es eine Vielzahl von Bibliotheken und Technologien, die die Erstellung auch komplizierter Anwendungen erleichtern.
Java-Anwendungen sind auf jeder Plattform lauffähig, für die das Java Runtime Environment (JRE) verfügbar ist. Java als Sprache wird immer noch aktiv weiterentwickelt und verbessert, aber seine Entwicklung ist nicht wild - es besteht keine Gefahr, dass eine heute geschriebene Anwendung aufgrund von Änderungen in der Sprache in einigen Jahren nicht mehr funktioniert.
Für die Entwicklung kleiner privater Anwendungen ist Java möglicherweise keine vollständig geeignete Wahl, da für die Bereitstellung der Anwendung normalerweise ein Cloud-Dienst erforderlich ist, was zu Komplikationen führen kann. Einige Anbieter dieser Dienste bieten jedoch einfache Programme kostenlos an.
C# a .NET
C# kann verwendet werden, um Serveranwendungen mit dem .NET-Framework zu erstellen. Es wurde von Microsoft entwickelt, ist aber heute ein Open-Source-Tool, das auf verschiedenen Plattformen verfügbar ist.
Vergleich mit Java
Die Entwicklung von Anwendungen auf beiden Plattformen ist sehr ähnlich, da sie die gleichen Probleme lösen (Request-Verarbeitung, Speicherung in der DB etc.). Beide Welten beeinflussen sich gegenseitig – sie übernehmen Elemente, die sich gegenüber der anderen Seite bewährt haben. Wenn eine Person Erfahrung mit der Erstellung von Serveranwendungen in Java hat, ist es für sie leicht zu lernen, sie in .NET zu erstellen und umgekehrt. Individuelle Vor- oder Nachteile sind oft subjektiv – z.B. ob der Zugriff auf die Datenbank besser über JPA/Hibernate in Java oder über Microsofts Entity Framework erfolgt.
PHP
PHP wurde ursprünglich als Option zum Skripten von HTML-Seiten entwickelt. Es wurde hauptsächlich von der Sprache C inspiriert, von der es die Syntax und einige Funktionen aus der Standardbibliothek übernommen hat. Später wurden objektorientierte Elemente hinzugefügt und Elemente, die sich als unangemessen erwiesen, wurden aus der Sprache gestrichen. Es ist jedoch eine nicht typisierte Skriptsprache.
PHP ist eine sehr weit verbreitete Sprache, hauptsächlich aufgrund von Open-Source-Projekten zur Erstellung von Websites wie Wordpress, Joomla oder Drupal und der Tatsache, dass PHP von den meisten Webhosting-Unternehmen unterstützt wird.
Anwendungen werden nicht auf dem Server ausgeführt – Code wird bei Bedarf ausgeführt (z. B. zum Erstellen einer Website), was ein Problem für Anwendungen sein kann, die eine stärker zustandsbehaftete Verarbeitung erfordern.
Vorteile
Der vielleicht größte Vorteil ist die einfache Bereitstellung der Anwendung auf regulärem Webhosting – Sie müssen nur eine Domain und Webhosting kaufen und Dateien auf den Server hochladen. Am Anfang muss keine komplizierte Anwendung erstellt werden – es ist möglich, den PHP-Code direkt in das HTML einzufügen. Für ernsthaftere Anwendungen greift man jedoch besser auf eines der Frameworks (z. B. Laravel oder Yii) zurück.
Nachteile
Die Sprache selbst ist nicht komplex, ändert sich aber relativ häufig, und Anwendungen müssen aktiv an neuere Versionen der Sprache angepasst werden, da sie sonst möglicherweise nicht mehr funktionieren. Dies gilt auch für Frameworks. Die Sprache enthält auch einige Elemente, die verwirrend und sogar frustrierend sein können. Zum Beispiel die Art und Weise, mit Pointern zu arbeiten (weitere Beispiele lassen sich leicht im Internet finden).