In the previous unit we described how data such as that from a file could be communicated to a Java program. However, there is also a need to handle data that is communicated in more diverse fashions and, in particular, directly from a human. Such data is often taken into a system via a graphical user interface (GUI). GUI design is a major field of study and creating a 'usable' interface is crucial to the development of a successful software system. The interfaces that you will create in this course will be relatively simple and will not require a great deal of planning and design. However, for commercial systems, a substantial amount of time and effort is required to ensure that the interface presented to the user enables easy and indeed enjoyable interaction. Typically, these interfaces will include buttons, areas for typing in text, drop-down menus for selecting options, areas for displaying results, and so on. These are known as visual components.