Monday, March 12, 2007

Esper tutorial on OReilly ONJava

(imported from http://blogs.codehaus.org/people/avasseur, read comments there)

It's live!



Event-driven architectures turn a traditional data-driven application's architecture upside-down. Instead of storing the data and running queries against stored data, Esper allows applications to store queries and run the data through.


This article introduces Esper, a lightweight ESP/CEP engine written in Java.


This Esper tutorial is now available online at OReilly ' ONJava. The tutorial illustrates an airport self-service terminal that we monitor and improve with real-time customer relationship management by using both ESP and CEP capabilities of Esper.


It includes a fully functional yet simple to run bundled application and also includes Eclipse configuration files so that you can start practicing right away (if you are an Eclipse user...).


I hope this will help get those blooming ESP/CEP concepts to mainstream. The tutorial should give you enough ground to understand where we come from and enough details to get started in your own project right away.


If the EPL snips below does not sound familiar to you

select avg(price) from StockTick.win:time(30 sec)
where symbol='GOOG'

select type, count(*)
from BaseTerminalEvent.win:time(10 minutes)
group by type
output all every 1 minutes


Read it online at ONJava


or read more about Esper

Saturday, March 10, 2007

Terracotta' Jonas & Eugene on AOP at AOSD 2007

(imported from http://blogs.codehaus.org/people/avasseur, read comments there)

Jonas and Eugene from Terracotta - the Naturally Clustered Java provider and maker of OpenTerracotta - have published a very interesting paper on industry use of AOP and point out some limitations present in current AOP frameworks: "Clustering the Java Virtual Machine using Aspect-Oriented Programming".

Excerpt:
"application startup time with AspectJ load-time weaving [which I partly authored] was ... slower and memory overhead was ... bigger ... when comparing with similar transformations done with either the Terracotta runtime or the AspectWerkz AOP engine [which I authored with my friend and former coworker Jonas]."

This comes to no surprise to me as AspectJ is born for build time weaving and Eclipse integration and AspectWerkz was born for load time and runtime weaving. As author of both (as we joint forces from AspectWerkz to AspectJ back mhh.. 2 years ago) I was unable to get the best of both world in one engine as we initially focussed on features integration - such as thru the @AspectJ style that is annotation-defined and driven AOP. Since that time my open source bandwith has been drawned due to work engagements. That is unfortunate as I believe there are no technical reasons for this multi-weaving-optimized engine to not happen. Fortunately AspectJ is strong on runtime performance which is something you really have to consider as well.

Their paper is available online on AOSD 2007