First of all: I’m not entirely familiar with Java, and the few things I know I have learned while playing with Java.
However, there is something I have noticed in pretty much any Opensource Java project – the use of alot of subdirectories for the sources, which usually look like so:
./src/main/java/com/somedomainname/projectname/sourcefile.java
Now, why so many subdirectories? what’s the deal with the domainname?
The domain name is used for the package name – so that file would be for the class
where
com.somedomainname.projectnameis the package.Conventionally, source file organization mirrors the package layout. The normal Java compiler doesn’t actually enforce directory structure (although some IDEs such as Eclipse will complain if you put things in the “wrong” directories) but it does force public classes to be in a file with the same name. Non-public classes can go in any file, but conventionally the filename matches the class name there, too. It makes it very easy to navigate to any class without any prior knowledge.
The Java language specification doesn’t say that a compiler must enforce the convention for public classes; it explicitly says that it can though. See section 7.2 of the JLS for more details.