Java: Unterschied zwischen den Versionen

636 Bytes hinzugefügt ,  13. September 2020
K
noch nicht existierenden Artikel "JavaScript" verlinkt
K (Verweis auf Heise-Artikel (u.a. für Beliebtheit der Sprache))
K (noch nicht existierenden Artikel "JavaScript" verlinkt)
 
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Java''' war ursprünglich die einzige offizielle Programmiersprache für die Erstellung von [[App#Native_App|nativen Android-Apps]]. Java wird aber nicht nur für die Programmierung von Android-Apps eingesetzt, sondern war schon Jahre vor der Einführung von [[Android]] (und ist es bis heute) eine beliebte Programmiersprache für die Entwicklung von Desktop- und Server-Anwendungen.<ref name="heise_mai_2017">{{Cite web | url =  https://heise.de/-3719039| title = Zahlen, bitte! Java, Hauptsache 0xCAFEBABE! | date = 2017-05-23 | accessdate = 2017-05-23 | publisher = heise.de | author = Volker Zota | quote = Auch über 20 Jahre nach der offiziellen Vorstellung zählt das objektorientierte Java zu den beliebtesten Programmiersprachen. Egal, ob wir das Programmiersprachen-Ranking von TIOBE, RedMonk oder PyPL anschauen, die nach der Java-Kaffeebohne (hierzulande als Arabica bezeichnet) benannte Sprache liegt weiterhin auf Platz 1 oder 2.}}</ref>
'''Java''' war ursprünglich die einzige offizielle Programmiersprache für die Erstellung von [[App#Native_App|nativen Android-Apps]]. Java wird aber nicht nur für die Programmierung von Android-Apps eingesetzt, sondern war schon Jahre vor der Einführung von [[Android]] (und ist es bis heute) eine beliebte Programmiersprache für die Entwicklung von Desktop- und Server-Anwendungen.<ref name="heise_mai_2017">{{Cite web | url =  https://heise.de/-3719039| title = Zahlen, bitte! Java, Hauptsache 0xCAFEBABE! | date = 2017-05-23 | accessdate = 2017-05-23 | publisher = heise.de | author = Volker Zota | quote = Auch über 20 Jahre nach der offiziellen Vorstellung zählt das objektorientierte Java zu den beliebtesten Programmiersprachen. Egal, ob wir das Programmiersprachen-Ranking von TIOBE, RedMonk oder PyPL anschauen, die nach der Java-Kaffeebohne (hierzulande als Arabica bezeichnet) benannte Sprache liegt weiterhin auf Platz 1 oder 2.}}</ref>


Die Sprache wurde ursprünglich von der Firma ''Sun Microsystems'' unter Federführung von James Goslin entwickelt, die im Januar 1996 die Version 1.0 des [[JDK|Java Development Kits (JDK)]] veröffentlicht. ''Sun'' wurde 2010 von der Firma ''Oracle Corporation'' aufgekauft, die dadurch auch in den Besitz von ''Java'' kam.<ref name="java_insel_buch">{{Cite web | url = http://openbook.rheinwerk-verlag.de/javainsel/javainsel_01_001.html | title = Kapitel >1.1 Historischer Hintergrund< in Online-Buch >Java ist auch eine Insel. Das umfassende Handbuch< | accessdate = 2017-05-19 | publisher = rheinwerk-verlag.de (openbook) | author = Christian Ullenboom}}</ref> Nach dieser Übernahme kam es zu einem [[Rechtsstreit zwischen Google und Oracle]] wegen der Verwendung von [[Java]] in [[Android]].
Die Sprache wurde ursprünglich von der Firma ''Sun Microsystems'' unter Federführung von James Goslin entwickelt, die im Januar 1996 die Version 1.0 des [[JDK|Java Development Kits (JDK)]] veröffentlicht. ''Java'' war ursprünglich für den Einsastz auf eingebetteten Systemen wie Set-Top-Boxen gedacht.<ref>{{cite web | url = https://www.heise.de/-3847142 | title = Läuft überall: Die Java Virtual Machine im Überblick | accessdate = 2017-09-30 | date = 2017-09-29 | publisher = heise | author = Michael Wiedeking }}</ref> ''Sun'' wurde 2010 von der Firma ''Oracle Corporation'' aufgekauft, die dadurch auch in den Besitz von ''Java'' kam.<ref name="java_insel_buch">{{Cite web | url = http://openbook.rheinwerk-verlag.de/javainsel/javainsel_01_001.html | title = Kapitel >1.1 Historischer Hintergrund< in Online-Buch >Java ist auch eine Insel. Das umfassende Handbuch< | accessdate = 2017-05-19 | publisher = rheinwerk-verlag.de (openbook) | author = Christian Ullenboom}}</ref> Nach dieser Übernahme kam es zu einem [[Rechtsstreit zwischen Google und Oracle]] wegen der Verwendung von [[Java]] in [[Android]].
 
 
== Technische Details ==
== Technische Details ==


Der Java-Quellcode wird von einem Compiler in ''Bytecode'' für die '''Java Virtual Machine (JVM)''' übersetzt.
Der Java-Quellcode wird von einem Compiler in ''Bytecode'' für die '''Java Virtual Machine (JVM)''' übersetzt.
Diese JVM kann man sich als simulierte CPU vorstellen, die den Java-Bytecode als Maschinencode ausführt.  
Diese JVM kann man sich als simulierte CPU vorstellen, die den Java-Bytecode als Maschinencode ausführt.  
Hierdurch lässt sich der Java-Bytecode auf jedem Betriebssystem (z.B. Windows-Varianten, [[Linux]] und MacOS) und jeder CPU-Plattform, für die eine Implementierung der JVM verfügbar ist, ausführen (Plattform-Unabhängigkeit).<ref>{{Cite web | url = http://www.theserverside.com/definition/Java-virtual-machine-JVM  | title = Java virtual machine (JVM) | accessdate = 2017-05-20  | publisher = theserverside.com | author = Margaret Rouse | language = en }}</ref>
Hierdurch lässt sich der Java-Bytecode auf jedem Betriebssystem (z.B. Windows-Varianten, [[Linux]] und [[MacOS]]) und jeder CPU-Plattform, für die eine Implementierung der JVM verfügbar ist, ausführen (Plattform-Unabhängigkeit).<ref>{{Cite web | url = http://www.theserverside.com/definition/Java-virtual-machine-JVM  | title = Java virtual machine (JVM) | accessdate = 2017-05-20  | publisher = theserverside.com | author = Margaret Rouse | language = en }}</ref>
Für Android-Apps wird dieser Bytecode aber in speziellen Bytecode für die [[Dalvik VM|Dalvik Virtual Machine (DVM)]] übersetzt, der für die Ausführung von den für Android-Geräte typischerweise verwendeten CPUs optimiert ist. Der Dalvid-Bytecode ist in der [[Apk|Apk-Datei (Installations-Datei)]] in Form der Datei <code>classes.dex</code> enthalten. Bei der ab [[Android]] {{Android|4.4}} zur Verfügung stehenden Laufzeitumgebung [[Android Runtime|Android Runtime (ART)]] wird der Dalvik-Bytecode einmalig in Geräte-spezifischen Maschinencode übersetzt.  
Für Android-Apps wird dieser Bytecode aber in speziellen Bytecode für die [[Dalvik VM|Dalvik Virtual Machine (DVM)]] übersetzt, der für die Ausführung von den für Android-Geräte typischerweise verwendeten CPUs optimiert ist. Der Dalvid-Bytecode ist in der [[Apk|Apk-Datei (Installations-Datei)]] in Form der Datei <code>classes.dex</code> enthalten. Bei der ab [[Android]] {{Android|4.4}} zur Verfügung stehenden Laufzeitumgebung [[Android Runtime|Android Runtime (ART)]] wird der Dalvik-Bytecode einmalig in Geräte-spezifischen Maschinencode übersetzt.  


Zeile 14: Zeile 12:


Weiter verfügt Java über eine automatische Speicherbereinigung (Garbage Collection), so dass durch die Erzeugung von Objekten dynamisch belegter Speicher nicht explizit vom Programmierer freigegeben werden muss.<ref>{{Cite web | url = http://www.javaworld.com/article/2078645/java-se/jvm-performance-optimization-part-3-garbage-collection.html | title =  JVM performance optimization, Part 3: Garbage collection | date = 2012-10-10 | accessdate = 2017-05-20 | publisher = javaworld.com | author = Eva Andreasson | language = en }}</ref>
Weiter verfügt Java über eine automatische Speicherbereinigung (Garbage Collection), so dass durch die Erzeugung von Objekten dynamisch belegter Speicher nicht explizit vom Programmierer freigegeben werden muss.<ref>{{Cite web | url = http://www.javaworld.com/article/2078645/java-se/jvm-performance-optimization-part-3-garbage-collection.html | title =  JVM performance optimization, Part 3: Garbage collection | date = 2012-10-10 | accessdate = 2017-05-20 | publisher = javaworld.com | author = Eva Andreasson | language = en }}</ref>
== Verwandte Programmiersprachen ==
== Verwandte Programmiersprachen ==


Mit der Programmiersprache [[Kotlin]] geschriebene Programme können ebenfalls in der JVM ausgeführt werden. Außerdem können ab Version 3.0 von [[Android_Studio|Android Studio]] (offizielle Entwicklungsumgebung für Android-Apps) neben ''Java'' auch mit ''Kotlin'' native Android-Apps entwickelt werden.
Mit der Programmiersprache [[Kotlin]] geschriebene Programme können ebenfalls in der JVM ausgeführt werden. Außerdem können ab Version 3.0 von [[Android_Studio|Android Studio]] (offizielle Entwicklungsumgebung für Android-Apps) neben ''Java'' auch mit ''Kotlin'' native Android-Apps entwickelt werden.


Neben ''Kotlin'' gibt es noch weitere Programmiersprachen, deren Programme in Bytecode für die Ausführung mit der JVM kompiliert werden können, z.B. Groovy, Scala, Clojure oder Ceylon.<ref>{{Cite web |url = http://heise.de/-2281060 | title = Ein zweiter Blick auf JVM-Programmiersprachen | accessdate = 2016-04-16 | date = 2014-08-01 | publisher = heise.de | department = heise Developer | author = Simon Olofsson}}</ref>
Neben ''Kotlin'' gibt es noch weitere Programmiersprachen, deren Programme in Bytecode für die Ausführung mit der JVM kompiliert werden können, z.B. Groovy, Scala, Clojure oder Ceylon.<ref>{{Cite web |url = http://heise.de/-2281060 | title = Ein zweiter Blick auf JVM-Programmiersprachen | accessdate = 2016-04-16 | date = 2014-08-01 | publisher = heise.de | department = heise Developer | author = Simon Olofsson}}</ref><ref>{{Cite web | url = https://heise.de/-3852542 | title = Vorgestellt: Sechs Sprachen für die Java Virtual Machine | date = 2017-10-09 | accessdate = 2017-10-09 | publisher = heise.de | author = Moritz Förster }}</ref>


Die von der Firma Netscape entwickelte Skriptsprache ''JavaScript'' ist trotz des Namensbestandteils "Java" technologisch unabhängig von ''Java''. Die ersten Versionen dieser Sprache wurden unter dem Namen ''LiveScript'' veröffentlicht.<ref>{{Cite web | url = http://www.htmlgoodies.com/beyond/javascript/article.php/3470971 | title = Java vs. JavaScript: Similarities and Differences | accessdate = 2017-05-19 | publisher = htmlgoodies.com | author = Joe Burns | language = en }}</ref>  
Die von der Firma Netscape entwickelte Skriptsprache [[JavaScript]] ist trotz des Namensbestandteils "Java" technologisch unabhängig von ''Java''. Die ersten Versionen dieser Sprache wurden unter dem Namen ''LiveScript'' veröffentlicht.<ref>{{Cite web | url = http://www.htmlgoodies.com/beyond/javascript/article.php/3470971 | title = Java vs. JavaScript: Similarities and Differences | accessdate = 2017-05-19 | publisher = htmlgoodies.com | author = Joe Burns | language = en }}</ref>  


== Trivia ==
== Trivia ==
Zeile 34: Zeile 30:
* [http://openbook.rheinwerk-verlag.de/javainsel/ Volltext des Buchs "Java ist auch eine Insel. Das umfassende Handbuch" von Christian Ullenboom (Rheinwerk openbook)]
* [http://openbook.rheinwerk-verlag.de/javainsel/ Volltext des Buchs "Java ist auch eine Insel. Das umfassende Handbuch" von Christian Ullenboom (Rheinwerk openbook)]


* [https://docs.oracle.com/javase/tutorial/ Offizielle "The Java(TM) Tutorials" von Oracle]


== Einzelnachweise ==
== Einzelnachweise ==
<references />
<references />
Autopatrol, Moderator
1.304

Bearbeitungen