Most people building systems run into the following problems again and again:
- How to capture Business rules , in a way that both the Business users and the computer can understand.
- How to capture the flow of actions in a system, in a way that both Business users and the computer can understand. This flow is across multiple users, and may extend over days or weeks.
- How to deliver a system to the user (e.g. Via the Web), but to give the user a rich interface , similar to what they are used to on the desktop.
- How to maintain and enhance older systems , now that Java has been mainstream for more than years.
- How to take advantage of the new Features afforded by Java 5 and EJB 3, and what business problems to the solve.
- How to build components for reuse in all environments (Web , Enterprise, Command Line and Desktop).
- How to map information in a Java System to and from a Database (Persistent Storage or Legacy System).
- How to deliver value to the business at every point in the project.
- How to use the many resources and solutions already available in the Java community.
It’s to address problems like these , that I’ve been asked to put together a Advanced Java training. It’s early days yet, but I’d like to get your input as to what you’d like to see on such a course.
Full details of the Advanced Java course are available on the knowledgebase / Wiki. Leave your comments here.
Update: I posted a similar question on the (technical) O’Reilly Books Java blog. If you’re interested in seeing the responses , click here.
It’s been a while since we posted a pretty picture on the blog. Not an Andrea Corr or Paris Hilton kind of pretty picture, but one to liven up the general flow of text on this site.
Just as well then that IBM has announced ManyEyes , an online Service to take boring old numbers and turn them into the kind of graphics that you see below. It’s pretty simple to use : upload your data in a table (Excel like) format, then select how you want to view it. They even provided a wizard to allow you to link the results on your own site.
For example: This is the Value of 1 US Dollar against the Other Major Currencies (Euro , Yen, Sterling , Yuan).
Interesting, in this Ajax-y world, that it’s implemented as a Java Applet. Maybe Bruce was right?
The best thing about doing presentations is the questions you get asked at the end. Apart from the stomach churning moment of ‘will I be able to answer this one?’ they give you a new angle on things that you may have always assumed, but force you to think of in a different way.
Take one of the questions after yesterday’s Enterprise java presentation at DCU. One of the topics mentioned in the final ‘putting it all together’ was the Agile and RUP (or other upfront design) methodologies. The question , coming from an attendee that was keen on using Agile , was ‘How do you do Architecture in an Agile project?’
On the face of it this seems a contradiction. Agile in it’s most extreme form is ‘make up just enough design as you go along’, with automated tests to make sure changing things later is a relatively low cost and pain free process. In real life most projects are a balance between Agile and need some element of a more formal process (often trying to answer the question ‘how mucn is this going to cost?)’
So , how do you merge Agile with an upfront design process? It’s easier than you think.
Most systems built the ‘traditional way’ do not get all their design done in one go. They might start out with the best of intentions for phase 1 with a clean sheet but over the months / years people come and go, business requirements change and different phases try to deliver different things. Over time the original clean design twists and turns and you work hard to try and make it work out ok. Some of features you thought were key may end up getting thrown out as too complicated.
Now Agile architecture is a similar situation. Each weekly / monthly iteration is like phases on the larger project , with twists and turns that may be unexpected. The difference now is that you have a safety net comprised of your (J)Unit tests, to allow you to make radical changes if your blueprint ends up in a cul-de sac.
Yes, it is ok to have an idea the bigger picture and where you like to go with the design. Yes, a good architect will find reasons in the current release to build towards that design. And yes, a good architect may admit that some of the design features he / she thought were required weren’t actually needed. The difference between Agile and Upfront architecture is in when you find your ‘Don’t really need it’ point. With Agile , you find it just before you build it. With upfront design / architecture you find it when it’s already too late.
On Wednesday, I’m presenting on the topic of Enterprise Java at DCU (Dublin City University) , in conjunction with Trigraph.
I’ll blog later about bits and pieces of the slides (for commercial reasons I can’t publish the full set here), but the overview is below.
||Success or failure in your business depends on dealing with information faster and better than your competitors. This briefing shows you how Enterprise Java tools can do this and how to apply them to your organisation. Crucially, the briefing shows you when not to use Enterprise Java and details the alternative approaches.The briefing will give delegates an overview of the Java Web development environment, how to architect and distribute multi-tier applications and how to link these components with existing sources of information using Enterprise Application Integration (EAI). Most business have substantial investments in existing and legacy IT systems and the briefing will show how to integrate these with techniques such as JMS Messaging/ MQ Series, SOAP / XML or using the Java Connector Architecture (JCA).
As well as examining the main Java Application Server vendors (including Sun , IBM , Oracle , BEA and JBoss) the briefing will detail the technology stack that they offer. This stack includes Web presentation frameworks and SOA – Service Orientated Architecture at the Front end. In the middle (Business) layer this covers the capture of Business knowledge using Business Rule Engines and workflow (BPEL). At the back (Service) layer, this includes database integration using JDBC, and the Enterprise Service Bus (ESB).
|What Problem are we trying to solve?Where Java Fits in Enterprise Computing.
Enterprise Application Integration (EAI).
A Componentised & Connected Enterprise.
Enterprise Java Architecture Overview.
Enterprise Java Platform Roles.
Benefits to the Enterprise.
Alternatives (.Net , PHP , Oracle , Lightweight Java Frameworks , scripting)
Scripting Languages and Enterprise Java (Ruby, Python, Groovy)
Vendors (IBM, Oracle, Sun , Bea , JBoss and SAP)
Vendor Specific Solutions (e.g. Oracle Fusion / ADF , IBM MQ )
Market Trends – Resource availability (can we get the people to do this?)
Foundation Technologies & Techniques.
Enterprise Web 2.0 and Service Orientated Aritecture (SOA).
Integrating with other Systems ( Legacy Systems, Oracle etc)
Enterprise Java Beans 3
Middleware (MOM, Rule Engines, Workflow)
Java on the (Enterprise) Desktop
Web Services / Enterprise Service Bus
Best practices (Code standards, Build standards, Version Control / Iterative Development / Junit)
UI Layer: HTML, Servlets, JSP, XML/XSLT.
XML’s Role in the Enterprise.
Application Tier: EJB, JNDI, JDBC, JDO.
Java Connector Architecture- JCA
RMI, CORBA/IIOP, SOAP.
Security – Application and Server Level
Java Access & Authorization Service (JAAS).
Object-Orientation & UML.
Frameworks (Struts , JSF, ADF, DWR, Spring, Hibernate)
Enterprise Java Application Architectures.
Overview of Enterprise Application Servers.
Commercial Application Servers.
Distributed Application Models with Enterprise Java.
Enterprise Java Application Server Basics.
How to Choose a Enterprise Java Application Server.
Enterprise Java Application Architecture.
Building a Enterprise Java Application.
Deploying the Application.
Enterprise Java & Your Business.
Planning for Migration.
The Implementation Plan.
What’s next for Enterprise Java?
The Irish Times carried a report on the Death of Caspar Weinberger in it’s weekend edition. Mr Weinbeger was a contoversial but highly intelligent figure in Ronald Reagan’s Presidency (he was the US Secretary of Defense). A lot of things have already been said about him, but one almost trivial incident stood out from his obituary.
During the 1980’s , Mr Weinberger wanted to increase the Defence budget. Given that Mr Regan had a very ‘pictorial’ view on life, Caspar’s entire presentation consisted of three cartoon figures.
- A Solider figure , made to look as wimpish as possible (short of wearing lavendar), to represent the Democrats Defence Policies.
- A Nerdy Solider figure , wearing glasses and with a briefcase, to repsent the ‘balanced’ approach his opponents in cabinent wanted.
- A Rambo like figure, armed to the teeth , representing the Billions he thought the US should be spending on Defence.
Mr Weingbeger got his Billions. You may or may not agree with his objectives, but as presentation skills go, he can still teach us a lesson. Forget the details – you can talk about those later. Cartoon like images are what stick in people’s minds.
Will update this with feedback from the ‘How to talk to your boss about agile’ event, but in the meantime, here is all the slides and links to articles used in the Agile presentation.
We’re giving a talk about ‘how to talk to your boss about agile‘ for the Irish .Net Developers Association next Tuesday in Buswells hotel Dublin.
More details (including the slides themselves, as a preview of what you are missing) are available here in powerpoint, openoffice, pdf and flash formats. The slides explain how 4 pictures of bridges can explain the difference between Ad-Hoc , Predictive, Agile and XP projects. No , really , you do want to check this out.
Links to a lot of the sites / articles / tools used in the presentation are here on Del.icio.us. More posts on this blog about using agile techniques on projects are here.
The Bridges are:
- Old Drogheda Bridge from the 1200’s – Quick and Dirty or Ad-Hoc project. Got the job done , and fast . Was patched a load of times, but eventually fell down under the weight of the traffic.
- New Drogheda Motorway Bridge – Predictive Projects. Very easy to specify what you want (I want a bridge going from A-B to carry a motorway) and very easy to know when you are finished.
- Drogheda Railway Brigde – Agile. Once the longest Iron Girder bridge in the world.Built in the 1850’s and the spec has kept on changing since. This included a complete rebuild in 1925 without losing a single days traffic. How’s that for unit testing?
- Bungee Jumping off bridge in Queenstown – Extreme Programming (XP). Great fun if you’re doing it (and can be pretty effective), but scary for anybody watching.
As a sample of some of the pictures (which include lego people showing everything that can go wrong on a team), check out the image below.