What is the convention for word separator in Java package names?
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.
In Java, packages play a vital role in organizing the source code files of a large application into different modules. They help in avoiding name conflicts and can provide controlled access to various classes and sub-packages within those packages. An understanding of Java package naming conventions is essential for professional Java developers, particularly when it involves conventions for word separation in package names.
Java Package Naming Convention
Java package names are typically composed of lowercase letters and may include digits. The use of underscores or other special characters, including hyphens, is discouraged. When it comes to separating words in a package name, the convention is to use periods (.) to separate the components (or words) in the name.
Technical Explanation and Examples
In Java, package names are hierarchical similar to the directory structure of the underlying operating system. Each component of the package name corresponds to a subdirectory within some directory in your system. For instance, the package name com.example.myapp typically means that there are three nested directories—com, example, and myapp.
To illustrate further, consider the following points:
- Periods as Delimiters: Java uses periods (
.) to logically separate the package name into its constituent parts. This is somewhat analogous to the forward slash (/) used to separate directories in UNIX and Linux or backslashes (\) in Windows. - Use of lowercase words only: Java package names should not contain uppercase letters. This practice ensures that the package name will not conflict with the names of classes or interfaces.
- No natural language words: Traditionally, natural language words are concatenated together without using underscores or additional separators. For example,
package com.example.databasemanagementis preferred overcom.example.database_management.
Practical Example:
Consider a Java project intended for managing employee details within an organization. The corresponding package structure might look like this:
com.organization.management(Main package)employees: Encapsulates all classes related to employee management.assets: for managing company assets.
Inside the employees package, you might have:
com.organization.management.employees.recordscom.organization.management.employees.payroll
Each word in the package name is clearly separated by a period, reflecting the hierarchical organization of the packages and their directories.
Subtopics Relevant to Java Packages
1. Naming conflicts: Proper package naming helps prevent class name conflicts when your applications need to integrate with other external libraries.
2. Access modifiers and packaging: How packages influence Java access modifiers like public, private, protected, and default (no modifier), and their impact on class, method, and variable visibility.
3. Refactoring and packages: How to properly refactor package names without affecting the functionality of the program.
4. Tools support: Most Integrated Development Environments (IDEs) like Eclipse, IntelliJ IDEA, or NetBeans automatically manage package names and directory structure when creating new Java classes.
Summary Table
| Feature | Description |
| Word Separation | Periods (.) are used to separate words. |
| Case Sensitivity | Package names are all lowercase. |
| Character Inclusion | Digits are allowed; special characters and whitespaces are not. |
| Natural Language Words | Concatenate without using separators other than periods. |
| Hierarchical | Reflects a directory-like hierarchy, aiding organizational clarity. |
In conclusion, while the technical aspects of Java package naming might seem straightforward, adhering to these conventions is crucial for maintaining a clean, organized, and conflict-free codebase. Effective package naming not only helps in logically organizing your code but also enhances its readability, maintainability, and scalability.
Related reading
- What is the correct exception to throw for unhandled enum values?
- What is the default initialization of an array in Java?
- What is the default scheduler pool size in spring-boot?
- What is the default scope of a method in Java?
- What is the difference between == and equals() in Java?
- What is the difference between ? and Object in Java generics?
- What is the difference between a HashMap and a TreeMap?
- What is the difference between a JavaBean and a POJO?

OOD Fundamentals
Master object-oriented design from first principles, SOLID, design patterns, and classic interview problems with hands-on coding.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.