Lendo sobre o caso Google x Oracle, deparei-me com estas perguntas (aparentemente do juiz presidente)
...
Concorda-se que o seguinte seja verdade, pelo menos a partir de 1996?A seguir, foram apresentadas as principais interfaces de programação de aplicativos Java: java.lang, java.util e java.io.
A linguagem de programação Java se refere ou requer algum método, classe ou pacote fora dos três acima?
...
fonte: Groklaw
Obviamente, existem muitas ramificações legais, Google e Oracle provavelmente discordam em alguns pontos, e eu não me importo . Deixe a lei para os advogados.
No entanto, suspeito que haja um pouco de história interessante aqui.
A minha pergunta é (como alguém que fez primeiro qualquer codificação Java por volta de 2001 na versão 1.3), na versão 1.0 do Java foi nada requerida fora de java.lang
, java.util
e java.io
para compilar um programa Java válido?
Como exemplo (usando o C # 5.0), a await
palavra-chave depende (entre outras coisas). O compilador não poderia funcionar para especificar sem essa classe.Task<T>
GetAwaiter()
Equivalentemente, havia algum recurso principal de tempo de execução (como ClassLoader *) que dependia de outros pacotes?
Admito que pergunto por curiosidade, exatamente o que é necessário para o Java minimamente viável (a linguagem, ignorando todos os bits legais em torno dela) é interessante.
* Suponho que o ClassLoader tenha sido um recurso do Java 1.0, ele faz parte das especificações do 7.0 e presumivelmente muitas versões anteriores.
await
palavra - chave não dependeTask<T>
. ATask
classe só acontece para satisfazer as coisas que aawait
palavra-chave que dependem (um método chamadoGetAwaiter()
etc).yield
IEnumerator ou algo assim; tão animado paraawait
.Respostas:
Segundo a Wikipedia , a primeira versão formalmente lançada do Java foi a 1.0.2, em 23 de janeiro de 1996.
Há um arquivo do Java 1.0.2 e toda a documentação relacionada aqui :
Não parece ser um download do JDK 1.0.2 pedaços aqui
http://www.pascal-man.com/download/download-jdk.shtml
Isso funciona para mim no momento em que escrevo.
Eis o poder bruto e não mitigado do Java 1.0.2
Na especificação do idioma, as seguintes classes são mencionadas (citação única, citações não exaustivas):
[I
e assim por diante (seção 10.8 )... em que ponto eu parei de olhar, porque, tecnicamente ,
[I
et. al. não estão nosjava.lang
,java.util
oujava.io
pacotes.Exemplo:
Saídas
O comportamento é consistente entre o moderno e o 1.0.2
fonte
Havia menos de uma dúzia de pacotes no JDK original - estes mais applet, awt, awt.peer. Pode ter sido isso! É absolutamente provável - 99% de certeza - que esses três pacotes incluam todas as classes conhecidas explicitamente pela própria JVM principal e que não existam classes fora desses pacotes mencionadas nas especificações de idioma.
fonte
O java.net também foi um dos primeiros pacotes disponíveis e foi ótimo desde o início, especialmente com o recurso de threading (agora o modelo Thread parece desatualizado em comparação com o que você tem em idiomas mais recentes, mas era ótimo na época).
Lembro-me de ter codificado um navegador da Web (muito incompleto, mesmo em comparação com o que existia na época) para aprender o 1.02 recém-publicado e, logo após, um servidor de aplicativos da Web completo (ainda usado na indústria). Isso foi muito antes da API do servlet e de todos serem convencidos de que era necessário usar estruturas pesadas para criar aplicativos http rápidos e confiáveis em java.
Com o java.net (e o GC, e Threads, e exceptions e java.util), o java era um dos principais servidores de tecnologia (no lado oposto, o java.applet era doloroso desde o primeiro dia ...)
fonte
O Java 1.0 tinha exatamente seis pacotes de nível superior: java.applet, java.awt (com subpacotes java.awt.image e java.awt.peer), java.io, java.lang, java.net e java.util. É isso aí. Fonte: Patrick Chan, Java Developers Almanac 1998
fonte