Friday, December 16, 2011

Open Source Adoption Will Continue To Grow

We are in to last month of our journey for 2011. This year we have already seen lot's of enterprise going towards open source solutions, vendors are having hard time to compete with this open source adoption emerging market. As we enter in to new year "2012", It wont be hard to predict, this pace will continue to grow faster and faster. More and more enterprise are leaning towards open source solutions. I don't think think this pace of adoption will slow down in near future also, and why it would be?? With open source tools, technology, PaaS providers enterprise can build systems, sites and could achieve up time close to five 9 (99.999%).

Although, enterprise are slowly but steady adopting these services from various cloud provider, By definition, the dynamic of this model removes a lot of the friction that companies experience when adopting open source technology stacks. Think about it, would you still be concerned about using Ruby or MySQL if VMware, Red Hat provisioned, hosted, managed and scaled the technology for you in a very elastic, self-healing infrastructure?

From language to cloud services, open source adoption has almost forced companies to look beyond their umbrella of technology, tools and why not? Many companies (Facebook, Twitter etc) have proven that with only open source solution they can run their business without any issues, as they can scale on demand. I can think of one example in Enterprise Service Bus, Mule is stand out in comparison to other vendor provided ESB’s.

PaaS providers – VMWare Cloud Foundry & RedHat Open Shift Platform, can enable the foundation to host, manage, provision and scale solutions based on some of the most renowned open source technologies such as Ruby on Rails, Hadoop, MongoDb, MySQL and cassandra. Open source

PaaS platforms represent one of the fastest-growing cloud computing models. With vendors like VMware, Salesforce.com and Red Hat leading the way, open source cloud platforms enable the benefits of cloud computing on some of the most popular open source technologies in the market. By providing a model to host, deploy, scale and manage open source solutions, this model overcomes some of the major challenges that have prevented big enterprises from widely adopting open source technologies.

Tuesday, November 8, 2011

Spring Introduce Environment Profile


Spring 3.1 introduce notion of an Environment. This abstraction of profiles has been integrated throughout the container. As always, spring community trying to help developer by introducing this very useful concepts, I do think this will be very useful for application and will definitely reduce project timeline. Application now can easily switch between profiles. Like environment-specific bean definitions, like the need to register certain bean definitions in certain contexts, while not in others. You could say that you want to register a certain profile of bean definitions in situation A, and a different profile in situation B. it's important factor to understand that the Environment contains information about which profiles (if any) are currently active. When the Spring ApplicationContext above is loading our three bean definition files, it pays close attention to the attribute in each of them. If it is present and set to the name of a profile that is not currently active, the entire file is skipped — no bean definitions are parsed or registered. You would use same way to load ApplicationContext – spring container, which will activate your profile. 

Play Safe - I would still play safe and use this only when it’s necessary to do this, like you only changing some bean values. You can use this if sets of beans are similar between dev or production. 

Sunday, October 16, 2011

Analytics

Data –In my opinion its single most important piece of information about any organization. And most familiar analogy out there is – Data Warehousing. I’m not going to take a deep dive in to Data warehousing here. As there are many sites you can go and read about DW and Business Intelligence and how many organizations are using BI. Just in case, if you get lazy and don't want to read in details, i thought of giving a brief description about Business Intelligence/Analytics; and why it’s VERY important for enterprises to enable BI with their IT operations.

Why we need it?

Today with industry trend changing day and night, it become so essential for every organization to understand or analyze data. Most of the IT organizations collect data or use data to predict future or growth for enterprise- it could be retail demand forecasting, supply chain inventory management or customer related data.

Great organizations - Today great organizations distinguish themselves from others as they already using Business Intelligence with their process and operations. While others organizations are getting ready or in a process of enabling BI with their IT operations, so that they can get prepared and be ready to improve their business.  

So what's Analytic?

Analytics is all about gaining insights from the data for better decision making. BI is taking a big lead in IT organizations across the world using data-driven insights for strategic, financial and operational excellence. As these organization using predictive analytics to understand future growth plans for their business. There are many technology company provides tools for BI/predictive analytic.

