The History of Java Programming :
In the earliest computers, logic was derived from numbers so there wasn’t any need for programming languages . But, as technology advanced, there rose a need for a programming language that was both comprehensive in its approach and sophisticated to use. This gave rise to language platforms, in which programmers could write their logic. Initially, low level languages were used. Commonly referred to as assembly languages, they could be easily interpreted by machines in the form of zeros and ones. The assembly languages were the low level languages with minimal applications and required large codes to execute simple stuffs.
But, soon people realized that they could not write flexible and reliable code using those platforms. As a result, software developers advanced toward languages that consisted of meta statements, processor instructions in a human-readable form, comments and other data. Next, the imperative languages came into picture, such as FORTRAN,COBOL and many others. This was followed by the era of authoring and command-line languages, which provided a more abstracted layer of interface for the developers to code. This was followed by the emergence of iterative, list-based and logic-based languages.
But the languages that gradually gained popularity in the programming arena were the functional and object-oriented languages. Java was presented to the world of software development in 1991 by a team of Sun Microsystems’ engineers. Java’s strength and versatility allowed it permeate the World Wide Web and act as a major force in many of the utilities upon which we now rely on a day-to-day basis.
The Object-Oriented Aspect of Java :
Some of the object oriented concepts in Java include:
- Polymorphism :- Polymorphism is the ability of an object to take on many forms. The most common use of polymorphism in oops occurs when a parent class reference is used to refer to a child class object.
- Inheritance :- Inheritance is a mechanism wherein a new class is derived from an existing class. In Java, classes may inherit or acquire the properties and methods of other classes. The extended class has all the properties of the the superclass and can also have some additional methods.
- Encapsulation :- Encapsulation in Java is a process of wrapping code and data together into a single unit, for example, a capsule which is mixed of several medicines.
- Abstraction :- Abstraction is selecting data from a larger pool to show only the relevant details to the object. It helps to reduce programming complexity and effort. In Java, abstraction is accomplished using Abstract classes and interfaces.
These features are more or less common to all the languages that support the object-oriented model. However, different languages have different levels of utilization of these object oriented concepts.
What separates Java from other languages?
Apart from its standard features, Java comes packed with some extremely useful features that distinguish it from the other languages. The following points are some of the highlights of Java.
- Portable: Code written in Java can be taken from one computer to the other. It does not require much efforts.
- Robust: Java supports reliable exception handling that can withstand all the major types of errors and exception conditions without breaking the system.
- Secure: Upon compilation, source code written in Java gets compiled into bytecode, which is later interpreted by the Java Virtual Machine (JVM). Bytecode is resistant to tampering by external agents.
- Platform Independent: Most of the systems have a built-in Java Runtime Environment (JRE) , the only prerequisite for running an application that has been designed in Java. As a result, no setups or dependencies have to be injected into a system before executing a Java app.
- Self-Memory Managed: The coder does not have to be concerned about the memory logistics, allocation and deallocation of objects. JVM takes care of all this.
- High Performance: Both in terms of memory and efficiency, Java has proved itself to be impeccable. Earlier in its history, the bytecode interpretation was considered to be an additional responsibility of the compiler.This many of the times resulted in wastage of memory. But, with the advancement of virtual machines, there is just in time (JIT) compilation, which provides both high speed and high performance.
- Multithreading: Synchronization and multitasking come as a complimentary gift thanks to Java’s multithreading features. These are particularly useful in multimedia and other real-time applications.
- Support for Networking: With each release, the community of developers who contribute in Java development come up with highly advanced and sophisticated APIs and libraries, These are available as ready-to-use packages to build reliable and strong network systems.
Of course, despite Java’s benefits and popularity, it isn’t a perfect language. There are some weaknesses in the Java framework as compared to the other object oriented languages. Unlike them, Java is not very reliable in system programming because it does not expose the lower-level hardware details to the developers and the programmers. But despite its flaws, no other language matches up to Java in terms of flexibility with other frameworks and technologies.