JNBridge interoperability tools bridge anything Java to .NET or bridge anything .NET to Java. JNBridge interoperability tools bridge anything Java to .NET or bridge anything .NET to Java.

Why Interoperability Must Succeed for the Cloud to Survive

Tuesday, Aug. 31st 2010

During the past two years, not a week has gone by without several press releases, blogs, editorials or articles about cloud interoperability crossing my electronic desk—enough to qualify the term as an official buzz-word. The problem is that ‘interoperability’ has several meanings, a not surprising observation given that the term usually requires an asterisk next to it. It’s like Barry Bonds’ single season home run record—it exists, but it’s not very satisfying and someday somebody will do it right. While “what’s right” may be debatable, what’s certain is the cloud represents an opportunity to finally achieve true interoperability. The reason is simple, the success of the cloud—its very business model—is dependent on providing interoperability that is secure, transactional and fully automates the construction of the consuming side.

The implication is that current interoperability mechanisms, like Web Services, are essentially vendor specific implementations that enable creating and integrating distributed solutions within the vendor’s product portfolio. Web Services may be based on agreed-upon standards, but those standards really only describe enabling mechanisms without the requirement that everybody implements everything exactly the same way—right down to the least significant bit. The important thing to understand is that interoperability is a two-edged sword to the business model of enterprise platform vendors. How do you give the customer the assurances that a heterogeneous enterprise can be built, but still protect your turf? It’s not for nothing that the standards don’t have any teeth, after all they’re written by committees of competitors.

The premise that Web Service standards deliver interoperability between vendor implementations is obviated by the gulf that separates promised expectation and actual experience. The promised expectation is that you can use any enterprise platform vendor’s development environment, chose New->Project->Consume Web Service, point to any Web Service implemented in any other enterprise vendor’s server and automatically, out of the box and within minutes generate the consuming end point and execute a remote call. This means no searching of blogs and forums, no posting an appeal for help or no hand-tooling code at some lower level in the stack. Sorry interoperability fans, but when I take the latest GlassFish platform from Oracle, including the Metro WSIT stack, and point its Eclipse-based development environment at the simplest .NET WCF “Hello World” Web Service WSDL and watch it throw an exception, not only are my expectations not met, but my productivity has decreased while my time-to-deployment has increased (not to mention my frustration level). I think that there are not a few managers and sales reps at both Oracle and Microsoft who are perfectly fine with this result—after all, it’s not a bad business model to make interoperability easy among your own enterprise products and much harder with your competitor’s enterprise products. That’s precisely why the cloud has the opportunity to finally deliver universal interoperability—its business model must be fundamentally different from that of the enterprise platform vendor because its source of revenue is different.

The cloud is about services, not software sales. Cloud service revenues are based on the clock, bandwidth consumed, megabytes used and users connected. Cloud vendors, particularly those providing infrastructure and platforms as a service, need to worry about maximizing their ability to securely host and integrate as many different platforms, technologies and languages as possible; they simply can’t worry about whether it’s their stuff, or their competitors.  Simply put, there can’t be any protectionism in the cloud because interoperability is critical to the financial success of cloud offerings. Hence, the constant stream of links to cloud interoperability blogs, articles and PR copy that have been popping up on my displays these past two years.

Seemingly, the current cloud vendors may actually get it, however there’s a small problem: most of what passes for cloud interoperability is between platform specific code—the stuff running in the cloud written using a particular platform—and the cloud API, resources and storage services.  From a business perspective, Amazon’s IaaS cloud must provide Microsoft Windows Server environments and therefore offers its EC2 API, resources and services in both Java and .NET. However, the .NET EC2 API isn’t going to enable better interoperability between a WCF Web Service running in the Amazon cloud and Oracle’s GlassFish running on the ground. The cloud APIs, resources and services do not enable interoperability between different platform specific applications regardless of where they’re running.  Microsoft’s PaaS Azure cloud can host a JRE, but that’s mostly because current JVMs support the Windows API. While Microsoft provides a Java API, it only supports those Azure and AppFabric resources and services that use underlying Web Services; Microsoft doesn’t support a Java API for Azure Cloud Drives, for example.  However, that’s moot because the Java Azure and AppFabric APIs aren’t going to provide better interoperability between Web Services hosted by a JEE app server running in an Azure VM and a WCF client on the ground.