Here's one Solution: While there are many many solutions are out there...

Recently I came across something interesting and thought of sharing- Oracle announced Exalytics Business Intelligence Machine the world’s first engineered system specifically designed to deliver high performance analysis, modeling and planning. Built using industry-standard hardware, market-leading business intelligence software and in memory database technology, Oracle Exalytics is an optimized system that delivers answers to all your business questions with unmatched speed, intelligence, simplicity and manageability. For more information: follow Oracle Exalytics

Friday, September 16, 2011

NoSQL to NewSQL


Wow!! Its amazing how technlogy changing, it was few months back I was reading all good thing about NoSQL solutions. Recently came acorss another big buzz word, called “NewSQL”. 
Its like going from SQL to NoSQL and now NewSQL. Let me try to point out current major trend in the industry.

-NoSQL databases, designed to meet the scalability requirements of  distributed architectures, and/or schemaless data management requirements, 

-NewSQL databases designed to meet the requirements of distributed architectures or to improve performance such that horizontal scalability is no longer needed. 

-Data grid/cache products designed to store data in memory to increase application and database performance.

While NoSQL is still emerging and gaining popularity, such as MongoDB and Cassandra, as an answer to the limitations of traditional database systems.
Like any other technology there are some short coming or other problems: Many of the NoSQL solutions doesn’t provide ACID (atomicity, consistency, isolation, durability)-level operations, a widely used set of metrics that assure that a database-driven online transaction is carried out accurately, even if the system is interrupted. Assuring ACID compliance can be written in at the application layer, though writing the code for such operations.
Lastly, each NoSQL database comes with its own query language, while most of these follow key, value pair but still making it difficult to standardize application interfaces.
In contrast, NewSQL can provide the quality of assurance associated with SQL systems, while offering the scalability of NoSQL systems.
The NewSQL approach involves a number of novel architecture designs. It eliminates the resource-hogging buffer pool by running the database entirely in main memory. It removes the need for latching by running only as a single thread of the server (though some overhead would still be needed for other locking operations). And expensive recovery operations can be eliminated in favor of using additional servers for replication and failover.
Also, one of the most important aspect enterprise don’t have to re-write application to code against NewSQL solution.
It's amazing in short duration there are many NewSQL provider available in the industry to choose from. 
Here are some NewSQL solutions - Clustrix, EnterpriseDB, GenieDB, ScalArc, Schooner, VoltDB, RethinkDB, ScaleDB, Akiban, CodeFutures, ScaleBase, Translattice, and NimbusDB, as well as Drizzle, MySQL Cluster with NDB, and MySQL with HandlerSocket. The associated “NewSQL-as-a-service” category includes Amazon Relational Database Service.


Wednesday, August 24, 2011

RDBMS to NoSQL

RDBMS: The Awesome and not to so much

Relational database (RDBMS) technology, a “scale-up” technology that has not fundamentally changed in over 40 years, continues to be the default choice for holding data behind Web applications.

Database technology has not kept pace. Relational database technology, invented in
the 1970s and still in widespread use today, was optimized for the applications, users and infrastructure of that era. In some regards, it is the last domino to fall in the inevitable march toward a fully-distributed software architecture. While a number of bandaids have extended the useful life of the technology (horizontal and vertical sharding, distributed caching
and data denormalization), these tactics nullify key benefits of the relational model while increasing total system cost and complexity.
Long story short, you could do and try many ways to scale RDBMS, like
Sharding
Denormalize
Distributed Caching
ORM: Again better but not so much

While I’m talking about RDBMS, how can we ignore ORM frameworks. If you’re an architect/application developer, you’ll no doubt be familiar with the many object-relational mapping (ORM) frameworks that have sprung up in recent years to help ease the difficulty in mapping application objects to a relational model. Again, for small systems, ORM can be a relief. But it also introduces new problems of its own, such as extended memory requirements, and it often pollutes the application code with increasingly unwieldy mapping code.

