Alcune considerazioni:
1) La classe java.util.Date non è mai stata deprecata. Lo sono la maggior parte dei suoi metodi e costruttori, ma la classe in sé è ancora lì (anche nel JDK 14) ed è, ovviamente, utilizzabile.
2) Esiste, comunque, la DateTime API
Andiamo oltre le considerazioni e guardiamo al tuo codice:
1) Se A non è maggiore di B e non è neppure minore di B allora, obbligatoriamente, è uguale a B. Quindi, su ogni confronto che hai fatto, è perfettamente inutile mettere
if (date1.getYear() == date2.getYear())
(e lo stesso per i mesi e per i giorni) semplicemente perchè gli altri casi li hai già esclusi prima.
2) Per poter utilizzare i sort di Collections la classe deve essere Comparable. E per una classe come la tua è naturale che sia così. Quindi: fai implementare Comparable<DateJ> nella classe DateJ e implementa il metodo
public int compareTo(DateJ d) {
...
}
In questo modo puoi usare Collections.sort() senza dover costruire un Comparator.
PS: vedi tu se dovesse servire qualche controllo di coerenza (tipo giorni / mesi / anni non negativi, date impossibili come il 30 febbraio, ecc).