Davvero una bella domanda. Mi sono sempre chiesto a me stesso per alcuni anni successivi in passato, ho pensato che ci fosse una ragione legittima dietro questo, ma in realtà non lo è.
Penso che la risposta sia piuttosto semplice e molte risposte non stanno davvero scavando nel problema.
Se la tua lingua consente di disegnare piexel sullo schermo, è possibile creare al 100% un framework gui basato su di esso che imiterà l'aspetto e il controllo dei moduli di Windows con precisione.
Poiché Java è multipiattaforma, è anche del tutto possibile assicurarsi che, in base all'interfaccia utente del tipo di sistema in esecuzione (Mac / Windows), sceglierebbe di apparire diverso su entrambe le piattaforme, adattandosi allo stile della piattaforma di runtime.
Come puoi vedere in XAML, ad esempio, l'interfaccia utente può essere facilmente presentata in forma e linguaggio molto strutturati. La scelta dei comportamenti "nativi" è anche possibile se si impiega del tempo per farlo.
Quindi sarebbe possibile creare un framework GUI che consentirebbe agli sviluppatori Java di ottenere applicazioni che sembrerebbero native su Mac e Windows.
Quindi arriviamo a Swing, questo è solo un framework GUI dal potenziale infinito di framework GUI che potrebbe essere creato per Java. Si comporta come è stato programmato, il che non segue il processo sopra descritto e ottieni app dall'aspetto strano su entrambi i sistemi. Questa è la scelta fatta dagli sviluppatori di Swing, nessuno li ha costretti a fare questo e comportarsi in quel modo.