Java 1.0的“核心” API包是什么?


38

在阅读有关Google v Oracle案的信息时,我遇到了这些问题(显然是从主持审判的法官那里获得的)

...
是否同意至少在1996年时以下情况成立?

以下是Java应用程序编程接口的核心:java.lang,java.util和java.io。

Java编程语言是否引用或要求上述三个之外的任何方法,类或包?
...

资料来源:Groklaw

显然有很多法律后果,Google和Oracle在某些方面可能不同意,我不在乎。将法律交给律师。

但是,我怀疑这里有一段有趣的历史。

我的问题是(谁的人第一次做任何Java编码2001年在1.3版本左右),在Java的1.0版本是什么,需要外java.langjava.utiljava.io编译一个有效的Java程序?

作为一个示例(使用C#5.0),await关键字依赖于(除其他外)。没有该类,编译器将无法正常运行。Task<T> GetAwaiter()

同样,是否有依赖于其他软件包的核心运行时功能(例如ClassLoader *)?

我会出于好奇而问,对于最低限度可行的Java(该语言,忽略其周围的所有合法内容)到底需要什么是很有意思的。

*我假设ClassLoader甚至是Java 1.0中的功能,它是7.0中规范的一部分,并且可能是许多早期版本。


3
回到Java是一种简单语言的时代……
Jens Schauder 2012年

7
在天回时的java
萨拉Chipps

2
仅供参考,await关键字不依赖Task<T>。该Task班正好满足事情的await关键字依赖于(称为方法GetAwaiter()等)。
马特·汉密尔顿

2
@Matt-更正,应该yield和IEnumerator或其他一起使用;真为之激动await
凯文·蒙特罗斯

因此,您基本上想知道JDK 1中实际依赖于哪些类java.lang.Object,对吗?
围巾岭

Answers:


55

Per Wikipedia于1996年1月23日发布了Java的第一个正式版本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节)
  • 线程组(第17.2节)
  • 可投掷(第11节)
  • 错误(第11.2节)
  • 负载和错误负载,全部在java.lang下(第11.5.2.1-11.5.2.2节)
  • RuntimeException(第11.2.1节)
  • “数组类”,[I等等(第10.8节)

......在这一点我停止寻找,因为从技术上[I等。等 不在java.langjava.utiljava.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());
  }
}

产出

在此处输入图片说明

行为在Modern和1.0.2之间是一致的

在此处输入图片说明


金谷富又来了。
凯文·蒙特罗斯


@YannisRizos您和我俩。那是我的第一个网络浏览器。
世界工程师

@WorldEngineer:我给你Mosaic
2012年


2

原始JDK中只有不到十二个软件包-这些软件包加上applet,awt,awt.peer。可能就是这样!绝对有可能(有99%的把握),这三个软件包包括了JVM核心本身明确知道的所有类,并且在语言规范中没有提及这些软件包之外的类。


1

java.net也是最早可用的软件包之一,从一开始它就很棒,尤其是在使用线程工具时(与最近使用的语言相比,现在Thread模型看起来已经过时了,但是那时很好。)

我记得曾经编写过一个Web浏览器的代码(与当时的浏览器相比,还很不完整),以便学习新发布的1.02,以及紧随其后的一个完整的Web应用程序服务器(仍在行业中使用)。早在servlet api和每个人都说服您开始之前,就必须使用繁重的框架才能使用Java创建快速可靠的http应用程序。

使用java.net(以及GC,Threads,异常和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。而已。资料来源:Patrick Chan,《 Java开发人员年鉴》,1998年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.