Friday 6 April 2012

TECHNOLOGY VARIANTS

TECHNOLOGY  VARIANTS



       In the matter of technology, we have very wide choices with a lot of  combinations. 


Any modern web application, should be based on MVC architecture. There are mainly two frameworks. namely STRUTS and JSF.
     STRUTS is a page-centric technology. JSF is component-centric technology. JSF is a JCP standard. 
   STRUTS has two variants. STUTS1.1 and STRUTS2. 
Similarly JSF also has two variants(i.e)JSF1.1 and JSF2.




************************************************
Next comes the database. Oracle of course is the industry standard. But  it is not free.More over, many web projects like mine, do not need the advanced features available in oracle. So I am using 
MySql 5 Database. It is open source and free.
*************************************************
Next decision to be made is about access technology. There are mainly two approaches. 
   1)JDBC
   2)ORM(Object Relational Mapping)
                 a)Hibernate
              b)JPA(JCP standard)

***************************************************
Nowadays,   Dependency Injection  ( ) is essential. It enables 'Declarative Change Management' . Spring is the standard DI container. In a number of projects spring is an essential container.
Therefore, I am integrating Struts1.1 with spring.
  Spring provides special templates for JDBC, Hibernate and JPA.
Therefore, I am using two combinations.
                     a)Spring ,    Struts1.1,          JDBC template
                     b)Spring ,    Struts1.1,         Hibernate Template
Note:
    Unlike Struts1.1,  JSF1.1,  JSF2 and Struts2 have built-in support for dependency injection.
JSF 2 and Struts 2 can make use of annotation which makes xml configuration file unnecessary. Therefore I have made use of JSF2 with annotation. 



******************************************************
So far, We are assuming that every thing is done in web tier only. But In modern days, SOA(Service Oriented Architecture) is very important. A simpler word is XML web service(making use of SOAP, WSDL and UDDI). AXIS 1.1 and AXIS 2  are opensource and free webservice technologies from Apache Software Foundation(ASF). AXIS 2 can make use of annotation.

  In both AXIS1.1 and AXIS2, We can use either Drop-in-deployment or WSDD deployment. I am using both in AXIS 1.1.
************************************************
We have to provide mobile client. The mobile  device may be either a J2ME device or Android device. Therefore, I have provided these two clients.

******************************************************
Finally, When the data and number of clients become extremely  large, we will deploy it in J2EE container. A J2EE container provides services like JMS, JNDI, EJB and JavaMail. The important point is that it gives transaction support. JBOSS4 and JBOSS5 are opensource and free J2EE containers. As a bonus we get JBOSS portal. Therefore I aim to deploy my application in JBOSS4/5.

******************************************************
 The easiest way and standard way for developing web applications is using command-line for compiling and deploying.
Consider the syllabus for Sun certified web component developer exam(now known as OCWCD). There is no mention about any IDE  or any web container except tomcat there. Tomcat is the reference implementation.

However, Many companies are using Eclipse. Netbeans is less popular. Therefore I have done my work first in command-line and tomcat, and then  in tomcat within Eclipse3.6(Ganymede)
****************************************************