WikiDer > Java (Programmiersprache)

Java (programmeertaal)
Java
ParadigmaObjektorientierten
erschien23. Mai 1995
Entworfen vonJames Gosling
Entwickelt vonSonne Mikrosysteme (jetzt im Besitz von Oracle Corporation)
Typensystemstatisch, stark, sicher
Implementierungenjavac (Sonne), gcj (Teil von GCC), Apache Harmonie und andere
DialekteGenerisches Java, Pizza
Beeinflusst vonC , Smalltalk, Eiffel, Ada 83, C#[1]
Einfluss aufC#, d, J#, Ada 2005, ECMA-Skript, PHP, Reichweite
BetriebssystemMultiplattform
LizenzGPL, Java-Community-Prozess
Dateierweiterungen.Java, .Klasse, .Krug
Webseitehttps://www.oracle.com/java/
Portal  Portalsymbol  Informatik
Java-Plattform

Java ist ein objektorientiertenProgrammiersprache. Java ist ein plattformübergreifend Sprache, die qua Syntax basiert weitgehend auf der (auch objektorientierten) Programmiersprache C . Java hat jedoch eine umfangreichere Klassenbibliothek dann C.

Geschichte

Java entstand Anfang die 90er in einer kleinen Tochtergesellschaft von Sonne Mikrosysteme geführt von James Gosling. Diese Firma, First Person (einschließlich Arthur van Hoff und Patrick Naughton), wurde beauftragt mit: "mach was cooles" (übersetzt: mach was cooles). In den Anfangsjahren konzentrierte sich das Unternehmen auf Software vor dem Set-Top-Boxen. Als einige Verhandlungen nur knapp scheiterten, begannen sie mit Java. Der Arbeitsname Eiche wurde gewählt, als man bei der Namenssuche nach draußen schaute und fand Eiche (Englisch: Eiche) sah stehend. Es stellte sich jedoch heraus, dass es bereits eine Programmiersprache mit diesem Namen gab, also wählten sie "Java", eine Referenz auf Kaffee. Später bauten sie auf dieser Terminologie auf und führten ein JavaBeans (Bohnen) und KrugArchive (Java-Archiv) (a Krug ist ein Glas).

Ursprünglich wollten die Leute Java als Programmiersprache für alle Arten von elektronischen Geräten fördern, wie z Fernseher, Fernbedienungen und Kühlschränke. Aber wenn es weltweites Netz immer beliebter wurde, kam Sun auf die Idee, ihre (damals noch nicht allzu populäre) Sprache in a Webumgebung. Dank der offenen Spezifikation und der Möglichkeit, ein Java-Programm wie Applet in eine Webseite einbetten (manchmal als "Einbettung" bezeichnet) war die Hype bald erstellt.

Der Einsatz von Java für kleine Geräte wurde kurze Zeit später (1997) mit der Veröffentlichung des Java Card-Technologie, wodurch Chipkarten kann in Java programmiert werden. Diese Technik wurde bald in der MobiltelefonWelt für den Einsatz in der SIM Karte. Es stellte sich als erfolgreich heraus und im Jahr 2005 wurde diese Java-Technik in mehr als 80% der ausgegebenen SIM-Karten verwendet.

Die nächste Java-Generation bot dann die Möglichkeit, Java-Software selbst auf Servern laufen zu lassen (englisch: 'server-side'). Dies hat die Form von Servlets, Enterprise JavaBeans und Java Server-Seiten. Gerade in diesem Bereich hat Java in den letzten Jahren seine Stärke bewiesen und die Sprache gilt als wichtige Umgebung für Webanwendungen. Siehe auch Java 2 Enterprise-Edition.

Die Java-Version, die für Geräte mit begrenzter Verarbeitungskapazität vorgesehen und geeignet ist, wie z pdaFotos, Handys und schließlich die Set-Top-Box. Siehe dafür Java 2 Micro-Edition.

Am 13. November 2006 veröffentlichte Sun Teile von Java als Open-Source-Software unter der GNU General Public License (GPL). Am 8. Mai 2007 veröffentlichte Sun die letzten Teile von Java unter der GPL, mit Ausnahme einiger kleinerer Teile, in denen Sun dies nicht getan hat Urheberrechte © auf.

Dann Google wurde erfolgreich mit dem BetriebssystemAndroid, die in Java geschriebene Programme ausführen kann, wurde Java bei Entwicklern immer beliebter. Dies lag unter anderem an der optimierten virtuellen Maschine Dalvik die zum Ausführen von Java-Programmen verwendet wird, wodurch Java-Programme schneller wurden.

Veröffentlichungen

Java kennt folgende Versionen:

