How has access modifiers (public, protected, default, private) changed in recent Java versions?

In recent Java versions, the access modifiers (public, protected, default, private) have remained fundamentally the same in terms of their definition and usage. However, enhancements in language features and the introduction of new constructs have affected how these modifiers are applied and perceived in the development community. For instance, the introduction of modules in Java 9 with the JPMS (Java Platform Module System) introduced more controlled encapsulation. This allowed developers to specify which classes and packages to expose, enhancing the notion of access control.

Moreover, the increased focus on APIs and accessibility has led to more discussions around when to use each access modifier effectively. Best practices continue to evolve, guiding developers to make strategic decisions regarding encapsulation.


Java access modifiers public protected default private Java 9 encapsulation JPMS best practices