YOUR FEEDBACK
Werner Keil wrote: Java 6 update 10. If I'd be running Apple, I'd probably really drop dead...


2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
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


AJAX + SOA: The Next Killer App
SOA lacks a face; that's where AJAX comes in - it puts a face on SOA

Enterprises trying to improve business unit productivity and the reuse of IT assets continue to struggle. IT organizations have achieved some success by attacking these challenges with Service Oriented Architecture (SOA), but in most cases have still only exposed small portions of the overall IT service portfolio. Much of this struggle has been to deliver a "just enough" SOA to the business unit to improve its ability to build applications and features to get to market faster, better, and cheaper. And as we've learned, accomplishing this is easier said than done.

The fact is that SOA is middleware - and middleware traditionally relies on more middleware to translate data into a consumer-friendly state. It's certainly a major disappointment when you finally get your SOA right only to find that building a composite application requires using a portal (middleware) and/or orchestrating it with a BPEL engine (even more middleware). Worse yet, you may be in an organization that deploys a UDDI registry and registers a bunch of Web services. Unfortunately, in most cases there are very few applications built to actually consume these services. How can this be?

Should we conclude that something is wrong if applications aren't being built to consume these SOA services? Is it too difficult for business unit developers to build applications that directly consume SOA services, forcing us to rely on IT to create these applications? Is the absence of a SOA governance architecture holding us back? I think the answer is "yes" to all of these questions. And there is one standout reason: it has simply been much too difficult for the business unit developer to consume and leverage the SOA services exposed by IT. What's been missing is an easy way to put a "face" on SOA - and that's precisely the benefit of using AJAX in combination with SOA.

SOA services are typically implemented as loosely coupled Web services that encapsulate and expose business functionality. This sounds relatively straightforward, but is quite complex and difficult to achieve in practice. Developers frequently argue about the granularity of SOA services, but most now agree that "business-grained" granularity is the most appropriate. However, it still takes a great deal of domain expertise and collaboration with the business unit to size services properly.

Fortunately, there's been a recent surge in SOA interest. Perhaps enterprises are finally coming to recognize that SOA can really help the bottom line. Maybe it's being driven by better tooling and Web services evangelizing by Amazon, Yahoo, and eBay. Or could it be AJAX? Of course, it's AJAX - why else would I be writing this article? Seriously, I do think that AJAX is driving a renewed interest in SOA, especially in the mashup space. But how can two very different technologies combine and connect to provide something far greater than the parts? Take a look at Wikipedia's current definition of AJAX. It talks about Web pages, but there's no mention of SOA. It says:

"AJAX, shorthand for Asynchronous JavaScript and XML, is a Web development technique for creating interactive Web applications. The intent is to make Web pages feel more responsive by exchang-ing small amounts of data with the server behind the scenes, so that the entire Web page does not have to be reloaded each time the user makes a change. This is meant to increase the Web page's interactivity, speed, and usability."

The absence of SOA in this definition comes as no big surprise since the early buzz around AJAX has centered on enhancing Web page functionality and usability. This has been showcased in many applications such as Google Maps, Flickr, and Yahoo Mail. It's not these consumer-facing applications that personally get me excited about the potential of AJAX though. Instead, it's the business applications that run behind the corporate firewalls that can really exploit and benefit from AJAX, because it gives us two key features: a client-side programming model and the ease of making asynchronous calls to the server. These two key capabilities - the ability to apply logic in the client (browser) and to access server data without disrupting the Web page - are what al-low the new Web 2.0 paradigm to open up so many enticing possibilities for rich enterprise applications.

Earlier I said that SOA was lacking a face. That's where AJAX comes in - it puts a face on SOA. Let me explain this a bit further. Think about what happens when SOA services come online. They usually get registered in a registry/repository (if we're lucky) and become available for consumption. For instance, take a look at what StrikeIron (www.StrikeIron.com) provides. StrikeIron has created a "Web services marketplace" for the general population. At first glance, StrikeIron's catalog looks like a list of mini-business applications. But then you realize that these aren't applications - they're actually Web services. The concept of a company providing WSDL/REST Web services for general consumption makes a lot of sense. But before we get too excited, let's take a look at what's selling. According to StrikeIron, which licenses access to these services, its most popular Web services include:

  • U.S. Address Verification
  • Global SMS Pro
  • Sales and Use Tax
  • E-mail Verification
  • Reverse Phone Lookup