Why is this important? As long as the cloud is perceived as a place to only host web sites, the current cross-platform cloud APIs will probably suffice as the only required interoperability is with a browser. A company that moves its website to the cloud may lower operating costs and the cloud vendor will realize revenue, but this is only half of the potential of the cloud.  The real promise of the cloud is enabling companies to build their own SaaS solutions and expose service APIs to any customer.  A company can expose its own secure, scalable cloud service and generate a revenue stream with minimum operating, development and sales costs. Everybody’s happy. The end customer receives value and can consume the services in the platform of its choice without the operating costs associated with traditional software licensing. The company providing the service and the cloud vendor can both enjoy an additional revenue stream.  Sounds great, except that the cloud only provides interoperability internally—between the hosted code and its own APIs, resources and storage services.  Interoperability between the service running in the cloud and the end customer is still based on existing platform-specific Web Services complete with the built-in protectionism. If the customer cannot quickly and easily consume a cloud service within its preferred platform, the entire value proposition fails and nobody’s happy.

What’s the solution? Simple: the industry needs to provide interoperability based on the cloud business model.  Interoperability must be a fundamental capability that resides in the cloud rather than just a mechanism that enables remote procedure calls. From the early days of RPC/IDL, through to the present WSIT, interoperability has been about providing a mechanism for integrating distributed applications that leverages software sales and not about providing a service. The very concept of the cloud connotes a level of abstraction, availability and automation that moves beyond the RPC mechanism of Web Services. The cloud’s motto should be “any object, on any platform, in any language, anywhere at any time”. In other words, I think the cloud requires a common object paradigm that provides fine-grained interoperability complete with asynchronous events, automatic discovery, automatic instantiation of the object on the consuming side and simple and automatic pay per use. Of course, this isn’t a new idea and, in the past, industry wide consortiums like OMG have tried to solve the problem, but they have always been constrained by the protectionism inherent to the software sales business model.

The cloud will not be successful without true interoperability. For the end customer, the cloud must provide a level of abstraction and ease-of-use that enables automatic consumption of services that is platform agnostic with minimal support and development overhead, not to mention at lower overall cost based on pay-per-use.  For the company providing the services, the cloud must embrace platform agnostic interoperability that’s easy to implement, in addition to being scalable, secure and globally accessible. For the cloud vendor, true interoperability removes barriers to adoption, moving more third-party software into the cloud and increasing volume and revenue. If there’s “some assembly required” by the end customer, or endless workarounds, or only certain platforms are supported in the cloud or on the ground, the business opportunity between the end customer, service provider and cloud vendor will fail. It’s time to remove the obstacles that permeate current interoperability implementations—obstacles based on an obsolete business model that is anathema to the success of the cloud. If ‘interoperability’ continues to sport an asterisk, then so will the cloud and that will be the end of a pretty cool thing.

This article was written by Bill Heinzman of JNBridge, and was originally posted on DZone.

Posted by BillH | in General | No Comments »

JNBridge Customer Survey Results

Thursday, Aug. 26th 2010

We’d like to extend our sincere thanks to everyone who participated in our recent customer survey. Your responses were thoughtful and helpful!

With the caveat that the respondents are self-selected and not otherwise randomly representative of any population,  here are some of the resulting numbers.

In which direction do you use JNBridgePro?
.NET calling Java 57%
Bi-directional 26%
Java calling .NET 17%

At first glance it seems surprising that the just-one-way traffic is weighted so heavily in the .NET-calling-Java direction.  We expected some unevenness: there’s still more “legacy” Java code out there to be called than there is .NET code, and enterprise customers are more likely to have Java situated on the back-end, called by .NET apps on the front. Interactions with customers tell us that this 17% should, in reality, be higher.

Which of the following technologies do you currently use?
Which of the following technologies do you plan to use in future applications?
Use Currently Plan to Use
Linux 29% 34%
Windows 7 31% 62%
Windows Vista 26% 17%
Windows XP 78% 31%
Eclipse 3.5 22% 28%
Visual Studio 2008 69% 38%
Visual Studio 2010 24% 74%
Java SE 1.5 29% 3%
Java SE 1.6 38% 17%
Java SE 1.7 14% 31%
J2EE 1.4 24% 19%
Java EE 5 17% 5%
Java EE 6 9% 16%
WPF 24% 26%
WinForms 38% 21%
.NET Framework 2.0 48% 12%
.NET Framework 3.0 41% 19%
.NET Framework 3.5 66% 41%
.NET Framework 4.0 21% 66%

No real surprises here: this data primarily reinforces the fact that you’re steadily moving to newer versions of both platforms as they become available, and that we need to continue to stay current with new technologies.

