Suppose you are tasked to design a graphical user interface for a desktop based Java application which should provide modern user interface controls and must be platform independent. You have following components for designing above mentioned GUI.

1. AWT

2. Swing

3. JavaFX

Now, which one you'll select from the above mentioned components which is most suitable for designing the required GUI. Provide proper reasons.

There are current three sets of Java APIs for graphics programming: AWT (Abstract Windowing Toolkit), Swing and JavaFX.

AWT API was introduced in JDK 1.0. Most of the AWT components have become obsolete and should be replaced by newer Swing components.
Swing API, a much more comprehensive set of graphics libraries that enhances the AWT, was introduced as part of Java Foundation Classes (JFC) after the release of JDK 1.1. JFC consists of Swing, Java2D, Accessibility, Internationalization, and Pluggable Look-and-Feel Support APIs. JFC has been integrated into core Java since JDK 1.2.
The latest JavaFX, which was integrated into JDK 8, is meant to replace Swing.