24 May

SCRUM Series

In last few days I have compiled some information on SCRUM in separate articles. Here is the consolidation of all the links:

  1. Scrum: An Introduction to this simple-powerful agile methodology
  2. Scrum: Characteristics and what is sprint?
  3. SCRUM: What are the different Roles?
  4. SCRUM: All the different Meetings
  5. SCRUM: Artifacts
  6. SCRUM: Scalability by SCRUM OF SCRUMS
  7. SCRUM:Some facts and resources

Reblog this post [with Zemanta]

12 Feb

Spring Framework Basics

Today I was asked by few of my colleagues to give a brief introduction about Spring Framework. I created this presentation and hope this is also able to help you. Comments are appreciated!
Here is some more code if you would like to understnad how can a class can be injected and used in other class.
Changes Made:
  1. Added: PrintMe.java
  2. Changed: HelloWorldImpl2.java, applicationContext.xml

Scenario: Use another class

22 Jan

Google Apps: latest updates

Today google announced that in last 1 week they have upgraded google apps with the following two services:

  1. Upload any file to Google Docs
  2. Default https access for Gmail

As I extensively use google apps both of these features were something that I was really waiting for. I used to always wonder why it is not https by default and finally they made it. Following are the key features of the new additions as mentioned on google blog:

Upload any file to Google Docs
Last Tuesday, we began rolling out the ability for you to upload any type of file to Google Docs, not just documents, spreadsheets, presentations and PDFs. This lets you access and share anything up to 250MB from the cloud. You get 1GB of storage for uploaded files for free, and you can purchase additional storage for file uploads. (Additional storage plans are coming soon for schools and businesses, too.)

Google Apps Premier Edition customers can also use the Google Documents List Data API to programatically add files to Google Docs, and purchase third-party applications so employees can sync files between their computers and Google Docs.

Default https access for Gmail
In the past, you had the option to always use https encryption in Gmail to help protect your data as it travels between your browser and our servers. After evaluating the trade-offs between security and latency, as of last week https encryption is now the default in Gmail.

If you trust your network’s security and want to disable always-on https for performance reasons, you can change your preferences in Gmail settings. Employees and students whose admins have not already defaulted their entire organizations to https will also see this option. The Gmail sign-in page will still always use https to help keep your password safe.

ENJOY the new updates to google apps!

18 Jan

Haiti, American Red Cross and Technology

It is very impressive to see the American Red Cross using web technology extensively to reach the world with the latest news and messages bulletins. The newsroom of the American Red Cross is constantly updating with the latest news, messages. They have put the technology to the right use by distributing the information at the same time and not waiting for the media to print it after a lapse of few hours or even a day.

The updates coming out of the site are beneficial for both the victims and the donors. Here are two of the updates

As of Sunday morning, more than 21,600 people had registered with a special Red Cross Web site to help people search for their loved ones. The Web site of the International Committee of the Red Cross (ICRC) enables people in Haiti and abroad to search for and register the names of relatives missing since the earthquake. The web address is: www.icrc.org/familylinks. People in Haiti are registering to let their loved ones know they are safe and well.

The damage is extensive, and we know that this is going to be a massive and costly long-term recovery operation.

  • As of January 16, the American Red Cross has raised more than $87 million for relief efforts. We know that we are going to spend much more than that to help the people of Haiti. The Red Cross has already released $10 million for Haiti relief efforts, and will be adding more. Future allocations will be made once we know more about the situation on the ground in Haiti and the greatest needs for both the short and long term.
  • Terrible times like these bring out the best in people, and we are grateful for the support being given to the American Red Cross.
  • People can donate in support of the relief effort in Haiti at www.redcross.org or by calling 1-800-REDCROSS. Mobile donors can text “Haiti” to 90999 to make a $10 contribution.

Source: American Red Cross

If unfortunately you are a victim or a relative/ friend of a victim please go to http://www.familylinks.icrc.org/WFL_HTI.NSF/DocIndex/locate_eng?opendocument

04 Aug

Spring Framework- Digest

As I was going through some articles on the web regarding the “Spring framework”, following is what I thought can be a digest for what is Spring framework and its benefits.

Spring is an open source framework created to address the complexity of enterprise application development. One of the chief advantages of the Spring framework is its layered architecture, which allows you to be selective about which of its components you use while also providing a cohesive framework for J2EE application development.
The Spring framework
The Spring framework is a layered architecture consisting of seven well-defined modules. The Spring modules are built on top of the core container, which defines how beans are created, configured, and managed, as shown in Figure 1.

Figure 1. The seven modules of the Spring framework

