Was ist der Unterschied zwischen Java und JavaScript?

Wie der Webentwickler Jeremy Keith 2009 sagte: „Java ist zu JavaScript wie Schinken zu Hamster.“ Die genaue Richtigkeit dieser Analogie ist umstritten, aber der dahinterstehende Geist ist solide: Java und JavaScript, trotz einer gemeinsamen linguistischen Wurzel, sind zwei sehr unterschiedliche Programmiersprachen. Im Laufe der Jahre sind sie ein wenig überlappt, aber JavaScript bleibt die dominierende Frontend-Sprache, die Websites interaktiv macht, während Java weiterhin für serverseitige und Anwendungsprogrammierung beliebt ist. Wenn du versuchst, einen Entwickler zu engagieren, zu lernen, wie man programmiert, oder eine Seite/Anwendung zu erstellen, ist es wichtig, den Unterschied zwischen Java und JavaScript zu kennen.
Unterschiedliche Geschichten
TLDR: Java kam zuerst. JavaScript, das ähnlich, aber nicht technisch mit Java verbunden war, trat dann auf, um einen anderen Bedarf zu decken.

Java wurde über vier Jahre von James Gosling und einem Team von Forschern bei Sun Microsystems entwickelt, beginnend im Jahr 1991 und veröffentlicht im Jahr 1995. Sie entwickelten eine objektorientierte Sprache, die auf mehreren Betriebssystemen laufen konnte. Seitdem wurde es auf einer Vielzahl von Geräten verwendet, von Handys bis zu NASA-Rovern, und war bis 2016 auch eine Multimedia-Webtechnologie (wie Flash es war und JavaScript immer noch ist) über Java Applets, als Java offiziell die Unterstützung einstellte.

JavaScript wurde ebenfalls 1995 veröffentlicht, wurde jedoch in 10 Tagen von Brendan Eich bei Netscape als Möglichkeit entwickelt, Webseiten interaktiv zu gestalten, nachdem der Browser sie geladen hatte. Es wurde zunächst im Mai 1995 Mocha genannt, aber mit Netscape Navigator als LiveScript im September ausgeliefert und wurde im Dezember 1995 in JavaScript umbenannt. Angesichts der Tatsache, dass die Sprache geschaffen wurde, um ähnlich wie Java als leichtgewichtiger Skriptgegenpart zu sein, macht der Name tatsächlich Sinn – und es war auch ein recht guter Marketing-Trick. Seitdem ist es zu einer der drei Hauptkomponenten des modernen Internets gewachsen, neben HTML und CSS.
Auch lesen: Wie man auf Chrome und Firefox aufdringliches Javascript blockiert
Technische Unterschiede
Sowohl Java als auch JavaScript sind objektorientierte Programmiersprachen, was bedeutet, dass Programmierer Dinge zum Funktionieren bringen können, indem sie Informationsblöcke erstellen und sie mit anderen Informationsblöcken verbinden. Ein „Katze“-Objekt könnte beispielsweise Informationen über den Namen, die Farbe und das Alter einer Katze sowie eine Liste von Dingen, die die Katze tun kann, wie miauen, essen und schlafen, enthalten. Die Informationen in diesem Objekt sind dann für den Programmierer verfügbar, der Informationen über die Katze ausdrucken oder sie dazu bringen kann, etwas zu tun.
Das ist die größte Ähnlichkeit. Die Unterschiede stapeln sich von dort aus.
1. Java wird kompiliert, JavaScript wird interpretiert

Java hat ein „einmal schreiben, überall ausführen“-System. Es funktioniert so:
- Schreibe den Code in Java.
- Kompiliere den Code zu computerlesbarem Bytecode.
- Führe den Code auf der Java Virtual Machine aus, die ein virtueller Computer ist, der den Java-Bytecode auf Geräten ausführt.
Das bedeutet, dass du jedes Mal, wenn du das Programm ändern möchtest, die Änderung im Java-Code vornehmen und das gesamte Programm erneut in Bytecode übersetzen musst.

