Em um dos boletins de notícias de seus especialistas em Java, Heinz Kabutz examina as especificações da linguagem Oak . Ele escreve:
Por que cada classe pública está em um arquivo separado? (Seção 1)
Essa é uma pergunta que me fazem frequentemente durante meus cursos. Até agora eu não tive uma boa resposta a esta pergunta. Na seção 1, lemos: "Embora cada unidade de compilação Oak possa conter várias classes ou interfaces, no máximo uma classe ou interface por unidade de compilação pode ser pública".
Na barra lateral, explica o motivo: "Essa restrição ainda não foi aplicada pelo compilador, embora seja necessária para a importação eficiente de pacotes"
É bastante óbvio - como a maioria das coisas acontece quando você conhece os motivos do design - o compilador precisaria fazer uma passagem adicional por todas as unidades de compilação (arquivos .java) para descobrir quais classes estavam, e isso tornaria a compilação ainda mais lenta .