Good luck, if you trying to achieve performance, Scalability playing with above options. If I were you and I have the power to change architecture, I would choose following option. I would like to say that may be not all the applications are fit for this, but you can design most of the applications with “NoSQL” solution.

I would like to mention one Quote, I read it some where “If you can’t split it, you can’t scale it”

Here come's “NoSQL” Solution:

While vendor for these RDBMS has very little incentive to disturbt a technology generating billions of dollor for them. Companies like such as Facebook, Google and Amazon were, out of necessity, forced to invent new approaches to data management. These “NoSQL” or non-relational database technologies are a better match for the needs
of modern interactive software systems. But not every company can or should develop, maintain and support its own database technology. Building upon the pioneering research at these and other leading-edge organizations, commercial suppliers of NoSQL database technology have emerged to offer database technology purpose-built to enable the cost- effective management of data behind modern Web and mobile applications.

While implementations differ, NoSQL database management systems share a common set of characteristics:
No schema required
Data can be inserted in a NoSQL database without first defining a rigid database schema. As a corollary, the format of the data being inserted can be changed at any time, without application disruption. This provides immense application flexibility, which ultimately delivers substantial business flexibility.
Auto-sharding (sometimes called “elasticity”). A NoSQL database automatically spreads data across servers, without requiring applications to participate. Servers can be added or removed from the data layer without application downtime, with data (and I/O) automatically spread across 
the servers. Most NoSQL databases also support data replication, storing multiple copies of data across the cluster, and even across data centers, to ensure high availability and support disaster recovery. A properly managed NoSQL database system should never need to be taken offline, for any reason, supporting 24x7x365 continuous operation 
of applications.

I think for this post, I’m going to leave it here and would come back and provide some of my favorite “NoSQL” solutions.

Till then good night folks…

Thursday, July 14, 2011

Deploying Application with Cloud Foundry

In my previous post I have written about VMware Cloud Foundry, few days back I was playing with Cloud Foundry. Again, it looks very impressive and it seems Derek (Cloud Foundry CTO) team has done a fabulous job with this first PAAS offerning with Vmware. I have used and deployed my app with Google App Engine as well, and I have to say Cloud Foundry stand right there with Google App Engine and Amazon. In my view this will take lots of industry attention as it gets more mature and more and more folks will start using.

To give you an idea, it only took me 30-40 mins from the start to deploy this application. I have used VMC CLI tool to deploy this application. Spring STS also have plugin for Cloud Foundry, I might give it a try later on sometime. Here’s my first “Hello World” kind of application, which is deployed in Cloud Foundry.

http://hellovikascloudfoundry.cloudfoundry.com/

Here's my terminal output from my mac:


Vikas-Kumars-MacBook-Pro:~ Vikas$ bash

bash-3.2$ vmc target api.cloudfoundry.com

Vikas-Kumars-MacBook-Pro:~ Vikas$ bash

bash-3.2$ ruby -v

ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

bash-3.2$ gem -v

1.3.5

bash-3.2$ sudo gem update --system

Updating RubyGems

Updating rubygems-update

Successfully installed rubygems-update-1.8.5

Updating RubyGems to 1.8.5

Installing RubyGems 1.8.5

RubyGems 1.8.5 installed

=== 1.8.5 / 2011-05-31

* 2 minor enhancement:

* The -u option to 'update local source cache' is official deprecated

* Remove has_rdoc deprecations from Specification.

* 2 bug fixes:

* Handle bad specs more gracefully.

* Reset any Gem paths changed in the installer.

RubyGems installed the following executables:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem

bash-3.2$ clear

bash-3.2$ sudo gem install vmc

Fetching: json_pure-1.5.3.gem (100%)

.......

bash-3.2$ vmc

bash-3.2$ vmc target api.cloudfoundry.com

