Friday, December 16, 2011

Annotation in Java, the last moment of information


In any football match you will find the coach jumping, screaming telling something to the players. Its not only in football even in Cricket and other sports the coach will try to give some more information to the players on field.Though there was a detail game plan which involve coach, captain and all players much before the match. They know what to do everything is planned, still the coach has to say "one more thing" while the game is in progress.
Same case with us developer, we used to think and  design our codes then write. Still we want to add some more thing while compiling or execution time. I always wish I can say the compiler hey just suppress the warning go ahead compile it, while execution of program we have always want to say something to it about the environment. Well in Java we got some thing called Annotation which serve this purpose.
Annotation can be used to give additional information about a class,method or member to compiler or JVM.
Lets look at some example.
I want to write a class which represent an table in database. We say this kind of of object as Entity object.

@Entity @Table (name = "tbl_employee") 
public class Employee{
   @Id private Long employeeId;
   ...
   private Address address;
   @Clob public Address getAddress() { return address; }
   public void setAddress() { this.address = address; }
}

Here we say Employee is an entity class. It mapped to tbl_employee in database, employeeId is a primary key and getAddress return Clob.
These information is very essential for a ORM framework like JPA or Hibernate.

we use annotation to tune compiler also.

@SuppressWarnings(value = "unchecked")
void myMethod() { }



We use similarly for for run-time  to give more information to JVM. Like everything Java has some inbuilt annotation and user defined also. How to define a custom annotation and where it make sense is another topic. I will write it separately. Mean while you can look for more information here.

Saturday, November 19, 2011

Which language do you speak ?? "Vlingo" !!


Hi to one and All,

After Friday comes Saturday. Surely you people remember "Friday", ain't it ?? (Nope,nope,nope I am not talking about the famous "Friday" from Daniel Defoe master piece "Robinson Crusoe"..rather this one http://java-pallab.blogspot.com/2011/10/lets-talk-about-friday.html). Well, till now I haven't got an invitation for this, but still the wait is on.


Meanwhile, moving on, it took me a while to get used to IRIS (tiny sister of SIRI, but no way nearer to it). I was looking for something in Android, which is more advanced  and could do at least the basic stuff that SIRI can do, sending text, calling people through voice, do some basic search. Although IRIS has improved a lot from its initial stages, it didn't satisfy my taste as a new android smart phone user. I just couldn't resist the idea of interacting with my phone verbally in a language I know. And soon enough my inquisition led me to my old Guru, who can answer virtually everything; Google. And one day after coming back from office, i started searching in Android market. I didn't have to wait for long. In next 5 mins I just discovered "Vlingo". And you know what my first thoughts were, Is it free Or a paid app. 


To my utter relief, I found it to be free and the next thing I could remember was calling out one of my friends name at the top of my voice, so that my phone can listen to me and make a call to him. And to my amazement, it somehow understood my Indian ascent and called up my friend. And after that I posted a comment on Facebook, I opened twitter, I messaged to two of my friends and even found out the nearest ATM machine around my place in a 6 mins of frenzied usage of "Vlingo". And to my satisfaction everything worked.


This was much better than IRIS and there are a lot of options, more than what I expected. I was happy because, first thing, it understood what I said ( You can very well infer that from the title). And second thing, it has a wonderful GUI, I somehow liked the color and look and feel and third thing it has an iVersion i.e. you have an app for iPhone also unlike SIRI. For more information you can have a look at the video http://www.howcast.com/videos/258569-How-To-Do-Things-Faster-With-Your-Mobile-Phone-Using-Vlingo.


I would be exploring it more to check out its some more interesting features...Till then 


This is Bishnu.....Signing Off..

Wednesday, November 9, 2011

"Interface" The Middle Man

We will always find middle man in between producer and consumer of anything. Sometimes more than one layer of middle man. Both producer and end user hate those middle man. They just rip profit by somehow involving in transaction. But no one will deny it require lots of thinking to establish a model which doesn't need middle man. Let’s understand what kind of value these middle men bring.
Like real world every software or services is integration of various modules. Each module is responsible to carry out certain task. Some component consumes the output of other; to integrate these we need middle man. In Java we say it “Interface”.  The basic idea of interface is to act like middle man. But in Java world it can do some additional things.
1)     As the name suggest Interface is basically to integrate two different components.  It exposes the functionality of one component to other in a simple manner.
2)     It can be used to hold Constants of the project. As the properties of Interface are always public and final.
3)     Java doesn’t allow multiple inheritance. So One class can’t extend multiple classes, the work around in Interface. One class can implement multiple interfaces. And a reference of an Interface can hold the Object of implementing class. 
Class A implements Ia {}
Ia ia = new A();
In this way it gives lots of option to designer.
4)     Interface enforces certain behavior on the class. For ex: if my object is instance of Serializable, then the object can be persisted. Interface is used to mark the Object.
5)     I found the best use of interface is it helps to design lots of generic stuffs. It helps in reducing tight coupling between component.
Please share your thoughts and experience with Interface in programming and real life as well.