Sunday, March 18, 2012

Life and Java both throws Exception

With each passing days we realize " man proposes and god disposes" , well we plan some thing if there is an deviation we called it exception. Exceptions are annoying and we just hate it. More or less each exception holds lots of vital information of reality,  to go forward we need to decode these exception. I have not much idea how to decode the exceptions that life throw, but in Java we can certainly plan it very well.
Java got a one of the advanced way to handle exception. To know more about exception handling framework in java follow this link.

I will focus how to design exception in applications. Designing of exceptions is start right from application design. Every time an error happens or something goes wrong, the ideal way is capture as much as information possible and notify some controller who can take alternate steps in run time. Mostly applications are integration of java classes and they perform the task my calling each other method. Consider if methodA of Class A use methodB of Class B and methodB encounter some error. Obviously methodB will not have any idea what could be the alternate flow. The best thing methodB can do is log the exception. Capture as much information possible about the error and wrap it to a customize exception to report to the methodA, methodA will have idea if methodB fail what to do. It should have the alternate plan ( exception handling block).
Mostly application are segregated into different layers like UI layer,  business layer and data access layer. So if an error happen in data layer business layer can take a decision can another operation is possible to carry out or need to report error to UI.And UI layer decide what kind of message need to displayed to the user.

Its always best practice to use application specific exception which wrap java native exceptions. So that it can contain more information about the error. And logging of these exception is very important. Logs help to track the error and the reason of error which gives the required information to fix the problem.
I hope with this we can plan better for unexpected flow in Java, And guys I need your inputs how to handle exception comes in life.


Friday, March 16, 2012

new iPad




After more than one year apple released new version of iPad. And they named it "new iPad". With in less than 2 years people around the globe accepted iPad as a new way of computing and in a lots of way iPad is changing life. Apple is successfully building the ecosystem and content by its app store, iTunes, iCloud and the latest iBook which makes iPad more and more useful.
The new iPad got lots of hardware up-gradation in compare to previous version iPad2. In original iPad Steve Job used to claim it gives a magical experience. And the  experience comes from display and touch. To make the magical experience further better, the new iPad got retina display. And this is big break through in terms of display. To complement it new iPad got a better processor, better camera and new generation antenna system.
In the same event apple had released new version of iWork, iPhoto and iMovie. And these are very powerful and simple apps which specially built for iPad. With apps each day iPad is adding more capability to itself. I am thrilled to see iBook. Reading textbook was never so fun before. It makes book reading more interactive.
I was anticipating new ipad will get Siri. Last year apple introduced Siri with iPhone 4s. which created a whole new way to interact with the system. According to me that is the one this new iPad is missing. Its a great tablet with same old price. I just hope it will be in India soon in right price.

Friday, February 24, 2012

All about imports in Java

In any Java source file first line after package declarations are import statements.  These statements enable us to use different classes from outside package. Compiler always looks at the import statements to find class definition.
Instead of import statements we can write fully qualified name. For ex:
java.io. File file = new java.io.File(filepath);
This is a perfectly valid statement. Only problem is it looks littlie complicated to read.  Good codes are not only run well but also easy to read.
So we will stick to
File file = new File(filepath);
To do so we have to write import statement at the beginning right after the package declaration.
package mej.java.example;
import java.io.File;
If we use more than one classes or interface of java.io packages we need to write multiple import statements.
package mej.java.example;
import java.io.File;
import java. FileInputStream;
or we can use wild characters like
java,io.*;
At first impression it looks simple, there are few side effects with this. It takes down the performance of compiler, as compiler has to look whole package for match.  But it doesn’t affect runtime performance of code in anyway. Many time developers misunderstood it.  There can be cases if we use multiple wild character imports. And if both the package contains class with same name, compiler will not able to resolve. And it also reduces the readability of code. It’s difficult to read which class from which package is being used. So the best way is to use import individually for each class or interface.
Another type of imports are static imports. To use it I can say something like
import static java.lang.Match;
We can directly write  ceil(4.83) instead of Math.ceil(4.38).  By static imports we can directly use the methods or members instead of referring through their class name. This is widely used in junit test cases to refer Assert class methods.
In this case also too much use of static imports decrease code maintainability.  
Please let me know your thoughts about java imports.

Thursday, February 16, 2012

localhost to www




Here we will discuss how to host your web application in internet. Once the application is built and running on your local machine and the testings are over next step is to take it to internet.
First we need a domain name, like for my blog I use www.myexperimentswithjava.com. To check and book your preferred domain there are lots of service providers are available for example: google apps and  godady
Domains are normally sell for 1 year , 2 years or  for some fixed terms.
If the domain name what you are looking for is taken by some one. And still you want it you can try for resale, godady facilitate resales of domain. But normally these are expensive. With domains usually service providers give some free email account, which you can use for business purpose like admin@yoursitename.com.
Once you are ready with the domain. Next thing is the Web servers,application server and database server.
Depending upon the load and traffic you expect these three can be in one machine, or individual machine or for each multiple machine. If you expect more than 1000 users are going to access then professional consultancy is required.
If you have decided to host in a share resource (popular name is cloud), you can check for service provider. I had used Amazon elastic cloud, which is pretty good. For dedicated servers you need to buy physical hardware and the set it up to run it. It should have good connectivity and fixed IP. Now next thing is that to set up each layer. I prefer first to install data base, configure security setting backups. And then create application specific objects and load initial data. Then install application server and install the apps. Check the connectivity with database. And some testing with apps. Once the application looks fine, configure the app server to run on port 80.  Then by just typing the IP of your application server you should able to access your application on internet. And the application server IP must be a static one.

Next we have to configure our domain name to application server.  From domain service provide we will get a control panel to manage the domain. There we can set redirect, configure sub domain etc. In controll panel there will be an option to add MX record. We need to add two entry like for ex:
1) http://myexperimentswithjava.com
2) www.myexperimentswithjava.com

and these entries need to map to application server.
After the configuration it takes some time to work. Normally in a day or two your application can be reachable on internet by your domain.

All the best for your hosting experiments, do post your experience.

Friday, January 13, 2012

Something is in Air

If some on follow computers actually (nowadays its other way computers follow us) must heard about cloud. And the computer guys always copy the terms from real world to use. Like Inheritance, Cloud , Mouse etc ... sometime the original meaning of these words must be thinking to sue for copyright violation.
Well copying and stealing is never a problem in this industry. It is always appreciated.
"Cloud" is such a term today no one can afford to miss it. Companies, Developers and Customers  everybody like to have it.
Well lets understand what does Cloud means and how it make sense. To start we can say your computer is connected to another computer. Then networking is there from more than last 20 years. Each year its becoming more powerful. Computer can connect with each other they can send data and receive from another computer. The next thing was application which run on network by using resource of multiple computer. Web applications are fall in this category. They run in server and user can work with it remotely.
The service providers are hosting the service in server and can cater to multiple user, that brings down end user cost of using service. The application is customized as per users preference. This is something called application on cloud. Actually it is nothing but same web application. And it is customized as per user or groups of user.
Another thing is Computer infrastructure or platform on cloud. Its like you will able to use remote server, database or application server. Amazon, Oracle and Google provide these kind of service. Here the application developers can use these platform to develop, test and host. And its easy to scale as per usage. So its a very cost effective way of using resource. Still there are some concerns with data security, organisations are comfortable to store there important data in remote data center.
And another third category of cloud services are kind of hybrid between platform and application, Salesforce, Oracle public cloud and Apple's iCloud are such example. These gives developers platform to write application on cloud.
Certainly for medium/small scale industries can use cloud services for their IT needs. It enable to have good IT system in lower price.

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..