JavaScript hingegen kann von Webbrowsern genauso gelesen werden, wie es geschrieben ist. Der Browser überprüft einfach jede Zeile und führt sie aus. Dies macht es flexibler und einfacher zu ändern, obwohl es in der Leistung hinter kompiliertem Code zurückbleibt, da es nicht direkt in maschinenlesbarer Sprache läuft.
2. Statische Typisierung (Java) vs. dynamische Typisierung (JavaScript)
Ein großer Teil von Programmiersprachen besteht darin, Werte in Variablen zu speichern. Java ist statisch typisiert, was bedeutet, dass du angeben musst, welche Art von Wert jede Variable enthält, und dann wird es festgelegt. Zum Beispiel:
int eine_zahl = 42;
char ein_buchstabe = 'z';„int“ muss eine Zahl sein und „char“ muss ein Buchstabe sein.

JavaScript hingegen ist dynamisch typisiert, sodass jede Variable jeden Datentyp halten kann und sie sich problemlos ändern können. Der folgende Code funktioniert einwandfrei:
let zahl = 42;
let ein_buchstabe = "z";
Java hat hier einen Geschwindigkeits- und Debugging-Vorteil: Die Deklaration von Variablentypen macht das Finden von Problemen schneller und ermöglicht es dem Code, schneller ausgeführt zu werden. JavaScript ist jedoch für die meisten Entwickler schneller zu arbeiten.
3. Nebenläufigkeit
Java kann mehrere verschiedene Threads gleichzeitig ausführen, was bedeutet, dass es mehrere Dinge gleichzeitig erledigen kann.

JavaScript verwendet stattdessen eine Ereignisschleife, die im Wesentlichen durch einen Stapel von Aufgaben geht, bis es das Ende erreicht. Auch hier hat Java einen Leistungsvorteil.
4. Java hat Klassen, JavaScript hat Prototypen

Denke daran, dass Java und JavaScript Objekte verwenden, um Informationen zu speichern. Sie verwenden auch beide „Vererbung“, die es Objekten ermöglicht, ihre Eigenschaften von irgendwo anders zu erhalten. In Java erhalten sie Eigenschaften von Klassen, die im Wesentlichen Blaupausen mit Anweisungen sind, wie das Objekt gebaut werden soll. In JavaScript werden neue Objekte mit Prototypen oder Objekten erstellt, die kopiert werden können, um ein neues Objekt zu erstellen.
Das bedeutet im Wesentlichen, dass jedes Objekt in JavaScript ein Prototyp werden kann, während Java erfordert, dass du eine Klasse erstellst, die die Objekte erzeugt. Um auf ein vorheriges Beispiel zurückzukommen: Java gibt Anweisungen, wie man eine Katze baut, während JavaScript sie einfach klont.
Welche brauche ich?

Wenn dir die technischen Details die Augen vernebeln, kannst du jetzt wieder aufpassen! Wenn du versuchst, dich zwischen Java und JavaScript zu entscheiden, ist es wirklich nicht allzu schwierig.
Du möchtest in der Regel JavaScript für:
- Websites, Webanwendungen und andere Frontend-Schnittstellen
- Einfache Webserver/Backend-Aufgaben (mit Node.js)
- Erstellen von browserbasierten Spielen und Animationen
- Apps/Games/Programme, die auf Electron oder einem anderen plattformübergreifenden Framework basieren
Du wirst jedoch wahrscheinlich Java für verwenden wollen:
- Android-Apps
- Desktop-Anwendungen
- Serverseitige Anwendungen
- Schreiben von Code für Telefone, IoT-Geräte und andere Hardware
Wenn du eine Sprache lernen möchtest, hängt es von deinen Zielen ab. Wenn du eine Programmierkarriere aufbauen und ein solides Verständnis der Programmiergrundlagen erlangen möchtest oder wenn du an nicht-webbasierten Anwendungen arbeiten möchtest, gilt Java als die technisch anspruchsvollere Sprache. Es ist auch die am weitesten verbreitete weltweit.
Wenn du jedoch in die Webentwicklung einsteigen oder hauptsächlich an Websites und Webanwendungen arbeiten möchtest, ist JavaScript wahrscheinlich eine „Must-Have“-Fähigkeit. Langfristig kann es nicht schaden, beide zu lernen, da sie Konzepte umfassen, die dich zu einem besseren (und marktfähigeren!) Programmierer machen können.
Wenn du ins Spieledesign einsteigen möchtest, sind diese Programmiersprachen eher für dich geeignet.