Ein optionales Paket ist eine Implementierung eines offenen, Standard - API (Beispiele für optionale Pakete JavaServlet, Java3D). Die meisten optionalen Pakete sind im javax.*Namespace verwurzelt , obwohl es Ausnahmen geben kann.
Glücklicher
Antworten:
212
Ich denke, es ist eine historische Sache - wenn ein Paket als Ergänzung zu einer bestehenden JRE eingeführt wird, kommt es als javax. Wenn es zuerst als Teil einer JRE eingeführt wird (wie NIO es war, glaube ich), dann kommt es als java. Ich bin mir nicht sicher, warum die neue Datums- und Uhrzeit-API javaxdieser Logik folgt ... es sei denn, sie ist auch separat als Bibliothek verfügbar, um mit früheren Versionen zu arbeiten (was nützlich wäre). Anmerkung von vielen Jahren später: Es endete schließlich doch java.
Ich glaube, es gibt Einschränkungen für das javaPaket - ich denke, Klassenlader sind so eingerichtet, dass nur Klassen java.*darin geladen werden können rt.jaroder ähnliches. (Es gibt sicherlich einen Check-in ClassLoader.preDefineClass.)
BEARBEITEN: Während eine offizielle Erklärung (der vorgeschlagene Such-Orbfish hat auf der ersten Seite oder so keine ergeben) keinen Zweifel an "Kern" oder "Erweiterung" hat, vermute ich immer noch, dass in vielen Fällen die Entscheidung für ein bestimmtes Paket eine hat historischer Grund dahinter auch. Ist das java.beanswirklich "Kern" von Java zum Beispiel?
Weil es für einen Leser einfacher ist, Alt-T zu drücken und zu tippen, als für mich, mit dem iPad auszuschneiden und einzufügen? ;). Sie haben jedoch Recht, ich glaube, ich meinte download.oracle.com/javase/tutorial/ext/index.html . Keine Beleidigung Übrigens finde ich Ihre Antworten normalerweise nützlich. Ich bin nur überrascht, dass diese akzeptiert wurde.
Orbfish
1
Der Begriff "javax" erscheint nirgendwo in dem Link, der weiter oben in diesem Kommentarthread vorgeschlagen wurde.
Broschüre
Die neue Datums- und Uhrzeit-API wird tatsächlich wie immer enden java.time.
Michael Piefel
234
Ursprünglich javaxwar es für Erweiterungen gedacht, und manchmal wurden Dinge aus javaxJava heraus gefördert.
Ein Problem war, dass Netscape (und wahrscheinlich IE) Klassen einschränkte, die im Java-Paket enthalten sein könnten.
Als Swing javavon javaxdort aus "graduieren" sollte, gab es eine Art Mini-Explosion, weil die Leute erkannten, dass sie alle ihre Importe modifizieren mussten. Angesichts der Tatsache, dass Abwärtskompatibilität eines der Hauptziele von Java ist, haben sie ihre Meinung geändert.
Zu diesem Zeitpunkt war zumindest für die Gemeinde (vielleicht nicht für Sun) der ganze Punkt javaxverloren. Jetzt haben wir also einige Dinge in Javax, die wahrscheinlich enthalten sein sollten java... aber abgesehen von den Leuten, die die Paketnamen gewählt haben, weiß ich nicht, ob jemand von Fall zu Fall herausfinden kann, was die Gründe sind.
"Als Swing von Java zu Java" graduieren "wollte, gab es eine Art Mini-Explosion, weil die Leute erkannten, dass sie dann alle ihre Importe modifizieren mussten." Die Leute beschwerten sich über etwas, das mit einem regulären Ausdruck erreicht werden konnte, der darauf zurückzuführen war, dass sie den Qualitätscode für die Vorproduktion verwendeten.
Schlitten
10
Jep. Ich habe in Visual Cafe ein Tool geschrieben, um zwischen den beiden zu konvertieren (Javax und Java), bevor Sun beschlossen hat, es einfach im Javax-Paket zu behalten.
TofuBeer
51
javaPakete sind Basis und javaxPakete sind Erweiterungen.
Swing war eine Erweiterung, da AWT die ursprüngliche UI-API war. Swing kam danach in Version 1.1.
Swing war nicht Teil von 1.1. Es gab eine Version von Swing, die auf 1.1 als Bibliothek lief.
Tom Hawtin - Tackline
Es gibt den Schlüssel - "Bibliothek", der nicht Teil des JDK ist. Habe ich die falsche Version? Meine Javadocs deuten darauf hin, dass JButton seit 1.3 ist, also hat mich mein Gedächtnis vielleicht gescheitert.
Duffymo
1
Warum ist die neue Datums- und Uhrzeit-API in javax .. Datum und Uhrzeit sind nicht "Basis"?
Pacerier
1
"... die neue Datums- und Uhrzeit-API (JSR-310) ..." - Jemand von Oracle / Sun entschied, dass es besser in Javax eingesetzt werden sollte, da es sich um eine neuere Erweiterung der Kernbibliotheken handelt. Wenn Sie nicht einverstanden sind, nehmen Sie es am besten mit.
Der Javax-Namespace wird normalerweise (das ist ein geladenes Wort) für Standarderweiterungen verwendet, die derzeit als optionale Pakete bezeichnet werden . Die Standarderweiterungen sind eine Teilmenge der Nicht-Kern-APIs. Das andere Segment der Nicht-Kern-APIs wird offensichtlich als Nicht-Standard-Erweiterungen bezeichnet und belegt die Namespaces wie com.sun. * oder com.ibm. . Die Kern-APIs belegen Java. Namespace.
Nicht alles in der Java-API-Welt beginnt im Kern, weshalb Erweiterungen normalerweise aus JSR-Anforderungen entstehen. Sie werden schließlich auf der Grundlage von „weisen Ratschlägen“ zum Kern befördert.
Das Interesse an dieser Nomenklatur ergab sich aus einem Fauxpas von Sun - Erweiterungen hätten zum Kern befördert werden können, dh von Javax * zu Java * verschoben, was das Versprechen der Abwärtskompatibilität brach. Programmierer weinten heiser, und es herrschte ein besserer Verstand. Aus diesem Grund verbleibt die Swing-API, obwohl sie Teil des Kerns ist, weiterhin im Namespace javax. *. Auf diese Weise werden Pakete auch von Erweiterungen auf Core umgestellt - sie werden einfach als Teil des JDK und der JRE zum Download bereitgestellt.
Javax war früher nur für Erweiterungen. Doch später fügte Sun es der Java-Bibliothek hinzu und vergaß, das x zu entfernen. Entwickler haben begonnen, Code mit Javax zu erstellen. Doch später in der Zeit beschlossen die Sonnen, es in Java zu ändern. Den Entwicklern gefiel die Idee nicht, weil ihr Code ruiniert würde ... also wurde Javax beibehalten.
Java. * -Pakete sind die Kernpakete der Java-Sprache, was bedeutet, dass Programmierer, die die Java-Sprache verwenden, diese verwenden mussten, um die Java-Sprache sinnvoll nutzen zu können.
javax. * -Pakete sind optionale Pakete, die eine standardmäßige, skalierbare Möglichkeit bieten, benutzerdefinierte APIs für alle Anwendungen verfügbar zu machen, die auf der Java-Plattform ausgeführt werden.
Einige Pakete wie javax.swingwaren zunächst nicht in der Java-Standardbibliothek enthalten. Sun Company entschied sich, sie als offiziell zu betrachten und nahm sie als Standardbibliotheken oder Standarderweiterungen in die frühen Versionen von Java auf.
Konventionell beginnen alle Standarderweiterungen mit einer XWeile, bis sie im Laufe der Zeit zu erstklassigen Erweiterungen befördert werden können javax.swing.
java.time
jetzt download.java.net/jdk8/docs/api/java/time/package-summary.htmlJavaServlet
,Java3D
). Die meisten optionalen Pakete sind imjavax.*
Namespace verwurzelt , obwohl es Ausnahmen geben kann.Antworten:
Ich denke, es ist eine historische Sache - wenn ein Paket als Ergänzung zu einer bestehenden JRE eingeführt wird, kommt es als
javax
. Wenn es zuerst als Teil einer JRE eingeführt wird (wie NIO es war, glaube ich), dann kommt es alsjava
. Ich bin mir nicht sicher, warum die neue Datums- und Uhrzeit-APIjavax
dieser Logik folgt ... es sei denn, sie ist auch separat als Bibliothek verfügbar, um mit früheren Versionen zu arbeiten (was nützlich wäre). Anmerkung von vielen Jahren später: Es endete schließlich dochjava
.Ich glaube, es gibt Einschränkungen für das
java
Paket - ich denke, Klassenlader sind so eingerichtet, dass nur Klassenjava.*
darin geladen werden könnenrt.jar
oder ähnliches. (Es gibt sicherlich einen Check-inClassLoader.preDefineClass
.)BEARBEITEN: Während eine offizielle Erklärung (der vorgeschlagene Such-Orbfish hat auf der ersten Seite oder so keine ergeben) keinen Zweifel an "Kern" oder "Erweiterung" hat, vermute ich immer noch, dass in vielen Fällen die Entscheidung für ein bestimmtes Paket eine hat historischer Grund dahinter auch. Ist das
java.beans
wirklich "Kern" von Java zum Beispiel?quelle
java.time
.Ursprünglich
javax
war es für Erweiterungen gedacht, und manchmal wurden Dinge ausjavax
Java heraus gefördert.Ein Problem war, dass Netscape (und wahrscheinlich IE) Klassen einschränkte, die im Java-Paket enthalten sein könnten.
Als Swing
java
vonjavax
dort aus "graduieren" sollte, gab es eine Art Mini-Explosion, weil die Leute erkannten, dass sie alle ihre Importe modifizieren mussten. Angesichts der Tatsache, dass Abwärtskompatibilität eines der Hauptziele von Java ist, haben sie ihre Meinung geändert.Zu diesem Zeitpunkt war zumindest für die Gemeinde (vielleicht nicht für Sun) der ganze Punkt
javax
verloren. Jetzt haben wir also einige Dinge in Javax, die wahrscheinlich enthalten sein solltenjava
... aber abgesehen von den Leuten, die die Paketnamen gewählt haben, weiß ich nicht, ob jemand von Fall zu Fall herausfinden kann, was die Gründe sind.quelle
java
Pakete sind Basis undjavax
Pakete sind Erweiterungen.Swing war eine Erweiterung, da AWT die ursprüngliche UI-API war. Swing kam danach in Version 1.1.
quelle
java.time
: docs.oracle.com/javase/8/docs/api/java/time/…Der Javax-Namespace wird normalerweise (das ist ein geladenes Wort) für Standarderweiterungen verwendet, die derzeit als optionale Pakete bezeichnet werden . Die Standarderweiterungen sind eine Teilmenge der Nicht-Kern-APIs. Das andere Segment der Nicht-Kern-APIs wird offensichtlich als Nicht-Standard-Erweiterungen bezeichnet und belegt die Namespaces wie com.sun. * oder com.ibm. . Die Kern-APIs belegen Java. Namespace.
Nicht alles in der Java-API-Welt beginnt im Kern, weshalb Erweiterungen normalerweise aus JSR-Anforderungen entstehen. Sie werden schließlich auf der Grundlage von „weisen Ratschlägen“ zum Kern befördert.
Das Interesse an dieser Nomenklatur ergab sich aus einem Fauxpas von Sun - Erweiterungen hätten zum Kern befördert werden können, dh von Javax * zu Java * verschoben, was das Versprechen der Abwärtskompatibilität brach. Programmierer weinten heiser, und es herrschte ein besserer Verstand. Aus diesem Grund verbleibt die Swing-API, obwohl sie Teil des Kerns ist, weiterhin im Namespace javax. *. Auf diese Weise werden Pakete auch von Erweiterungen auf Core umgestellt - sie werden einfach als Teil des JDK und der JRE zum Download bereitgestellt.
quelle
Javax war früher nur für Erweiterungen. Doch später fügte Sun es der Java-Bibliothek hinzu und vergaß, das x zu entfernen. Entwickler haben begonnen, Code mit Javax zu erstellen. Doch später in der Zeit beschlossen die Sonnen, es in Java zu ändern. Den Entwicklern gefiel die Idee nicht, weil ihr Code ruiniert würde ... also wurde Javax beibehalten.
quelle
Java. * -Pakete sind die Kernpakete der Java-Sprache, was bedeutet, dass Programmierer, die die Java-Sprache verwenden, diese verwenden mussten, um die Java-Sprache sinnvoll nutzen zu können.
javax. * -Pakete sind optionale Pakete, die eine standardmäßige, skalierbare Möglichkeit bieten, benutzerdefinierte APIs für alle Anwendungen verfügbar zu machen, die auf der Java-Plattform ausgeführt werden.
quelle
Einige Pakete wie
javax.swing
waren zunächst nicht in der Java-Standardbibliothek enthalten. Sun Company entschied sich, sie als offiziell zu betrachten und nahm sie als Standardbibliotheken oder Standarderweiterungen in die frühen Versionen von Java auf.Konventionell beginnen alle Standarderweiterungen mit einer
X
Weile, bis sie im Laufe der Zeit zu erstklassigen Erweiterungen befördert werden könnenjavax.swing
.quelle