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.util
oraz java.io
sporządzić ważny program Java?
Na przykład (przy użyciu C # 5.0) await
sł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.
await
słowo kluczowe nie zależy odTask<T>
.Task
Klasa po prostu zdarza, aby zaspokoić rzeczy, żeawait
kluczowe będzie zależeć (metoda zwanaGetAwaiter()
etc).yield
IEnumerator czy coś; tak bardzo podekscytowanyawait
.Odpowiedzi:
Według Wikipedii pierwszą formalnie wydaną wersją Javy była 1.0.2, 23 stycznia 1996 r.
Jest archiwum Java 1.0.2 i całej związanej z nim dokumentacji tutaj :
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.
ZACHOWAJ SUROWĄ NIEOGRANICZONĄ MOC JAVA 1.0.2
W specyfikacji językowej odnoszą się do następujących klas (pojedyncze cytowanie, niewyczerpujące cytowania):
[I
itd. (sekcja 10.8 )... w którym momencie zatrzymałem patrząc bo technicznie ,
[I
ET. glin. nie znajdują się wjava.lang
,java.util
lubjava.io
opakowaniach.Przykład:
Wyjścia
Zachowanie jest spójne między nowoczesnym a 1.0.2
źródło
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.
źródło
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 ...)
źródło
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
źródło