Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

Thursday, May 3, 2012

Difference between JDK and JRE

JDK:
         JDk means Java Development Kit. Its a bundle of soft-wares and tools that we use to develop java based softwares. JDK is needed by Java developers to develop programs and applications. the tools provided by JDK include compiler (javac.exe), Java application launcher (java.exe), Appletviewer, Debugger etc… Compiler converts java code into byte code. Java application launcher opens a JRE, loads the class, and invokes its main method.

JRE:
        JRE means Java Run-time Edition or Java Run-time Environment. JRE is required to run any Java based software or applications. JRE = JVM + Java Packages Classes(like util, math, lang, awt,swing etc)+runtime libraries.



The following snippet has been taken from the README.html in jdk1.6.0_03.

Contents of the JDKTM

This section contains a general summary of the files and directories in the JDKTM. For details on the files and directories, see the JDK File Structure section of the Java SE documentation for your platform.
Development Tools
(In the bin/ subdirectory) Tools and utilities that will help you develop, execute, debug, and document programs written in the JavaTM programming language. For further information, see the tool documentation.
Runtime Environment
(In the jre/ subdirectory) An implementation of the Java Runtime Environment (JRETM) for use by the JDK. The JRE includes a JavaTM Virtual Machine (JVMTM), class libraries, and other files that support the execution of programs written in the JavaTM programming language.
Additional Libraries
(In the lib/ subdirectory) Additional class libraries and support files required by the development tools.
Demo Applets and Applications
(In the demo/ subdirectory) Examples, with source code, of programming for the JavaTMTM Foundation Classes, and the JavaTM Platform Debugger Architecture. platform. These include examples that use Swing and other Java
Sample Code
(In the sample subdirectory) Samples, with source code, of programming for certain Java API's.
C header Files
(In the include/ subdirectory) Header files that support native-code programming using the Java Native Interface, the JVMTM Tool Interface, and other functionality of the JavaTM platform.
Source Code
(In src.zip) JavaTM programming language source files for all classes that make up the Java core API (that is, sources files for the java.*, javax.* and some org.* packages, but not for com.sun.* packages). This source code is provided for informational purposes only, to help developers learn and use the JavaTM programming language. These files do not include platform-specific implementation code and cannot be used to rebuild the class libraries. To extract these file, use any common zip utility. Or, you may use the Jar utility in the JDK's bin/ directory:
jar xvf src.zip

The Java Runtime Environment (JRETM)

The JavaTM Runtime Environment (JRETM) is available as a separately downloadable product. See the download web site.
The JRE allows you to run applications written in the JavaTM programming language. Like the JDKTM, it contains the JavaTM Virtual Machine (JVMTM), classes comprising the JavaTM platform API, and supporting files. Unlike the JDK, it does not contain development tools such as compilers and debuggers.
You can freely redistribute the JRE with your application, according to the terms of the JRE license. Once you have developed your application using the JDK, you can ship it with the JRE so your end-users will have a JavaTM platform on which to run your software.

The following video may also help.












Thursday, December 22, 2011

How to implement a TreeMap


java.util.TreeMap is an implementation of the java.util.SortedMap interface. This class guarantees that the map will be in ascending key order, sorted according to the natural order for the key's class (see Comparable), or by the comparator provided at creation time, depending on which constructor is used.

Following is a simple example of inserting employees into a map based on their countries. The example consists of 2 classes.

Employee.java

package com.soft.model;

public class Employee{
private String name;
private String department;
private int age;
public String getName() {
            return name;
}
public void setName(String name) {
            this.name = name;
}
public String getDepartment() {
            return department;
}
public void setDepartment(String department) {
            this.department = department;
}
public int getAge() {
            return age;
}
public void setAge(int age) {
            this.age = age;
}

}

TreeMapExample.java

package com.soft.examples;

import java.util.Collections;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;

import com.soft.model.Employee;