What are your plans for applications in the cloud?
Cloud Platform No plans
Azure 88%
Google 88%

Given all the hype about the cloud in the press, this, frankly, was a surprise. We have no explanation for this number. It just is what it is.

Again, many thanks to all of you who participated! We’ve contributed a nice chunk of change to Doctors Without Borders in appreciation of your efforts.

Posted by JNBridge | in General | No Comments »

JNBridge at JavaOne: We’ll be exhibiting and giving a talk

Monday, May. 10th 2010

JNBridge will be at JavaOne in San Francisco this coming September 19 through 23. We’ll be exhibiting, and we’ll also be giving a talk on our cross-platform transaction capabilities. We’ll post the scheduling details as soon as we know them, but in the meantime here’s the talk’s title and abstract:

Title: Bridging Transactions from Java EE to .NET

Abstract: Cross-platform transactions between enterprise Java and .NET should be easy, right? After all, both platforms have implemented the same specification. How hard can it be? This session will attempt to answer that question by providing an in depth look at distributed transactions including implementations in enterprise Java and .NET. Technologies that provide cross-platform transactions will be demoed providing a look at code from examples using WS-AT/WS-Coor and direct bridging using a shared-memory JVM-to-CLR implementation. In closing, the session will discuss performance benchmarking, “gotchas”, tips and tricks and the move towards eXtreme Transaction Processing and what that means for current Java EE and .NET based technologies.

Posted by JNBridge | in Announcements, Events | Comments Off

JNBridgePro 5.1 released

Monday, Apr. 26th 2010

JNBridgePro 5.1 is released! Version 5.1 adds support for .NET Framework 4 and a plug-in for Visual Studio 2010.

JNBridgePro 5.1 supports multi-targeting toward .NET 2.0, 3.0, 3.5 and 4.0. Download a copy here.

While you’re at it, check out our revised site design. We hope you like it, and find it easier to navigate.

Posted by JNBridge | in Announcements | Comments Off

JMS Adapter for .NET Simplifies Transition to SOA Framework for Relocation Services

Monday, Dec. 28th 2009

We’ve published a new case study on how Graebel Companies, Inc., used the JNBridge JMS Adapter for .NET to leverage existing business logic and easily integrate JMS messaging with their .NET-based SOA framework.

Posted by JNBridge | in Adapters, Announcements | Comments Off

Our vision of Java/.NET interoperability

Thursday, Nov. 12th 2009

There’s been a lot of discussion of “Java/.NET interoperability”  and “bridging” lately, whether it’s a discussion of Web services in Microsoft’s keynote at this past spring’s JavaOne, or the recent reporting about Eclipse tools for Silverlight or Java clients for Team Foundation Server. All of these things are useful and important in their way, but none of them strike me as being true “interoperability.” They’re not ambitious enough. They’re too narrow. In a couple of recent articles for Software Development Times and DevX, I’ve discussed how our vision of Java/.NET interoperability is broader than this; I’d like to summarize these arguments here and present JNBridge’s view of what interoperability should be.

We see true Java/.NET interoperability as the ability to switch freely between Java and .NET technologies at any level, and as transparently as possible. You should be able to access a Java component from .NET. Instantiate a .NET class from Java. Call a Java method from .NET (or vice versa). Set or access a .NET field or property from Java. And, in doing this, freely use Java or .NET objects as arguments or the values being assigned, regardless of the methods being called or the fields being assigned. In other words, access anything Java from .NET; access anything .NET from Java.

Taken this way, a lot of what’s called Java/.NET interoperability out there really isn’t. TeamPrise’s Java clients for TFS (recently purchased by Microsoft) was recently called “a bridge from Java to .NET” in the trade press. It’s extremely useful stuff (I can’t wait to get my hands on a copy as part of the VSTS 2010 release), and it bridges between Eclipse and TFS, but Java/.NET interoperability or bridging it ain’t.

Somewhat more controversially, I’ll go out on a limb and say that Web services aren’t Java/.NET interoperability, either. They’re a way to intercommunicate between components that might be written using disparate technologies, but then so is communication through databases, or through sockets, or through text files in shared folders. Even if one of the participating sides is Java and the other is .NET, nobody would consider any of the latter mechanisms Java/.NET interoperability, and neither is Web services, for the same reason.

Think about it this way: could you access anything .NET from Java using a Web service? Could you embed a Windows Presentation Foundation control inside a Java Swing application using Web services? Not possible. Could you create a .NET client that communicated with a Java Message Service infrastructure using a Web service? It might be possible, but rather difficult. Could you use a Web service to access a .NET library from a Java program using a Web service? Yes, but it seems like an awful lot of work to create a Web service just to access a library.

