¿Por qué los archivos fuente de Java entran en una estructura de directorios?

como nosotros, supongamos que estoy creando un proyecto Java con las siguientes clases

  1. com.bharani.ClassOne
  2. com.bharani.ClassTwo
  3. com.bharani.helper.HelperOne
  4. com.bharani.helper.support.HelperTwo

con archivos colocados inmediatamente debajo de la carpeta ‘src’

  1. src / ClassOne.java
  2. src / ClassTwo.java
  3. src / HelperOne.java
  4. src / HelperTwo.java

y comstackrlos usando el comando

$ javac -d classes src / *. java (asumiendo que el directorio de clases existe)

El comstackdor comstack estos archivos y coloca los archivos de clase en subdirectorios apropiados dentro del directorio de ‘clases’ como este

  1. classes / com / bharani / ClassOne.class
  2. classes / com / bharani / ClassTwo.class
  3. classes / com / bharani / helper / HelperOne.class
  4. classes / com / bharani / helper / support / HelperTwo.class

Debido a que la especificación exige que las clases deben ir dentro de la estructura de directorio adecuada. Multa.

Mi pregunta es la siguiente : cuando utilizo un IDE como Eclipse o NetBeans , también crean la estructura de directorios para el directorio del código fuente (directorio ‘src’). ¿Porqué es eso? ¿Es obligatorio? O, ¿es sólo una convención?

Gracias.

Principalmente la convención. Tiene sentido que la fuente refleje la estructura binaria.

Además, si tiene dos clases con el mismo nombre (pero en paquetes diferentes), ¿cómo almacenaría la fuente si no estuviera en directorios diferentes?

Mantener la fuente en una sola carpeta está bien para proyectos pequeños, pero una vez que tenga un proyecto más grande (cientos de clases), agrupar la fuente en paquetes hace que las cosas sean mucho más manejables.

 Is it mandatory? 

No

 Or, is it just a convention? 

Sí, para reflejar la estructura de su paquete en su árbol fuente.

Siempre pensé que el paquete de Java está un poco roto:

Parece ser jerárquico, pero no lo es.

es un prefijo simple (único) para definir espacios de nombres sin formato separados.

Pensé que era obligatorio, pero su experiencia sugiere lo contrario. De cualquier manera, es solo sentido común, ¿verdad? Los proyectos grandes tienen tantos archivos de origen. ¿Por qué complicar la vida al tener diferentes estructuras para su origen y sus archivos de clase?