Each of the modules (or components) that comprise the Spring framework can stand on its own or be implemented jointly with one or more of the others. The functionality of each component is as follows:
The core container: The core container provides the essential functionality of the Spring framework. A primary component of the core container is the BeanFactory, an implementation of the Factory pattern. The BeanFactory applies the Inversion of Control (IOC) pattern to separate an application’s configuration and dependency specification from the actual application code.
Spring context: The Spring context is a configuration file that provides context information to the Spring framework. The Spring context includes enterprise services such as JNDI, EJB, e-mail, internalization, validation, and scheduling functionality.
Spring AOP: The Spring AOP module integrates aspect-oriented programming functionality directly into the Spring framework, through its configuration management feature. As a result you can easily AOP-enable any object managed by the Spring framework. The Spring AOP module provides transaction management services for objects in any Spring-based application. With Spring AOP you can incorporate declarative transaction management into your applications without relying on EJB components.
Spring DAO: The Spring JDBC DAO abstraction layer offers a meaningful exception hierarchy for managing the exception handling and error messages thrown by different database vendors. The exception hierarchy simplifies error handling and greatly reduces the amount of exception code you need to write, such as opening and closing connections. Spring DAO’s JDBC-oriented exceptions comply to its generic DAO exception hierarchy.
Spring ORM: The Spring framework plugs into several ORM frameworks to provide its Object Relational tool, including JDO, Hibernate, and iBatis SQL Maps. All of these comply to Spring’s generic transaction and DAO exception hierarchies.
Spring Web module: The Web context module builds on top of the application context module, providing contexts for Web-based applications. As a result, the Spring framework supports integration with Jakarta Struts. The Web module also eases the tasks of handling multi-part requests and binding request parameters to domain objects.
Spring MVC framework: The MVC framework is a full-featured MVC implementation for building Web applications. The MVC framework is highly configurable via strategy interfaces and accommodates numerous view technologies including JSP, Velocity, Tiles, iText, and POI.
Spring framework functionality can be used in any J2EE server and most of it also is adaptable to non-managed environments. A central focus of Spring is to allow for reusable business and data-access objects that are not tied to specific J2EE services. Such objects can be reused across J2EE environments (Web or EJB), standalone applications, test environments, and so on, without any hassle.
The basic concept of the Inversion of Control pattern (also known as dependency injection) is that you do not create your objects but describe how they should be created. You don’t directly connect your components and services together in code but describe which services are needed by which components in a configuration file. A container (in the case of the Spring framework, the IOC container) is then responsible for hooking it all up.
In a typical IOC scenario, the container creates all the objects, wires them together by setting the necessary properties, and determines when methods will be invoked. The Spring framework uses the Type 2 and Type 3 implementations for its IOC container.
Aspect-oriented programming
Aspect-oriented programming, or AOP, is a programming technique that allows programmers to modularize crosscutting concerns, or behavior that cuts across the typical divisions of responsibility, such as logging and transaction management. The core construct of AOP is the aspect, which encapsulates behaviors affecting multiple classes into reusable modules.
AOP and IOC are complementary technologies in that both apply a modular approach to complex problems in enterprise application development. In a typical object-oriented development approach you might implement logging functionality by putting logger statements in all your methods and Java classes. In an AOP approach you would instead modularize the logging services and apply them declaratively to the components that required logging. The advantage, of course, is that the Java class doesn’t need to know about the existence of the logging service or concern itself with any related code. As a result, application code written using Spring AOP is loosely coupled.
AOP functionality is fully integrated into the Spring context for transaction management, logging, and various other features.

BENEFITS of using Spring MVC

1. Spring provides a very clean division between controllers, JavaBean models, and views.
2. Spring’s MVC is very flexible. Unlike Struts, which forces your Action and Form objects into concrete inheritance (thus taking away your single shot at concrete inheritance in Java), Spring MVC is entirely based on interfaces. Furthermore, just about every part of the Spring MVC framework is configurable via plugging in your own interface. Of course we also provide convenience classes as an implementation option.
3. Spring, like WebWork, provides interceptors as well as controllers, making it easy to factor out behavior common to the handling of many requests.
4. Spring MVC is truly view-agnostic. You don’t get pushed to use JSP if you don’t want to; you can use Velocity, XLST or other view technologies. If you want to use a custom view mechanism – for example, your own templating language – you can easily implement the Spring View interface to integrate it.
5. Spring Controllers are configured via IoC like any other objects. This makes them easy to test, and beautifully integrated with other objects managed by Spring.
6. Spring MVC web tiers are typically easier to test than Struts web tiers, due to the avoidance of forced concrete inheritance and explicit dependence of controllers on the dispatcher servlet.
7. The web tier becomes a thin layer on top of a business object layer. This encourages good practice. Struts and other dedicated web frameworks leave you on your own in implementing your business objects; Spring provides an integrated framework for all tiers of your application.
Spring vs. Struts? for complete article read.. ()
Spring doesn’t compete against Struts at least, not directly. You can use Struts for your front-end and have Spring hold your model. However, Spring can stand on Struts shoulders and has implemented the front-end, and in the process, solved some of Struts thorny bits.
My biggest complaint with Struts is its tight coupling with JSPs, and Spring allows support for JSP, Velocity and FreeMarker right out of the box. Now I can create controllers and even form validating beans without the need for complicated, difficult-to-maintain JSP code.
I realize the benefits listed above are good reasons to go with Spring MVC over Struts but how popular is Spring MVC and how much is it actually being used out there is still to be seen?
One article that says no to springs and is in favor of struts can be found at
Please revert back with your comments and queries :o)