VersionsnummerCode NameVeröffentlichungsdatum
JDK 1.1.4Wunderkerze12. September 1997
JDK 1.1.5Kürbis3. Dezember 1997
JDK 1.1.6Abigail24.04.1998
JDK 1.1.7Brutus28. September 1998
JDK 1.1.8Chelsea8. April 1999
J2SE 1.2Spielplatz4. Dezember 1998
J2SE 1.2.1Nein30. März 1999
J2SE 1.2.2Kricket8. Juli 1999
J2SE 1.3Turmfalke8. Mai 2000
J2SE 1.3.1Marienkäfer17. Mai 2001
J2SE 1.4.0Merlin13. Februar 2002
J2SE 1.4.1Trichter16. September 2002
J2SE 1.4.2Gottesanbeterin26. Juni 2003
J2SE 5.0 (1.5.0)Tiger29. September 2004
Java SE 6 (1.6.0)Mustang11. Dezember 2006
Java SE 7 (1.7.0)Delfin28. Juli 2011
Java SE 8 (1.8.0)Spinne18. März 2014
Java SE 921. September 2017
Java SE 1020. März 2018
Java SE 1125. September 2018
Java SE 1219. März 2019
Java SE 1317. September 2019
Java SE 1417. März 2020
Java SE 1515. September 2020
Java SE 1616. März 2021

Über die Nummerierung der Versionen ist viel gesagt worden. Nach der Veröffentlichung von Version 1.2 wurde die 2 oft nach Java erwähnt, was zu einer ganzen Reihe von Büchern führte, die "Java 2 behandelten", auch wenn es Version 1.3 oder 1.4 war. Ab Version 1.5.0 gab es ein doppeltes Nummerierungssystem: Bei Java 5.0 bezog es sich auf die JRE oder Java Runtime Environment. Die Versionsnummer 1.5.0 bezog sich ganz konkret auf das JSDK oder Java Software Development Kit, also die Entwicklungsumgebung. SE steht für „Standard-Edition“.

Benutzen

In den 1990er Jahren wurde Java sehr populär. In den meisten Fällen schien Java aufgrund seiner engen Syntax und der Möglichkeit, "Applets" in Webseiten einzubetten, nur für den Einsatz im Bildungsbereich bzw. für Webanwendungen geeignet. Aufgrund geringfügiger Unterschiede in Java-Versionen zwischen verschiedenen Browser ist die Verwendung von Applet kam eigentlich nie richtig in Fahrt, was zur Einführung des Java führte Plugin: anstelle einer virtuelle Java-Maschine Durch den integrierten Browser-Builder kann der Benutzer ihn bei Bedarf selbst herunterladen. Dadurch wird die Inkompatibilität zwischen JVMs verschiedener Marken umgangen.

Eine weitere Plattform, auf der Java weit verbreitet ist, ist das Mobiltelefon. Viele Geräte bieten die Möglichkeit, Java-Programme auszuführen. Diese Programme müssen dann den Vorgaben der Java 2 Micro-Edition-Standard.

Verwendung von Java-Programmen in Server hat seit der Implementierung immer mehr zugenommen just in time Zusammenstellung, die die Ausführung auf Java Virtual Machine-Ebene stark beschleunigte und die bisher langsamen Java-Programme auch für Serveranwendungen nutzbar machte. zusätzlich J2EE- (Enterprise Edition) Bibliotheken eine große Anzahl von Klassen für die Programmierung von (Web-)Serveranwendungen, die Kommunikation mit Datendateien und die Nutzung aller Arten von generischen Diensten. Beispielsweise laufen die meisten internetbasierten Bankdienstleistungen in den Niederlanden inzwischen auf Java-Technologie. Es Open Source-Content-Management-System aus niederländischem Boden MMBase ist komplett in Java geschrieben.

Aufgrund seiner Einfachheit und webbasierten Fähigkeiten ist Java auch als Programmiersprache sehr beliebt für Computerspiele.Ein Beispiel dafür ist Minecraft. Auch die Entwicklung von Bibliotheken, wie z Java OpenAL (JOAL) und Java OpenGL (JOGL), trägt zur Verwendung von Java für Computerspiele bei. Es gibt auch Open-Source-Bibliotheken entwickelt, wie die Leichte Java-Spielbibliothek (LWJGL). Das jMonkeyEngine ist ein Motor für die Entwicklung von 3D-Computerspielen in Java.

Java vs. C

Java wird zusammengestellt zu Byte-Code Für ein virtuelle Maschine, die Java Virtual Machine (JVM). Die JVM ist für viele verschiedene Computertypen verfügbar. Als Ergebnis wird der kompilierte Bytecode Plattformunabhängig, d.h. der Code kann auf jedem Rechner laufen, unabhängig vom Betriebssystem (wie Windows, Unix oder Mac OS X). Es gibt also nur eine (virtuelle) Plattform: die JVM.

