Les fichiers de propriétés suffisent à la grande majorité des besoins. En générale, les noms de clé ont un nom structuré, du genre "entete.sous-entete.cle" ce qui offre une plus grande souplesse que celle qu'offre les ficheirs INI. Et puis si tu veux garantir l'ordre d'écriture du fichier de propriétés, rien ne t'interdit de redéfinir la façon dont il est écrit sur disque : au lieu d'écrire les valeurs de la HashMap directement sur disque, tu fais passer toutes les valeurs dans une java.util.List, que tu tries derrière (et vive la classe java.util.Collections).
Si tu as des besoins plus généraux, il y a aussi, depuis le JDK 1.4, les fichiers de préférences (package java.util.prefs), qui est assez proche au niveau des concepts de la base de registre de Windows.