Chapter 1 Review Java is one of today's most popular software development languages. Java is a fully objectoriented language with strong support for proper software-engineering techniques. Java has become the language of choice for developing Internet-based applications. Any computer can directly understand only its own machine language. Machine languages generally consist of strings of numbers (ultimately reduced to 1s and 0s) that instruct computers to perform their most elementary operations one at a time. English-like abbreviations form the basis of assembly languages. Translator programs called assemblers convert assembly-language programs to machine language. Compilers translate high-level language programs into machine-language programs or intermediate-language programs ( like Java bytecode ). Interpreters translate high-level or intermediate-language programs on a line-by-line basis and execute the statements eliminating the need to compile them into machine language. High-level languages (like Java) contain English words and conventional mathematical notations. Java is used to create Web pages with dynamic and interactive content, develop large-scale enterprise applications, enhance the functionality of Web servers, provide applications for consumer devices and more. Java programs consist of pieces called classes. Classes include pieces called methods that perform tasks and return information when they complete their tasks. In addition to methods, classes contain data in the form of fields ( instance variables ). Java programs normally go through five phases—edit, compile, load, verify and execute. Java source code file names end with the .java extension. The Java compiler (javac) translates a Java program into bytecodes—instructions understood by the Java Virtual Machine (JVM), which executes Java programs. If a program compiles correctly, the compiler produces a file with the .class extension. This is the file containing the bytecodes that are executed by the JVM. A Java program must be placed in memory before it can execute. This is done by the class loader, which takes the .class file (or files) containing the bytecodes and transfers it to memory. The .class file can be loaded from a disk on your system or over a network. Object orientation is a natural way of thinking about the world and of writing computer programs. The Unified Modeling Language (UML) is a graphical language that allows people who build systems to represent their object-oriented designs in a common notation. Object-oriented design (OOD) models software components in terms of real-world objects. It takes advantage of class relationships, where objects of a certain class have the same characteristics. It also takes advantage of inheritance relationships, where newly created classes of objects are derived by absorbing characteristics of existing classes and adding unique characteristics of their own. OOD encapsulates data (attributes) and functions (behavior) into objects—the data and functions of an object are intimately tied together. Objects have the property of information hiding—objects normally are not allowed to know how other objects are implemented. Object-oriented programming (OOP) allows programmers to implement object-oriented designs as working systems. In Java, the unit of programming is the class from which objects are eventually instantiated. Java programmers concentrate on creating their own classes and reusing existing classes. Each class contains data and functions that manipulate that data. Function components are called methods. An instance of a class is called an object. Classes can have relationships with other classes. These relationships are called associations. With object technology, programmers can build much of the software they will need by combining standardized, interchangeable parts called classes. The process of analyzing and designing a system from an object-oriented point of view is called object-oriented analysis and design (OOAD).