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.

Archive for the 'General' Category

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 »

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

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

JNBridgePro and Eclipse 3.5 (Galileo)

Saturday, Aug. 29th 2009

In the JNBridgePro documentation for the Eclipse plug-in, it only mentions support up through Eclipse 3.4 (Ganymede). However, the JNBridgePro Eclipse plug-in also supports Eclipse 3.5 (Galileo). Install and use it in the same way as you would with previous versions of Eclipse, and everything will work just fine.

Posted by JNBridge | in General, Tips and examples | Comments Off

Interview on The Connected Show

Tuesday, Aug. 18th 2009

We’ve posted the transcript for our interview on Connected Show! Episode 11, “JNBridge – Spanning Java & .NET” (the transcript starts about 27 minutes in). Peter Laudati, a Developer Evangelist for Microsoft, interviewed Wayne Citrin, CTO of JNBridge, at JavaOne. They talk about connecting Java and .NET applications using JNBridge. It’s just magic!

Posted by JNBridge | in Announcements, General, Uncategorized | Comments Off

JavaOne Blog Talk Radio and More

Thursday, Jun. 18th 2009

Whew! We’ve finally updated our Web site to reflect most of the JavaOne and Tech-Ed flurry of activity.

Listen to Wayne Citrin’s interview on JavaOne Blog Talk Radio, or read the transcript.

And check out some of our recent press:

SearchSoftwareQuality.com
June 4, 2009
New tools target software QA, testing: Spring roundup
by Colleen Frye and Jan Stafford
Read more

SDTimes
June 2, 2009
JNBridge crosses message queue Rubicon
by Alex Handy
Read more

SearchSoftwareQuality.com
May 14, 2009
JNBridgePro 4.1 Interview at Tech-Ed
Watch the video

Windows IT Pro
May 14, 2009
Tech Ed 2009: Best of Tech Ed Winners Announced
Read more

Posted by JNBridge | in Announcements, General | Comments Off

JNBridgePro and Visual Studio 2010

Friday, May. 29th 2009

Something cool from the JNBridge labs. What you’re seeing below is the JNBridgePro plug-in running inside Visual Studio 2010. When VS2010 is released, we’ll be ready for it.

JNBridgePro in VS2010

Posted by JNBridge | in General | Comments Off

Powered by JNBridgePro

Wednesday, May. 20th 2009

Adobe’s Kristen Schofield has posted some quotes and excerpts from a Gartner report (requires purchase) that praises ColdFusion. We’re particularily fond of the quote from Mark Driver where he says:

“…ColdFusion can provide unique value that is not fully addressed by any competing alternative technology. Most notably, ColdFusion is unmatched by any competitor for ease of use and technical capabilities. When we combine this with cross-platform deployment,and significant integration into both Java and .NET, ColdFusion stands out as a compelling solution for many IT challenges.”

That’s JNBridgePro hiding under the ColdFusion covers, enabling it to integrate with .NET.

Posted by JNBridge | in General | Comments Off