Graphical user interface (GUI) allows users to interact with applications visually rather than through text commands. There are two main Java APIs for GUI programming: AWT and Swing. AWT consists of core graphics classes like containers (frames, panels), components (buttons, text fields), and layout managers. It also supports event handling through classes like ActionEvent and interfaces like ActionListener. Applets are Java programs that run in web browsers - they are embedded in HTML pages and their code is downloaded to the user's machine. Applets have a lifecycle of methods like init(), start(), stop() that are called at different times.