Java (Programmiersprache)
Paradigma | Multi-Paradigma: generisch, objektorientierter (Klassenbasierte), funktional, Imperativ, reflektierend, gleichzeitig |
---|---|
Entworfen von | James Gosling |
Entwickler | Sun Microsystems |
Erstmals erschienen | 23. Mai 1995[1] |
Stabile Version | Java SE 18[2] / 22. März 2022 |
Disziplin tippen | Statisch, stark, sicher, Nominativ, Manifest |
Dateiname -Erweiterungen | .Java, .Klasse, .Krug, .jmod |
Webseite | Oracle.com/java/, www |
Beeinflusst von | |
Clu,[3] Simula67,[3] Lispeln,[3] Smalltalk,[3] ADA 83, C ++,[4] C#,[5] Eiffel,[6] Mesa,[7] Modula-3,[8] Oberon,[9] Ziel c,[10] UCSD Pascal,[11][12] Objekt Pascal[13] | |
Beeinflusst | |
ADA 2005, Beanshell, C#, Kapelle,[14] Clojure, ECMaskript, Fantom, Gambas,[15] Groovig, Hacken,[16] Haxe, J#, Kotlin, Php, Python, Scala, Samen7, Vala, JavaScript, JS ++ | |
|
Java ist ein hohes Level, Klassenbasierte, objektorientierter Programmiersprache Das soll so wenig Implementierung haben Abhängigkeiten wie möglich. Es ist ein allgemeiner Zweck Programmiersprache zu lassen Programmierer Schreiben Sie einmal, rennen Sie irgendwohin (Wora),[17] bedeutet, dass zusammengestellt Java -Code kann auf allen Plattformen ausgeführt werden, die Java unterstützen, ohne dass sie neu kompiliert werden müssen.[18] Java -Anwendungen werden normalerweise zusammengestellt Bytecode das kann auf jedem laufen Java virtuelle Maschine (JVM) unabhängig vom zugrunde liegenden Rechnerarchitektur. Das Syntax von Java ist ähnlich wie C und C ++, hat aber weniger niedriger Ebene Einrichtungen als jeder von ihnen. Die Java -Laufzeit bietet dynamische Funktionen (wie z. Betrachtung und Laufzeit -Code -Änderung), die in herkömmlichen kompilierten Sprachen normalerweise nicht verfügbar sind. Ab 2019[aktualisieren]Java war einer der meisten Beliebte Programmiersprachen, die verwendet werden entsprechend GitHub,[19][20] besonders für Kundenserver Web Applikationenmit 9 Millionen Entwicklern.[21]
Java wurde ursprünglich von entwickelt von James Gosling bei Sun Microsystems. Es wurde im Mai 1995 als Kernkomponente von Sun Microsystems veröffentlicht. Java -Plattform. Das Original und Referenzimplementierung Java Compiler, virtuelle Maschinen und Klassenbibliotheken wurden ursprünglich von Sun Under freigelassen Proprietäre Lizenzen. Ab Mai 2007 in Übereinstimmung mit den Spezifikationen der Java Community -Prozess, Sonne hatte Relizenz Die meisten seiner Java -Technologien unter dem Nur GPL-2.0 Lizenz. Orakel bietet seine eigene Hotspot Java Virtual Machine, jedoch der Beamte Referenzimplementierung ist der OpenJDK JVM, das kostenlose Open-Source-Software ist und von den meisten Entwicklern verwendet wird und die Standard-JVM für fast alle Linux-Verteilungen ist.
Ab März 2022[aktualisieren], Java 18 ist die neueste Version, während Java 17, 11 und 8 die Strom sind Langzeitunterstützung (LTS) Versionen. Oracle veröffentlichte das letzte öffentliche Update von Nullkosten für die Erbe Ausführung Java 8 LTS im Januar 2019 für den kommerziellen Gebrauch, obwohl es Java 8 ansonsten immer noch mit öffentlichen Updates für den persönlichen Gebrauch auf unbestimmte Zeit unterstützen wird. Andere Anbieter haben begonnen zu bieten Null-Kosten-Builds von OpenJDK 18 und 8, 11 und 17, die immer noch Sicherheit und andere Upgrades erhalten.
Orakel (und andere) empfehlen, veraltete und nicht unterstützte Versionen von Java aufgrund ungelöster Sicherheitsprobleme in älteren Versionen zu deinstallieren.[22] Oracle rät seinen Benutzern, sofort zu einer unterstützten Version zu wechseln, z. B. eine der LTS -Versionen (8, 11, 17).
Geschichte
James Gosling, Mike Sheridan und Patrick Naughton Initiierte das Java -Sprachprojekt im Juni 1991.[23] Java war ursprünglich für interaktives Fernsehen konzipiert, war zu dieser Zeit jedoch zu fortgeschritten für die digitale Kabelfernsehbranche.[24] Die Sprache wurde ursprünglich genannt Eiche nach an Eiche Baum, der vor Goslings Büro stand. Später wurde das Projekt den Namen Grün und wurde schließlich umbenannt Java, aus Java -Kaffee, eine Art Kaffee von Indonesien.[25] Gosling entwarf Java mit a C/C ++-Style -Syntax Diese System- und Anwendungsprogrammierer würden sich vertraut halten.[26]
Sun Microsystems veröffentlichte 1996 die erste öffentliche Umsetzung als Java 1.0.[27] Es versprach Schreiben Sie einmal, rennen Sie irgendwohin (Wora) Funktionalität, die keine kostengünstigen Laufzeiten für populäre Bereitstellungen zur Verfügung stellen Plattformen. Ziemlich sicher und mit konfigurierbarer Sicherheit, ermöglichte es, Netzwerk- und Datei-Zugriffsbeschränkungen zu ermöglichen. Haupt Internetbrowser Bald integrierte die Fähigkeit zu rennen Java -Applets In Webseiten und Java wurden schnell populär. Der Java 1.0-Compiler wurde neu geschrieben in Java durch Arthur van Hoff strikt mit der Sprachspezifikation von Java 1.0 einhalten.[28] Mit dem Aufkommen von Java 2 (ursprünglich als J2SE 1.2 im Dezember 1998 - 1999 veröffentlicht) hatten neue Versionen mehrere Konfigurationen für verschiedene Arten von Plattformen. J2EE Eingeschlossene Technologien und APIs für Unternehmensanwendungen, die normalerweise in Serverumgebungen ausgeführt werden, während J2ME APIs für mobile Anwendungen optimiert hat. Die Desktop -Version wurde in J2SE umbenannt. Im Jahr 2006 wurde Sun für Marketingzwecke in New J2 -Versionen in als Java ee, Java mich, und Java se, beziehungsweise.
1997 näherte sich Sun Microsystems dem der ISO/IEC JTC 1 Standards Körper und später die ECMA International Java zu formalisieren, aber es zog sich bald von dem Prozess zurück.[29][30][31] Java bleibt a de facto Standard, kontrolliert durch die Java Community -Prozess.[32] Zu einer Zeit stellte Sun den größten Teil seiner Java -Implementierungen ohne Anklage zur Verfügung, trotz ihrer proprietäre Software Status. Sun erzielte Einnahmen aus Java durch den Verkauf von Lizenzen für spezielle Produkte wie das Java Enterprise System.
Am 13. November 2006 veröffentlichte Sun einen Großteil seiner Java Virtual Machine (JVM) als Kostenlose und Open-Source-Software (Foss) unter den Bedingungen der Nur GPL-2.0 Lizenz. Am 8. Mai 2007 beendete Sun den Prozess und machte den gesamten Kerncode von JVM unter gratis Software/Open-Source-Verteilungsbegriffe, abgesehen von einem kleinen Teil des Code, an den Sun das Urheberrecht nicht hielt.[33]
Suns Vizepräsident Rich Green sagte, dass Suns ideale Rolle in Bezug auf Java als eine war Evangelist.[34] Folgen Oracle CorporationDie Übernahme von Sun Microsystems in den Jahren 2009 bis 10 hat sich Oracle als Steward der Java -Technologie bezeichnet, das unermüdlich verpflichtet ist, eine Gemeinschaft der Teilnahme und Transparenz zu fördern.[35] Dies verhinderte nicht, dass Oracle kurz danach eine Klage gegen Google gegen Google einreicht, um Java im Inneren zu verwenden Android SDK (Siehe Android Sektion).
Am 2. April 2010 trat James Gosling aus Orakel.[36]
Im Januar 2016 kündigte Oracle an, dass Java Run-Time-Umgebungen basierend auf JDK 9 das Browser-Plugin einstellen werden.[37]
Die Java -Software läuft auf alles von Laptops bis hin zu Daten Center, Spielekonsole zu wissenschaftlich Supercomputer.[38]
Prinzipien
Es gab fünf Hauptziele bei der Schaffung der Java -Sprache:[18]
- Es muss einfach sein, objektorientierterund vertraut.
- Es muss sein robust und sicher.
- Es muss architekturneutral und tragbar sein.
- Es muss mit hoher Leistung ausgeführt werden.
- Es muss sein interpretiert, Gewinde, und dynamisch.
Versionen
Ab September 2021[aktualisieren], Java 8, 11 und 17 werden als unterstützt als Langzeitunterstützung (LTS) Versionen.[39] Hauptveröffentlichungsversionen von Java sowie deren Veröffentlichungsdaten:
Ausführung | Datum |
---|---|
JDK Beta | 1995 |
JDK 1.0 | 23. Januar 1996[40] |
JDK 1.1 | 19. Februar 1997 |
J2SE 1.2 | 8. Dezember 1998 |
J2SE 1.3 | 8. Mai 2000 |
J2SE 1.4 | 6. Februar 2002 |
J2SE 5.0 | 30. September 2004 |
Java SE 6 | 11. Dezember 2006 |
Java SE 7 | 28. Juli 2011 |
Java SE 8 (LTS) | 18. März 2014 |
Java SE 9 | 21. September 2017 |
Java SE 10 | 20. März 2018 |
Java SE 11 (LTS) | 25. September 2018[41] |
Java SE 12 | 19. März 2019 |
Java Se 13 | 17. September 2019 |
Java SE 14 | 17. März 2020 |
Java SE 15 | 15. September 2020[42] |
Java SE 16 | 16. März 2021 |
Java SE 17 (LTS) | 14. September 2021 |
Java SE 18 | 22. März 2022 |
Ausgaben
Sun hat vier Ausgaben von Java definiert und unterstützt, die auf verschiedene Anwendungsumgebungen abzielen und viele seiner Segment Apis so dass sie zu einer der Plattformen gehören. Die Plattformen sind:
- Java -Karte Für Smart-Cards.[43]
- Java -Plattform, Micro Edition (Java ME) - Targeting -Umgebungen mit begrenzten Ressourcen.[44]
- Java -Plattform, Standard Edition (Java SE) - Targeting Workstation -Umgebungen.[45]
- Java -Plattform, Enterprise Edition (Java EE) - Targeting großer verteilter Unternehmens- oder Internetumgebungen.[46]
Das Klassen In den Java -APIs werden in getrennte Gruppen genannt Pakete. Jedes Paket enthält eine Reihe von verwandten Schnittstellen, Klassen, Unterpackungen und Ausnahmen.
Sun bot auch eine Ausgabe mit dem Titel Persönliche Java Dies wurde von später von Standards-basierten Java ME-Konfigurationsprofilpaaren ersetzt.
Ausführungssystem
Java JVM und Bytecode
Ein Designziel von Java ist PortabilitätDies bedeutet, dass Programme, die für die Java -Plattform geschrieben wurden, ähnlich auf einer beliebigen Kombination aus Hardware und Betriebssystem mit angemessener Laufzeitunterstützung ausführen müssen. Dies wird erreicht, indem der Java -Sprachcode zu einer mittleren Darstellung genannt wird Java -Bytecode, statt direkt zu architekturspezifisch Maschinensprache. Java -Bytecode -Anweisungen sind analog zum Maschinencode, aber sie sollen von a ausgeführt werden virtuelle Maschine (VM) speziell für die Host -Hardware geschrieben. Endverbraucher häufig verwenden a Java -Laufzeitumgebung (JRE) installiert auf ihrem Gerät für eigenständige Java -Anwendungen oder einen Webbrowser für Java -Applets.
Standardbibliotheken bieten eine generische Möglichkeit, auf Host-spezifische Funktionen wie Grafiken zuzugreifen, Fäden, und Networking.
Die Verwendung von universellem Bytecode macht das Portieren einfach. Allerdings der Overhead von Interpretation Bytecode in Maschinenanweisungen, die interpretierte Programme fast immer langsamer als nativ laufen lassen Ausführbare. Gerade rechtzeitig (JIT) Compiler, die während der Laufzeit Byte-Codes zu Maschinencode zusammenstellen, wurden frühzeitig eingeführt. Javas Hotspot -Compiler ist tatsächlich zwei Compiler in einem; und mit Graalvm (enthalten in z. B. Java 11, aber nach Java 16 entfernt) und ermöglicht eine abgestufte Zusammenstellung.[47] Java selbst ist plattformunabhängig und ist an die jeweilige Plattform angepasst, auf der sie von a betrieben werden sollen Java virtuelle Maschine (JVM) dafür, was die übersetzt Java -Bytecode in die Maschinensprache der Plattform.[48]
Leistung
Programme, die in Java geschrieben wurden C ++ .[49][50] Die Ausführungsgeschwindigkeit von Java -Programmen verbesserte sich jedoch erheblich mit der Einführung von Just-in-Time-Zusammenstellung 1997/1998 für Java 1.1,[51] Die Hinzufügung von Sprachfunktionen, die eine bessere Codeanalyse (z. Hotspot Der Standard -JVM von Sun im Jahr 2000. Mit Java 1.5 wurde die Aufführung durch Hinzufügen des Java.util.Concurrent -Pakets, einschließlich der Hinzufügen von Java.util.Concurrent lockfrei Implementierungen der ConcurrentMaps und andere Multi-Core-Sammlungen, und sie wurde mit Java 1.6 weiter verbessert.
Nicht-JVM
Einige Plattformen bieten einen direkten Hardware -Support für Java. Es gibt Mikrocontroller, die Java -Bytecode in Hardware anstelle einer Software -Java -virtuellen Maschine ausführen können.[52] und einige ARM-basierte Prozessoren könnten Hardwareunterstützung für die Ausführung von Java -Bytecode durch ihre Jazelle Option, obwohl die Unterstützung in den aktuellen Implementierungen von ARM größtenteils fallen gelassen wurde.
Automatische Speicherverwaltung
Java verwendet eine Automatischer Müllsammler Speicher in der zu verwalten Objektlebenszyklus. Der Programmierer bestimmt, wann Objekte erstellt werden, und die Java -Laufzeit ist für die Wiederherstellung des Speichers verantwortlich, sobald Objekte nicht mehr verwendet werden. Sobald keine Verweise auf ein Objekt bleiben, bleiben die unerreichbares Gedächtnis wird berechtigt, vom Müllsammler automatisch befreit zu werden. Etwas Ähnliches wie a Speicherleck Kann immer noch auftreten, wenn der Code eines Programmierers einen Verweis auf ein Objekt enthält, das nicht mehr benötigt wird, normalerweise wenn Objekte, die nicht mehr benötigt werden, in Containern gespeichert werden, die noch verwendet werden. Wenn Methoden für ein nicht existierendes Objekt aufgerufen werden, a Null Zeiger Ausnahme wird ausgelöst.[53][54]
Eine der Ideen des automatischen Speicherverwaltungsmodells von Java ist, dass Programmierer die Belastung für die Durchführung einer manuellen Speicherverwaltung erspart werden können. In einigen Sprachen wird das Gedächtnis zur Erstellung von Objekten implizit auf dem zugewiesen Stapel oder explizit zugeteilt und ausgetrieben von der Haufen. Im letzteren Fall liegt die Verantwortung für die Verwaltung des Speichers im Programmierer. Wenn das Programm kein Objekt behandelt, a Speicherleck tritt ein. Wenn das Programm versucht, auf Speicher zuzugreifen oder zu verkaufen, der bereits mitgeteilt wurde, ist das Ergebnis undefiniert und schwer vorherzusagen, und das Programm wird wahrscheinlich instabil oder zum Absturz. Dies kann teilweise durch den Einsatz von behoben werden Smart Zeiger, aber diese fügen Overhead und Komplexität hinzu. Beachten Sie, dass die Müllsammlung nicht verhindert logischer Speicher Lecks, d. H. Diejenigen, in denen der Speicher immer noch verwiesen wird, aber nie verwendet wird.
Die Müllsammlung kann jederzeit stattfinden. Idealerweise tritt es auf, wenn ein Programm im Leerlauf ist. Es wird garantiert ausgelöst, wenn auf dem Haufen nicht genügend freier Speicher vorhanden ist, um ein neues Objekt zuzuweisen. Dies kann dazu führen, dass ein Programm kurz zum Stillstand kommt. Explizite Speicherverwaltung ist in Java nicht möglich.
Java unterstützt keinen C/C ++ - Stil Zeigerarithmetik, wo Objektadressen arithmetisch manipuliert werden können (z. B. durch Hinzufügen oder Subtrahieren eines Offsetes). Dies ermöglicht dem Müllsammler, referenzierte Objekte zu verlagern und sicherzustellen, dass die Sicherheit und Sicherheit vom Typ gewährleistet ist.
Wie in C ++ und einigen anderen objektorientierten Sprachen, Variablen von Java's Primitive Datentypen werden entweder direkt in Feldern (für Objekte) oder auf dem gespeichert Stapel (für Methoden) und nicht auf dem Haufen Fluchtanalyse). Dies war eine bewusste Entscheidung der Designer von Java aus Leistungsgründen.
Java enthält mehrere Arten von Müllsammlern. Seit Java 9 verwendet Hotspot die Müll erster Müllsammler (G1GC) als Standard.[55] Es gibt jedoch auch mehrere andere Müllsammler, mit denen der Haufen verwaltet werden kann. Für die meisten Anwendungen in Java reicht G1GC aus. Zuvor war die Parallel Müllsammler wurde in Java 8 verwendet.
Nachdem das Problem der Speicherverwaltung gelöst hat, wird der Programmierer nicht von der Belastung der Bearbeitung anderer Arten von Ressourcen wie Netzwerk- oder Datenbankverbindungen, Dateihandles usw. gelindert, insbesondere bei Vorhandensein von Ausnahmen.
Syntax
Die Syntax von Java wird weitgehend von beeinflusst von C ++ und C. Im Gegensatz zu C ++, das die Syntax für strukturierte, generische und objektorientierte Programmierung kombiniert, wurde Java fast ausschließlich als objektorientierte Sprache erstellt.[18] Der gesamte Code wird in Klassen geschrieben, und jedes Datenelement ist ein Objekt, mit Ausnahme der primitiven Datentypen (d. H. Ganzzahlen, Schwimmpunktnummern, boolesche Werteund Charaktere), die aus Leistungsgründen keine Objekte sind. Java wiederverwendet einige beliebte Aspekte von C ++ (wie die printf
Methode).
Im Gegensatz zu C ++ unterstützt Java nicht Bedienerüberlastung[56] oder Mehrfacherbe für Klassen, obwohl mehrere Erbschaft für unterstützt werden Schnittstellen.[57]
Java verwendet Kommentare Ähnlich wie bei C ++. Es gibt drei verschiedene Kommentare: Ein einzelner Linienstil, der mit zwei Schrägstrichen gekennzeichnet ist (//
) ein mehrerer Leitungsstil mit geöffnetem mit /*
und geschlossen mit */
, und die Javadoc Kommentarstil eröffnet mit mit /**
und geschlossen mit */
. Mit dem Javadoc -Kommentarstil können der Benutzer die ausführbare Javadoc -Datei ausführen, um Dokumentation für das Programm zu erstellen, und kann von einigen gelesen werden Integrierte Entwicklungsumgebungen (Ides) wie z. Finsternis Damit Entwicklern den Zugriff auf Dokumentation innerhalb der IDE ermöglichen.
Hallo Weltbeispiel
Das traditionelle Hallo Weltprogramm kann in java geschrieben werden wie:[58]
Öffentlichkeit Klasse HelloWorldapp { Öffentlichkeit statisch Leere hauptsächlich(Saite[] Args) { System.aus.println("Hallo Welt!"); // druckt die Zeichenfolge in die Konsole. } }
Alle Quelldateien müssen nach der von ihnen enthaltenen öffentlichen Klasse benannt werden, wobei das Suffix angemeldet ist .Java
, zum Beispiel, HelloWorldapp.java
. Es muss zuerst in Bytecode mit a zusammengestellt werden Java CompilerErstellen einer Datei mit der .Klasse
Suffix (HelloWorldapp.class
, in diesem Fall). Nur dann kann es ausgeführt oder gestartet werden. Die Java-Quelldatei enthält möglicherweise nur eine öffentliche Klasse, kann jedoch mehrere Klassen mit einem nicht öffentlichen Zugriffsmodifikator und einer beliebigen Anzahl von öffentlichen Personen enthalten innere Klassen. Wenn die Quelldatei mehrere Klassen enthält, muss eine Klasse erstellt werden (eingeführt von der Klasse
Schlüsselwort) öffentlich (vorangegangen von der Öffentlichkeit
Schlüsselwort) und nennen Sie die Quelldatei mit diesem öffentlichen Klassennamen.
Eine Klasse, die nicht öffentlich erklärt wird .Java
Datei. Der Compiler generiert eine Klassendatei für jede in der Quelldatei definierte Klasse. Der Name der Klassendatei ist der Name der Klasse mit, mit .Klasse angehängt. Für Klassendateigenerierung, Anonyme Klassen werden so behandelt, als ob ihr Name die Verkettung des Namens ihrer umschließenden Klasse wäre, a $und eine Ganzzahl.
Das Stichwort Öffentlichkeit
bezeichnet, dass eine Methode aus Code in anderen Klassen aufgerufen werden kann oder dass eine Klasse von Klassen außerhalb der Klassenhierarchie verwendet werden kann. Die Klassenhierarchie bezieht sich auf den Namen des Verzeichnisses, in dem sich die .java -Datei befindet. Dies wird als Zugriffsniveau -Modifikator bezeichnet. Weitere Modifikatoren auf Zugriffsebene enthalten die Schlüsselwörter Privatgelände
(eine Methode, auf die nur in derselben Klasse zugegriffen werden kann) und geschützt
(Dadurch kann Code aus demselben Paket zugreifen). Wenn ein Code -Stück versucht, auf private oder geschützte Methoden zuzugreifen, werfen die JVM a Sicherheitsaußnahme
Das Schlüsselwort statisch
[19] vor einer Methode zeigt a an Statische Methode, was nur mit der Klasse und nicht mit einer bestimmten Instanz dieser Klasse zugeordnet ist. Es können nur statische Methoden ohne Bezug auf ein Objekt aufgerufen werden. Statische Methoden können keine Klassenmitglieder zugreifen, die nicht auch statisch sind. Methoden, die nicht als statisch bezeichnet werden, sind Instanzmethoden und erfordern eine bestimmte Instanz einer Klasse, um zu arbeiten.
Das Schlüsselwort Leere
Gibt an, dass die Hauptmethode keinen Wert an den Anrufer zurückgibt. Wenn ein Java -Programm mit einem Fehlercode beenden soll, muss es anrufen System.exit ()
ausdrücklich.
Der Methodame hauptsächlich
ist kein Schlüsselwort in der Java -Sprache. Es ist einfach der Name der Methode, die der Java Launcher aufruft, um die Kontrolle an das Programm zu übergeben. Java -Klassen, die in verwalteten Umgebungen wie Applets und in verwalteten Umgebungen ausgeführt werden Enterprise Javabeans Verwenden oder brauchen keine hauptsächlich()
Methode. Ein Java -Programm kann mehrere Klassen enthalten, die haben hauptsächlich
Methoden, was bedeutet, dass die VM ausdrücklich mitgeteilt werden muss, von welcher Klasse er starten soll.
Die Hauptmethode muss eine akzeptieren Array von Saite
Objekte. Nach Übereinkommen wird es als bezeichnet als Args
Obwohl ein anderer Name für rechtliche Kennung verwendet werden kann. Seit Java 5 kann auch die Hauptmethode verwendet werden variable Argumente, in Form von public static void main (String ... Args)
, so dass die Hauptmethode mit einer willkürlichen Anzahl von aufgerufen werden kann Saite
Argumente. Die Wirkung dieser alternativen Erklärung ist semantisch identisch (zu Args
Parameter, der immer noch ein Array von ist Saite
Objekte), aber es ermöglicht eine alternative Syntax zum Erstellen und Übergeben des Arrays.
Der Java Launcher startet Java durch Laden einer bestimmten Klasse (angegeben in der Befehlszeile oder als Attribut in a KRUG) und starten seine öffentliche statische Leere Main (String [])
Methode. Eigenständige Programme müssen diese Methode explizit erklären. Das String [] args
Parameter ist ein Array von Saite
Objekte, die Argumente enthalten, die an die Klasse übergeben wurden. Die Parameter zu hauptsächlich
werden oft mit a Befehlszeile.
Der Druck ist Teil einer Java -Standardbibliothek: der System
Klasse definiert ein öffentliches statisches Feld namens aus
. Das aus
Objekt ist eine Instanz der Printstream
Klasse und bietet viele Methoden zum Drucken von Daten zu Standard, einschließlich println (Zeichenfolge)
was auch eine neue Linie an die bestanden annimmt Saite.
Die Saite "Hallo Welt!"
wird vom Compiler automatisch in ein String -Objekt konvertiert.
Beispiel mit Methoden
// Dies ist ein Beispiel für einen einzelnen Zeilenkommentar mit zwei Schrägstrichen /* * Dies ist ein Beispiel für einen Mehrfachzeilen -Kommentar mit dem Schrägstrich und dem Sternchen. * Diese Art von Kommentar kann verwendet werden, um viele Informationen zu halten oder zu deaktivieren * Code, aber es ist sehr wichtig, den Kommentar zu schließen. */ Paket Fibsandlies; importieren java.util.map; importieren java.util.hashmap; /** * Dies ist ein Beispiel für einen Javadoc -Kommentar; Javadoc kann eine Dokumentation zusammenstellen * Aus diesem Text. Javadoc -Kommentare müssen sofort der Klasse, der Methode, vorangehen, * oder Feld dokumentiert. * @Author Wikipedia Freiwillige */ Öffentlichkeit Klasse Fibcalculator erweitert Fibonacci Geräte Taschenrechner { Privatgelände statisch Karte<Ganze Zahl, Ganze Zahl> memoisiert = Neu Hashmap<>(); /* * Die wie folgt geschriebene Hauptmethode wird vom JVM als Ausgangspunkt verwendet * Für das Programm. */ Öffentlichkeit statisch Leere hauptsächlich(Saite[] Args) { memoisiert.stellen(1, 1); memoisiert.stellen(2, 1); System.aus.println(Fibonacci(12)); // Holen Sie sich die 12. Fibonacci -Nummer und drucken auf Konsole } /** * Ein Beispiel für eine in Java geschriebene Methode, die in eine Klasse eingewickelt ist. * Bei einer nicht negativen Zahl Fibindex kehrt zurück * Die n -te Fibonacci -Zahl, wobei n gleich Fibindex ist. * * @param fibindex den Index der Fibonacci -Nummer * @return die Fibonacci -Nummer */ Öffentlichkeit statisch int Fibonacci(int Fibindex) { wenn (memoisiert.enthält(Fibindex)) { Rückkehr memoisiert.erhalten(Fibindex); } int Antworten = Fibonacci(Fibindex - 1) + Fibonacci(Fibindex - 2); memoisiert.stellen(Fibindex, Antworten); Rückkehr Antworten; } }
Spezialklassen
Applet
Java -Applets waren Programme, die waren eingebettet In anderen Anwendungen, normalerweise in einer Webseite, die in einem Webbrowser angezeigt wird. Die Java Applet -API ist jetzt seit Java 9 im Jahr 2017 veraltet.[59][60]
Servlet
Java Servlet Die Technologie bietet Webentwicklern einen einfachen, konsistenten Mechanismus für die Erweiterung der Funktionalität eines Webservers und für den Zugriff auf vorhandene Geschäftssysteme. Servlets sind Server-Seite Java ee -Komponenten, die Antworten auf Anfragen von generieren Kunden. Meistens bedeutet dies eine Erzeugung Html Seiten als Antwort auf Http Anfragen, obwohl es eine Reihe anderer Standard -Servlet -Kurse gibt, zum Beispiel für Websocket Kommunikation.
Die Java Servlet -API wurde zum Teil von zwei Standard -Java -Technologien für Webdienste ersetzt (aber immer noch unter der Haube verwendet):
- das Java -API für erholsame Webdienste (JAX-RS 2.0) Nützlich für Ajax, JSON und REST-Dienste und
- das Java -API für XML -Webdienste (Jax-ws) nützlich für SEIFE Internetdienste.
Typische Implementierungen dieser APIs auf Anwendungsservern oder Servlet -Containern verwenden ein Standard -Servlet, um alle Interaktionen mit den HTTP -Anforderungen und Antworten zu bearbeiten, die an die Web -Service -Methoden für die tatsächliche Geschäftslogik delegieren.
Javaserverseiten
Javaserverseiten (JSP) sind Server-Seite Java ee -Komponenten, die Antworten generieren, typischerweise Html Seiten, zu Http Anfragen von Kunden. JSPs einbetten Java -Code in eine HTML -Seite mit dem Special ein Grenzwerte <%
und %>
. Ein JSP wird zu einem Java zusammengestellt Servlet, eine eigenständige Java -Anwendung, das erste Mal, dass er zugegriffen wird. Danach erstellt das erzeugte Servlet die Antwort.[61]
Swing -Anwendung
Schwingen ist eine grafische Benutzeroberfläche Bibliothek Für die Java SE -Plattform. Es ist möglich, ein anderes Erscheinungsbild durch das anzugeben steckbares Erscheinungsbild und Gefühl Swing -System. Klone von Fenster, Gtk+, und Motiv werden von Sun geliefert. Apfel bietet auch an Aqua schauen und fühlen für Mac OS. Wenn frühere Implementierungen dieser Looks und der Meinung sind, dass er als fehlend angesehen wurde, befasst sich in Java SE 6 dieses Problem, indem Sie mehr native verwenden GUI -Widget Zeichnen von Routinen der zugrunde liegenden Plattformen.[62]
Javafx -Anwendung
Javafx ist ein Softwareplattform zum Erstellen und Liefern Desktop -Anwendungen, ebenso gut wie Reiche Webanwendungen Das kann auf eine Vielzahl von Geräten laufen. Javafx soll ersetzen Schwingen als Standard GUI Bibliothek für Java seaber da JDK 11 Javafx nicht im Kern -JDK und stattdessen in einem separaten Modul war.[63] Javafx hat Unterstützung für Desktop-Computer und Internetbrowser an Microsoft Windows, Linux, und Mac OS. Javafx hat keine Unterstützung für ein native OS -Look und -gefühl.[64]
Generika
In 2004, Generika wurden der Java -Sprache als Teil von J2SE 5.0 hinzugefügt. Vor der Einführung von Generika musste jede variable Deklaration von einem bestimmten Typ sein. Für Containerklassen ist dies beispielsweise ein Problem, da es keine einfache Möglichkeit gibt, einen Container zu erstellen, der nur bestimmte Arten von Objekten akzeptiert. Entweder der Container arbeitet normalerweise auf allen Subtypen einer Klasse oder Schnittstelle, normalerweise Objekt
, oder eine andere Containerklasse muss für jede enthaltene Klasse erstellt werden. Generika ermöglichen die Überprüfung des Kompilierungs-Zeit-Typs, ohne viele Containerklassen erstellen zu müssen, die jeweils nahezu identischer Code enthalten. Zusätzlich zur Aktivierung effizienterer Code werden bestimmte Laufzeitausnahmen durch die Ausgabe von Kompilierungszeitfehlern verhindert. Wenn Java alle Fehlern vom Laufzeittyp verhindert (ClassCastException
s) vom Auftreten wäre es Geben Sie sicher.
Im Jahr 2016 wurde das Typ -System von Java bewiesen unangemessen.[65]
Kritik
Die Kritikpunkte, die an Java gerichtet sind, umfassen die Implementierung von Generika,[66] Geschwindigkeit,[67] der Umgang mit nicht signierten Zahlen,[68] Die Implementierung der Gleitkomma-Arithmetik,[69] und eine Geschichte der Sicherheitslücken in der primären Java VM -Implementierung Hotspot.[70]
Klassenbibliotheken
Das Java -Klassenbibliothek ist der Standardbibliothekentwickelt, um die Anwendungsentwicklung in Java zu unterstützen. Es wird von kontrolliert von Orakel in Zusammenarbeit mit anderen durch die Java Community -Prozess Programm.[71] Unternehmen oder Personen, die an diesem Prozess teilnehmen, können die Gestaltung und Entwicklung der APIs beeinflussen. Dieser Prozess war in den 2010er Jahren Gegenstand von Kontroversen.[72] Die Klassenbibliothek enthält Funktionen wie:
- Die Kernbibliotheken, einschließlich:
- Io/Nio
- Networking (Hinweis: Neu HTTP -Client Seit Java 11)
- Betrachtung
- Parallelität
- Generika
- Skript/Compiler
- Funktionelle Programmierung (Lambda, Streaming)
- Sammlungsbibliotheken das implementieren Datenstrukturen wie zum Beispiel Listen, Wörterbücher, Bäume, Sets, Warteschlangen und Doppelte-Warteschlange, oder Stapel[73]
- Xml Verarbeitung (Parsen, Transformation, Validierung) Bibliotheken
- Sicherheit[74]
- Internationalisierung und Lokalisierung Bibliotheken[75]
- Die Integrationsbibliotheken, die es dem Anwendungsschreiber ermöglichen, mit externen Systemen zu kommunizieren. Diese Bibliotheken umfassen:
- Das Java -Datenbankkonnektivität (JDBC) API Für den Datenbankzugriff
- Java -Namens- und Verzeichnisschnittstelle (JNDI) für die Suche und Entdeckung
- RMI und Corba Für die verteilte Anwendungsentwicklung
- JMX Zur Verwaltung und Überwachung von Anwendungen
- Benutzeroberfläche Bibliotheken, einschließlich:
- Das (Schwergewicht, oder einheimisch) Abstraktes Fenster -Toolkit (AWT), was bietet GUI Komponenten, die Mittel zum Auslegen dieser Komponenten und die Mittel zum Umgang mit Ereignissen aus diesen Komponenten
- Das (leichtes Gewicht) Schwingen Bibliothek
- APIs für Audioerfassung, Verarbeitung und Wiedergabe
- Javafx
- Eine plattformabhängige Implementierung der virtuellen Java -Maschine, die das Mittel ist, mit dem die Bytecodes der Java -Bibliotheken und Anwendungen von Drittanbietern ausgeführt werden
- Plugins, die aktiviert werden Applets in Webbrowsern ausgeführt werden
- Java Web Start, wodurch Java -Anwendungen effizient verteilt werden können auf Endverbraucher über das Internet
- Lizenzierung und Dokumentation
Dokumentation
Javadoc ist ein umfassendes Dokumentationssystem, das von erstellt wurde von Sun Microsystems. Es bietet Entwicklern ein organisiertes System zum Dokumentieren ihres Codes. Javadoc -Kommentare haben am Anfang ein zusätzliches Sternchen, d. H. Die Grenzwerte sind /**
und */
, während die normalen Mehrzeilungskommentare in Java von begrenzt sind /*
und */
und einzelne Kommentare beginnen mit //
.[76]
Implementierungen
Oracle Corporation ist der derzeitige Eigentümer der offiziellen Implementierung der Java SE -Plattform nach ihrem Erwerb von Sun Microsystems Am 27. Januar 2010 basiert diese Implementierung auf der ursprünglichen Implementierung von Java von Sun. Die Oracle -Implementierung ist für verfügbar Microsoft Windows (funktioniert immer noch für XP, während erst spätere Versionen derzeit offiziell unterstützt werden), Mac OS, Linux, und Solaris. Weil Java keine formale Standardisierung hat, die von anerkannt wird ECMA International, ISO/IEC, ANSI oder andere Standards von Drittanbietern, die Oracle-Implementierung ist die De facto Standard.
Die Oracle -Implementierung ist in zwei verschiedene Verteilungen verpackt: die Java Runtime Environment (JRE), die die Teile der Java SE -Plattform enthält, die zum Ausführen von Java -Programmen erforderlich sind und für Endbenutzer bestimmt sind, und der Java Entwickler-Kit (JDK), das für Softwareentwickler bestimmt ist und Entwicklungstools wie die umfasst Java Compiler, Javadoc, Krug, und ein Debugger. Oracle hat ebenfalls veröffentlicht Graalvm, ein Hochleistungs -Java -dynamischer Compiler und Dolmetscher.
OpenJDK ist eine weitere bemerkenswerte Java SE -Implementierung, die unter der GNU GPL lizenziert ist. Die Implementierung begann, als Sun begann, den Java -Quellcode unter der GPL zu veröffentlichen. Ab Java SE 7 ist OpenJDK die offizielle Implementierung von Java Reference.
Das Ziel von Java ist es, alle Implementierungen von Java kompatibel zu machen. Historisch gesehen besteht die Markenlizenz von Sun für die Verwendung der Marke Java darauf, dass alle Implementierungen sein kompatibel. Dies führte zu einem rechtlichen Streit mit Microsoft Nachdem Sun behauptete, dass die Microsoft -Implementierung nicht unterstützt wurde RMI oder Jni und hatte eigene plattformspezifische Funktionen hinzugefügt. Sun verklagte 1997 und gewann 2001 eine Einigung von 20 Millionen US -Dollar sowie eine Gerichtsbefehl, die die Bedingungen der Lizenz von Sun durchzusetzen.[77] Infolgedessen versendet Microsoft nicht mehr Java mit Fenster.
Plattformunabhängige Java ist für entscheidender Bedeutung für Java eeund eine noch strengere Validierung ist erforderlich, um eine Implementierung zu zertifizieren. Diese Umgebung ermöglicht tragbare serverseitige Anwendungen.
Verwenden Sie außerhalb der Java -Plattform
Die Java -Programmiersprache erfordert das Vorhandensein einer Softwareplattform, damit kompilierte Programme ausgeführt werden können.
Oracle liefert die Java -Plattform zur Verwendung mit Java. Das Android SDK ist eine alternative Softwareplattform, die hauptsächlich zur Entwicklung verwendet wird Android -Anwendungen mit einem eigenen GUI -System.
Android
Die Java -Sprache ist eine Schlüsselsäule in Android, ein Open Source Mobiles Betriebssystem. Obwohl Android, gebaut auf dem Linux Kernel, ist größtenteils in C geschrieben, die Android SDK Verwendet die Java -Sprache als Grundlage für Android -Anwendungen, verwendet jedoch keine der Standard -GUI, SE, ME oder andere etablierte Java -Standards.[78] Die vom Android SDK unterstützte Bytecode-Sprache ist mit Java-Bytecode unvereinbar und läuft auf einer eigenen virtuellen Maschine, die für Geräte mit niedrigem Memory wie z. B. optimiert ist Smartphones und Tablet -Computer. Abhängig von der Android -Version wird der Bytecode entweder von der interpretiert Virtuelle Maschine Dalvik oder in nativem Code kompiliert von der Android -Laufzeit.
Android liefert nicht die vollständige Java SE -Standardbibliothek, obwohl der Android SDK eine unabhängige Implementierung einer großen Teilmenge enthält. Es unterstützt Java 6 und einige Java 7 -Funktionen und bietet eine Implementierung, die mit der Standardbibliothek kompatibel ist (Apache -Harmonie).
Kontroverse
Die Verwendung von Java-bezogenen Technologie in Android führte zu einem rechtlichen Streit zwischen Oracle und Google. Am 7. Mai 2012 stellte eine Jury in San Francisco fest, dass Google, wenn APIs urheberrechtlich geschützt sein könnte, die Urheberrechte von Oracle durch die Verwendung von Java in Android -Geräten verletzt hatte.[79] Bezirksrichter William Alsup regiert am 31. Mai 2012, dass APIs nicht urheberrechtlich geschützt werden können,[80] Dies wurde jedoch vom Berufungsgericht der Vereinigten Staaten für den Bundeskreis im Mai 2014 rückgängig gemacht.[81] Am 26. Mai 2016 entschied sich das Bezirksgericht für Google und entschied über die Urheberrechtsverletzung der Java -API in Android einen fairen Einsatz.[82] Im März 2018 wurde dieses Urteil vom Berufungsgericht aufgehoben, das den Fall der Bestimmung des Schadensersatzes an das Bundesgericht in San Francisco unterschrieben.[83] Google reichte eine Petition für ein Schreiben von Certiorari mit dem Oberster Gerichtshof der Vereinigten Staaten Im Januar 2019, um die beiden Entscheidungen in Frage zu stellen, die vom Berufungsgericht zugunsten von Oracle getroffen wurden.[84] Am 5. April 2021 entschied das Gericht mit 6: 2 zugunsten von Google, dass die Verwendung von Java-APIs berücksichtigt werden sollte faire Nutzung. Der Gerichtshof weigerte sich jedoch, über die Urheberrechtsfähigkeit von APIs zu entscheiden, und entschied sich stattdessen dafür, ihre Entscheidung zu bestimmen, indem er Javas API -Urheberrechnung "rein für Argumentation" betrachtete.[85]
Siehe auch
- C#
- C ++
- Dalvik, verwendet in alten Android-Versionen, ersetzt durch Nichtjit Android -Laufzeit
- Deterministische parallele Java
- Java Heterogenes verteiltes Computing
- Liste der virtuellen Java -Maschinen
- Liste der Java -APIs
- List of JVM languages
Vergleich von Java mit anderen Sprachen
Verweise
- ^ Binstock, Andrew (20. Mai 2015). "Javas 20 Jahre Innovation". Forbes. Archiviert Aus dem Original am 14. März 2016. Abgerufen 18. März, 2016.
- ^ https://openjdk.java.net/projects/jdk/18/.
- ^ a b c d Barbara Liskov mit John Guttag (2000). Programmentwicklung in Java - Abstraktion, Spezifikation und objektorientiertes Design. USA, Addison Wesley. ISBN 9780201657685.
- ^ Chaudhary, Harry H. (28. Juli 2014). "Das Java -Programming Interview :: 2000+ Java Interview Que/Ans". Abgerufen 29. Mai, 2016.
- ^ Java 5.0 fügte mehrere neue Sprachfunktionen hinzu (die für Schleife erweitert, Autoboxen, Varargs und Anmerkungen), nachdem sie in ähnlicher (und konkurrierende) eingeführt wurden C# Sprache. [1] Archiviert 19. März 2011 bei der Wayback -Maschine [2] Archiviert 7. Januar 2006 bei der Wayback -Maschine
- ^ Gosling, James; McGilton, Henry (Mai 1996). "Die Java -Sprachumgebung". Archiviert Aus dem Original am 6. Mai 2014. Abgerufen 6. Mai, 2014.
- ^ Gosling, James; Freude, Bill; Steele, Kerl; Bracha, Gilad. "Die Java -Sprachspezifikation, 2. Auflage". Archiviert Aus dem Original am 5. August 2011. Abgerufen 8. Februar, 2008.
- ^ "Der A-Z der Programmiersprachen: Modula-3". Computerworld.com.au. Archiviert von das Original am 5. Januar 2009. Abgerufen 9. Juni, 2010.
- ^ Niklaus Wirth Bei mehreren öffentlichen Anlässen, z. In einem Vortrag im Polytechnic Museum in Moskau im September 2005 (es gibt mehrere unabhängige Berichte aus erster Hand in Russisch, z. B. eine mit einer Audioaufzeichnung: Filippova, Elena (22. September 2005). "Niklaus Wirths Vortrag im Polytechnic Museum in Moskau". Archiviert vom Original am 1. Dezember 2020. Abgerufen 20. November, 2011.), dass das Sun Java Designteam die Oberon -Compiler -Quellen einige Jahre vor der Veröffentlichung von Java lizenziert und sie untersuchte: A (relative) Kompaktheit, Typsicherheit, Müllsammlung, keine mehrfache Vererbung für Klassen - all diese wichtigen Gesamtentwürfe Die Funktionen werden von Java und Oberon geteilt.
- ^ Patrick Naughton zitiert Ziel c als starker Einfluss auf das Design der Java-Programmiersprache und besagt, dass bemerkenswerte direkte Derivate Java-Schnittstellen umfassen (abgeleitet von Objective-Cs Protokoll) und primitive Wrapper -Klassen. [3] Archiviert 13. Juli 2011 bei der Wayback -Maschine
- ^ TechMetrix Research (1999). "Geschichte von Java" (PDF). Java -Anwendungsserverbericht. Archiviert von das Original (PDF) Am 29. Dezember 2010.
Das Projekt ging unter dem Namen grün und die Sprache basierte auf einem alten Modell von UCSD Pascal, was es ermöglicht, Interpretationscode zu generieren.
- ^ "Ein Gespräch mit James Gosling - ACM -Warteschlange". Queue.acm.org. 31. August 2004. Archiviert Aus dem Original am 16. Juli 2015. Abgerufen 9. Juni, 2010.
- ^ Im Sommer 1996 entwickelte Sun den Vorläufer für das heutige Ereignismodell der AWT und der JavaBeans -Komponentenarchitektur. Borland trug stark zu diesem Prozess bei. Wir haben das Delphi -Objekt Pascal sehr sorgfältig angesehen und einen funktionierenden Prototyp von gebundenen Methodenreferenzen erstellt, um ihre Interaktion mit der Java -Programmiersprache und ihrer APIs zu verstehen.Weißes Papier über Microsofts Delegierte
- ^ "Chapel Spec (Anerkennung)" (PDF). Cray Inc. 1. Oktober 2015. Archiviert (PDF) Aus dem Original am 5. Februar 2016. Abgerufen 14. Januar, 2016.
- ^ "Gambas -Dokumentation Einführung". Gambas -Website. Archiviert Aus dem Original am 9. Oktober 2017. Abgerufen 9. Oktober, 2017.
- ^ "Facebook Q & A: Hack bringt statische Tippen in die PHP -Welt". InfoWorld. 26. März 2014. Archiviert Aus dem Original am 13. Februar 2015. Abgerufen 11. Januar, 2015.
- ^ "Schreiben Sie einmal, rennen Sie irgendwohin?". Computer wöchentlich. 2. Mai 2002. Archiviert vom Original am 13. August 2021. Abgerufen 27. Juli, 2009.
- ^ a b c "1.2 Designziele der Java ™ Programmiersprache". Orakel. 1. Januar 1999. Archiviert Aus dem Original am 23. Januar 2013. Abgerufen 14. Januar, 2013.
- ^ a b McMillan, Robert (1. August 2013). "Verliert Java sein Mojo?". Wired.com. Archiviert Aus dem Original am 15. Februar 2017. Abgerufen 8. März, 2017.
Java ist auf dem Weg, zumindest nach einem Outfit, das die sich ständig verändernde Welt der Computerprogrammiersprachen im Auge behält. Seit mehr als einem Jahrzehnt dominiert es das Tiobe Programmier -Community -Index und ist wieder an der Spitze - ein Schnappschuss für Softwareentwickler -Begeisterung, die sich mit Dingen wie Internet -Suchergebnissen befassen, um zu messen, wie viel Summen unterschiedliche Sprachen haben. Aber in letzter Zeit ist Java ausgerutscht.
- ^ Chan, Rosalie (22. Januar 2019). "Die 10 beliebtesten Programmiersprachen, so 'Facebook für Programmierer'". Geschäftseingeweihter. Archiviert vom Original am 29. Juni 2019. Abgerufen 29. Juni, 2019.
- ^ "Javaone 2013 Review: Java nimmt das Internet der Dinge an". www.oracle.com. Archiviert Aus dem Original am 19. April 2016. Abgerufen 19. Juni, 2016. Alt URL
- ^ "Warum sollte ich ältere Versionen von Java aus meinem System deinstallieren?". Orakel. Archiviert Aus dem Original am 12. Februar 2018. Abgerufen 24. September, 2021.
- ^ Byous, Jon (ca. 1998). "Java -Technologie: Die frühen Jahre". Sun Developer Network. Sun Microsystems. Archiviert von das Original am 20. April 2005. Abgerufen 22. April, 2005.
- ^ Objekt orientierte Programmierung "Die Geschichte der Java -Technologie". Sun Developer Network. c. 1995. Archiviert Aus dem Original am 10. Februar 2010. Abgerufen 30. April, 2010.
- ^ Murphy, Kieron (4. Oktober 1996). "Warum haben sie sich entschieden, es Java zu nennen?". JavaRld. Archiviert Aus dem Original am 13. Juli 2020. Abgerufen 2020-07-13.
- ^ Kabutz, Heinz; Es war einmal eine Eiche Archiviert 13. April 2007 bei der Wayback -Maschine. Artima. Abgerufen am 29. April 2007.
- ^ "Javasoft versendet Java 1.0". Archiviert von das Original am 10. März 2007. Abgerufen 13. Mai, 2018.
- ^ Objektorientierte Programmierung mit Java: Essentials und Anwendungen. Tata McGraw-Hill Education. p. 34.
- ^ "JSG - Java Study Group". Open-STD.org. Archiviert Aus dem Original am 25. August 2006. Abgerufen 2. August, 2006.
- ^ "Warum Java ™ zweimal standardisiert" war " (PDF). Archiviert (PDF) Aus dem Original am 13. Januar 2014. Abgerufen 3. Juni, 2018.
- ^ "Was ist ECMA - und warum Microsoft interessiert". ZDNET. Archiviert Aus dem Original am 6. Mai 2014. Abgerufen 6. Mai, 2014.
- ^ "Java Community Process Website". JCP.org. 24. Mai 2010. Archiviert Aus dem Original am 8. August 2006. Abgerufen 9. Juni, 2010.
- ^ "Javaone: Sonne - Der Großteil von Java ist offen.". Grnlight.net. Archiviert Aus dem Original am 27. Mai 2014. Abgerufen 26. Mai, 2014.
- ^ "Die sich entwickelnde Rolle der Sonne als Java Evangelist". O'Reilly Media. Archiviert Aus dem Original am 15. September 2010. Abgerufen 2. August, 2009.
- ^ "Oracle und Java". Oracle.com. Oracle Corporation. Archiviert von das Original am 31. Januar 2010. Abgerufen 23. August, 2010.
Oracle ist seit seiner Entstehung im Jahr 1995 ein führender und inhaltlicher Anhänger von Java und übernimmt die neue Rolle als Steward der Java -Technologie mit unerbittlichem Engagement, eine Gemeinschaft der Teilnahme und Transparenz zu fördern.
- ^ Gosling, James (9. April 2010). "Zeit, weiterzumachen ..." Auf einer neuen Straße. Archiviert von das Original am 5. November 2010. Abgerufen 16. November, 2011.
- ^ Thema, Dalibor. "In ein pluginfreies Web wechseln". Archiviert Aus dem Original am 16. März 2016. Abgerufen 15. März, 2016.
- ^ "Erfahren Sie mehr über die Java -Technologie". Orakel. Archiviert Aus dem Original am 24. November 2011. Abgerufen 21. November, 2011.
- ^ "Oracle Java SE Support Roadmap". Orakel. 13. September 2021. Abgerufen 18. September, 2021.
{{}}
: CS1 Wartung: URL-Status (Link) - ^ "Javasoft versendet Java 1.0". sun.com. Archiviert von das Original am 10. März 2007. Abgerufen 5. Februar, 2008.
- ^ Chander, Scharat. "Java SE 11 einführen". Oracle.com. Archiviert Aus dem Original am 26. September 2018. Abgerufen 26. September, 2018.
- ^ "Die Ankunft von Java 15!". Orakel. 15. September 2020. Archiviert vom Original am 16. September 2020. Abgerufen 15. September, 2020.
- ^ "Java -Kartenübersicht". Oracle Technology Network. Orakel. Archiviert Aus dem Original am 7. Januar 2015. Abgerufen 18. Dezember, 2014.
- ^ "Java -Plattform, Micro Edition (Java Me)". Oracle Technology Network. Orakel. Archiviert Aus dem Original am 4. Januar 2015. Abgerufen 18. Dezember, 2014.
- ^ "Java se". Oracle Technology Network. Orakel. Archiviert Aus dem Original am 24. Dezember 2014. Abgerufen 18. Dezember, 2014.
- ^ "Java -Plattform, Enterprise Edition (Java EE)". Oracle Technology Network. Orakel. Archiviert Aus dem Original am 17. Dezember 2014. Abgerufen 18. Dezember, 2014.
- ^ "Tauchgang in den neuen Java Jit Compiler - Graal | Baeldung". www.baeldung.com. 6. August 2021. Abgerufen 13. Oktober, 2021.
- ^ "Ist die Plattform der JVM (Java Virtual Machine) abhängig oder plattform unabhängig? Was ist der Vorteil der Verwendung des JVM und hat Java eine übersetzte Sprache?". Programmierterview. Archiviert Aus dem Original am 19. Januar 2015. Abgerufen 19. Januar, 2015.
- ^ Jelovic, Dejan. "Warum Java immer langsamer sein wird als C ++". Archiviert von das Original am 11. Februar 2008. Abgerufen 15. Februar, 2008.
- ^ Google. "Schleifenerkennung in C ++/java/go/scala" (PDF). Archiviert (PDF) Aus dem Original am 16. November 2011. Abgerufen 12. Juli, 2012.
{{}}
:|last=
hat generischen Namen (Hilfe) - ^ "Symantecs Just-in-Time-Java-Compiler soll in Sun JDK 1.1 integriert werden.". Archiviert Aus dem Original am 28. Juni 2010. Abgerufen Der 1. August, 2009.
- ^ Salcic, Zoran; Park, Heejong; Teich, Jürgen; Malik, Avinash; Nadeem, Muhammad (22. Juli 2017). "NOC-HMP: Ein heterogener Multicore-Prozessor für eingebettete Systeme, die in SystemJ entworfen wurden". ACM -Transaktionen zur Designautomatisierung elektronischer Systeme. 22 (4): 73. doi:10.1145/3073416. ISSN 1084-4309. S2CID 11150290.
- ^ "Nullpointerexception". Orakel. Archiviert Aus dem Original am 6. Mai 2014. Abgerufen 6. Mai, 2014.
- ^ "Ausnahmen in Java". Artima.com. Archiviert Aus dem Original am 21. Januar 2009. Abgerufen 10. August, 2010.
- ^ "Java Hotspot ™ Virtual Machine Performance Enhancements". Oracle.com. Archiviert Aus dem Original am 29. Mai 2017. Abgerufen 26. April, 2017.
- ^ "Operator Overloading (C# vs Java)". C# für Java -Entwickler. Microsoft. Archiviert Aus dem Original am 7. Januar 2015. Abgerufen 10. Dezember, 2014.
- ^ "Multiple Vererbung von Zustand, Implementierung und Typ". Die Java ™ -Tutorials. Orakel. Archiviert Aus dem Original am 9. November 2014. Abgerufen 10. Dezember, 2014.
- ^ "Lektion: Ein genauerer Blick auf die Hello World -Anwendung". Die Java ™ -Tutorials> Erste Schritte. Oracle Corporation. Archiviert Aus dem Original am 17. März 2011. Abgerufen 14. April, 2011.
- ^ "Veraltete APIs, Funktionen und Optionen". Orakel. Archiviert Aus dem Original am 19. Juni 2019. Abgerufen 31. Mai, 2019.
- ^ "Applet (Java -Plattform SE 7)". Dokumente. Orakel. Archiviert vom Original am 2. August 2020. Abgerufen 1. Mai, 2020.
- ^ "Was ist eine JSP -Seite? - Das Java ee 5 Tutorial". docs.oracle.com. Archiviert vom Original am 2. August 2020. Abgerufen 1. Mai, 2020.
- ^ "Trail: Erstellen einer GUI mit JFC/Swing (The Java ™ Tutorials)". docs.oracle.com. Archiviert vom Original am 29. April 2020. Abgerufen 1. Mai, 2020.
- ^ "Von JDK 11 entfernt, kommt Javafx 11 als eigenständiges Modul an.". InfoWorld. Archiviert vom Original am 14. Oktober 2020. Abgerufen 13. Oktober, 2020.
- ^ "Erste Schritte mit Javafx: Hallo Welt, Javafx Style". Javafx 2 Tutorials und Dokumentation. Orakel. Archiviert vom Original am 2. August 2020. Abgerufen 1. Mai, 2020.
- ^ "Java und Scalas Typ -Systeme sind unangemessen" (PDF). Archiviert (PDF) Aus dem Original am 28. November 2016. Abgerufen 20. Februar, 2017.
- ^ Arnold, Ken. "Generika als schädlich angesehen". Java.net. Archiviert von das Original am 10. Oktober 2007. Abgerufen 10. September, 2015. Weitere Kommentare zum ursprünglichen Artikel bei früheren Archiv -Snapshots.
- ^ Jelovic, Dejan. "Warum Java immer langsamer sein wird als C ++". www.jelovic.com. Archiviert von das Original am 11. Februar 2008. Abgerufen 17. Oktober, 2012.
- ^ Owens, Sean R. "Java und unsigned int, nicht signiertes kurzes, nicht signiertes Byte, nicht signiertes langes usw. (oder besser gesagt das Fehlen davon)". Archiviert von das Original am 20. Februar 2009. Abgerufen 4. Juli, 2011.
- ^ Kahan, William. "Wie Javas schwimmender Punkt alle überall tut" (PDF). Elektrotechnik & Informatik, Universität von Kalifornien in Berkeley. Archiviert (PDF) Aus dem Original am 5. September 2012. Abgerufen 4. Juni, 2011.
- ^ "Hast du die Java überprüft?". Archiviert von das Original am 21. September 2012. Abgerufen 23. Dezember, 2011.
- ^ Cadenhead, Rogers (20. November 2017), Verstehen, wie Java -Programme funktionieren, archiviert vom Original am 13. August 2021, abgerufen 26. März, 2019
- ^ Woolf, Nicky (26. Mai 2016). "Google gewinnt einen sechsjährigen Rechtsstreit gegen Oracle gegen Android Code Copyright". Der Wächter. ISSN 0261-3077. Archiviert Aus dem Original am 26. März 2019. Abgerufen 26. März, 2019.
- ^ "Sammlungsrahmenübersicht". Java -Dokumentation. Orakel. Archiviert vom Original am 31. Dezember 2014. Abgerufen 18. Dezember, 2014.
- ^ "Java ™ Sicherheitsübersicht". Java -Dokumentation. Orakel. Archiviert Aus dem Original am 3. Januar 2015. Abgerufen 18. Dezember, 2014.
- ^ "Trail: Internationalisierung". Die Java ™ -Tutorials. Orakel. Archiviert vom Original am 31. Dezember 2014. Abgerufen 18. Dezember, 2014.
- ^ "So schreiben Sie DOC -Kommentare für das Javadoc -Tool". Oracle Technology Network. Orakel. Archiviert Aus dem Original am 18. Dezember 2014. Abgerufen 18. Dezember, 2014.
- ^ Niccolai, James (24. Januar 2001). "Sonne, Microsoft setzt Java -Klage ein" Klage ". JavaRld. IDG News Service. Archiviert Aus dem Original am 14. Juli 2020. Abgerufen 2020-07-13.
- ^ Van Gurp, Jilles (13. November 2007). "Google Android: Erste Eindrücke und Kritik". Javalobby. Archiviert Aus dem Original am 28. August 2008. Abgerufen 7. März, 2009.
Ehrlich gesagt verstehe ich nicht, warum Google beabsichtigt, die große Menge an vorhandener Implementierung zu ignorieren.Es scheint mir ein schlechter Fall von "nicht erfunden" zu sein.Letztendlich wird dies die Akzeptanz verlangsamen.Es gibt bereits zu viele Java -Plattformen für die mobile Welt und dies ist noch ein weiterer
- ^ Mullin, Joe. "Google wegen Verstoßes gegen Oracle Trial; zukünftige legale Kopfschmerzen abgebaut". Gesetz und Störung. ARS Technica. Archiviert Aus dem Original am 8. Mai 2012. Abgerufen 8. Mai, 2012.
- ^ Mullin, Joe (31. Mai 2012). "Google gewinnt eine entscheidende API -Entscheidung, Oraces Fall dezimiert". ARS Technica. Archiviert Aus dem Original am 12. März 2017. Abgerufen 1 Juni, 2012.
- ^ Rosenblatt, Seth (9. Mai 2014). "Gerichtsseiten mit Oracle über Android in Java Patent Appeal". CNET. Archiviert Aus dem Original am 10. Mai 2014. Abgerufen 10. Mai, 2014.
- ^ Mullin, Joe (26. Mai 2016). "Google Beats Oracle - und Roid nutzt" faire Verwendung "von Java -APIs".. ARS Technica. Archiviert Aus dem Original am 20. Januar 2017. Abgerufen 26. Mai, 2016.
- ^ Farivar, Cyrus (27. März 2018). ""Die Verwendung der Java -API -Pakete durch Google war nicht fair", "Berufungsgerichtsregeln". ARS Technica. Archiviert Aus dem Original am 24. September 2019. Abgerufen 6. August, 2019.
- ^ Lee, Timothy (23. April 2019). "Google bittet den Obersten Gerichtshof, die katastrophale Entscheidung über API -Urheberrechte zu überschreiben". ARS Technica. Archiviert Aus dem Original am 23. April 2019. Abgerufen 23. April, 2019.
- ^ "Google LLC gegen Oracle America, Inc. 593 U. S. ____ (2021) " (PDF). Archiviert (PDF) vom Original am 5. April 2021. Abgerufen 6. April, 2021.
Werke zitiert
- Gosling, James;Freude, Bill;Steele, Kerl;Bracha, Gilad;Buckley, Alex (2014). Die Java® -Sprachspezifikation (PDF) (Java Se 8 ed.). Archiviert (PDF) Aus dem Original am 21. Oktober 2014. Abgerufen 18. November, 2014.
- Gosling, James; Freude, Bill; Steele, Guy L., Jr.; Bracha, Gilad (2005). Die Java -Sprachspezifikation (3. Aufl.). Addison-Wesley. ISBN 0-321-24678-0. Archiviert Aus dem Original am 14. Februar 2012. Abgerufen 8. Februar, 2019.
- Lindholm, Tim;Yellin, Frank (1999). Die Spezifikation der Java Virtual Machine (2. Aufl.). Addison-Wesley. ISBN 0-201-43294-3. Archiviert Aus dem Original am 25. September 2011. Abgerufen 8. Februar, 2019.
Externe Links
- Die Wörterbuchdefinition von Java bei wiktionary
- Medien im Zusammenhang mit Java bei Wikimedia Commons
- Java -Programmierung bei Wikibooks
- Lernmaterialien im Zusammenhang mit Java bei Wikiversity