Java is a programming language originally developed by Sun Microsystems and released in 1995. Java applications are typically compiled to bytecode, although compilation to native machine code is also possible. At runtime, bytecode is usually either interpreted or compiled to native code for execution, although direct hardware execution of bytecode by a Java processor is also possible. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities. JavaScript, a scripting language, shares a similar name and has similar syntax, but is not directly related to Java. The original and reference implementation Java compilers, virtual machines, and class libraries were developed by Sun from 1995. As of May 2007, in compliance with the specifications of the Java Community Process, Sun made available most of their Java technologies as free software under the GNU General Public License. Others have also developed alternative implementations of these Sun technologies, such as the GNU Compiler for Java and GNU Classpath.




Java started as a project called “Oak” by James Gosling in June 1991 for use in a set top box project. Gosling’s goals were to implement a virtual machine and a language that had a familiar C/C++ style of notation. The first public implementation was Java 1.0 in 1995. It promised “Write Once, Run Anywhere“, providing no-cost runtimes on popular platforms. It was fairly secure and its security was configurable, allowing network and file access to be restricted. Major web browsers soon incorporated the ability to run secure Java “applets” within web pages. Java became popular quickly. With the advent of “Java 2“, new versions had multiple configurations built for different types of platforms. For example, J2EE was for enterprise applications and the greatly stripped down version J2ME was for mobile applications. J2SE was the designation for the Standard Edition. In 2006, for marketing purposes, new “J2” versions were renamed Java EE, Java ME, and Java SE, respectively. On 13 November 2006, Sun released much of Java as free software under the terms of the GNU General Public License (GPL). On 8 May 2007 Sun finished the process, making all of Java’s core code open source, aside from a small portion of code to which Sun did not hold the copyright.




Primary goals

There were five primary goals in the creation of the Java language:


  • It should use the object-oriented programming methodology.
  • It should allow the same program to be executed on multiple operating systems.
  • It should contain built-in support for using computer networks.
  • It should be designed to execute code from remote sources securely.
  • It should be easy to use by selecting what were considered the good parts of other object-oriented languages.


C++ is a general-purpose programming language with high-level and low-level capabilities. It is a statically typed, free-form, multi-paradigm, usually compiled language supporting procedural programming, data abstraction, object-oriented programming, and generic programming. C++ is regarded as a mid-level language. This indicates that C++ comprises a combination of both high-level and low-level language features. Bjarne Stroustrup developed C++ in 1979 at Bell Labs as an enhancement to the C programming language and named it “C with Classes”. In 1983 it was renamed to C++. Enhancements started with the addition of classes, followed by, among other features, virtual functions, operator overloading, multiple inheritance, templates, and exception handling.




In The Design and Evolution of C++ (1994), Bjarne Stroustrup describes some rules that he uses for the design of C++. Knowing the rules helps to understand why C++ is the way it is. The following is a summary of the rules. Much more detail can be found in The Design and Evolution of C++.


  • C++ is designed to be a statically typed, general-purpose language that is as efficient and portable as C
  • C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming)
  • C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly
  • C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C
  • C++ avoids features that are platform specific or not general purpose
  • C++ does not incur overhead for features that are not used
  • C++ is designed to function without a sophisticated programming environment


Inside the C++ Object Model (Lippman, 1996) describes how compilers may convert C++ program statements into an in-memory layout. Compiler authors are free to implement the standard in their own manner.

Computer Program

A computer program is a collection of instructions that describes a task, or set of tasks, to be carried out by a computer. More formally, it can be described as an expression of a computational method written in a computer language. Computer programs, also known as software, may be categorized along functional lines. These functional categories include application software, operating systems, video games, and compilers, among others. Computer programs embedded in hardware devices are called firmware. The formal expression of computational methods in a human-readable computer language is often referred to as source code, while the machine-executable expressions of computational methods are commonly referred to as executables, object code, or simply as binaries – a reference to the binary file format commonly used to store the executable code.


Program execution


A computer program exists in a source code form, viewable as a programming language; as a tokenised form, ready to be interpreted; or in machine code form, ready to be executed. Computer programs can be divided into two categories – system software and application software. System software is the operating system that couples the computer’s hardware with the application software. Application software couples the system software with the user interface.


