Apa paket API "inti" dari Java 1.0?

38

Membaca tentang kasus Google v Oracle, saya menemukan pertanyaan-pertanyaan ini (tampaknya dari Hakim ketua)

...
Apakah disetujui bahwa yang berikut ini benar, setidaknya pada tahun 1996?

Berikut ini adalah inti Java Application Programming Interface: java.lang, java.util dan java.io.

Apakah bahasa pemrograman Java merujuk atau memerlukan metode, kelas atau paket di luar ketiga di atas?
...

sumber: Groklaw

Jelas ada banyak konsekuensi hukum, Google dan Oracle mungkin tidak setuju dalam beberapa hal, dan saya tidak peduli . Serahkan hukum kepada pengacara.

Namun, saya curiga ada sedikit sejarah yang menarik di sini.

Pertanyaan saya adalah (sebagai seseorang yang pertama kali melakukan setiap Java coding sekitar tahun 2001 di versi 1.3), di versi 1.0 dari Jawa apa pun yang diperlukan di luar java.lang, java.utildan java.iountuk mengkompilasi program Java valid?

Sebagai contoh (menggunakan C # 5.0), awaitkata kunci tergantung (antara lain). Kompiler tidak dapat berfungsi untuk spec tanpa kelas itu.Task<T> GetAwaiter()

Setara, apakah ada fitur runtime inti (seperti ClassLoader *) yang tergantung pada paket lain?

Saya akui saya bertanya karena penasaran, persis apa yang diperlukan untuk Java yang layak minimum (bahasa, mengabaikan semua bit hukum di sekitarnya) menarik.

* Saya mengasumsikan bahwa ClassLoader bahkan adalah fitur di Java 1.0, itu bagian dari spesifikasi di 7.0 dan mungkin banyak versi sebelumnya.

Kevin Montrose
sumber
3
kembali pada hari-hari ketika java adalah bahasa yang sederhana ...
Jens Schauder
7
kembali pada hari-hari ketika java
Sara Chipps
2
FYI, awaitkata kunci tidak tergantung Task<T>. The Taskkelas hanya terjadi untuk memenuhi hal-hal yang awaitkunci tidak tergantung pada (metode yang disebut GetAwaiter()dll).
Matt Hamilton
2
@ Matt - dikoreksi, seharusnya pergi dengan yielddan IEnumerator atau sesuatu; sangat bersemangat untuk await.
Kevin Montrose
Jadi pada dasarnya Anda ingin tahu kelas mana java.lang.Object sebenarnya tergantung pada JDK 1, kan?
scarfridge

Jawaban:

55

Per Wikipedia , versi Java resmi pertama yang dirilis adalah 1.0.2, pada 23 Januari 1996.

Versi stabil pertama adalah JDK 1.0.2. disebut Java 1

Ada arsip Java 1.0.2 dan semua dokumentasi terkait di sini :

  • JDK 1.0.2 Referensi API (format buku)
  • Referensi API JDK 1.0.2 (format javadoc)
  • Tutorial Java
  • Spesifikasi bahasa Java (tautan rusak, ada jalan mundur di sini )
  • Spesifikasi mesin virtual Java

Ada tampaknya menjadi download JDK 1.0.2 bit disini

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

Ini bekerja untuk saya pada saat penulisan.

Java 1.0.2 pada Windows 7 x64

DILAKUKAN KEKUATAN BERSERIKAT DARI JAWA 1.0.2


Dalam spec bahasa, kelas-kelas berikut ini dirujuk (kutipan tunggal, bukan kutipan lengkap):

  • Kelas (bagian 4.3.1)
  • String (bagian 4.3.1)
  • Obyek (bagian 4.3.2)
  • Acak (bagian 4.4)
  • Utas (bagian 17.2)
  • ThreadGroup (bagian 17.2)
  • Dapat dilempar (bagian 11)
  • Kesalahan (bagian 11.2)
  • banyak dan banyak kesalahan, semua di bawah java.lang (bagian 11.5.2.1 - 11.5.2.2)
  • RuntimeException (bagian 11.2.1)
  • "Kelas array" [I,, dan sebagainya (bagian 10.8 )

... di mana titik saya berhenti mencari karena, secara teknis , [I, et. Al. tidak dalam java.lang, java.utilatau java.iopaket.

Contoh:

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());
  }
}

Keluaran

masukkan deskripsi gambar di sini

Perilaku konsisten antara modern dan 1.0.2

masukkan deskripsi gambar di sini

Jeff Atwood
sumber
Gold Google-fu lagi.
Kevin Montrose
@YannisRizos Anda dan saya berdua. Itu adalah browser web pertama saya.
Insinyur Dunia
@WorldEngineer: Saya memberi Anda Mosaic .
sbi
2

Ada kurang dari selusin paket di JDK asli - ini ditambah applet, awt, awt.peer. Itu mungkin saja! Sangat mungkin - 99% pasti - bahwa ketiga paket ini termasuk semua kelas yang secara eksplisit diketahui oleh JVM inti itu sendiri, dan bahwa tidak ada kelas di luar paket ini yang disebutkan dalam spesifikasi bahasa.

Ernest Friedman-Hill
sumber
1

java.net juga di antara paket-paket pertama yang tersedia dan itu sangat bagus sejak awal, terutama dengan fasilitas threading (sekarang model Thread nampak ketinggalan zaman dibandingkan dengan apa yang Anda miliki dalam bahasa yang lebih baru tetapi sangat bagus kemudian).

Saya ingat pernah membuat kode browser web (sangat tidak lengkap, bahkan dibandingkan dengan apa yang ada pada saat itu) untuk mempelajari 1.02 yang baru diterbitkan dan, setelah itu, server aplikasi web lengkap (masih digunakan dalam industri). Itu jauh sebelum api servlet dan semua orang diyakinkan bahwa Anda harus menggunakan kerangka kerja yang berat untuk membuat aplikasi http yang cepat dan andal di java.

Dengan java.net (dan GC, dan Threads, dan pengecualian dan java.util) java terikat menjadi sisi server teknologi utama (di sisi yang berlawanan, java.applet terasa menyakitkan sejak hari pertama ...)

Denys Séguret
sumber
0

Java 1.0 memiliki tepat enam paket tingkat atas: java.applet, java.awt (dengan subpackages java.awt.image dan java.awt.peer), java.io, java.lang, java.net, dan java.util. Itu dia. Sumber: Patrick Chan, Java Developers Almanac 1998

mrzzmr
sumber