So besides the intellectually pleasing aspects of being able to freely interchange .NET and Java wherever you like, are there any other advantages to true and complete interoperability? There sure are. Here’s a very brief list. If you want to learn more about any of these assertions, there’s a more in-depth treatment in my SD Times article.

  • True interoperability is faster than Web services
  • It’s more flexible than Web services
  • It has a broader reach than Web services
  • It provides more functionality than Web services
  • It increases choice and lowers cost over Web services

Now that we’ve settled on a definition of true interoperability, what about “bridging”? You can bridge between lots of things. Web services can bridge between Java Web service clients and .NET Web services. TeamPrise bridges between Eclipse and Team Foundation Server.  But neither of these can rightly be considered “a bridge between Java and .NET.”  While there are other approaches to Java/.NET interoperability, a Java/.NET bridge needs to provide true interoperability between Java and .NET, while permitting the Java to continue running in a JVM and the .NET to continue running in a CLR. We believe that bridging is the best approach for Java/.NET interoperability: it provides the best combination of performance, flexibility, and evolvability (as the Java and .NET platforms evolve), and we clearly believe that JNBridgePro is the best bridging solution available.

Posted by Wayne | in General | 1 Comment »

JNBridgePro and cross-platform transactions

Monday, Nov. 9th 2009

From our previous blog post, you can see that we’ve announced version 5.0 of JNBridgePro, which supports cross-platform transactions. This is a feature we’re really excited about. Up until now, you could have Java code inside a Java transaction call .NET code (or vice versa), but if something happened to cause a rollback on the Java side, the .NET side wouldn’t get rolled back. With the new version of JNBridgePro, transactions on the Java and .NET sides are transparently and seamlessly integrated. If there are active transactions on the Java and .NET sides, JNBridgePro will automatically join them, so that if either side fails, both sides are rolled back, and if both sides succeed, the transaction is committed on both the Java and .NET sides.

The picture below gives an idea of cross-platform transaction bridging in action:

JNBridgePro cross-platform transaction bridging in action

JNBridgePro’s cross-platform transaction bridging will work with both .NET-to-Java and Java-to-NET (and bidirectional) projects, and it will work with any vendor’s JEE implementation.

If you’re creating financial or e-commerce software, you will likely have transactional requirements, and we encourage you to download and try the new version of JNBridgePro, which becomes available on Monday, November 16.

More information on cross-platform transactions in the new version of JNBridgePro can be found here.

Posted by JNBridge | in Announcements, General | Comments Off

News relase: Announcing New Versions of JNBridgePro and the JNBridge JMS Adapters

Monday, Nov. 9th 2009

We’ve just announced the forthcoming release of JNBridgePro 5.0 and v2.0 of the JMS Adapters for .NET and for BizTalk Server. The bits will be available on 11/16/09, and we’ll be demonstrating the new capabilities at PDC next week in Los Angeles.

JNBridgePro 5.0 adds support for cross-platform transactions between Java and .NET in both directions.

The JMS Adapter for BizTalk Server 2.0 adds support for request/response and solicit/response messaging patterns. Both adapters have greater architecture flexibility.

Read the full press release, and download new versions on or after next Monday, 11/16/09.

Posted by JNBridge | in Announcements | Comments Off

Healthcare Benefits Solution Provider Gains from Fast JMS and BizTalk Integration

Monday, Nov. 2nd 2009

We’ve posted a new case study featuring Benefitfocus and our JMS Adapter for BizTalk Server.

Business Challenge

How to streamline incoming carrier data from JMS (Java Message Service) with a BizTalk enterprise application integration infrastructure — and do it within a two-month software development window.

Solution

Use an off-the-shelf BizTalk adapter — the JNBridge JMS Adapter for BizTalk Server — to integrate applications into the enterprise infrastructure without the cost, risk, and time-to-deploy associated with an open source or internally developed solution.

Read the entire case study here.

Posted by JNBridge | in Adapters, Announcements | Comments Off

Java/.NET Interoperability: Web Services Aren’t Always the Answer

Friday, Oct. 23rd 2009

DevX has posted a new article: Java/.NET Interoperability: Web Services Aren’t Always the Answer, Mixing .NET and Java technologies with web services is often easy, but for many tasks web services are not the solution for Java/.NET interoperability.

Let us know what you think!

Posted by JNBridge | in General | Comments Off