Without a doubt, all of these Web services are useful and can be applied to many different domains. But at the same time, they're also pretty commoditized. In other words, I may not care about who provides these services, only that I get the desired information. On the other hand, would I use just any Web service to transfer money from my checking account to my savings account? I don't think so. I need to trust the service, so I'd have to have some sort of relationship with the vendor providing that service. This "circle of trust" between me, the consumer, and the service provider is exactly the kind of relationship enterprises have internally and with partners.

The same approach could be taken by enterprises to begin offering their Web services to a wider audience. Through a Web services marketplace, enterprises could register various Web services that would normally only be available internally and/or to their partners. The marketplace vendors would obviously love to see this happen, but more importantly, I see this as an opportunity to begin to apply AJAX + SOA to drive a whole new class of Web 2.0 business applications.

For the first time, it's starting to feel like our application develop-ment and SOA efforts are coming together. We have business functionality represented in a reusable form - SOA services. We have ubiquitous connectivity - the Web. We have what's turning out to be the new application container - the browser. We have a programming model in the application container/browser - JavaScript. And they are all using open standards! What more could we ask for? Actually, quite a bit more.

In particular, I'd like to see a more rapid solution for developing applications based on all of this - a way to build applications without having to rely on more middleware to integrate with the SOA services. This is what I'll call the ability for Web applications to perform "direct connect SOA." Direct connect SOA conveys the ability to punch through the traditional curtain of portals and heavyweight process engines and directly (at least conceptually; more about this later) access SOA services. I don't just mean Web services either. It could be BPEL orchestration services, coarse-grained POJO services, RSS feeds, or anything else that can be exposed as a "service," albeit at the right level of business granularity. And of course the interfaces should be exposed using open standards.

This novel development and runtime model creates a new way to build application-driven composite applications. It has the appeal of client/server, without all the traditional heavyweight client/server baggage. It runs in the browser and is delivered on-demand.

We've all heard a lot about "composite applications" over the past few years. But most vendors have been talking about composing services as a way to re-factor their hosted services into more palatable services or portal applications. Let me clarify by using an analogy.

AcmeGrid, a fictitious grid vendor, provides a service grid that lets you run your applications as services. Its customers tell it they want a way to "compose" a combination of services into coarser-grained services. So, naturally, AcmeGrid announces an Eclipse-based AcmeGrid Composite Application Builder (CAB). Interestingly, CAB looks a lot like a BPEL designer, but has tighter integration with the AcmeGrid deployed services. Pretty slick, but it's not really an application as much as it is a service. In essence, CAB is more like a service builder. But who wants a service builder when we're trying to build applications? Soon, another fictitious vendor, we'll call them AcmePortal, announces its Por-tal Composite Application Builder (PCAB). It too releases an Eclipse-based designer that looks and feels like a BPEL designer, but this one knows how to build portals. In many cases, a portal is fine as an application. But if you're forcing a portal to be an application, it's just adding unnecessary weight.

What I really want is a user-based composite application, not a middleware-based composite application. To make this happen, I need a development and runtime platform that not only speaks AJAX and SOA, but governs the two as well. Some vendors promote the concept of AJAX applications calling WSDL-based Web services directly from the browser, essentially making SOAP calls. This approach even has a name - "client/SOA." This may be fine for simple non-enterprise or pure consumer applications, but it's a no-go for the enterprise. Why? Because when you call Web services directly from the browser, governance is left to the browser - which is another way of saying, there's no governance. Figure 1 shows ungoverned Web service consumption. I've never run into an enterprise that doesn't govern its services and strongly doubt that enterprises would allow this to happen merely because we have the technology to do so efficiently. If you doubt me, just remember that enterprises never opened up the firewall (for applications) to anything but HTTP and SSL. No matter what we told system administrators, no other ports were being opened.

