Trovo che i file JSON mappati alle mie classi faccia miracoli. Solitamente alcune annotazioni sono necessarie per dire alle librerie JSON come serializzare la classe. Al di fuori di questo, praticamente vivi nel tuo codice per il resto del tempo e ottieni tutti i benefici (refactors, controlli del compilatore, codice completo ecc.)
Se hai bisogno di un formato e una convalida più rigorosi dei file, allora vado per XML creando innanzitutto un XSD. Quindi attraverso JAXB genera le classi, da quel momento in poi è lo stesso affare di JSON sopra. Un po 'più impegnativo però, segui questa strada solo se hai bisogno di scambiare i dati in questi file con un sistema che naturalmente "parla" XML o se hai bisogno di una validazione rigorosa ma non vuoi perdere tempo a farlo manualmente.
Yaml può essere un buon candidato per la configurazione. L'ho provato di recente in un progetto Python e devo dire che è stato davvero bello! Non sono sicuro di come funziona Java yaml, ma sarei molto sorpreso se non si riuscisse a trovare una buona risorsa per gestire il formato yaml.