Le même code Java (en grande partie) fonctionne sur tous les systèmes d'exploitation et architectures. Il dispose de plusieurs API différentes pour dessiner des formulaires/fenêtres. Certaines de ces API, par exemple Swing, vous permettent de modifier l'aspect et la convivialité en émulant différents ensembles de widgets. Il est donc possible d'écrire un programme qui permette à l'utilisateur de modifier l'apparence et la convivialité.
Le look and feel fourni comprend OSX (comme dans la capture d'écran du haut) et Windows (plusieurs formes) ou Motif ou GTK. La façon de définir cela dans Swing et pour plus d'informations, voir ceci Document Oracle Notez que même le look and feel d'OSX ne correspond pas entièrement aux directives d'Apple, par exemple le positionnement du menu dans la fenêtre et non en haut de l'écran.
Comme tout système de fenêtrage, il est toujours possible d'écrire des programmes dont le comportement et l'apparence diffèrent de la norme attendue. Il se trouve que pour OSX la plupart des développeurs s'en tiennent aux directives d'Apple, mais même en utilisant les API fournies par Apple vous pouvez avoir une sensation différente entre les programmes Carbon(originellement Mac OS <= 9) et Cocoa(originellement NeXT). L'AppStore permet à Apple d'avoir un peu plus de contrôle mais je ne sais pas si le respect des directives d'affichage est réellement vérifié.