A computer program is loaded into memory (usually by the operating system) and then executed (“run”), instruction by instruction, until termination, either with success or through software or hardware error. Before a computer can execute any sort of program (including the operating system, itself a program), the computer hardware must be initialized. This initialization is done in modern PCs by a piece of software stored on programmable memory chips installed by the manufacturer, called the BIOS. The BIOS will attempt to initialize the boot sequence, making the computer ready for higher-level program execution.


Programs vs data


The executable form of a program (that is, usually object code) is often treated as being different from the data the program operates on. In some cases this distinction is blurred with programs creating, or modifying, data, which is subsequently executed as part of the same program (this is a common occurrence for programs written in Lisp), see self-modifying code.

Computer Software

Computer software, consisting of programs, enables a computer to perform specific tasks, as opposed to its physical components (hardware) which can only do the tasks they are mechanically designed for. The term includes application software such as word processors which perform productive tasks for users, system software such as operating systems, which interface with hardware to run the necessary services for user-interfaces and applications, and middleware which controls and co-ordinates distributed systems.




Practical computer systems divide software systems into three major classes: system software, programming software and application software, although the distinction is arbitrary, and often blurred.


  • System software helps run the computer hardware and computer system. It includes operating systems, device drivers, diagnostic tools, servers, windowing systems, utilities and more. The purpose of systems software is to insulate the applications programmer as much as possible from the details of the particular computer complex being used, especially memory and other hardware features, and such accessory devices as communications, printers, readers, displays, keyboards, etc.
  • Programming software usually provides tools to assist a programmer in writing computer programs and software using different programming languages in a more convenient way. The tools include text editors, compilers, interpreters, linkers, debuggers, and so on. An Integrated development environment (IDE) merges those tools into a software bundle, and a programmer may not need to type multiple commands for compiling, interpreter, debugging, tracing, and etc., because the IDE usually has an advanced graphical user interface, or GUI.
  • Application software allows end users to accomplish one or more specific (non-computer related) tasks. Typical applications include industrial automation, business software, educational software, medical software, databases, and computer games. Businesses are probably the biggest users of application software, but almost every field of human activity now uses some form of application software. It is used to automate all sorts of functions.

Computer Programmer

A programmer or software developer is someone who programs computers, that is, one who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to programming may also be known as a programmer analyst, software engineer, computer scientist, or software analyst. A programmer’s primary computer language is often prefixed to the above titles, and those who work in a web environment often prefix their titles with web.


Those proficient in computer programming skills may become famous, though this regard is normally limited to software engineering circles. Many of the most notable programmers are often labeled hackers. Ada Lovelace is popularly credited as history’s first programmer. She was the first to express an algorithm intended for implementation on a computer, Charles Babbage’s analytical engine, in October 1842.


Nature of the work


Computer programmers write, test, and maintain the detailed instructions, called computer programs that computers must follow to perform their functions. Programmers also conceive, design, & test logical structures for solving problems by computer. Many technical innovations in programming – advanced computing technologies & sophisticated new languages and programming tools – have redefined the role of a programmer & elevated much of the programming work done today. Job titles & descriptions may vary, depending on the organization. Many professional programmers also work for consulting companies at client’ sites as contractors. Licensing is not typically required to work as a programmer, although professional certifications are commonly held by programmers. Programming is widely considered a profession. Programmers write programs according to the specifications determined primarily by more senior programmers & by systems analysts. After the design process is complete, it is the job of the programmer to convert that design into a logical series of instructions that the computer can follow.


The programmer codes these instructions in one of many programming languages. Different programming languages are used depending on the purpose of the program. C++ is widely used for both scientific & business applications. Java & PHP are popular programming languages for Web programmers. Programmers generally know more than one programming language and, because many languages are similar, they often can learn new languages relatively easily. In practice, programmers often are referred to by the language they know, e.g. as Java programmers, or by the type of function they perform or environment in which they work: for example, database programmers, mainframe programmers, or Web developers. When making changes to the source code that programs are made up of, programmers need to make other programmers aware of the task that the routine is to perform. They do this by inserting comments in the source code so that others can understand the program more easily. To save work, programmers often use libraries of basic code that can be modified or customized for a specific application.


Testing and debugging


Programmers test a program by running it to ensure that the program works as expected. If errors do occur, the programmer must make the appropriate change & recheck the program until it produces the correct results. This process is called testing & debugging. These are important parts of every programmer’s job. Programmers may continue to fix these problems throughout the life of a program. Updating, repairing, modifying, & expanding existing programs sometimes called maintenance programming. Programmers sometimes contribute to instruction manuals or online help for those who will be using the program. Other times, technical writers do such work.