So what we're talking about isn't just AJAX + SOA. It's really a platform that provides the governance necessary for AJAX and SOA to co-exist in the enterprise. This is a platform that provides the ability to consume SOA services on behalf of the client, but also governs the service consumption. Figure 2 shows how Web services can be governed by a service gateway. A service gateway is a server-side abstraction that governs and mediates service access on behalf of the client, which in this case is the AJAX application in the browser. The beauty of using a serv-ice gateway is that you're not restricted to accessing only services run-ning in the enterprise. The service gateway governs any service that's registered in the enterprise. In WSDL-based Web services, an enterprise would register the WSDL, and WSDL provides the bind to the service at runtime. This might be a service running in the enterprise's data center, but it could just as easily be a service running in a partner's data center. If the enterprise allows (governs) applications to access services, it doesn't matter where they're running.

I hope you're starting to appreciate the power of combining AJAX and SOA - specifically, how the two can co-exist and deliver new Web services-based applications with the governance that enterprises require. I truly believe we're entering a new era with amazing opportunity. Web 2.0 social networks, photo-sharing and tagging are great, but the real corporate impact comes in a form of Web 2.0 for the enterprise.

About John Crupi
John is the CTO of JackBe Corporation. As CTO he is entrusted with understanding market forces and business drivers to drive JackBe's technical vision and strategy. John Crupi has 20 years experience in OO and enterprise distributed computing. Previously, John spent eight years with Sun Microsystems, serving as a Distinguished Engineer and CTO for Sun's Enterprise Web Services Practice. Mr. Crupi is co-author of the highly popular Core J2EE Patterns book, has written many articles for various magazines and is a well-known speaker around the globe. He is a frequent blogger and was selected to join the International Advisory board for Ajax Developers Journal. John was also named as a member of the Software Development Magazine's Dream Team.

YOUR FEEDBACK
piotr wrote: Where can I find the right link to source code in order to download it? The one mentioned in the article does not work.
Greg Bishop wrote: This is NOT a simple pattern to implement! Like most attempts to escape the language this is overly complicated. The lack of multiple inheritence is a blessing not a curse, and it should be embraced. In a decade of using Java I have only one time encountered need for multiple inheritance, and a tiny bit of typing allowed me to use interfaces to eliminate the problem. Composition will solve most of these problems. People should pull out things like the reflection API as a last resort, and should be prepared to resign the next day. An unmaintainable nightmare, I can only thank god that most developers are not sophisticated enough to build a horrific spiderweb like the design suggested in this article.
giridhar wrote:
LATEST JAVA STORIES & POSTS
What could be a problem with logging in SOA in the presence of such wonderful tools like log4j, Java’s logging library and similar? Why might we need something special for SOA and why aren’t existing techniques enough? The answer is simple and complex simultaneously – in SO...
Aonix released PERC Ultra 5.1 cross development and target support on Sysgo's PikeOS 2.2 real-time operating system. PERC Ultra support of the PikeOS POSIX PSE52 profile provides a solution for the increasing need for portability across multiple operating systems as industries su...
What's the key to team and individual developer productivity in maintaining and extending a large application? Let’s start by making the following assertions: A developer's knowledge of an application code base is likely the single biggest factor of individual productivity. Cor...
An applet, a Java program that runs in a browser, often has to access the client resources. However, the security manager prevents an applet from accessing client resources. To access client resources, the applet has to have the proper permission. With this permission the applet ...
Three-letter acronyms (TLAs) are hardly new in Information Technology: EAI, ESB, SOA, BPM, BAM, ETL, MDM; the list goes on and on. This article is about yet another three-letter acronym, EDA, which stands for Event-Driven Architecture. EDA is not a brand new technology, but rathe...
Furthering its dedication to providing Java developers productivity with choice, Oracle announced the Oracle Enterprise Pack for Eclipse, a new component of Oracle Fusion Middleware. This release marks the first free Eclipse 3.4 environment to support Oracle WebLogic Server 10g R...
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

SPONSORED BY INFRAGISTICS
There are many forces that influence technological evolution. After a decade of building enterprise ...
2008 is going to be an important year for Rich Internet Applications. Most organizations are deliver...
The OpenAjax Alliance is developing an Ajax industry wishlist for future browsers, using a dedicated...
In every field of design one of the first things students do is learn from the work of others. They ...
Infragistics announced the availability of two Community Technology Preview (CTP) User Interface (UI...
The YUI development team has released version 2.5.2; you can download the new release from SourceFor...
ADS BY GOOGLE
BREAKING JAVA NEWS

Sun Microsystems, Inc. (NASDAQ:JAVA) today announced strong results for disk storag...