We've seen a lot of things over the last few days, but what about the big picture? It's not just about the Spring Framework anymore, but there's also a lot of sub-projects: SFW, SWF, SWS, S-OSGi. Then there's Enterprise services: clustering, persistence, messaging and scheduling. Industry trends: SOA, Web 2.0/RIA, RAD stacks.
- Spring portfolio: unifying themes, fitting the pieces together (by layer) and future direction
- Facing the feature: my boss says I need a SOA, from auto-suggest to RIA and the quest for ever-increasing productivity
One of the first questions people ask about OSGi is "what the heck is it?"
Most people don't even know what it is. OSGi stands for Open Services Gateway initiative. From the very beginning, it was designed to be lightweight and dynamic. This is the major difference between it and other containers. It's always been designed to have things added and removed. Now it's tagline is: "The Dynamic Module System for Java".
It's designed to allow you to partition a system into a number of modules (a.k.a. bundles). There's strict visibility rules (similar to protected and private). There's a resolution process (dependencies are satisfied) and it understands versioning.
It's dynamic! Modules can be installed, started, stopped, uninstalled and updated - all at runtime.[Read More]
Under the hood, Grails uses Spring MVC. It has support for "flash scope" between requests.
I find it funny that flash scope is so popular these days, we've had this in AppFuse for four years. However, web frameworks didn't add native support for it until it had a name (provided by Rails). To be fair to Struts Classic, they had support for it before Rails was even invented.
Rather than JSPs, Grails uses Grails Server Pages, which look much like JSPs. Grails uses SiteMesh by default and allows you to easily change the layout used with a meta tag.
<meta name="layout" content="main"/>
Most of the dynamic attributes in a GSP are rendered using the various "g" tags. There's dynamic taglibs for logic (if, else, elseif), iterating, linking, ajax (remoteFunction, remoteLink, formRemote, submitToRemote), form (select, currencySelect, localeSelect, datePicker, checkBox), rendering (render*, layout*, paginate), validation (eachError, hasError, message) and UI (i.e. richtexteditor). [Read More]
I left West Palm Beach at 11:30 this morning, seemingly plenty of time in order to make the afternoon sessions at The Spring Experience. Unfortunately, a truck caught on fire on the side of the freeway and stopped traffic for a good hour. So it took me two hours to get here. Damn. I just walked into Guillaume LaForge's talk on Grails, hopefully I can learn something in the last 30 minutes of his presentation.
Update: It looks like I missed a good talk on testing this morning.