Graphical User Interface (GUI) in Java uses classes from the javax.swing and java.awt packages to implement GUI programs. Swing classes provide greater compatibility across operating systems compared to AWT classes. Common Swing components include JButton, JLabel, JTextField, JTextArea, JCheckBox, JRadioButton, JComboBox, JList, JSlider and more. GUI programs require containers like JFrame and JPanel to hold components. Layout managers determine how components are arranged in containers. Common layouts include FlowLayout, BorderLayout and GridLayout. Menus are implemented using JMenuBar, JMenu and JMenuItem classes.