¿Por qué cada clase pública está en un archivo separado? (Sección 1)
Esta es una pregunta que frecuentemente me han hecho durante mis cursos. Hasta ahora no he tenido una buena respuesta a esta pregunta. En la sección 1, leemos: "Aunque cada unidad de compilación de Oak puede contener múltiples clases o interfaces, como máximo una clase o interfaz por unidad de compilación puede ser pública".
En la barra lateral explica por qué: "Esta compilación aún no aplica esta restricción, aunque es necesaria para la importación eficiente de paquetes"
Es bastante obvio, como la mayoría de las cosas son una vez que conoces las razones de diseño, el compilador tendría que hacer un pase adicional a través de todas las unidades de compilación (archivos .java) para descubrir qué clases estaban donde, y eso haría la compilación aún más lenta .