Search This Blog

Wednesday 30 November 2016

What is static class loading and dynamic class loading in Java

Static Loading
Classes are statically loaded in Java using new operator.

For Example :
class MyClass {
public static void main(String args[]) {
Car c = new Car();
}
}

A NoClassDefFoundException is thrown if a class is referenced with Java’s new operator but the runtime system cannot find the referenced class.


Dynamic loading is a technique for programmatically invoking the functions of a class loader at run time.
The following specifies how classes are loaded dynamically in Java

Class.forName (String className); //static method which returns a Class
The above static method returns the class object associated with the class name. The string className can be supplied dynamically at run time.
Unlike the static loading, the dynamic loading will decide whether to load the class ClassXXX  or the class ClassYYY at runtime. Once the class is dynamically loaded the following method returns an instance of the loaded class.


class.newInstance (); //A non-static method, which creates an instance of a class
Creates a new instance of the class represented by this Class object. The class is instantiated as if by a new expression with an empty argument list.

. . . read more

Monday 28 November 2016

Packages in Java

Use of packages in Java

Packages in Java helps resolve naming conflicts,  when your project have classes with the same names.
Java Packages helps you organize class files within your project.
If we to put all .java files into a single package,then it become a nightmare to manage all your files as the project gets bigger.
You can create a package with package keyword, which is the first keyword in any Java program
followed by import statements.
The java.lang package is imported implicitly by default and all the other packages must be explicitly imported.
package com.package01.util ;
java.io.BufferedReader;
import java.util.Date;

A package in Java is an encapsulation mechanism that can be used to group related classes, interfaces, and subpackages.
The dot (.) notation is used to uniquely identify package members in the package hierarchy. 
The class java.sql.Date is different from the class java.util.Date. The MyClass class can be easily identified by the name com.mypackage.MyClass. This is called the fully qualified name of the package member. 
It is not surprising that most Java programming environments map the fully qualified name of packages on the underlying (hierarchical) file system.
Defining Packages: A class or interface can indicate that its Java byte code be placed in a particular package, using a package declaration. 
The package statement has the following syntax: 
package <fully qualified package name>;
At most one package declaration can appear in a source file, and it must be the first statement in the unit.
If a package declaration is omitted in a compilation unit, the Java byte code for the declarations in the compilation unit will belong to an unnamed package, which is typically synonymous with the current working directory on the host system.

Using Packages
Given a reference type that is accessible from outside a package, the reference type can be accessed in two ways. 
  • The first form uses the fully qualified name of the type. However, writing long names can become tedious. 
  • The second form uses the import declaration to provide a shorthand notation for specifying the name of the type. 
The import declarations must be the first statement after any package declaration in a source file. The simple form of the import declaration has the following syntax: 
import <fully qualified type name>; or 
import <fully qualified package name>.*;
An import declaration does not recursively import subpackages. 


Thursday 24 November 2016

AngularJS 2 - Whats there ??


Angular 2 is not a version upgrade, but a complete REWRITE.
Features of Angular 2 are as below
Ø  Mobile development – Angular 2 is mobile oriented & better in performance.  The rationale is desktop development is much easier when mobile performance issues are handled first
Ø  Modularity – Various modules are removed from Angular’s core, resulting in better performance. These will find their way into Angular’s ever-growing ecosystem of modules, meaning you’ll be able to pick and choose the parts you need.
Ø  Modern browsers – Suggested to work with modern browsers thus, reducing the need for browser compatibility workarounds
Ø  Angular 2 recommends the use of Microsoft's TypeScript language, which introduces the following improvements:
o   Class-based Object Oriented Programming
o   Static Typing
o   Generics
o   Lambdas
Ø  TypeScript is a superset of ECMAScript 6, and is backwards compatible with ECMAScript 5 (i.e.: JavaScript). Angular 2 also includes the benefits of ECMAScript 6:
o   Iterators
o   For/Of loops
o   Python-style generators
o   Reflection
Ø  Improved dependency injection – Angular 2.0 will address the challenges faced in Angular 1.x , as well as adding missing features such as child injectors and lifetime/scope control.
Ø  Dynamic loading : This will enable the developers to add new directives or controllers on the fly.
Ø  Asynchronous template compilation : The template compilation process will be asynchronous
Ø  Simpler Routing : The router in Angular 2.0 has been reworked to be simple, yet extensible
Ø  Diary.js logging – Angular 2.0 will contain a logging service called diary.js—a super useful feature which measures where time is spent in your application
Ø  Replacing controllers and $scope - $scope will be removed in Angular 2.0 in favor of ES6 classes.

Monday 21 November 2016

Handling Weeks in Java 7

Some applications in their business logic deals with the number of weeks in a year and the current week of the year. There are 52 weeks in a year, but 52 weeks multiplied by 7 days per week equals 364 days per year, not the actual 365 days. A week number is used to refer to the week of the year.

Java 7 has introduced several methods to support determining the week of the year.

Some implementations of the abstract java.util.Calendar class do not support week calculations. To determine if the Calendar implementation supports week calculations, we need to execute the isWeekDateSupported method. It returns true if the support is provided. To return the number of weeks for the current calendar year, use the getWeeksInWeekYear method. To determine the week for the current date, use the get method with the WEEK_OF_YEAR as its argument.

Below is the code to get total number of weeks and current week.
import java.util.Calendar;

public class WeeksInYear {
      public static void main(String[] args) {
            Calendar calendar = Calendar.getInstance();
            if(calendar.isWeekDateSupported()) {
                  System.out.println("Number of weeks in this year: " +
                              calendar.getWeeksInWeekYear());
                  System.out.println("Current week number: " + calendar.
                              get(Calendar.WEEK_OF_YEAR));
            }
      }
}


The above code will give the following out put
Number of weeks in this year: 53
Current week number: 47

Explanation of Code
An instance of the Calendar class is created, which is an instance of the

GregorianCalendar class. An if statement was controlled by the isWeekDateSupported method. It returned true, which resulted in the execution of the getWeeksInWeekYear and get methods. The get method was passed in the field WEEK_OF_YEAR, which returned the current week number.

Wednesday 16 November 2016

Catching multiple exception types in Java 7

In Java 7 and later, a single catch block can handle more than one type of exception. This feature helps reduce code duplication.
Consider the following example which we use prior to Java 7, which contains duplicate code in each of the catch blocks:
try{
// do some thing
}
catch (IOException ex) {
     ex.printStackTrace();
}
catch (SQLException ex) {
     ex.printStackTrace();
}

The following example, which is valid in Java  7 and later, eliminates the duplicated code:
try{
// do some thing
}
catch (IOException | SQLException ex) {
    ex.printStackTrace();
}


The catch clause specifies the types of exceptions that the block can handle, and each exception type is separated with a vertical bar (|).