El coutumier L'ordre d'utilisation des modificateurs est mentionné dans le document Spécification du langage Java (et non pas la spécification de la machine virtuelle Java), par exemple pour Modificateurs de classe vous trouverez la définition suivante (extrait) :
ClassModifiers:
ClassModifier
ClassModifiers ClassModifier
ClassModifier: one of
Annotation public protected private
abstract static final strictfp
[....]
Si deux ou plusieurs modificateurs de classe (distincts) apparaissent dans une déclaration de classe, il est d'usage, mais non obligatoire, qu'ils apparaissent dans un ordre conforme à celui indiqué ci-dessus dans la production pour ClassModifier. (petit texte en bas du paragraphe !)
Vous trouverez cette phrase à plusieurs autres endroits où l'usage des modificateurs est spécifié, par ex. aquí pour les modificateurs de champ.
Mise à jour : J'ai remplacé "spécifié/recommandé" par "habituel" pour que cette réponse soit acceptable. Tenez-en compte si vous lisez les commentaires ;-) (merci à @EJP de le préciser) - Néanmoins I serait recommander pour utiliser le coutumier l'ordre.
Google recommande également en utilisant l'ordre habituel mentionné dans la spécification Java.
public / protected / private
abstract
static
final
transient
volatile
synchronized
native
strictfp
Mise à jour : Il y a un nouveau " Directives de style Java "en place pour les projets de la communauté OpenJDK. Il y a également une recommandation pour une ordre de modification et comprend également la nouvelle par défaut de Java 8.
public / private / protected
abstract
static
final
transient
volatile
**default**
synchronized
native
strictfp