Tout dépend de ce que tu appelles "interface graphique" :
1) Un endroit pour "dessiner" et interagir (cliquer, toucher, etc..), pour faire des jeux vidéo par exemple. Dans ce cadre là t'as des librairies connues comme OpenGL (en C mais relativement portable entre Windows, Mac, iOS, Linux, etc...) ou DirectX (Microsoft uniquement), qui permettent de faire de la 2D et même de la 3D. Elles te facilitent beaucoup de choses au niveau du rendu et du dessin, mais il faut pas mal de travail quand même pour obtenir quelque chose...
2) Des interfaces de "saisie" classiques : boutons, listes déroulantes, fenêtres, saisie de texte, etc... Il s'agit des librairies d'interface classique, chaque système d'opération a les siennes en général, plus ou moins portables, comme celles qu'ampholyte a citées. Les librairies fournies avec Java sont relativement portables (Windows, Android, Linux, Sun/unix, MacOS, etc...), mais demeurent spécialement et uniquement utilisables par Java.
Dans ta question aux semblants simples tu touches à deux sujets très importants dans la problématique générale informatique :
I) la portabilité OS : "l'appli que j'ai codé pourra tourner sur quels systèmes d'exploitation ?"
II) la portabilité de langage de codage : "Quelle(s) librairies permettent d'utiliser les mêmes fonctions dans plusieurs langages de codage ?"
Malheureusement au vu de la diversité des librairies et langages disponibles, il n'y a pas de "vraie" réponse "tranchée" et nette à ces questions. Il s'agit, en fonction du projet (donc de l'appli à faire, en gros) de déterminer si elle a besoin de tourner sur plusieurs machines ou pas et s'il y a un intérêt à utiliser une librairie utilisable par plusieurs langages. Tout cela dépendra de l'objectif de l'appli à développer : besoin client, contexte d'utilisation, clientèle visée, coût, ressources disponibles, etc...
Si cela peut te rassurer, au début ce n'est pas à toi de faire ces choix mais plutôt à ton chef de projet, certains acceptent les suggestions mais la décision leur reviendra quand même.
Enfin, si tu sais déjà que t'auras à faire du Java, langage par ailleurs très répandu dans le développement actuellement, lance-toi ! Ce sera toujours ca de gagné et ce sera toujours plus utile qu'apprendre un langage de fond de tiroir comme CamL ou Prolog...

Les tutos Java fournis dans leur site (où tu peux télécharger le dernier JDK : Java Development Kit) sont très pratiques et accessibles pour apprendre aussi bien le langage qu'à utiliser leur librairies :
Télécharger le JDK :
http://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=otnjp(tu peux en profiter pour télécharger NetBeans, c'est un bon éditeur pour développer en Java)
Tutos :
http://www.oracle.com/technetwork/topics/newtojava/overview/index.htmlBonne chance !