About Java


Java, having been developed in 1991, is a relatively new programming language. At that time, James Gosling from Sun Microsystems and his team began designing the first version of Java aimed at programming home appliances which are controlled by a wide variety of computer processors.
     Gosling's new language needed to be accessible by a variety of computer processors.  In 1994, he realized that such a language would be ideal for use with web browsers and Java's connection to the internet began.  In 1995, Netscape Incorporated released its latest version of the Netscape browser which was capable of running Java programs.

Why is it called Java? 

     
               It is customary for the creator of a programming language to name the language anything he/she chooses.  The original name of this language was Oak until it was discovered that a programming language already existed that was named Oak. As the story goes, after many hours of trying to come up with a new name, the development team went out for coffee and the name Java was born.
     While Java is viewed as a programming language to design applications for the Internet, it is, in reality, a general all-purpose language that can be used independently of the Internet.

Some Java Details:


            Java syntax is (purposely) similar to C/C++ syntax. Java supports the object-oriented programming paradigm (OOP). Because of OOP, some simple programs tend to be overly complex in Java. Java was not designed with beginners in mind, but it is arguably easier to learn than C/C++. Java uses a garbage collector to help manage memory. For some applications, Java is a little slower than C/C++ but tends to be much faster than (say) Python.

 

Platform Independence:


 Because the Java VM is available on many different operating systems, the same .class files can run on different computers without recompiling.
The Java HotSpot virtual machine, perform additional steps at runtime to give your application a performance boost, including recompiling some frequently used code to native machine code.

Java Buzz words:


Java brings together a bunch of excellent computer language ideas, and as a result, it is fantastically popular. From the original Sun Java whitepaper: “Java is a simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high performance, multi-threaded, and dynamic language.”

Simple

  
Simpler than C++  – no operator overloading Mimics C/C++ syntax, operators, etc. where possible
To the programmer, Java's garbage collector (GC) memory model is much simpler than C/C++. On the other hand, the libraries that accompany Java are not simple – they are enormous. But you can ignore them when you don't want to use them.  

Object-Oriented


Java is fundamentally based on the OOP notions of classes and objects Java uses a formal OOP type system that must be obeyed at compile-time and run-time.
This is helpful for larger projects, where the structure helps keep the various parts consistent. Contrast to Perl, which has more of a quick-n-dirty feel.  

Distributed / Network Oriented


Java is network friendly – both in its portable, threaded nature, and because common networking operations are built-in to the Java libraries. This will make our home works much simpler (than if we had decided to use C++).

Robust / Secure / Safe


Java is very robust – both vs. unintentional memory errors and vs. malicious code such as viruses. Java makes a tradeoff of robustness vs. performance.  
1. The JVM uses a verifier on each class at runtime to verify that it has the correct structure  
2. The JVM checks certain runtime operations, such as pointer and array access, to make sure they are touching only the memory they should. Memory is managed
Automatically by the garbage collector (GC). This prevents the common “buffer overflow” security problems suffered by the C++ code. This also makes it easy to find many common bugs, since they are caught by the runtime checker.
3. The Security Manager can check which operations a particular piece of code is allowed to do at runtime.  

Architecture Neutral / Portable


Java is designed to “Write Once Run Anywhere”, and for the most part, this works. Not even a recompile is required – a Java executable can work, without change, on any Java enabled platform.  

High-performance


Java performance has gotten a lot better with aggressive just-in-time-compiler (JIT) techniques (the HotSpot project). Java performance is often similar to the speed of C and is faster than C in some cases. However, memory use and startup time are both significantly worse than C.  

Multi-Threaded


Java has a notion of concurrency (running multiple programs or threads of execution at the same time) wired right into the language itself. This works out more cleanly than languages where concurrency is bolted on after the fact.  

Dynamic


Class and type of information is kept around at runtime. This enables runtime loading and inspection of code in a very flexible way.