Monday, 9 February 2015

Java Class Loader

By 10:42
Java ClassLoader loads a java class file into java virtual machine. It is as simple as that. It is not a huge complicated concept to learn and every java developer must know about the java class loaders and how it works.
Like NullPointerException, one exception that is very popular is ClassNotFoundException. At least in your beginner stage you might have got umpteen number of ClassNotFoundException. Java class loader is the culprit that is causing this exception.

Types (Hierarchy) of Java Class Loaders

Java class loaders can be broadly classified into below categories:
  • Bootstrap Class Loader
    Bootstrap class loader loads java’s core classes like java.lang, java.util etc. These are classes that are part of java runtime environment. Bootstrap class loader is native implementation and so they may differ across different JVMs.
  • Extensions Class Loader
    JAVA_HOME/jre/lib/ext contains jar packages that are extensions of standard core java classes. Extensions class loader loads classes from this ext folder. Using the system environment propery java.ext.dirs you can add ‘ext’ folders and jar files to be loaded using extensions class loader.
  • System Class Loader
    Java classes that are available in the java classpath are loaded using System class loader
Read More...

Sunday, 8 February 2015

Why Oak name for java language?

By 04:49
Oak is a symbol of strength and choosen as a national tree of many countries like U.S.A., France, Germany, Romania etc. In 1995, Oak was renamed as "Java" because it was already a trademark by Oak Technologies.
Read More...

Monday, 2 February 2015

Static Block in javajava

By 11:42
It is used to initialize the static data member. It is excuted before main method at the time of classloading.
Read More...

Thursday, 29 January 2015

Why Method Overloaing is not possible by changing the return type of method?

By 11:12
In java, method overloading is not possible by changing the return type of the method because there may occur ambiguity. Let's see how ambiguity may occur: because there was problem: class Calculation3{ int sum(int a,int b){System.out.println(a+b);} double sum(int a,int b){System.out.println(a+b);} public static void main(String args[]){ Calculation3 obj=new Calculation3(); int result=obj.sum(20,20); //Compile Time Error } } Output::::: int result=obj.sum(20,20); //Here how can java determine which sum() method should be called
Read More...

Wednesday, 28 January 2015

Difference between object oriented and object based languages

By 08:14
Object oriented language Object-oriented language supports all the features of OOPs. Object-oriented language doesn't has in-built object. Object-oriented languages are C++, C#, Java etc. Object based language Object-based language doesn't support all the features of OOPs like Polymorphism and Inheritance Object-based language has in-built object like javascript has window object. Object-based languages are Javascript, VB etc.
Read More...

Tuesday, 27 January 2015

What is the purpose of JIT compiler in Java ?

By 10:58

JVM (Java Virtual Machine)


JVMs are available for many hardware and software platforms (i.e.JVM is plateform dependent).JVM (Java Virtual Machine) is an abstract machine. It is a specification that provides runtime environment in which java bytecode can be executed.

What is JVM?

It is:
  1. A specification where working of Java Virtual Machine is specified. But implementation provider is independent to choose the algorithm. Its implementation has been provided by Sun and other companies.
  2. An implementation Its implementation is known as JRE (Java Runtime Environment).
  3. Runtime Instance Whenever you write java command on the command prompt to run the java class, and instance of JVM is created.

What it does?

The JVM performs following operation:
  • Loads code
  • Verifies code
  • Executes code
  • Provides runtime environment
JVM provides definitions for the:
  • Memory area
  • Class file format
  • Register set
  • Garbage-collected heap
  • Fatal error reporting etc.

Internal Architecture of JVM

Let's understand the internal architecture of JVM. It contains classloader, memory area, execution engine etc.
Jvm Internal 


1) Classloader:

Classloader is a subsystem of JVM that is used to load class files.

2) Class(Method) Area:

Class(Method) Area stores per-class structures such as the runtime constant pool, field and method data, the code for methods.

3) Heap:

It is the runtime data area in which objects are allocated.

4) Stack:

Java Stack stores frames.It holds local variables and partial results, and plays a part in method invocation and return.
Each thread has a private JVM stack, created at the same time as thread.
A new frame is created each time a method is invoked. A frame is destroyed when its method invocation completes.

5) Program Counter Register:

PC (program counter) register. It contains the address of the Java virtual machine instruction currently being executed.

6) Native Method Stack:

It contains all the native methods used in the application.

7) Execution Engine:


It contains:
1) A virtual processor
2) Interpreter:Read bytecode stream then execute the instructions.
3) Just-In-Time(JIT) compiler:It is used to improve the performance.JIT compiles parts of the byte code that have similar functionality at the same time, and hence reduces the amount of time needed for compilation.Here the term ?compiler? refers to a translator from the instruction set of a Java virtual machine (JVM) to the instruction set of a specific CPU.
Read More...

Reference vs. Pointer

By 10:54

A reference is an alternate name for an object/variable. Reference is an implicit constant pointer to a variable. It can’t be used to point memory location say 0x1000. On the other hand, pointers can be used to point to any location in the memory. To access any address, we'd need to use pointers instead of references.

Here is a simple example of reference/pointer.
int i = 10;
mov dword ptr [i],0Ah // dis-assembly code
Reference:
int &ref = i;
lea eax,[i] // disassembly code
mov dword ptr [ref],eax // dis-assembly code
int j = ref;
mov eax,dword ptr [ref] // dis-assembly code
mov ecx,dword ptr [eax] // dis-assembly code
mov dword ptr [j],ecx // dis-assembly code
Pointer:
int *ptr = &i;
lea eax,[i] // disassembly code
mov dword ptr [ptr],eax // dis-assembly code
j = *ptr;
mov eax,dword ptr [ptr] // dis-assembly code
mov ecx,dword ptr [eax] // dis-assembly code
mov dword ptr [j],ecx // dis-assembly code
If you see their dis assembly code, you can see that the dis assembly code generated for reference and pointer is same. This means that implementation wise they are same.
Use reference as much as you can as you don’t need to use & and * confusing operators
Read More...