Đọ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.util
và java.io
để biên dịch một chương trình Java hợp lệ?
Ví dụ (sử dụng C # 5.0), await
từ 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 đó.
await
từ khóa không phụ thuộc vào Task<T>
. Các Task
lớp học chỉ xảy ra để đáp ứng những điều mà các await
từ khóa không phụ thuộc vào (một phương pháp gọi GetAwaiter()
vv).
yield
và IEnumerator hoặc một cái gì đó; chỉ để kích thích cho await
.