Jakie były „podstawowe” pakiety API Java 1.0?

38

Czytając o sprawie Google przeciwko Oracle, natknąłem się na te pytania (najwyraźniej od przewodniczącego)

...
Czy zgadza się, że następujące są prawdziwe, przynajmniej od 1996 roku?

Oto podstawowy interfejs programowania aplikacji Java: java.lang, java.util i java.io.

Czy język programowania Java odnosi się do jakiejkolwiek metody, klasy lub pakietu poza powyższymi trzema?
...

źródło: Groklaw

Istnieje oczywiście wiele prawnych konsekwencji, Google i Oracle prawdopodobnie nie zgadzają się w niektórych kwestiach, a mnie to nie obchodzi . Pozostaw prawo prawnikom.

Podejrzewam jednak, że jest tu ciekawa historia.

Moje pytanie jest (jak ktoś, kto pierwszy zrobił żadnego kodowania około 2001 Java w wersji 1.3), w wersji 1.0 Java zostało nic poza wymagane java.lang, java.utiloraz java.iosporządzić ważny program Java?

Na przykład (przy użyciu C # 5.0) awaitsłowo kluczowe zależy (między innymi). Bez tej klasy kompilator nie mógłby działać zgodnie ze specyfikacją.Task<T> GetAwaiter()

Czy były jakieś podstawowe funkcje środowiska wykonawczego (takie jak ClassLoader *), które były zależne od innych pakietów?

Przyznaję, że z ciekawości pytam, co jest potrzebne do minimalnej żywotności Javy (języka, ignorując wszystkie legalne fragmenty wokół niego) jest interesujące.

* Zakładam, że ClassLoader był nawet funkcją w Javie 1.0, jest częścią specyfikacji w 7.0 i przypuszczalnie wielu wcześniejszych wersjach.

Kevin Montrose
źródło
3
w czasach, gdy java była prostym językiem ...
Jens Schauder
7
w czasach, kiedy java
Sara Chipps
2
Do Twojej wiadomości, awaitsłowo kluczowe nie zależy od Task<T>. TaskKlasa po prostu zdarza, aby zaspokoić rzeczy, że awaitkluczowe będzie zależeć (metoda zwana GetAwaiter()etc).
Matt Hamilton
2
@Matt - poprawiony, powinien był pójść z yieldIEnumerator czy coś; tak bardzo podekscytowany await.
Kevin Montrose
Więc w zasadzie chcesz wiedzieć, na których klasach java.lang.Object faktycznie polegało w JDK 1, prawda?
scarfridge

Odpowiedzi:

55

Według Wikipedii pierwszą formalnie wydaną wersją Javy była 1.0.2, 23 stycznia 1996 r.

Pierwszą stabilną wersją był JDK 1.0.2. nazywa się Java 1

Jest archiwum Java 1.0.2 i całej związanej z nim dokumentacji tutaj :

  • Dokumentacja interfejsu API JDK 1.0.2 (format książki)
  • Dokumentacja interfejsu API JDK 1.0.2 (format javadoc)
  • Samouczek Java
  • Specyfikacja języka Java (link przerwany, tutaj można wrócić )
  • Specyfikacja wirtualnej maszyny Java

Nie wydaje się być pobieranie z JDK 1.0.2 bitów tutaj

http://www.pascal-man.com/download/download-jdk.shtml

To działa dla mnie w momencie pisania.

Java 1.0.2 w systemie Windows 7 x64

ZACHOWAJ SUROWĄ NIEOGRANICZONĄ MOC JAVA 1.0.2


W specyfikacji językowej odnoszą się do następujących klas (pojedyncze cytowanie, niewyczerpujące cytowania):

  • Klasa (sekcja 4.3.1)
  • Łańcuch (sekcja 4.3.1)
  • Obiekt (sekcja 4.3.2)
  • Losowo (punkt 4.4)
  • Wątek (sekcja 17.2)
  • ThreadGroup (sekcja 17.2)
  • Throwable (sekcja 11)
  • Błąd (sekcja 11.2)
  • mnóstwo błędów, wszystko pod java.lang (sekcja 11.5.2.1 - 11.5.2.2)
  • RuntimeException (sekcja 11.2.1)
  • „klasy macierzy” [Iitd. (sekcja 10.8 )

... w którym momencie zatrzymałem patrząc bo technicznie , [IET. glin. nie znajdują się w java.lang, java.utillub java.ioopakowaniach.

Przykład:

class Test {
  // Compare namespaces of built-ins object and int[]
  public static void main(String[] args){
    int[] arr = new int[0];
    Object obj = new Object();

    Class arrClass = arr.getClass();
    Class objClass = obj.getClass();

    Class arrSuper = arrClass.getSuperclass();

    System.out.println("plain jane Object - " + objClass.getName());
    System.out.println();
    System.out.println("int[] - "+arrClass.getName());
    System.out.println("super of int[] - "+arrSuper.getName());
  }
}

Wyjścia

wprowadź opis zdjęcia tutaj

Zachowanie jest spójne między nowoczesnym a 1.0.2

wprowadź opis zdjęcia tutaj

Jeff Atwood
źródło
Złoty Google-fu po raz kolejny.
Kevin Montrose
@YannisRizos Ty i ja oboje. To była moja pierwsza przeglądarka internetowa.
Inżynier światowy
@WorldEngineer: Daję ci mozaikę .
sbi
2

W oryginalnym JDK było mniej niż tuzin pakietów - te plus aplet, awt, awt.peer. To mogło być to! Jest absolutnie prawdopodobne - 99% pewności - że te trzy pakiety zawierały wszystkie klasy, które były wyraźnie znane samemu rdzeniowi JVM, i że nie było żadnych klas poza tymi pakietami wymienionymi w specyfikacji języka.

Ernest Friedman-Hill
źródło
1

java.net był również jednym z pierwszych dostępnych pakietów i od samego początku był świetny, zwłaszcza z funkcją wątków (teraz model Thread wydaje się nieaktualny w porównaniu z tym, co masz w nowszych językach, ale wtedy był świetny).

Pamiętam, że kodowałem przeglądarkę internetową (bardzo niekompletną, nawet w porównaniu do tego, co istniało w tym czasie), aby poznać świeżo opublikowaną wersję 1.02, a zaraz potem kompletny serwer aplikacji WWW (nadal używany w przemyśle). To było na długo przed apletem apletu i wszyscy byli przekonani, że musisz używać ciężkich frameworków, aby tworzyć szybkie i niezawodne aplikacje http w java.

Z java.net (oraz GC, Threads, wyjątkami i java.util) java musiała być głównym serwerem technologicznym (po przeciwnej stronie java.applet była bolesna od pierwszego dnia ...)

Denys Séguret
źródło
0

Java 1.0 miała dokładnie sześć pakietów najwyższego poziomu: java.applet, java.awt (z podpakietami java.awt.image i java.awt.peer), java.io, java.lang, java.net i java.util. to jest to! Źródło: Patrick Chan, Java Developers Almanac 1998

mrzzmr
źródło