public class TreeMapExample {
            public static void main(String[] args) {
SortedMap<String, Employee> map = new TreeMap<String, Employee>();
SortedMap<String, Employee> descendingMap = new TreeMap<String, Employee>(Collections.reverseOrder());
Employee e = new Employee();
e.setName("Danial Fritz");
e.setDepartment("Field Based Development");
e.setAge(36);
map.put("Canada", e);
descendingMap.put("Canada", e);
e = new Employee();
e.setName("Denis Khoo");
e.setDepartment("Project Management");
e.setAge(30);
map.put("England", e);
descendingMap.put("England", e);
e = new Employee();
e.setName("Joe Kum");
e.setDepartment("Adminstration");
e.setAge(40);
map.put("Pakistan", e);
descendingMap.put("Pakistan", e);
e = new Employee();
e.setName("Anil Kumar");
e.setDepartment("Information Technology");
e.setAge(26);
map.put("China", e);
descendingMap.put("China", e);
e = new Employee();
e.setName("Anil Kumar");
e.setDepartment("Information Technology");
e.setAge(26);
map.put("Brazil", e);
descendingMap.put("Brazil", e);
e = new Employee();
e.setName("Anil Kumar");
e.setDepartment("Information Technology");
e.setAge(25);
map.put("Kowait", e);
descendingMap.put("Kowait", e);
e = new Employee();
e.setName("Anil Kumar");
e.setDepartment("Project Management");
e.setAge(26);
map.put("Jordan", e);
descendingMap.put("Jordan", e);
System.out.println("************ Sorting By Natural Order of keys ***********");
Set<String> keySet = map.keySet();
for (String key : keySet) {
            Employee employee = map.get(key);
System.out.println(key + "-----" + employee.getName() + "-----"+ employee.getDepartment() + "-----" + employee.getAge());
}
System.out.println("*** Descending Sort By Natural Order of keys ***");
keySet = descendingMap.keySet();
for (String key : keySet) {
Employee employee = map.get(key);
System.out.println(key + "-----" + employee.getName() + "-----"
+ employee.getDepartment() + "-----" + employee.getAge());
}
}
}


Output:
************ Sorting By Natural Order of keys ***********

Brazil-----Anil Kumar-----Information Technology-----26
Canada-----Danial Fritz-----Field Based Development-----36
China-----Anil Kumar-----Information Technology-----26
England-----Denis Khoo-----Project Management-----30
Jordan-----Anil Kumar-----Project Management-----26
Kowait-----Anil Kumar-----Information Technology-----25
Pakistan-----Joe Kum-----Adminstration-----40

*** Descending Sort By Natural Order of keys ***

Pakistan-----Joe Kum-----Adminstration-----40
Kowait-----Anil Kumar-----Information Technology-----25
Jordan-----Anil Kumar-----Project Management-----26
England-----Denis Khoo-----Project Management-----30
China-----Anil Kumar-----Information Technology-----26
Canada-----Danial Fritz-----Field Based Development-----36
Brazil-----Anil Kumar-----Information Technology-----26

Wednesday, December 21, 2011

How to implement ReverseOrderComparable

Java.Util.Comparable is an interface used for sorting collections. In previous example, we used a MultyField Comparable to sort a list in ascending order by multiple fields. In this example, we will implement a reverse order multy field Comparable in order to achieve a sorting in descending order or in other words in reverse order of whatever is implemented in the Comparable. This can be achieved just by a single line of code as
Comparator c= Collections.reverseOrder();// yes a comparator is used to achieve it.
This example is almost a replica of the previous example. It consists of the following 2 classes.

Employee.java:

package com.soft.model;

public class Employee{
private String name;
private String department;
private int age;
public String getName() {
            return name;
}
public void setName(String name) {
            this.name = name;
}
public String getDepartment() {
            return department;
}
public void setDepartment(String department) {
            this.department = department;
}
public int getAge() {
            return age;
}
public void setAge(int age) {
            this.age = age;
}
@Override
public int compareTo(Object obj) {
            Employee employee=(Employee)obj;
            if(this.getName().compareTo(employee.getName())==0){
                        if(this.getDepartment().compareTo(employee.getDepartment())==0){
                                    return this.getAge()-employee.getAge();
                        }else{
                                    return this.getDepartment().compareTo(employee.getDepartment());
                        }
            }else{
                        return this.getName().compareTo(employee.getName());
            }
}
}


MultyFieldComparableExample.java:

package com.soft.examples;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.soft.model.Employee;