Succesfully targeted to [http://api.cloudfoundry.com]

Successfully logged into [http://api.cloudfoundry.com]

bash-3.2$ vi

bash-3.2$ lS

hello.rb

bash-3.2$ vmc push

Would you like to deploy from the current directory? [Yn]: y

Application Name: hellovikasCloudFoundry

Application Deployed URL: 'hellovikasCloudFoundry.cloudfoundry.com'? y

Detected a Sinatra Application, is this correct? [Yn]: y

Memory Reservation [Default:128M] (64M, 128M, 256M, 512M, 1G or 2G)

Creating Application: OK

Would you like to bind any services to 'hellovikasCloudFoundry'? [yN]:

Uploading Application:

Checking for available resources: OK

Packing application: OK

Uploading (0K): OK

Push Status: OK

Staging Application: OK

Starting Application: OK


Friday, June 24, 2011

ESB in a Box

This title itself says it all, “ESB in a box”. Yes, that's right and its almost true for IBM XI50 appliance. Recently, I came to know about full features of this appliance and other Data Power appliances from IBM and it looks very interesting. I’m sure it will compete with already established ESB’s in market, such as Mule, WSO2, Open ESB & Jboss ESB to name few. What makes it so compelling that it can integrate with other IBM Data power family members like XC10 to provide elastic caching with ESB. Which I think is bonus and will get more n more attention from SOA industry. Lets look at some of the feature set from XI50:

Support for direct DB connectivity including IBM DB2.

Any-to-any message transformation, such as binary, text and XML messages

Support to enable simple rules with your applications.

Support data tranformation with routing capability.

Message-level XML security and fine-grained access control.

Enables extreme reliability by securing services at the network layer with advanced XML/SOAP/WS-Web services processing and policy enforcement.

Bridges to Web 2.0 technologies with JSON filtering and validation, support for REST verbs, and converting/bridging of REST and Web services.

Integrate with other IBM WebSphere Service Registry Repository for governance capability and interoperbility and connectivity.

Integarte with other Data Power family members to make it life easy for developers.

Support JAX-WS feature pack for security, message reliability etc..

I hope this will give some idea about IBM data power world...


Saturday, May 28, 2011

Elastic Caching Providers

In my previous post we have discussed about how to increase performace & scalability of web applications. Also, cloud based application growing day and night, I thought it would be nice to point out most of caching providing. In todays world we have different clients (web, mobile, ipad etc) for an application and as developer you have to make sure that your application handling users load, and these requirements have produced a diverse elastic caching market that includes not only the large vendors but some open source solutions:

Oracle Coherence and GigaSpaces eXtreme Application Platform (XAP) are the veterans. Oracle and GigaSpaces have the longest presences in the distributed caching market. Both offer elastic caching products today to both enterprise and Web customers, although mostly to enterprise customers. Oracle incorporates its Coherence product into two of its Fusion Middleware bundles but sells the product separately as well.

IBM and Terracotta challenge Oracle and GigaSpaces across the board. IBM and Terracotta (now Software AG) arrived later to the elastic caching platforms market but are challenging the veterans for both enterprise and Web accounts. IBM’s WebSphere eXtreme Scale will get attention as they came with XC10 device, IBM now has hit stride with the product primarily as an extension of architectures based on its WebSphere Application Server.

Terracotta makes its software available under both open source and conventional licenses, and it focuses almost exclusively on selling through developers. Terracotta expanded its offerings by buying Ehcache, a popular open source client-side product, and positioning Ehcache as the primary API to its elastic caching platform. As Amazon is one of the Elastic Caching Pioneer and they provides terracotta caching solution with EC2.

Spring GemStone is focused on big enterprise projects. GemStone has focused almost exclusively on large enterprise projects in financial services, defense, and intelligence. GemStone is a software industry veteran with a history in the Smalltalk language and object-oriented databases and has applied its expertise and technology to the problem of elastic caching. Gem Store will be integrated with other spring framework and Spring TC server (offering session replication at extreme scale), as per spring, other potential area to integrate with spring web flow to provide (transparent flow replication).

Red Hat JBoss is an emerging player. Red Hat’s JBoss middleware division has begun phasing out its distributed caching software (bundled with JBoss as JBoss Cache) and will replace it with the new Infinispan elastic cache. Infinispan is in a very early stage of commercialization, and I it to gain lots of attention from Java developers and eventually build a position in the market as a strong alternative.

Membase which is now part of CouchBase, provides distributed, key-value ("NoSQL") database management system optimized for storing data behind web applications. These applications are characterized by their need to serve many interactive users concurrently; they must create, store, retrieve, aggregate, manipulate and present data in real-time.

Now since we have listed most of the players from EC world. If I would have to choose one or two from above i'll go with terracotta or IBM as they provides more option for developer and their EC solutions seems to better compare to some other one.

Have fun with EC...


Saturday, May 14, 2011

How to scale your application: Cloud & Cache

From last few days, I have been reading a book about "Web Scalability" and some intresting articles about “scalability”. In a nut shell, how to improve performance and better scale your application. With this post today I’m going to discuss some major choices to dramatically raise the scale of applications:

Scaling option # 1: Add servers to increase capacity. Add servers or virtual machines to cache user Web sessions, execute business logic, and process transactions. Each added server carries the cost of hardware, software, electricity, and ongoing management. Even if you buy more application servers, your database may then become a new bottleneck. Databases can be redesigned to scale up or out, but it is often very costly to do so. The new buzz, Cloud computing can deliver server instances on demand, but it cannot redesign your application code and data to take advantage of additional resources. And soon or latter one will realize and say, “We can’t just keep throwing hardware at the problem.”

Scaling option # 2: Re-architect the application for greater capacity. Redesign the application for greater capacity by sharding databases, going stateless, splitting functions, improving the layering and separation of concerns, and/or adding asynchronous processing, common services, caches at every layer, single-function appliances, etc. or thorowing new pattern to re-factor some or most of code will take lots of time and money. Most organizations find this remedy too slow to deliver results and sometimes too risky and expensive. Your management and more likely users will say “We’ve got a problem now — we can’t wait a year to solve it.”

Scaling option # 3: Add caches that scale easily. Elastic caching platforms add a fast, scalable, and fault-tolerant data-access layer that can be used to cache transaction results, user session objects, shared application data and other data. Most organizations find that elastic caches easily fit into existing Web architectures and improve scale at a lower cost than the first two options. Also since mobile development is on high right now, that area can really get advantage of cachine solution, as they can choose what object, variable to cache or not to cache. Once you use this solution no one will go back to previoud options.

If you didn’t get bored so far and reached here, Congrates!!! And by now it would have been clear to most of you, that I’m going with 3rd option to gain scalability of web applications. Hopefully in coming days will post more about major caching players.


Saturday, April 30, 2011

Cloud Foundry: Will it be better from existing PaaS?

Recently VMWare has launched Cloud Foundry, the world’s first open Platform as a Service (PaaS). Cloud Foundry is designed to help developers create applications within a "platform Cloud" or a "development Cloud."

As a developer you will be able to sign up and login and write code directly on a Spring or Rails environment. You can deploy your application on a Spring Source tcServer instance and make use of running database services like MySQL and MongoDB. For STS users, the easiest way to get started with Cloud Foundry plugin is by installing it into a pre-installed copy of Spring Source Tool Suite which can be found on the download page. For Eclipse users, Cloud Foundry plugin can quite easily be installed into plain Eclipse installations. To make sure that all dependencies can be satisfied during installation you should start installing the “Eclipse IDE for JEE Developers” package. This package can be downloaded from the Eclipse download page or from the Spring Source member distribution page.

Some benefits of Cloud Foundry might include:

· Multiple Frameworks – choices of programming models

Cloud Foundry provides a platform for building, deploying, and running cloud apps using Spring for Java developers. And support applications those are using spring framework for code wiring purpose or for resource configuration purpose, such as data source look up etc.

· Multiple Services- choices of services from VMware and third parties

o Cloud Foundry is open to multiple services including basic relational databases as well as broader choices like MongoDB, MySQL and Redis. Services provide data storage and other functions that can be leveraged by applications. Examples of additional service integrations will include VMware’s vFabric application services. The vFabric Cloud Application Platform includes open source Spring Development Framework as well as a set of application services including a lightweight application server, global data management, cloud-ready messaging, and application performance management capabilities.

· Multiple Clouds - choices of clouds for deployment

o Cloud Foundry provides choice of underlying deployment destinations including a public cloud service at Cloud Foundry. Cloud Foundry make this framework available as downloadable instance to run on other cloud providers like Amazon EC2, and other IaaS offerings technologies like Eucalyptus or OpenStack.

· Developers can deploy their applications to Cloud Foundry using their existing tools and with zero modification to their code.

· As any PaaS, Cloud Foundry allows developers to focus on applications, not machines or middleware.

· Most PaaS offerings restrict developer choices of frameworks, application infrastructure services and deployment clouds. The open and extensible nature of Cloud Foundry means developers will not be locked into a single framework, single set of application services or a single cloud.

Cloud Foundry supports:

· Rails and Sinatra for Ruby developers.

· Node.js which is an event-driven I/O framework for V8 java script engine on Unix-like platforms.

· JVM frameworks including Grails.

· JVM languages such as Clojure and Scala.

Cloud Foundry Architecture

Application execution engine is one of the core building blocks of Cloud Foundry Architecture. It’s an agent that runs on each node that actually runs the application. It acts as an automation engine for application deployment and lifecycle management. Also includes scriptable command line interface (CLI) that provides access to VMWare cloud application platform. Integration with development tools such as Spring Source Tool Suite(STS), Grails and Spring Roo for development. These tools utilize the Cloud Foundry client web services API and Spring Source artifact repositories to deploy applications under Cloud Foundry.

The pieces that make up Cloud Foundry architecture are:

· At the core the Application Execution Engine is the piece that runs your application. It’s what launches and manages the Rails, Java, and other language app servers. As your application is scaled up, application engine will launch an application server with deployed code. It can be launched on any suitably configured server, which then connects to the other servers in the PaaS and starts running user applications (the application execution engines can be configured to run a single application per server or multiple).

· The Request Router is the front door to the PaaS: it accepts all the HTTP requests for all the applications running in the PaaS and routes them to the best app execution engine that runs the appropriate application code. In essence the request router is a load balancer that knows about which application is running where.

· The Cloud Controller implements the external API used by tools to load/unload applications and control their environment, including the number of application execution engines that should run each application. As part of taking in new applications it creates the bundles that application execution engines load to run an application. One aspect of the cloud controller is that it is relatively policy-free, meaning that it relies on external input to perform operations such as scaling how many application execution engines each application uses. This allows different management policies to be plugged-in.

· A set of Services which provide data storage and other functions that can be leveraged by applications. Each service tends to consist of two parts: the application implementing the service itself (e.g. MySQL, MongoDB, Redis) and a Cloud Foundry management layer that establishes the connections between applications and the service itself.

· A Health Manager responsible for keeping applications alive and ensuring that if an application execution engine crashes the applications it ran are restarted elsewhere.

The following diagram summarizes the basic idea behind Cloud Foundry:

Developer Frameworks

Cloud Foundry Supports multiple framework like Spring for Java, Rails and Sinatra for Ruby, and Node.js. There is also support for Grails on Groovy and other JVM-based frameworks.

Application Services

Application Services allow developers to take advantage of data, messaging, and web services as building blocks for their applications. For Data Service, Cloud Foundry currently offers support for MySQL, MongoDB and Redis with other service integrations underway. For Messaging service, they will offer their own Rabbit MQ and other messaging services. Examples of additional service integrations will include VMware’s vFabric application services.

Initially they are going to provide multiple services provided by VMWare itself, and eventually, open it up to the ecosystem for third-parties (similar to Heroku Add-Ons or Salesforce.com AppExchange)

Clouds

Public, Private, VMware based and non-VMware based it up to the developer and organization as to where they want to run Cloud Foundry.

Finally, you'll notice there is reference to a "Downloadable 'Micro Cloud'". Micro Cloud is a single developer instance of Cloud Foundry. It provides developers with a personal PaaS that runs on their desktop. Micro Cloud is provided as a downloadable software image for VMware Fusion or VMware Player, as well a hosted image on selected cloud partners like you can run on an(e.g. Amazon Machine Image). The idea behind the Micro Cloud is to appeal mostly to developers and let them easily do development in any physical location, as well as easily load their app to a Cloud Foundry cloud when they are ready.

Cloud Foundry’s code is open source at github under the Apache 2 License.

https://github.com/cloudfoundry/vcap

I think it has potential to compete with other cloud providers. What do you think? Does Cloud Foundry have the potential to compete with likes of Google AppEngine or Amazon EC2?


Friday, April 15, 2011

Terracotta Ehcache Proivdes Search Functionality

Ehcache is one of the widely used java distributed cache for caching purpose. As you might know that Ehcache has been aqquired by Terracotta inc. one of the pioneer for providing distributed caching funtionality.

Ehcache can serve as a local cache that the applicaitons can use to boost the performance of single node or multi-node applications.

Terracotta provides distributed object caching essential for elastic scalability and next-generation cloud environments. One of the pioneer in Cloud services, Amazon EC2 also provides Terracotta integration with their cloud instance if your application require one.

For more information on this topic please visit:

http://www.terracotta.org/news/pr/2011/2011-02-15-ehcache-search-released

Tuesday, March 1, 2011

Spring In Action - Book Review

Spring in Action”, as the book title suggest, this book is all about Spring and let me tell you this book is EXCELLENT for spring framework user. And if you are new spring framework user or advanced developer or has been using Spring framework. This book is perfect for you. Spring in Action 3E is new book for Spring in Action Series books. This book covers Spring framework core concept and all of the other modules from spring framework. So, if you want to be expert in using spring framework this book can help you achieve this goal. I have personally used this book for examples and for reference purpose. Thanks to manning publication also for providing such nice books.

Starting from chapter one, user get to know about spring framework concept and two very important fact of spring programming, one is DI “dependency Injection” and other is AOP “Aspect Oriented Programming”. And this books covers these concepts in great details with some very useful examples.

Second chapter will take you deep in to DI advanced concept, Wiring beans, injecting bean and how spring works with Auto Wiring. I would say these two chapter are must read to understand Spring core fundamental concepts.

Chapter three will teach you about how you can wire your bean togeather, like using XML configuration, Java Config etc…and use of different type of XML schemas..

Fourth Chapter will take you to AOP world. This is very powerful feature in todays programming model and this chapter will teach about basic features about Aspect programming language and how you can use AOP with spring framework.

Fifth chapter will teach about JDBC and other how spring take care of DB connection, exception and how you can use spring framework to connect to DB.

Chapter six will cover the most important aspect of programming “Transaction”, as how to integrate with different Transaction Manager, how to manage transaction withour relying on Container. Also, this chapter cover how to use transaction using annotation.

Chapter seven covers spring MVC framework, with very easy examples to demonstrate powerful MVC framework.

Eight chapter will extend further UI works and will cover about Web Flow framework.

Chapter ninth covers about Spring Security and how to secure your web application using servlet filters, also cover fundamental about security like authorzation and authentication.

Next two chapters are the most critial chapters from this book sa they talk about how to expose service using RMI and how to use Web Services with Spring Framework. I think in todays world using web services are important, but to use them correctly is more important. This chapter covers some good concept about using web services with Spring.

This next chapter covers how to use JMS with Spring framework. Also, covers what spring offers you for JMS APIs.

I persoanlly have used this book and would recommend every spring users to take a look at it, as this book present lots of useful example for each spring modules.

Thanks to Craig Walls for writing very nice book.