‘Credit Crunch’ might be the favourite buzzword of the moment, but ‘Security’ and ‘Software as a Service’ are not very far behind. Ok, they’re a long way behind ‘will I lose my house’ or ‘will I have a job tomorrow’, but you get the idea. So I’m proud to associated by this article by Max and Chicco, even in a very minor way (as a reviewer).
So what’s it about? We’ve all heard about the Wisdom of Crowds idea. But what if you need to actually implement it on your website? This book shows you how to (using both concepts and practical code, as well as the theory behind all of it that I was missing). It includes
Intelligent, learning search, using Lucene.
Extracting data from blogs using web-crawling.
Executing Real time feedback on facebook-like sites.
Scalable data-mining techniques to manage the torrent of information
Making personalised recommendations based on all of the information.
Workflow (e.g. JBoss jBPM) is great – it allows you to take spaghetti code and draw it as a workflow diagram (flowchart) so that it can be reviewed by the business (the nice people who pay our wages). You then attach standard (Java) actions to these steps.
Only problem is when you come to a decision node (the one circled in red below): How do you decide to go left or right (in the workflow)? Normally this is coded in Java – good for us, but hidden from those nice business people (which means that this is more room for errors-in-translation).
Business Rules allow you to keep those decision making rules in Plain English: When something is true , then do this. That’s it. The rule engine does most of the hard work.
Integrating Workflow and Rules is easy. Use JBoss Seam (link) or do it by hand (link). And it works on non-JBoss web / app servers such as Websphere, Oracle Application Server, Tomcat and Weblogic.
Repeat x6 : Use workflow and rules. Use workflow and rules …
I’m not going to explain what workflow is as I’ve probably blogged enough about it already. But the JBoss Workflow (jBPM) guys are coming to Dublin on June 6th. If you’re into workflow (and if you’re doing any sort of software for large business you should be) then this is a do not miss event and we’re privileged to have it in Ireland.
Remember that article (and this one) isn’t looking for technical best, but which is going to be a best investment of your time to learn (in a mercenary commercial sense). And if you’re deciding which to use in a project , which framework is going to be easiest to support in 5 or 10 years time?
Broadly speaking, the frameworks we talk about break into two types: those that treat the web as a set of pages, and those that treat the web as a set of components (think Visual Basic, Delphi or Oracle Forms act-a-likes).
So , what has changed in the last 2 years:
The rise of Spring. Not only has it gone mainstream, but the Spring MVC, Spring Webflow and Spring-JavaServerFaces are very powerful and widely used web frameworks. A sign of how things have changed is that for Sruts 1 the Spring guys wrote the integration for the (then) bigger Struts framework. For Struts 2 , the integration was provided by the Struts community. With the forthcoming Spring 3 release the framework is increasing momentum; More annotations and less XML in Spring MVC; Rest Web Services out of the box, support for Dynamic languages like Groovy and Spring Webflow becoming a more ‘just use it where you need it’ solution.
Adobe Flex and OpenLaszlo – Flash graphical interfaces on the Web, built using Java. I don’t think these will be *the* mainstream choice but I do think the will be more than a just a niche. And for design led companies, nothing else (not even Microsoft Silverlight) can come close in terms of a user ‘wow’ factor.
JavaFX and Applets done right (Jim Weaver has a good article on this). More of a competitor to Adobe Flash as both are rich content in the browser using an easily obtainable plugin. JavaFX will appeal to developers because of it’s Java like syntax. I hope I’m wrong, but for rich web content, would you put your money on Sun (an Engineering led company) or Adobe (an almost apple-like design led one)?
Frustration with JSF (Java Server Faces). For the last 3 years I’ve thought that ‘*this* is the year of JSF. I’m still waiting not because of lack of demand (as web apps become more complicated and use more Ajax they become more like the JSF component based model). It’s now uphill for JSF as I (and a lot of other Developers) have given up. I’m still waiting for the ‘EJB 3′ moment when JSF becomes more simple and more usable. Remember , we ‘re not talking about technically best, but which is going to be in widespread use.
How has Struts 2 got on in the meantime? I’m not sure. Remember , Struts 2 is very different from Struts 1. Conceptually it’s very similar to Spring MVC (Simple Java Beans based with configuration); Slightly easier to learn and maybe slightly less powerful than Spring (although both are more than capable for most Enterprise web applications.
The ‘I’m not sure’ bit comes from two (non technical) factors:
Struts 2 hasn’t achieved the massive Enterprise developer mind share that Struts 1 did. It’s a better framework, but it’s got more competition.
If you’re using Spring in the middle tier, why not have one less framework and use Spring MVC (instead of Struts 2) in the presentation layer as well?
Back to the previous predictions , how did we get on?
Scenario 1: Adding Ajax to existing Struts Applications. Use AjaxAnywhere – closest to the approach taken in the article Sprinkle Some Ajax Magic into your Struts Web Application. Despite writing this article , I see the frameworks evolving rapidly to the point where you would only take such an approach for adding Ajax to ‘Legacy’ applications.
How did we do? I’d maybe widen the choice of Ajax Libraries (to include DWR , Dojo, Prototype and others) but the basic idea of evolving rather than replacing your Struts 1 app still holds true.
Scenario 2: Need Ajax Now for a new Java Application. Use Appfuse as it gives Struts, Ajax (with DWR) and the possiblity of JSF integration now, all ‘out of the box’.
How did we do? I still recommend AppFuse, as it combines (name-your-web-framework) with Spring Hibernate(and other ORM) and Maven. However I’d now tend towards choosing Spring MVC (unless you’ve a reason to use Spring 2), given that you’re probably already using Spring in the mid tier.
Scenario 3: Medium Term. Use an implementation of JSF (either MyFaces or whatever Appfuse promotes – probably Struts Shale). Struts Shale (JSF) has so far released only ‘overnight’ builds. Apache MyFaces (JSF) tool support and Ajax capabilities are likely to improve over time. Both Struts-Shale and MyFaces are likely to play well with AppFuse , making it a safe bet for investing your time checking it out.
How did we do? Struts2 and Spring both still give you migration route to JSF. But do you want it?
So out of the creative ajax-induced chaos of 2 years ago, I see 4 or 5 clear choices in Enterprise web frameworks: Struts 2 (as a follow on from Struts 1). Spring MVC, due to the huge mindshare Spring has on the mid-tier. Google Web Toolkit , both as a natural home of frustrated JSF developers , and because who’s going to argue with the people who gave us maps and mail? Flex, because Flash apps done well just look so good. And JavaFX, because Applets-haven’t-gone-away-you-know.
In my view, we would have been delighted to have any of these framworks 5 years ago. And each (for different reasons) is likely still to be popular in 5 years time. Your missions now is to pick the one that suits your project needs.
If you’re in business you need computer systems to support your team. Systems to find previous dealings with a customer, systems to allow your team to work together, systems to stop people finding out things that they shouldn’t.
Once your business passes the 100 employee mark and is heading for ‘Enterprise’ scale, chances are you need custom software written just for you, in addition to he ‘shrink wrap’ stuff you’ve been able to get away with until now.
Most custom Enterprise software is written in (or uses a large element of) Enterprise Java.
Enterprise Java is hard to get started with – it’s a big and complex framework because it solves big and complex problems. The Spring framework makes it easy.
OK, so we’re Spring nuts. But nuts only because it’s solved problems for FirstPartners over the last 4 years. What we like:
Spring allows you to use just enough Enterprise Java to solve your problem
Spring complements Enterprise Java, not replaces it.
Spring gives you a gentle slope to using Enterprise technologies.
Spring works well with Java, Oracle, .Net , (J)Ruby and pretty much any mainstream technology – including most of the widespread Java Frameworks like Struts and Hibernate.
So you wait ages for one Spring Event in Ireland, then two come along at once. We’ve written about Rod Johnson speaking in Dublin on Tue March 11th. Now there is a full day Spring Event in Belfast the day before (March 10th). And it’s sponsored by Momentum NI, so it’s free. And the Hilton Hotel is right beside Belfast Central train station, so it’s easy to get to from Dublin.
The full agenda is here (more details below), but given the importance of Spring to the Enterprise world, and the fact that the top four Spring guys are speaking, we reckon that it the Enterprise event of the year. The booking form is here.
Spring Ireland 2008
10th March 08:3010th March 17:30
Hilton Belfast, 4 Lanyon Place, Belfast (Beside Central Train station)SpringSource is proud to announce Spring Ireland 2008. Join us for a free one-day conference with presentations from the SpringSource team including a keynote from Rod Johnson.
Keynote: Spring into the Future – Rod Johnson
The Spring Framework began in 2002 with Rod’s best-selling Expert One-on-One J2EE Design and Development; one of the most influential books ever published on J2EE, Rod is recognised as one of the world’s leading authorities on Java and J2EE development.With the rapid expansion of SpringSource and move to new corporate HQ in Silicon Valley, this is a rare UK opportunity to hear Rod provide his views and explore the future of J2EE application development.
What’s New in Spring 2.5 – Sam Brannen
Sam is a lead architect at SpringSource and one of the most experienced developers within the organisation.This session provides delegates with an overview of the new features available in Spring 2.5. Specifically, highlighting the simplified and extensible configuration support provided via configuration annotations and new XML configuration namespaces, new Java 6 support, updates to Spring AOP, improved JDBC and JPA support, annotation-driven web MVC controllers, the new annotation-based TestContext framework for unit and integration tests and more!
SpringSource Professional Services – Greg Southey
Greg has built SpringSource’s UK Professional Services organisation into the leading Spring consultancy business in the world.
This is a brief resume of some of the 97 major projects completed by the UK Professional Services team in 2007. Delegates will hear about the business drivers behind some major development projects, the business issues faced and how they were resolved in partnership with the client.
Spring as a Full Stack Web Framework – David Syer
As Principal Consultant at SpringSource, Dave leads the way in the understanding of satisfying business requirements using the Spring Portfolio. His easy manner cloaks a prodigious knowledge of application development.
This session explores the “full stack” web framework trend and answers the question: how does Spring stack up? This session defines what a full-stack web framework is, then provides a fair technical comparison between a Spring-centric web development stack and the alternatives. Delegates will head about the feature-set of modern “full stack” web frameworks, and what Spring has that differentiates itself from the pack.
Spring in Ireland – Ian Graham
Ian Graham, Momentum, will explore the use of Spring in Ireland and introduce case studies from companies who are using the Spring family of products.
Round Table Discussion – Rod Johnson, Rob Harrop, Dave Syer, Sam Brannen & Greg Southey
Your chance to ask Rod and his team anything that’s on your mind regarding Spring!
I’ve been lucky enough to have been using Spring for just over 4 years. If you don’t know what Spring is, it solves a lot of problems in complex Enterprise Java Systems. And it makes those systems more configurable; Spring makes your code like Lego blocks. Blocks that you can take apart and use again and again (no matter what the underlying technology is). And because you can take it apart, it makes your code easier to test. And testing is a good thing – the earlier you find bugs , the cheaper they are to fix.
Get the feeling that I’m a bit of a Spring fanatic? Wasn’t always that way. It took me two projects where other people had choosen Spring to convince me. And did I mention that it’s one of the most in demand skills in the Java world?
Not (too blatant) a plug for the Irish Java Technologies Conference (IJTC). Although if you’re around Dublin on the 7th / 8th / 9th November I’m told you’re more than welcome to drop in. This post is more a quick review of the people who are speaking. It’s also an invitation to check out their websites and see if any of the technologies they are promoting could be of use to your project.
Here are the top 10 projects that I’m looking forward to checking out.
10) Java and Microsoft SQL Server : It’s still a brave Microsoft person that comes to a Java conference. Shows MS recognition a substantial amount of Java deployments persist their Data to a SQL- Server database.
9) Eclipse STP (and SOA) – Service Orientated Architecture is the buzzword of the year. If anybody can put substance behind the hype , it’s the guys From Iona.
8) Eclipse JPA and Dali. Hibernate pushed Object Relational Mapping (ORM) to be the standard approach to database access. The manager of the ‘other’ ORM Project (Oracle Toplink) should give a interesting coverage of the tooling developments.
7) Apache Geronimo – by Jeff Genender from Apache Foundation. So long the ‘other’ Open source application server, this is now becoming credible in commercial deployments.
6) Java Update – Simon has been working as a lead Java consultant for Sun Microsystems. He’ll be talking about Java Standard Edition 6 and Java Mobile Edition. But what I’m really interested in is Java Enterprise Edition 5, Scripting, Java Realtime and Java FX.
5) If scripting is your thing fellow Onjava Blogger Dejan Bosanac is also speaking on this subject. He’s talking about Scripting within the JVM, which will be one of the hot topics for 2008.
4) iPhone v JMME – I don’t get the buzz around Mobile (give it another 18 months , we’ll all be running Java Application Servers on the mobile). But many people are interested in it – this talk is how to make you Mobile Java apps as slick as those in the iPhone.
2) JPA and Hibernate – There is a very strong possibility that Emmanuel Bernard will be returning to Dublin to talk about the Hibernate project that he leads. Having seen his recent talk, and given the level of interest in Hibernate, I expect a strong turnout for this one.
1) Spring 2.5 – Spring has been around for more than 5 years and is making serious inroads in the the Enterprise Java community. Sam Brannen (from Interface21) will give details on the latest on the major update to Spring (2.5) as well as what is planned for the future.
Flash is created by cool people who wear black and use Apple Macs. If you’re not sure as to what flash is, the chances are that if you’ve seen something on the web recently that made you go ‘wow’ for it’s coolness, then it was built using Adobe Flash.
To add substance to this froth Java people can use Flash (instead of normal web pages) to create cool pages that do useful stuff. For example Google Analytics uses Java and Flash to create a stunning User Interface. Even though Ajax and DHTML give you a lot of interactivity on your web pages, Flash goes one better at the small cost of not being as good for SEO and requiring a plugin (that most people already have installed).
So, what are you to do if you want to combine the coolness of Flash with the heavy lifting of Enterprise Java on the Server? The two main options are:
Flex from Adobe is one way for Java people to create flash. The core toolkit is free, but the editor costs about $500 and that’s before you pay for using it on your servers. More details in the previous blogposts on Adobe Apollo and Adobe Flex.
Open Laszlo Project is open source all the way, but does’t have a drag and drop editor (i.e. it’s more technical than graphical). Still , it allows you to create some cool effects , such as this Flash Clock.
More (In progess) notes on Open Java and Flash are on the wiki. In an impulse buy , I bought the OpenLaszlo in Action yesterday. As an EBook , with rebate (coupon LZ35607 before the end of August) it costs about 10 Euro. Initial impressions are good (both for the book and Open Laszlo) , but I’m still working my way through it (so don’t quote me on it).
Disclaimer: I get a rebate if you buy the book from Amazon, but not if you buy the (Cheaper) E-Book direct from Manning. I bought the E-Book this time, but have got free books from Manning in the past for having reviewed (as yet unpublished) JBoss items.
(Struts is one of the most popular way for companies to build their websites. This was to be posted on Bill moaning about Struts 1 problems, but Bill’s blog isn’t accepting comments at the moment.)
I hate to spoil your Struts 1 party , but most of these problems have been known for some time (and the Struts team would be the first to articulate them). Struts 2 is a huge improvement and , as you mention, there are good alternatives out there (including Spring MVC).
The problem is that migration from Struts 1 to (for example) Struts 2 , while easy, still carries a risk for the project in question. It can be hard to convince the business decision maker when all they see is pain (‘so you’re going to break the existing site?‘) for very little gain (‘where’s the immediate payback of upgrading?‘).
My advice is to stick with Struts 1 on existing projects. Use Struts 2 (or even better, Appfuse) on new projects. And for new code on existing projects, consider running them both side by side. They’re all tried and tested solutions.