public class MultyFieldComparableExample {
            public static void main(String[] args) {
                        List<Employee> list= new ArrayList<Employee>();
                        Employee e=new Employee();
                        e.setName("Danial Fritz");
                        e.setDepartment("Field Based Development");
                        e.setAge(36);
                        list.add(e);
                        e=new Employee();
                        e.setName("Denis Khoo");
                        e.setDepartment("Project Management");
                        e.setAge(30);
                        list.add(e);
                        e=new Employee();
                        e.setName("Joe Kum");
                        e.setDepartment("Adminstration");
                        e.setAge(40);
                        list.add(e);
                        e=new Employee();
                        e.setName("Anil Kumar");
                        e.setDepartment("Information Technology");
                        e.setAge(26);
                        list.add(e);
                        e=new Employee();
                        e.setName("Anil Kumar");
                        e.setDepartment("Information Technology");
                        e.setAge(26);
                        list.add(e);
                        e=new Employee();
                        e.setName("Anil Kumar");
                        e.setDepartment("Information Technology");
                        e.setAge(25);
                        list.add(e);
                        e=new Employee();
                        e.setName("Anil Kumar");
                        e.setDepartment("Project Management");
                        e.setAge(26);
                        list.add(e);
                        System.out.println("************ Before Sorting ***********");
                        for (int i=0;i< list.size();i++){
                                    System.out.println(list.get(i).getName()+"-----"+list.get(i).getDepartment()+"-----"+list.get(i).getAge());
                        }
                        System.out.println("**Name, Department, Age Sorting through Comparable **");
                        Collections.sort(list);
                        for (int i=0;i< list.size();i++){
                                    System.out.println(list.get(i).getName()+"-----"+list.get(i).getDepartment()+"-----"+list.get(i).getAge());
                        }

System.out.println("** Name, Department, Age Sorting through Comparable In Descending Order**");
Collections.sort(list,Collections.reverseOrder());
for (int i=0;i< list.size();i++){
System.out.println(list.get(i).getName()+"-----"+list.get(i).getDepartment()+"-----"+list.get(i).getAge());
}
                       
            }
}

Output:
************ Before Sorting ***********
Danial Fritz   ----- Field Based Development   ----- 36
Denis Khoo     ----- Project Management        ----- 30
Joe Kum        ----- Adminstration             ----- 40
Anil Kumar     ----- Information Technology    ----- 26
Anil Kumar     ----- Information Technology    ----- 26
Anil Kumar     ----- Information Technology    ----- 25
Anil Kumar-----Project Management-----26

** Name, Department, Age Sorting through Comparable **

Anil Kumar     ----- Information Technology     ----- 25
Anil Kumar     ----- Information Technology     ----- 26
Anil Kumar     ----- Information Technology     ----- 26
Anil Kumar     ----- Project Management         ----- 26
Danial Fritz   ----- Field Based Development    ----- 36
Denis Khoo     ----- Project Management         ----- 30
Joe Kum        ----- Adminstration              ----- 40

** Name, Department, Age Sorting through Comparable in Descending Order**

Joe Kum        ----- Adminstration                     ----- 40
Denis Khoo   ----- Project Management           ----- 30
Danial Fritz   ----- Field Based Development   ----- 36
Anil Kumar   ----- Project Management           ----- 26
Anil Kumar   ----- Information Technology     ----- 26
Anil Kumar   ----- Information Technology     ----- 26
Anil Kumar   ----- Information Technology     ----- 25

An example of a simple MultyField Comparable can be found at
You may also find the following articles helpful.

How to implement ReverseOrderComparator


Java.Util.Comparator is an interface used for sorting collections. In previous example, we used a MultyField Comparator to sort a list in ascending order by multiple fields. In this example, we will implement a reverse order multy field Comparator in order to achieve a sorting in descending order or in other words in reverse order of whatever is implemented in the Comparator. This can be achieved just by a single line of code as
Comparator c= Collections.reverseOrder(new mployeeMultyFieldComparator());
 This example is almost a replica of the previous example. It consists of the following 3 classes.

Employee.java:

package com.soft.model;

public class Employee{
private String name;
private String department;
private int age;
public String getName() {
            return name;
}
public void setName(String name) {
            this.name = name;
}
public String getDepartment() {
            return department;
}
public void setDepartment(String department) {
            this.department = department;
}
public int getAge() {
            return age;
}
public void setAge(int age) {
            this.age = age;
}

}



EmployeeMultyFieldComparator.java:

package com.soft.model;

import java.util.Comparator;

public class EmployeeMultyFieldComparator implements Comparator{