C Quellcode (und auch der Quellcode von C, die nicht-objektorientierte Vorstufe von C ) wird normalerweise direkt zu Maschinensprache kompiliert, wodurch die ausführbaren Dateien nur auf einer Zielplattform ausgeführt werden. Der Javabyte-Code ist im letztmöglichen Moment (gerade rechtzeitig, JIT) in Maschinensprache kompiliert. Diese JIT-Kompilierung berücksichtigt auch die dynamischen Eigenschaften eines Programms. Es kann vorkommen, dass häufig verwendeter Bytecode neu kompiliert wird, da in einer bewährten Situation mit einer etwas anderen Kompilierung große Geschwindigkeitsgewinne erzielt werden können.

Dadurch läuft ein Java-Programm anfangs langsamer als vergleichbare Programme, die direkt in Maschinensprache kompiliert wurden. In den frühen Tagen der Programmiersprache Java war auch die JIT-Kompilierung noch nicht vollständig implementiert. Aus diesem Grund leidet Java unter einem ernsthaften Imageproblem, das bis heute andauert, obwohl Java heutzutage konkurrenzfähig ist.

Außerdem wird Java manchmal als Nachteil gegenüber C angesehen, das für die Sprache C unabhängig ist ISO/ANSIAAusschüsse existieren, während Java noch immer in den Händen zu sein scheint Orakel. Andere argumentieren, dass Java hingegen immer noch die Möglichkeit hat, zu wachsen, sich anzupassen und neue Entwicklungen einzubauen, während C durch die Standardisierung erstarrt ist und daher von allen Seiten von Entwicklungen aller Art überholt wird.

In Java ist die Programmierer besser gegen sich selbst geschützt als in C und C. In Java gibt es z Zeigermanipulation. Dies ist von Vorteil, da Fehler bei der Verwendung von Zeigern schwer nachzuvollziehen sind und sogar zum Absturz des Betriebssystems führen können. Andererseits ist es auch ein Nachteil, weil es die Freiheit des Programmierers einschränkt.

Ein weiterer wichtiger Unterschied zwischen Java und C ist das Fehlen von expliziten Speicherverwaltung in Java: Java verfolgt selbst, welche Objekte mit dem Neu-Operator angelegt wurden und löscht diese automatisch, sobald keine Referenzen mehr auf diese Objekte vorhanden sind. In Ergänzung, Ausnahmebehandlung gründlicher und richtiger angeordnet als in C .

Wie C unterstützt auch Java (seit 5) generische Programmierung. Anders als in C existieren in Java parametrisierte Typen nur für den Compiler. In Java werden diese Typen durch den entsprechenden, am wenigsten spezifischen, nicht generischen Typ ersetzt (z. B.: Liste wird aufführen). Darüber hinaus verwendet es LaufzeitGießen bestimmte Typen zu erhalten. In C werden generische Typen durch spezialisierte Typen ersetzt. Hier ist es beispielsweise nicht möglich, eine Bibliothek mit parametrisierten Klassen zu schreiben, die nur zur Laufzeit verbunden sein. EIN ListeKlasse, die in einer bestimmten Bibliothek enthalten ist, muss neu kompiliert werden, wenn sie für einen Typ parametrisiert ist und ihre Parametrierung nicht bereits in der Bibliothek vorkompiliert ist. Das ist auch der Grund STL, die Standardbibliothek von C , fast ausschließlich in Header-Dateien definiert: Die Anwendung, die STL verwendet, muss ihre eigenen Versionen der Klassen kompilieren.

Manche denken, Java ist ein Ding klarer Sprache als C , aber das ist Geschmackssache: Völlig unverständliche Programme zu schreiben ist mit C( ) einfacher als mit Java. Viele C-Programmierer vermissen Dinge, die in Java bewusst weggelassen werden, wie z Zerstörer, Bedienerüberlastung und Zeigermanipulation. Sie beschweren sich auch darüber, dass die Müllsammler gibt die ungenutzten Objekte nicht schnell genug frei.

Java und JavaScript

