Thursday, May 01, 2014

What's New in Java 8 - Lambda Expressions

Introduction :

Lambda Expressions enable us to treat functionality as a method argument or code as data . Well, What is functionality as a method argument? Did we already use this before? Yes, the answer is yes, we already used this concept before with anonymous classes. In anonymous classes case, we are usually trying to pass functionality as an argument to another method. Lambda expressions are also to do this. Although  anonymous classe is often more concise than a named class, for classes with only one method, even an anonymous class seems a bit excessive and cumbersome.

Usage :

First let us  discuss the usage of  the Lambda Expressions then will go through the syntax of Lambda Expressions.Suppose that you are creating an application for car sellers. You are asked to create a feature that search cars by certain criteria.
Car class can be represented as follows.
public class Car{
    public enum Color {
        BLACK, WHITE, RED
    }
    public String modelName;
    public Color color;
    public int engineCC;
    public void printModelName() {
        // ...
    }
}
Now you need to implement a feature that search for cars that match one characteristic such as engine cc.One simplistic approach is  create a method that  searches for cars that match one characteristic, such as engine cc. The following method prints Model name that are greater than the specified engine CC.

What's New in Java 8

I posted a post with title 'What's New in Java 7', so I am posting the same for Java 8 also but I will post separate on each new feature of Java 8, this post is something introduction of Java 8  features, will discuss each feature separate with detailed examples and usages of the feature.

Java 8  Features:
  • Lambda Expressions: These are the expression like any other expressions and enable us to treat functionality as a method argument, or code as data. Lambda expressions let us express instances of single-method interfaces more compactly. These single abstract method interfaces are also called as functional interfaces. Here you may get one question, Why It is being specified  abstract method though all methods in interface are abstract. Well, these functional interfaces may have implemented methods they are called  default (new feature in java 8).
  • Default Methods: As we discussed  Default methods are methods in an interface that have an implementation. They enable new functionality to be added to the interfaces of libraries. New Package has been added for this functional interfaces to library 
  • Aggregate Operations: Aggregate operations  enable us to perform functional-style operations on streams of elements, in particular, bulk operations on collections, such as sequential or parallel map-reduce transformations. New methods and inter faces added in collection frame work.
  • Date-Time APIs: These new APIs enable us to represent dates and times and manipulate date and time values. They support the International Organization for Standardization (ISO) calendar system as well as other commonly used global calendars.
There are other features added to Java 8 like type annotations, enhanced security etc. But I will be discussing above four features in detail.  In my  next post I will discuss Lambda Expressions. 

Distributed Transactions

What is a distributed transaction?  Transactions that span over multiple physical systems or computers over the network, are simply termed D...