Monday, February 27, 2017

Difference between JDK, JRE and JVM.

Hello viewers, Once again welcome back to Java Jagran. Today I am going to discuss "Difference between JDK, JRE and JVM". So Let's start:

JDK

  • JDK is an acronym for Java Development Kit. 
  • It physically exists. 
  • It contains JRE + development tools. 
JDK is also known as Java Development Kit which provides all necessary tools to develop any Java application as well as run it.

JRE

  • JRE is an acronym for Java Runtime Environment. 
  • It is used to provide a runtime environment. 
  • It is the implementation of JVM. 
  • It physically exists. 
  • It contains set of libraries + other files that JVM uses at runtime. 
  • Implementation of JVMs is also actively released by other companies besides Oracle.
Java Runtime Environment provides all necessary libraries and files which is required by JVM to execute any bytecode/.class file. For example: If you want to run any applet on your browser you have to install JRE on your system.

JVM


  • JVM (Java Virtual Machine) is an abstract machine. It is a specification that provides a runtime environment in which java bytecode can be executed.
  • JVMs are available for many hardware and software platforms. JVM, JRE and JDK are platform dependent because the configuration of each OS differs. But, Java is platform independent.
  • The JVM performs following main tasks:


    • Loads code
    • Verifies code
    • Executes code
    • Provides runtime environment
As a developer, we write a Java program i.e *.java file. Further, we compile the Java program and the *.class file is generated which is also known as bytecode. Now to execute this bytecode we need a something. But what exactly is that? Java Virtual Machine(JVM) is a virtual machine which runs the Java bytecode/.class file and generates the output.

Sunday, February 26, 2017

Features of Java

Hello Readers, Once again welcome back to Java Jagran. Today I am going to discuss features of java. There is given many features of java. They are also known as java buzzwords. Here I am listing some important features of java.
  • Simple
  • Object-Oriented
  • Platform independent
  • Secured
  • Robust
  • Architecture neutral
  • Portable
  • Dynamic
  • Interpreted
  • High Performance
  • Multithreaded
  • Distributed
Now let's discuss each feature in detail.

Simple:

  • The syntax is based on C++ (so easier for programmers to learn it after C++).
  • Removed much confusing and/or rarely-used features e.g., explicit pointers, operator overloading etc.
  • No need to remove referenced objects because there is Automatic Garbage Collection in java.

Object-oriented

  • Object-oriented means we organise our software as a combination of different types of objects that incorporate both data and behaviour.
  • Object-oriented programming(OOPs) is a methodology that simplifies software development and maintenance by providing some rules.
  • Basic concepts of OOPs: Object,Class,Inheritance,Polymorphism,Abstraction,Encapsulation

Platform Independent

  • A platform is the hardware or software environment in which a program runs.
  • There are two types of platforms software-based and hardware-based. Java provides a software-based platform.The Java platform differs from most other platforms in the sense that it is a software-based platform that runs on the top of other hardware-based platforms.
  • It has two components:
    • Runtime Environment
    • API(Application Programming Interface)
  • Java code can be run on multiple platforms e.g. Windows, Linux, Sun Solaris, Mac/OS etc. Java code is compiled by the compiler and converted into bytecode. This bytecode is a platform-independent code because it can be run on multiple platforms i.e. Write Once and Run Anywhere(WORA).

Secured

  • Java is secured because: 
    • No explicit pointer: Java Programs run inside virtual machine sandbox
    • Classloader: Adds security by separating the package for the classes of the local file system from those that are imported from network sources.
    • Bytecode Verifier: Checks the code fragments for illegal code that can violate access right to objects.
    • Security Manager: determines what resources a class can access such as reading and writing to the local disksecurities
  • These are provided by java language. Some security can also be provided by application developer through SSL, JAAS, Cryptography etc.

Robust

  • Robust simply means strong. Java uses strong memory management. There are lack of pointers that avoids security problem. There is automatic garbage collection in java.
  • There is exception handling and type checking mechanism in java.

Architecture-neutral

  • There is no implementation dependent features e.g. size of primitive types is fixed.
  • In C programming, int data type occupies 2 bytes of memory for 32-bit architecture and 4 bytes of memory for 64-bit architecture. But in java, it occupies 4 bytes of memory for both 32 and 64 bit architectures.

Portable

  • We may carry the java bytecode to any platform.

High-performance

  • Java is faster than traditional interpretation since byte code is “close” to native code still somewhat slower than a compiled language (e.g., C++)

Distributed

  • We can create distributed applications in java. RMI and EJB are used for creating distributed applications. We may access files by calling the methods from any machine on the internet.

Multi-threaded

  • A thread is like a separate program, executing concurrently. We can write Java programs that deal with many tasks at once by defining multiple threads. The main advantage of multi-threading is that it doesn’t occupy memory for each thread. It shares a common memory area. Threads are important for multi-media, Web applications etc.