Java is an object-oriented programming language developed by James Gosling and colleagues at Sun Microsystems in the early 1990s. Unlike conventional languages which are generally designed either to be compiled to native (machine) code, or to be interpreted from source code at runtime, Java is intended to be compiled to a bytecode, which is then run (generally using JIT compilation) by a Java Virtual Machine. Current vendor of java language is Oracle.
The language itself borrows much syntax from C and C++ but has a simpler object model and fewer low-level facilities.
Java was started as a project called “Oak” by James Gosling in June 1991. Gosling’s goals were to implement a virtual machine and a language that had a familiar C-like notation but with greater uniformity and simplicity than C/C++. The first public implementation was Java 1.0 in 1995. It made the promise of WORA “Write Once, Run Anywhere”, with free runtimes on popular platforms. It was fairly secure and its security was configurable, allowing for network and file access to be limited. The major web browsers soon incorporated it into their standard configurations in a secure “applet” configuration. popular quickly. New versions for large and small platforms (J2EE and J2ME) were designed with the advent of “Java 2”.
In 1997, Sun approached the ISO/IEC JTC1 standards body and later the Ecma International to formalize Java, but it soon withdrew from the process. Java remains a proprietary de facto standard that is controlled through the Java Community Process. Sun makes most of its Java implementations available without charge, with revenue being generated by specialized products such as the Java Enterprise System. Sun distinguishes between its Software Development Kit (SDK) and Runtime Environment (JRE) which is a subset of the SDK, the primary distinction being that in the JRE the compiler is not present.
Philosophy
There were five primary goals in creation of the java Language.
1. It should use the object-oriented programming methodology.
2. It should allow the same program to be executed on multiple operating systems(Platform Independent).
3. It contains built-in support for using computer networks.
4. It is designed to execute code from remote sources securely.
5. It is easy to use by selecting what was considered the good parts of other object-oriented languages.
Object-Oriented Programming Methodology
This is a programming paradigm based on the concept of Object which can contain data in the form of fields and code in the form of procedures(method). In this concept we focus more on data and data security rather than algorithm and procedures. Let us understand the structure and features of OOPs.
Structure

Features
- Focus on data rather than procedures or algorithm.
- Big program is divided into smaller component known as Object.
- Data movement around the system is not possible.
- Follow bottom-up approach.
This is only short overview of OOPs i will discuss on this topic in details in the next blog.
Platform Independence
Platform independence means if you have once compiled a program it can runs on any platform(OS). Java is platform independent. Because the java compiler convert the source code to bytecode, which is intermediate Language. bytecode can be executed on any platform using JVM(Java Virtual Machine).
The compiled code is the exact set of instructions the CPU requires to “execute” the program. In Java, the compiled code is an exact set of instructions for a “virtual CPU” which is required to work the same on every physical machine.For this reason, the designers of the Java language decided that the language and the compiled code was going to be platform independent, but since the code eventually must run on a physical platform, they opted to put all the platform dependent code in the JVM.
The CPU executes the JVM, which is platform dependent in Java. This running JVM then executes the Java byte-code which is platform independent, if you have a JVM available for it to execute upon. You might say that writing Java code, you don’t program for the code to be executed on the physical machine, you write the code to be executed on the Java Virtual Machine.

Built in support for computer Network
The term network programming refers to writing programs that execute across multiple devices (computers), in which the devices are all connected to each other using a network.
The java.net package of the J2SE APIs contains a collection of classes and interfaces that provide the low-level communication details, allowing you to write programs that focus on solving the problem at hand.
The java.net package provides support for the two common network protocols.
- TCP − TCP stands for Transmission Control Protocol, which allows for reliable communication between two applications. TCP is typically used over the Internet Protocol, which is referred to as TCP/IP.
- UDP − UDP stands for User Datagram Protocol, a connection-less protocol that allows for packets of data to be transmitted between applications.
