Recently I presented a talk about Esper at JTeam Tech Meeting. Please go through the slides if you are interested in understanding more about Complex Event Processing and Esper . The first half of the presentation covers conceptual knowledge of Complex Event Processing, its advantages over traditional approaches and use cases. The second part covers API details of Esper – The Open Source CEP Engine written in Java.
Read the rest of this entry »
iText is a library that allows you to generate PDF files on the fly.
In the following blog post I would show how to
1. Create PDF using PDF Template and PDF Form
2. Appending documents
Read the rest of this entry »
Apache Wicket is yet another Java Web Development framework. But the beauty of Wicket is it provides clear separation of concerns. It doesn’t mix markup and java and saves you from adapting to additional expression language. Wicket templates are simple HTML files with only additional wicket attribute wicket:id. This makes it easy for the Java developers to work on the prototypes created by web designers. If you know core Java, its absolutely no problem adapting to Wicket programming model. Wicket comes with a nice quickstart guide and plenty of examples for using different components.
Read the rest of this entry »
Performance tracking and monitoring is often a problem with many applications. Especially in systems with distributed SOA architecture, its difficult to identify the services causing performance hit. So its nice, wise and safe always to profile heavy operations in exterprise applications. Theres always a bad day when suddenly system starts showing its true colors by giving sub-optimal performance in production environment. Life is easy at this point, if all the components have runtime performance metrics available for analysis.
Read the rest of this entry »

Writing clean, isolated and efficient unit test is often a challenge for developers. Efficient test should cover all the possible business scenarios. To create test for covering multiple test scenarios, you need more test data.
For instance, imagine you are writing a test for some Service component. Now if the responsibility of this service is to just collect some data from DAO Layer and pass it on to Business Delegate, life is easy. You can create a mock for DAO using frameworks like EasyMock and you are done. But that’s not often the case. For testing services with complex business logic, its not sufficient to return dummy data. In this case, we create the expected test data and mock the DAO to return the expected data. If this input seed is a simple object, its few additional lines of code and we are done. But what if the test is dealing with complex data model? Normal practice that I observed amongst developers is some private methods are created deep down the test to generate test data – generateXXX().
Read the rest of this entry »
Have you ever spent days rewriting the whole application burning the midnight oil? Well, I don’t think you are the only one. In early days of my career I also made similar mistakes or was a victim of mistakes made by fellow developers. Having taken this roller coaster ride, spending sleepless nights fixing the code, I learned a new mantra – Tune Early Tune Often. In most of the enterprise development cycles, performance testing and tuning is done pretty late. Typically we start worrying about it during system testing and by the time (if at all) application goes into UAT phase, performance becomes the critical requirement. So if we are building applications where performance is as important as any other functional requirements, why not invest some time addressing it in early development phase?
Read the rest of this entry »
Complex Event Processing (CEP) is a buzzword that’s been running around the industry for last couple of years. The concept was introduced by David Luckham of Stanford University who has done over a decade of research in this field. Let’s try to understand some terms that are used frequently in this arena.
An Event is a piece of data that represents that something happened in the real world, or in software system. Events often observe a change in state. e.g. a stock tick or a password change. A linearly ordered sequence of events forms Event Stream. While a partially ordered set of events form Event Cloud. So an event stream could be a cloud but the reverse need not be true.
e.g. Set of all stock trades for GOOG within a 5 minute time window is an Event Stream. While all Stocks sold in a business day is an Event Cloud. And above event stream could be a part of this event cloud.
Read the rest of this entry »