Какими были «основные» пакеты API Java 1.0?

38

Читая о деле Google v Oracle, я столкнулся с этими вопросами (по-видимому, от председательствующего судьи)

...
Согласны ли, что верно следующее, по крайней мере, с 1996 года?

Ниже перечислены основные интерфейсы программирования приложений Java: java.lang, java.util и java.io.

Относится ли язык программирования Java к каким-либо методам, классам или пакетам, кроме указанных выше, или требует ли он их?
...

источник: Groklaw

Очевидно, есть много юридических последствий, Google и Oracle, вероятно, не согласны по некоторым вопросам, и мне все равно . Оставьте закон адвокатам.

Тем не менее, я подозреваю, что здесь есть интересная история.

Мой вопрос (как кто - то , кто первым сделал любой Java кодирования около 2001 в версии 1.3), в версии 1.0 Java было что - то требуется вне java.lang, java.utilи java.ioсоставить действительную программу Java?

В качестве примера (с использованием C # 5.0) awaitключевое слово зависит (помимо прочего). Компилятор не может функционировать по спецификации без этого класса.Task<T> GetAwaiter()

Эквивалентно, были ли какие-либо основные функции времени выполнения (например, ClassLoader *), которые зависели от других пакетов?

Я признаю, что спрашиваю из любопытства, что именно необходимо для минимально жизнеспособной Java (язык, игнорирующий все юридические аспекты), интересен.

* Я предполагаю, что ClassLoader был даже функцией в Java 1.0, он является частью спецификации в 7.0 и, вероятно, во многих более ранних версиях.

Кевин Монтроз
источник
3
назад во времена, когда ява была простым языком ...
Йенс Шаудер
7
в те времена, когда ява
Сара Чиппс
2
К вашему сведению, awaitключевое слово не зависит от Task<T>. TaskКласс просто случается , чтобы удовлетворить то , что awaitключевое слово это зависит от (метод называется и GetAwaiter()т.д.).
Мэтт Гамильтон
2
@Matt - исправлено, должен был идти вместе с yieldIEnumerator или чем-то еще; просто так рад за await.
Кевин Монтроз
Итак, вы в основном хотите знать, от каких классов на самом деле зависит java.lang.Object в JDK 1, верно?
шарфридж

Ответы:

55

Согласно Википедии , первая официально выпущенная версия Java была 1.0.2 23 января 1996 года.

Первой стабильной версией была JDK 1.0.2. называется Java 1

Там в архив Java 1.0.2 и всей сопутствующей документации здесь :

  • Справочник по JDK 1.0.2 API (формат книги)
  • Справочник по JDK 1.0.2 API (формат javadoc)
  • Учебник по Java
  • Спецификация языка Java (ссылка не работает, wayback'd здесь )
  • Спецификация виртуальной машины Java

Там появляется как загрузка из JDK 1.0.2 бит здесь

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

Это работает для меня на момент написания.

Java 1.0.2 на Windows 7 x64

СМОТРЕТЬ СЫРЬ, НЕОГРАНИЧЕННУЮ СИЛУ 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ЕТ. и др. не в java.lang, java.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

введите описание изображения здесь

Джефф Этвуд
источник
Золотой гугл-фу еще раз.
Кевин Монтроз
@YannisRizos Ты и я, оба. Это был мой первый веб-браузер.
мировой инженер
@WorldEngineer: я даю вам мозаику .
СБИ
2

В оригинальном JDK было меньше дюжины пакетов - это плюс апплет, awt, awt.peer. Это могло быть это! Вполне вероятно - на 99% уверен - что эти три пакета включали в себя все классы, которые были явно известны самой базовой JVM, и что не было классов вне этих пакетов, упомянутых в спецификации языка.

Эрнест Фридман-Хилл
источник
1

java.net также был одним из первых доступных пакетов, и он был великолепен с самого начала, особенно с возможностью работы с потоками (теперь модель Thread выглядит устаревшей по сравнению с тем, что есть в более поздних языках, но тогда она была великолепна).

Я помню, как кодировал веб-браузер (очень неполный, даже по сравнению с тем, что существовал в то время), чтобы изучить недавно опубликованную версию 1.02 и сразу после этого полный сервер веб-приложений (все еще используемый в промышленности). Это было задолго до того, как сервлет api убедил всех, что для создания быстрых и надежных http-приложений в java нужно использовать тяжелые фреймворки.

С 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. Вот и все. Источник: Патрик Чан, Альманах Java разработчиков. 1998

mrzzmr
источник