YOUR FEEDBACK
Adobe Flex 2 - Answering Tough Questions About Enterprise Development
A Correct Person wrote: Denis Roebrt commented on the 21 Aug 2006 "Tough Que...


2007 West
GOLD SPONSORS:
Active Endpoints
Your SOA Needs BPEL for Orchestration
BEA
Virtualized SOA: Adaptive Infrastructure for Demanding Applications
Nexaweb
Overcoming Bandwidth Challenges with Nexaweb
TIBCO
What is Service Virtualization?
SILVER SPONSORS:
WSO2
Using Web Services Technologies and FOSS Solutions
Click For 2007 East
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
TOP THREE LINKS YOU MUST CLICK ON


The Proof Is in the Concept

Digg This!

In a large project, designing for performance often turns out to be a chicken or egg situation. In a J2EE project, this is even more evident. Typically when business and functional requirements are handed down to the technical team, the first step is to map the functional subsystems into software components, and then to hand out the design of those components to respective team leads for design and implementation. This is part of the responsibilities of the project architect. At this stage in development, the onus is on the architect to make decisions on identifying potential bottlenecks in the system and recommending alternatives based on standard architecture patterns and guidelines.

In an ideal project, the design of each module involves taking all the performance characteristics into consideration and building out the functionality. If a formal design and development cycle is followed, the team may be able, even enforced, to take care of performance issues early on in the project. However, the luxury of doing this is often not there. Typically, most projects are driven by an urgency to demonstrate the functionality of the system to the client. Although well-coordinated teams design and develop with performance criteria in mind, focusing on performance issues puts the team in danger of missing the boat.

One of the reasons such projects lead to disaster is that often a technical proof-of-concept initiative that's undertaken at the beginning of the project ends up creating the framework for the full solution. A common point of confusion between different stages of a project is the proof of concept (POC) and the prototype. A proof of concept is geared toward demonstrating functionality. A prototype should be an implementation of the full solution that tests minimal functionality. A proof of concept doesn't need to consider performance characteristics, while a prototype should tweak out performance characteristics before the full functionality is implemented.

In a J2EE project, the architecture of the full solution needs to deal with the issues of load balancing across different hardware machines: integration with legacy systems; decisions on using the best technology such as EJBs versus JDO, application server clustering, etc. On the other hand, a POC needs to primarily deal with deployment in a minimal environment to demonstrate maximum functionality.

The support provided by the J2EE platform to implement different stages and environments is quite good. Application servers allow the same code base to be deployed in different environments with well-defined migration paths. For example, you can deploy multiple applications in the same instance of the server, multiple servers on the same machine, or multiple servers on different machines. If you've designed the code base correctly, the migration from one to the other should be well defined. While a POC typically has "throwaway code," designing with migration in mind facilitates at least some degree of reuse.

My current client has opted to invest both capital and resources into a well-defined POC. I think this is a worthwhile investment. Our project team is well aware of the life cycle of the POC, and the compromises we are making in terms of performance, the different architectural configurations, and the different issues involved in migration. This becomes even more crucial when integrating new third-party tools into the architecture. In our case, this involves a J2EE-compliant business rules engine and a workflow engine.

Organizations that decide to invest in such initiatives early on in the project end up working smarter and not harder. J2EE offers the capability to achieve this from a platform perspective as well as in the form of well-documented guidelines and patterns.

About Ajit Sagar
Ajit Sagar is a principal architect with Infosys Technologies, Ltd., a global consulting and IT services company. Ajit has been working with Java since 1997, and has more than 15 years experience in the IT industry. During this tenure, he's been a programmer, lead architect, director of engineering, and product manager for companies from 15 to 25,000 people in size. Ajit has served as JDJ's J2EE editor, was the founding editor of XML Journal, and has been a frequent speaker at SYS-CON's Web Services Edge series of conferences, JavaOne, and international conference. He has published more than 125 articles.

Michael Neumann wrote: Although there was an attempt to clarify the meanings of "Proof-Of-Concept" and "Prototype" I have to disagree. Actually a Proof-Of-Concept ought to do exactly that: give a solid feedback upon the basic charactaritics of a specific concept. Therefore any statement wath a POC has to proof is dependent on the concept and can't stand for its own. With a concept for the algorothmic layout of a GUI for example you might not need to proof the performance. On the other hand if the concept you're trying to proof is a concept concerning data-transfer with optimization for time & space your POC would have to address exactly these aspects.
read & respond »
Chris Thompson wrote: I am a bit suprised that the word Test was not mentioned in an article about Performance. Perhaps Test is included in the POC resources that the article mentions the client is making available. I don't think that one needs to understand the particular definitions or distinctions between a Proof-Of-Concept and a Prototype that were given, but at whatever stage of the project you should have some customer performance requirements that have been expressed somehow (otherwise why bother considering performance) for which you can define and execute a test. At the POC/Prototype stage you shouldn't need any fancy tools, just a written definition of how the test should be setup and a wristwatch for timing how long it took. Even at the paper stage, you should be able to define a test and execute it, f...
read & respond »
LATEST JAVA STORIES & POSTS
JavaOne 2008: A Developer's Perspective
This is my third JavaOne. Many topics were discussed, friendships were made, new partnerships were started. I must say things have changed a lot and stayed the same yet again, here are my thoughts in no particular order, bear in mind that they do not represent the opinion of my c
3rd International Virtualization Conference & Expo: Themes & Topics
From Application Virtualization to Xen, a round-up of the virtualization themes & topics being discussed in NYC June 23-24, 2008 by the world-class speaker faculty at the 3rd International Virtualization Conference & Expo being held by SYS-CON Events in The Roosevelt Hotel, in mi
A Lightweight Approach to SOA and BPM in Java Using jBPM
SOA is mostly associated with technologies such as BPEL, SCA and Web Services. But does SOA really imply these technologies? In this session we will show how you can use the service oriented approach while staying inside the Java world. jBPM is a powerful lightweight framework th
Case Study: Java and the Mac
This is the story of a Mac application developer (okay - it's about two of them) who set out on a quest to find an application development tool based on Java so his boss would let him develop on the Mac platform, which he loved. There was only one catch - he had to find a tool th
eApps Hosting Now Offers the GlassFish Java Application Server in VPS Hosting Plans
eApps Hosting announced that the GlassFish Open Source Application Server for Java EE 5, from the GlassFish community project, is now available as a click installable application service in low cost Virtual Private Server (VPS) hosting plans. The eApps Hosting service has support
The 4 Core Principles of Agile Programming
One of the things I really enjoy at the moment is the recognition and adoption of agile programming as a fully fledged powerful way to deliver quality software projects. As its figurehead is a group of very talented individuals who have created the agile manifesto (http://agilema
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

SYS-CON FEATURED WHITEPAPERS

ADS BY GOOGLE
BREAKING JAVA NEWS
Five Sun Microsystems Women Honored with Prestigious Awards
Sun Microsystems, Inc. (NASDAQ:JAVA) today announced that five Sun women have been awar