Java 1.0의 "핵심"API 패키지는 무엇입니까?


38

Google v Oracle 사례에 대해 읽었을 때, 나는 이러한 질문에 직면했습니다 (주재 판사)

...
적어도 1996 년 기준으로 다음과 같은 사실에 동의합니까?

다음은 핵심 Java 응용 프로그램 프로그래밍 인터페이스 java.lang, java.util 및 java.io입니다.

Java 프로그래밍 언어가 위 세 가지 이외의 메소드, 클래스 또는 패키지를 참조하거나 필요합니까?
...

출처 : Groklaw

분명히 많은 법적 파급 효과가 있으며, 구글과 오라클은 일부 시점에서 동의 하지 않을 것 입니다. 변호사에게 법률을 맡기십시오.

그러나 나는 여기에 흥미로운 역사가 있다고 생각합니다.

자바 버전 1.0 (첫번째 약 2001 버전 1.3의 코딩 자바를했던 사람으로) 아무것도의 외부를 요구되었다 내 질문은 java.lang, java.utiljava.io유효한 자바 프로그램을 컴파일하려면?

예를 들어 (C # 5.0 사용) await키워드는 다른 것들에 의존합니다 . 컴파일러는 해당 클래스가 없으면 사양을 지정할 수 없습니다.Task<T> GetAwaiter()

마찬가지로 다른 패키지에 종속 된 핵심 런타임 기능 (예 : ClassLoader *)이 있습니까?

호기심을 불러 일으킬 것입니다. 최소 실행 가능한 Java (언어, 주변의 모든 법적 비트를 무시)에 필요한 것이 흥미 롭습니다.

* ClassLoader는 Java 1.0의 기능이라고 가정합니다 . 7.0사양 중 일부 이며 아마도 많은 이전 버전 일 것입니다.


3
자바가 단순한 언어였던 시절로 돌아가서 ...
Jens Schauder

7
java
Sara Chipps

2
참고로 await키워드는에 의존하지 않습니다 Task<T>. Task클래스는 단지 그 일을 만족시키기 위해 발생 await키워드가 않습니다 (메소드 호출에 의존 GetAwaiter()등).
Matt Hamilton

2
@Matt-수정되었습니다 yield. IEnumerator 또는 이와 함께 있어야 합니다. 그냥 너무 흥분 await.
Kevin Montrose

따라서 기본적으로 java.lang.Object가 JDK 1에서 실제로 어떤 클래스에 의존하는지 알고 싶습니까?
scarfridge

답변:


55

Wikipedia따르면 , 공식적으로 출시 된 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 언어 사양 (링크가 끊어 졌습니다. )
  • 자바 가상 머신 사양

여기에 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.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 사이에서 일관됩니다

여기에 이미지 설명을 입력하십시오


다시 금 구글 푸.
Kevin Montrose


@YannisRizos 당신과 나 둘 다. 저의 첫 번째 웹 브라우저였습니다.
세계 엔지니어

@WorldEngineer : 모자이크를 제공합니다 .
sbi


2

원래 JDK에는 패키지와 애플릿, awt, awt.peer가 수십 개 미만이었습니다. 그랬을지도 모른다! 이 세 가지 패키지에는 핵심 JVM 자체에 명시 적으로 알려진 모든 클래스가 포함되어 있고 언어 사양에 언급 된 이러한 패키지 외부에는 클래스가 없었을 가능성이 높습니다.


1

java.net은 또한 사용 가능한 첫 번째 패키지 중 하나였으며 처음부터 스레딩 기능을 사용하여 훌륭했습니다 (현재 스레드 모델은 최신 언어의 것에 비해 오래된 것으로 보이지만 그 당시에는 훌륭했습니다).

새로 출판 된 1.02와 완전한 웹 응용 프로그램 서버 (여전히 업계에서 사용됨)를 배우기 위해 웹 브라우저를 코딩했습니다 (당시 존재했던 것과 비교할 때 매우 불완전 함). 서블릿 API와 모든 사람들이 자바에서 빠르고 안정적인 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의 6 가지 최상위 패키지가 있습니다. 그게 다야. 출처 : Patrick Chan, Java 개발자 Almanac 1998

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.