Quais eram os pacotes de API “core” do Java 1.0?

38

Ao ler sobre o caso do Google v Oracle, me deparei com essas perguntas (aparentemente do juiz presidente)

...
Is it agreed that the following is true, at least as of 1996?

The following were the core Java Application Programming Interface: java.lang, java.util and java.io.

Does the Java programming language refer to or require any method, class or package outside the above three?
...

fonte: Groklaw

Existem, obviamente, muitas ramificações legais, o Google e o Oracle provavelmente discordam em alguns pontos, e eu não ligo . Deixe a lei para os advogados.

No entanto, suspeito que há um pouco de história interessante aqui.

Minha pergunta é (como alguém que primeiro fez algum código Java por volta de 2001 na versão 1.3), na versão 1.0 do Java era necessário algo fora de java.lang , java.util e java.io para compilar um programa Java válido ?

Como exemplo (usando C # 5.0), o await A palavra-chave depende de Task<T> GetAwaiter() (entre outras coisas). O compilador não pôde funcionar com as especificações sem essa classe.

Equivalentemente, havia alguns recursos principais de tempo de execução (como ClassLoader *) que dependiam de outros pacotes?

Admito que peço por curiosidade, exatamente o que é necessário para o Java mínimo viável (a linguagem, ignorando todos os bits legais em torno dele) é interessante.

* Estou supondo que o ClassLoader era mesmo um recurso no Java 1.0, é parte do spec em 7.0 e presumivelmente muitas versões anteriores.

    
por Kevin Montrose 04.05.2012 / 06:57
fonte

4 respostas

55

Por Wikipedia , a primeira versão formal do Java foi 1.0.2, em 23 de janeiro de 1996.

The first stable version was the JDK 1.0.2. is called Java 1

Há um arquivo do Java 1.0.2 e toda a documentação relacionada aqui :

  • JDK 1.0.2 API reference (book format)
  • JDK 1.0.2 API reference (javadoc format)
  • Java tutorial
  • Java language specification (link broken, wayback'd here)
  • Java virtual machine specification

Parece que é um download dos bits do JDK 1.0.2 aqui

link

Funciona para mim no momento em que escrevo.

OLHAROPODERNÃOACTIDODERAWDEJAVA1.0.2

Naespecificaçãodeidioma,asseguintesclassessãomencionadas(citaçãoúnica,citaçõesnãoexaustivas):

  • Classe(seção4.3.1)
  • String(seção4.3.1)
  • Objeto(seção4.3.2)
  • Aleatório(seção4.4)
  • Thread(seção17.2)
  • ThreadGroup(seção17.2)
  • Throwable(seção11)
  • Erro(seção11.2)
  • carregaecarregaerros,todosemjava.lang(seção11.5.2.1-11.5.2.2)
  • RuntimeException(seção11.2.1)
  • as"classes de matriz", [I e assim por diante (section 10.8 )

... ponto em que parei de procurar porque, tecnicamente , [I , et. al. não estão nos pacotes java.lang , java.util ou java.io .

Exemplo:

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

Saídas

Ocomportamentoéconsistenteentreomodernoeo1.0.2

    
por 04.05.2012 / 07:50
fonte
2

Havia menos de uma dúzia de pacotes no JDK original - mais o applet, awt, awt.peer. Isso pode ter sido isso! É absolutamente provável - com 99% de certeza - que esses três pacotes incluam todas as classes que foram explicitamente conhecidas na própria JVM do núcleo, e que não havia classes fora desses pacotes mencionados na especificação de linguagem.

    
por 04.05.2012 / 07:06
fonte
1

java.net também estava entre os primeiros pacotes disponíveis e foi ótimo desde o início, especialmente com o recurso de threading (agora o modelo Thread parece desatualizado comparado com o que você tem em linguagens mais recentes, mas foi ótimo então). / p>

Eu me lembro de ter codificado um navegador da Web (muito incompleto, mesmo comparado ao que existia na época) para aprender o recém-publicado 1.02 e, logo após, um servidor de aplicativos web completo (ainda usado na indústria). Isso foi muito antes de o servlet api e todos estarem persuadidos de que você precisa usar frameworks pesados para fazer aplicações http rápidas e confiáveis em java.

Com o java.net (e o GC, e Threads, e exceções e java.util), o java era um dos principais servidores de tecnologia (do lado oposto, o java.applet era doloroso desde o primeiro dia ... )

    
por 04.05.2012 / 09:29
fonte
0

O Java 1.0 tinha exatamente seis pacotes de nível superior: java.applet, java.awt (com subpackages java.awt.image e java.awt.peer), java.io, java.lang, java.net e java .util. É isso aí. Fonte: Patrick Chan, Desenvolvedor Java Almanaque 1998

    
por 15.06.2015 / 21:46
fonte

Tags