Java 1.0の「コア」APIパッケージとは何ですか?


38

Google v Oracleの事例を読んで、これらの質問に出くわしました(明らかに裁判長から)

...
少なくとも1996年の時点で、以下のことが真実であることに同意しますか?

コアJavaアプリケーションプログラミングインターフェイスは次のとおりです。java.lang、java.util、およびjava.io。

Javaプログラミング言語は、上記の3つ以外のメソッド、クラス、またはパッケージを参照または要求していますか?
...

ソース:Groklaw

明らかに多くの法的影響がありますが、GoogleとOracleはおそらくいくつかの点で意見が一致せず私は気にしません。法律は弁護士に任せてください。

ただし、ここには興味深い歴史が少しあると思います。

私の質問は、Javaのバージョン1.0には、(最初の任意のJavaはバージョン1.3に2001の周りにコーディングなかった誰かのように)あるものは外を必要としたjava.langjava.utilと、java.io有効なJavaプログラムをコンパイルするには?

例として(C#5.0を使用)、awaitキーワードは(特に)に依存しています。コンパイラは、そのクラスなしでは仕様どおりに機能できませんでした。Task<T> GetAwaiter()

同様に、他のパッケージに依存するコアランタイム機能(ClassLoader *など)はありましたか?

私は好奇心から尋ねますが、最小限の実行可能なJava(言語、その周りのすべての法的ビットを無視する言語)に必要なものはまさに興味深いものです。

* ClassLoaderはJava 1.0の機能でさえあると仮定しています。7.0の仕様の一部であり、おそらく以前の多くのバージョンです。


3
Javaは、単純な言語...だった時代に戻って
イェンスSchauder

7
Javaの日中に戻って
サラChipps

2
参考までに、awaitキーワードはに依存しませんTask<T>Taskクラスはちょうどというものを満たすために起こるawaitキーワードがない(と呼ばれる方法に依存GetAwaiter()など)。
マットハミルトン

2
@Matt-修正済み。IEnumerator yieldなどを使用してください。とても興奮していawaitます。
ケビンモントローズ

基本的に、JDK 1でjava.lang.Objectが実際に依存しているクラスを知りたいですか?
スカーフリッジ

回答:


55

ウィキペディアによると、最初に正式にリリースされたJavaのバージョンは1996年1月23日に1.0.2でした。

最初の安定バージョンはJDK 1.0.2でした。Java 1と呼ばれます

Java 1.0.2のアーカイブと関連するすべてのドキュメントがここにあります

  • JDK 1.0.2 APIリファレンス(ブック形式)
  • JDK 1.0.2 APIリファレンス(javadoc形式)
  • Javaチュートリアル
  • Java言語の仕様(リンク切れ、ここ戻る
  • Java仮想マシンの仕様

そこ表示されますここにJDK 1.0.2ビットのダウンロードします

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

これは、執筆時点で機能します。

Windows 7 x64上のJava 1.0.2

JAVA 1.0.2の未処理の強力なパワーをご覧ください


言語仕様では、次のクラスが参照されています(網羅的な引用ではなく、単一引用):

  • クラス(セクション4.3.1)
  • 文字列(セクション4.3.1)
  • オブジェクト(セクション4.3.2)
  • ランダム(セクション4.4)
  • スレッド(セクション17.2)
  • ThreadGroup(セクション17.2)
  • スロー可能(セクション11)
  • エラー(セクション11.2)
  • すべてのjava.langの下にあるエラーのロードとロード(セクション11.5.2.1-11.5.2.2)
  • RuntimeException(セクション11.2.1)
  • 「配列クラス」、[Iなど(セクション10.8

... 技術的に[I、al。含まれていないjava.langjava.utilまたはjava.ioパッケージ。

例:

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

出力

ここに画像の説明を入力してください

動作はモダンと1.0.2の間で一貫しています

ここに画像の説明を入力してください


ゴールドGoogle-fuが再び。
ケビンモントローズ


@YannisRizosあなたと私は両方。それが私の最初のウェブブラウザでした。
ワールドエンジニア

@WorldEngineer:Mosaicを提供します。
-sbi


2

元のJDKには12個未満のパッケージがありましたが、これらに加えてアプレット、awt、awt.peerがありました。それがあったかもしれません!これら3つのパッケージには、コアJVM自体に明示的に知られているすべてのクラスが含まれており、言語仕様で言及されているこれらのパッケージ以外のクラスはなかったことが絶対にあります(99%確実)。


1

java.netも利用可能な最初のパッケージの1つであり、特にスレッド機能に関しては最初から素晴らしかったです(現在のスレッドモデルは最近の言語に比べて時代遅れに見えますが、当時は素晴らしかったです)。

新しく公開された1.02と、その直後に完全なWebアプリケーションサーバー(まだ業界で使用されている)を学習するために、Webブラウザーをコーディングしたことを覚えています(当時の存在と比較しても非常に不完全です)。これは、サーブレットAPIと誰もが、Javaで高速で信頼性の高いhttpアプリケーションを作成するために重いフレームワークを使用する必要があることを説得するずっと前でした。

java.net(およびGC、スレッド、例外、およびjava.util)を使用すると、javaは主要なテクノロジーサーバー側になるはずでした(反対側では、java.appletは初日から苦痛でした...)


0

Java 1.0には、java.applet、java.awt(サブパッケージjava.awt.imageおよびjava.awt.peerを含む)、java.io、java.lang、java.net、およびjava.utilの6つの最上位パッケージがありました。それでおしまい。出典:Patrick Chan、Java Developers Almanac 1998

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.