Java awt is the first generation, Java Swing is the second generation and the JavaFx is the third generation UI-Toolkit for designing and implementing Graphical User Interfaces with Java.
If you want to learn more about these APIs and the other related APIs, you did not mention, please read the discussion here and there is also a video about the differences between these three APIs here.
Answer from user6451425 on Stack OverflowSwing or JavaFX for building desktop applications?
java - Performance of JavaFx Gui vs Swing - Stack Overflow
What's the actual modern way to make a GUI with Java?
The "modern" way to apply a graphical user interface to a java application has little to do with Java at all. Web apps are all the buzz these days.
If you want to make a desktop app, then there really is no one right way to do it. Use the one you like. I actually found the more recent incarnations of JavaFX quite pleasant to use, but there's nothing wrong with swing or SWT if those APIs are more your speed.
Don't sweat it. Use what you think is cool. It's more important to finish projects than to mull over the merits of various frameworks.
EDIT: I self grammar-nazi'd.
More on reddit.comIf swing is obsolete, what is used instead in Java to make GUI software for PC's?
Videos
Hi there, I have been learning Java for about 2 months so far and for the most part, it's been an enjoyable experience. I feel like I got most of the main concepts down and have created a few projects using core Java.
My 3 main goals for learning Java are to understand and think like a programmer (considering it's my first language), hammer down OOP concepts, and to finally create desktop applications.
I have done some research on GUI frameworks in Java and found two options, JavaFX and Swing. From what I have seen and heard, JavaFX is a lot more modern than Swing but is fairly new and isn't quite mature. On the other hand, Swing is a mature framework and has a lot of things incorporated in it, but it's quite old and isn't being updated as much anymore. Swing is also apart of the JDK while JavaFX is separate.
Again, correct me if my information is wrong but which one would be a good option and if it really matters which one to choose.
