Leggendo il caso Google v Oracle, mi sono imbattuto in queste domande (apparentemente dal giudice presiedente)
...
È concordato che quanto segue sia vero, almeno a partire dal 1996?Quelli che seguono erano l'interfaccia di programmazione dell'applicazione Java principale: java.lang, java.util e java.io.
Il linguaggio di programmazione Java fa riferimento o richiede alcun metodo, classe o pacchetto al di fuori dei tre precedenti?
...
fonte: Groklaw
Ci sono ovviamente molte conseguenze legali, Google e Oracle probabilmente non sono d'accordo su alcuni punti, e non mi interessa . Lascia la legge agli avvocati.
Tuttavia, sospetto che ci sia un po 'di storia interessante qui.
La mia domanda è (come qualcuno che per primo ha fatto qualsiasi Java codifica intorno al 2001 nella versione 1.3), nella versione 1.0 di Java è stato qualcosa di necessario al di fuori di java.lang
, java.util
e java.io
per compilare un programma Java valida?
Ad esempio (usando C # 5.0), la await
parola chiave dipende (tra le altre cose). Il compilatore non potrebbe funzionare secondo le specifiche senza quella classe.Task<T>
GetAwaiter()
Equivalentemente, c'erano delle funzionalità di runtime di base (come ClassLoader *) che dipendevano da altri pacchetti?
Devo ammettere che chiedo per curiosità, esattamente cosa è necessario per Java minimamente praticabile (il linguaggio, ignorando tutti i bit legali che lo circondano) è interessante.
* Suppongo che ClassLoader fosse persino una funzionalità di Java 1.0, fa parte delle specifiche in 7.0 e presumibilmente molte versioni precedenti.
await
parola chiave non dipende Task<T>
. La Task
classe succede solo a soddisfare le cose che la await
parola chiave non dipende (un metodo chiamato GetAwaiter()
, ecc).
yield
IEnumerator o qualcosa del genere; così eccitato per await
.