Các gói API lõi lõi của Java 1.0 là gì?


38

Đọc về vụ kiện Google v Oracle, tôi bắt gặp những câu hỏi này (dường như từ Thẩm phán chủ tọa)

...
Có đồng ý rằng những điều sau đây là đúng, ít nhất là vào năm 1996?

Sau đây là Giao diện lập trình ứng dụng Java cốt lõi: java.lang, java.util và java.io.

Ngôn ngữ lập trình Java có đề cập đến hoặc yêu cầu bất kỳ phương thức, lớp hoặc gói nào ngoài ba phương thức trên không?
...

nguồn: Groklaw

Rõ ràng có rất nhiều sự phân nhánh hợp pháp, Google và Oracle có thể không đồng ý ở một số điểm và tôi không quan tâm . Để lại luật cho các luật sư.

Tuy nhiên, tôi nghi ngờ có một chút thú vị của lịch sử ở đây.

Câu hỏi của tôi là (như những người bắt đầu làm bất kỳ mã Java khoảng năm 2001 trong phiên bản 1.3), trong phiên bản 1.0 của Java được bất cứ điều gì cần thiết bên ngoài java.lang, java.utiljava.iođể biên dịch một chương trình Java hợp lệ?

Ví dụ (sử dụng C # 5.0), awaittừ khóa phụ thuộc vào (trong số những thứ khác). Trình biên dịch không thể hoạt động để đặc tả mà không có lớp đó.Task<T> GetAwaiter()

Tương tự, có bất kỳ tính năng thời gian chạy cốt lõi nào (như ClassLoader *) phụ thuộc vào các gói khác không?

Tôi sẽ thừa nhận rằng tôi hỏi vì tò mò, chính xác những gì cần thiết cho Java khả thi tối thiểu (ngôn ngữ, bỏ qua tất cả các bit hợp pháp xung quanh nó) là điều thú vị.

* Tôi giả định rằng ClassLoader thậm chí là một tính năng trong Java 1.0, nó là một phần của thông số trong 7.0 và có lẽ là nhiều phiên bản trước đó.


3
trở lại thời mà java là một ngôn ngữ đơn giản ...
Jens Schauder

7
trở lại vào thời mà java
Sara Chipps

2
FYI, awaittừ khóa không phụ thuộc vào Task<T>. Các Tasklớp học chỉ xảy ra để đáp ứng những điều mà các awaittừ khóa không phụ thuộc vào (một phương pháp gọi GetAwaiter()vv).
Matt Hamilton

2
@Matt - Đã sửa, nên đi cùng yieldvà IEnumerator hoặc một cái gì đó; chỉ để kích thích cho await.
Kevin Montrose

Vì vậy, về cơ bản bạn muốn biết java.lang.Object thực sự phụ thuộc vào lớp nào trong JDK 1, phải không?
Scarfridge

Câu trả lời:


55

Theo Wikipedia , phiên bản chính thức được phát hành đầu tiên của Java là 1.0.2, vào ngày 23 tháng 1 năm 1996.

Phiên bản ổn định đầu tiên là JDK 1.0.2. được gọi là Java 1

Có một kho lưu trữ Java 1.0.2 và tất cả các tài liệu liên quan ở đây :

  • Tham chiếu API JDK 1.0.2 (định dạng sách)
  • Tham chiếu API JDK 1.0.2 (định dạng javadoc)
  • Hướng dẫn Java
  • Đặc tả ngôn ngữ Java (liên kết bị hỏng, cách trở lại đây )
  • Đặc tả máy ảo Java

vẻ là một tải của các bit JDK 1.0.2 đây

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

Nó làm việc cho tôi tại thời điểm viết.

Java 1.0.2 trên Windows 7 x64

SAU KHI ĐIỆN TỬ KHÔNG GIỚI HẠN CỦA JAVA 1.0.2


Trong thông số ngôn ngữ, các lớp sau được tham chiếu (trích dẫn đơn, không trích dẫn đầy đủ):

  • Lớp học (phần 4.3.1)
  • Chuỗi (phần 4.3.1)
  • Đối tượng (mục 4.3.2)
  • Ngẫu nhiên (phần 4.4)
  • Chủ đề (phần 17.2)
  • Threadgroup (phần 17.2)
  • Có thể ném được (phần 11)
  • Lỗi (phần 11.2)
  • tải và tải lỗi, tất cả theo java.lang (phần 11.5.2.1 - 11.5.2.2)
  • RuntimeException (phần 11.2.1)
  • "Các lớp mảng", [Iv.v. (phần 10.8 )

... tại thời điểm đó tôi dừng lại nhìn vì, về mặt kỹ thuật , [I, et. al. không nằm trong java.lang, java.utilhoặc java.iogói.

Thí dụ:

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

Đầu ra

nhập mô tả hình ảnh ở đây

Hành vi phù hợp giữa hiện đại và 1.0.2

nhập mô tả hình ảnh ở đây


Vàng Google-fu một lần nữa.
Kevin Montrose


@YannisRizos Cả tôi và bạn. Đó là trình duyệt web đầu tiên của tôi.
Kỹ sư thế giới

@WorldEngineer: Tôi tặng bạn Khảm .
sbi


2

Có ít hơn một chục gói trong JDK ban đầu - những gói này cộng với applet, awt, awt.peer. Đó có thể là nó! Hoàn toàn có khả năng - chắc chắn 99% - ba gói này bao gồm tất cả các lớp được biết rõ ràng với chính JVM và không có lớp nào bên ngoài các gói này được đề cập trong thông số ngôn ngữ.


1

java.net cũng là một trong những gói đầu tiên có sẵn và nó rất tuyệt ngay từ đầu, đặc biệt là với tiện ích phân luồng (bây giờ mô hình Thread đã lỗi thời so với những gì bạn có trong các ngôn ngữ gần đây nhưng nó rất tuyệt).

Tôi nhớ rằng đã mã hóa một trình duyệt web (rất chưa hoàn chỉnh, thậm chí so với những gì tồn tại vào thời điểm đó) để tìm hiểu 1.02 mới được xuất bản và, ngay sau đó, một máy chủ ứng dụng web hoàn chỉnh (vẫn được sử dụng trong công nghiệp). Đó là rất lâu trước khi api servlet và mọi người bị thuyết phục rằng bạn phải sử dụng các khung công tác nặng để tạo các ứng dụng http nhanh và đáng tin cậy trong java.

Với java.net (và GC, và Chủ đề, ngoại lệ và java.util), java đã bị ràng buộc là một bên máy chủ công nghệ lớn (ở phía đối diện, java.applet đã bị đau kể từ ngày đầu tiên ...)


0

Java 1.0 có chính xác sáu gói cấp cao nhất: java.applet, java.awt (với các gói con java.awt.image và java.awt.peer), java.io, java.lang, java.net và java.util. Đó là nó. Nguồn: Patrick Chan, Nhà phát triển Java Almanac 1998

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.