Viele Leute verwechseln Java mit Javascript, aber tatsächlich haben die beiden Sprachen wenig miteinander zu tun. Während beide Sprachen auf den ersten Blick in der Syntax ähnlich erscheinen mögen, gibt es doch große Unterschiede:

  • Ausführbarkeit: JavaScript ist als Skriptsprache gedacht und wird daher häufig verwendet interpretiert. Java wird zunächst in Bytecode kompiliert und dann von einer virtuellen Maschine (VM) ausgeführt.
  • Beziehung zum Browser: A Skriptsprache dient normalerweise als Hilfe zu einem Programm. Im Fall von a Browser JavaScript dient als Mittel, um statische Webseiten zu manipulieren. Java-Applets sind jedoch separate Programme, die im Grunde nichts mit der Webseite zu tun haben, auf der sie erscheinen: Sie laufen in einer Art „Sandbox“, aus der sie nicht herauskommen. Signierte Java-Applets verfügen jedoch nicht über diese Sandbox.
  • typstark vs. schwach typisiert: JavaScript hat keine stark typisierten Variablen, was bedeutet, dass jede deklarierte Variable eine beliebige ist Datentyp enthalten kann. Java erfordert, dass Sie im Voraus angeben, welchen Datentyp eine Variable enthalten kann, und wenn einer Variablen der falsche Datentyp zugewiesen wird, wird dies zur Kompilierzeit benachrichtigt. Bei der Programmierung kleiner, einfacher Anwendungen reduziert die fehlende Angabe von Datentypen die Komplexität der Codierung, sodass JavaScript eher für kurze, kleine Anwendungen geeignet ist. Bei großen Anwendungen ist die Bedeutung von starke Typen viel größer, da es dem Programmierer ermöglicht, frühzeitig Fehler im Umgang mit Datentypen zu beheben und unnötige Konvertierungen zwischen ihnen zu kontrollieren.
  • Statische Eingabe vs. Dynamisches Tippen: JavaScript ist dynamisch typisiert, Java ist statisch typisiert. Dies bedeutet, dass Typprüfung passiert in Java während der Kompilierung und in JavaScript zur Laufzeit.
  • Objektmodell: Java weiß Klassen, JavaScript kennt nur Objekte. Java hat daher ein Objektmodell basierend auf Klassenvererbung, JavaScript hat ein Objektmodell basierend auf Prototypvererbung. Es unterstützt auch JavaScript Ente tippen, dies im Gegensatz zu Java.

Java vs. .NET

Das Konzept der virtuellen Maschine (VM) ist älter als Java selbst. In den 1970er Jahren gab es die P-Code-virtuelle Maschine zu Pascal-Programms plattformunabhängig. Ebenfalls Microsoft erstellte später seine eigene virtuelle Maschine: die Common Language Runtime oder CLR, die Basis von .GERADEDer große Unterschied zwischen Suns Java VM und Microsofts CLR besteht jedoch darin, dass Suns auf verschiedenen Betriebssystemen laufen können, während Microsofts auf die verschiedenen Windows-Versionen von Microsoft beschränkt ist. Obwohl es jetzt durch die Open-Source-Community einige erfolgreich .GERADE-Laufzeiten für Linux freigegeben, davon Mono ist die bekannteste, mit der .NET-Code auch auf anderen Betriebssystemen ausgeführt werden kann.

Java und Open Source

Java wird oft im Zusammenhang mit . erwähnt Open Source und offene Standards und am 13. November 2006 kündigte Sun Microsystems an, Java unter dem GNU General Public License.

Sun hatte die Verwaltung der Java-Plattform zuvor in die Hände einer unabhängigen Organisation gelegt, der Java-Community-Prozess (JCP). Diese Partnerschaft von Sun mit anderen Unternehmen, Institutionen und Einzelpersonen bestimmt, welche APIs und andere Standards werden Teil der Plattform. Außerdem bestimmt das JCP die Richtung der Kernplattform selbst – welche Klassen in die Standardbibliothek aufgenommen werden und welche Änderungen an der Sprache selbst vorgenommen werden. Sun hat jedoch innerhalb des JCP ein Veto gegen Änderungen an der Kernplattform.

Damals veröffentlichte Sun eine Java-Entwicklungsumgebung, Netbeans, die später in die Open-Source-Community aufgenommen wurde und nun von einer Open-Source-Community weiterentwickelt und verwaltet wird. Auch in der Open-Source-Welt sind viele Tools und Software für Java zu finden und/oder in Java geschrieben, die unter einer der vielen Open-Source-Lizenzen veröffentlicht werden.

Beispielprogramm

Das bekannte "Hallo Welt"Programm in Java könnte so aussehen:

ÖffentlichkeitKlasseHallo Welt{ÖffentlichkeitstatischLeereMain(Zeichenfolge[]args){System.aus.println("Hallo Welt!");}}

Für auf einer Website (ein 'Applet') es sieht aus wie das:

importierenjava.applet.applet;importierenjava.awt.Grafik;ÖffentlichkeitKlasseHallo WelterweitertApplet{ÖffentlichkeitLeereFarbe(GrafikG){G.drawString("Hallo Welt!",20,20);}}

Siehe auch

Externe Links

Wikibooks hat mehr zu diesem Thema: Programmieren in Java.