            @Override
            public int compare(Object obj1, Object obj2) {
                        Employee e1=(Employee)obj1;
                        Employee e2=(Employee)obj2;
                        if(e1.getName().compareTo(e2.getName())==0){
                                    if(e1.getDepartment().compareTo(e2.getDepartment())==0){
                                                return e1.getAge()-e2.getAge();
                                    }else{
                                                return e1.getDepartment().compareTo(e2.getDepartment());
                                    }
                        }else{
                                    return e1.getName().compareTo(e2.getName());
                        }
            }

}


MultyFieldComparatorExample.java:

package com.soft.examples;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.soft.model.Employee;
import com.soft.model.EmployeeMultyFieldComparator;

public class MultyFieldComparatorExample {
            public static void main(String[] args) {
                        List<Employee> list= new ArrayList<Employee>();
                        Employee e=new Employee();
                        e.setName("Danial Fritz");
                        e.setDepartment("Field Based Development");
                        e.setAge(36);
                        list.add(e);
                        e=new Employee();
                        e.setName("Denis Khoo");
                        e.setDepartment("Project Management");
                        e.setAge(30);
                        list.add(e);
                        e=new Employee();
                        e.setName("Joe Kum");
                        e.setDepartment("Adminstration");
                        e.setAge(40);
                        list.add(e);
                        e=new Employee();
                        e.setName("Anil Kumar");
                        e.setDepartment("Information Technology");
                        e.setAge(26);
                        list.add(e);
                        e=new Employee();
                        e.setName("Anil Kumar");
                        e.setDepartment("Information Technology");
                        e.setAge(26);
                        list.add(e);
                        e=new Employee();
                        e.setName("Anil Kumar");
                        e.setDepartment("Information Technology");
                        e.setAge(25);
                        list.add(e);
                        e=new Employee();
                        e.setName("Anil Kumar");
                        e.setDepartment("Project Management");
                        e.setAge(26);
                        list.add(e);
                        System.out.println("************ Before Sorting ***********");
                        for (int i=0;i< list.size();i++){
                                    System.out.println(list.get(i).getName()+"-----"+list.get(i).getDepartment()+"-----"+list.get(i).getAge());
                        }
                        System.out.println("************ Name, Department, Age Sorting through Comparator ***********");
                        Collections.sort(list,new EmployeeMultyFieldComparator());
                        for (int i=0;i< list.size();i++){
                                    System.out.println(list.get(i).getName()+"-----"+list.get(i).getDepartment()+"-----"+list.get(i).getAge());
                        }

System.out.println("** Name, Department, Age Sorting through Comparator In Descending Order**");
Collections.sort(list,Collections.reverseOrder(new EmployeeMultyFieldComparator()));
for (int i=0;i< list.size();i++){
System.out.println(list.get(i).getName()+"-----"+list.get(i).getDepartment()+"-----"+list.get(i).getAge());
}
                       
            }
}

Output:
************ Before Sorting ***********
Danial Fritz   ----- Field Based Development   ----- 36
Denis Khoo     ----- Project Management        ----- 30
Joe Kum        ----- Adminstration             ----- 40
Anil Kumar     ----- Information Technology    ----- 26
Anil Kumar     ----- Information Technology    ----- 26
Anil Kumar     ----- Information Technology    ----- 25
Anil Kumar-----Project Management-----26

****** Name, Department, Age Sorting through Comparator *******

Anil Kumar     ----- Information Technology     ----- 25
Anil Kumar     ----- Information Technology     ----- 26
Anil Kumar     ----- Information Technology     ----- 26
Anil Kumar     ----- Project Management         ----- 26
Danial Fritz   ----- Field Based Development    ----- 36
Denis Khoo     ----- Project Management         ----- 30
Joe Kum        ----- Adminstration              ----- 40

** Name, Department, Age Sorting through Comparator in Descending Order**

Joe Kum        ----- Adminstration                     ----- 40
Denis Khoo   ----- Project Management           ----- 30
Danial Fritz   ----- Field Based Development   ----- 36
Anil Kumar   ----- Project Management           ----- 26
Anil Kumar   ----- Information Technology     ----- 26
Anil Kumar   ----- Information Technology     ----- 26
Anil Kumar   ----- Information Technology     ----- 25

An example of a simple MultyFieldComparator can be found at
You may also find the following articles helpful.