| By Joseph Ottinger | Article Rating: |
|
| May 1, 2003 12:00 AM EDT | Reads: |
18,058 |
It's with continued amusement that I constantly read about how Java should be defended from .NET, and how .NET will destroy Java. I understand the invective used by both sides, but the shine is starting to wear off; it's time to stop hurling insults, and examine what the future really holds. In my opinion, Java and .NET don't truly compete on a meaningful technological front - because both include easy hooks that allow for convenient interoperability.
.NET marshals information transfer through the use of formatters, sort of like interceptors that translate data into an internal format. If this sounds easy to do in Java as well, you should get a cookie - it is, and it's something some SOAP providers for Java do already. The concept is very similar to aspect-oriented programming, in which an interceptor sits in front of the method call, accepts the parameters, converts them into a format appropriate for the method, and then when the method has finished execution, translates the method results back into a format appropriate for the caller.
The similarity in the process is a critical factor. .NET may not be the grail - or the dragon - but it's not difficult to see how it's done from a conceptual standpoint. The process of enabling formatters for .NET method calls is fairly simple, only slightly more difficult than The Mind Electric's GLUE product (www.themindelectric.com); when you author your remotable components, you specify the capability to marshal by copy. Then, set up your endpoints with "Channels," at which point you can decide whether or not to expose the service with SOAP. In contrast, with GLUE (in the simplest case) you define an interface, then implement the interface with a concrete class, then tell the GLUE server you wish to publish the implementation as a service. Enterprising minds can see how both approaches can work.
The key for me is that both processes can be used with little knowledge on the caller's part. With GLUE, there's a slight registration process for the caller; it's not quite transparent. With .NET, you do much the same: acquire a handle to a remote service at runtime (including the type of connection), then call the object.
Thus, it's safe to say that there can be a direct equivalency between using a language-neutral remote service API in both Java and .NET. As such, as developers, our horizons are broadened by the existence of both technologies; a service is just a ser- vice, and we no longer really care if it's hosted on .NET or not; all we need to do is establish an endpoint, call the service, and process the result. Competition is a moot point when the technology is roughly equivalent, and interoperability is easily accomplished.
However, there are still differentiators. .NET is still provided by primarily one vendor, which means being subject to the whims of that vendor; I know of a few excellent programmers who have experience in COM, COM+, and DCOMŠshifting focus everytime as Microsoft discovers a "new and better" way to accomplish late binding. Java has had late binding built into its core since its inception, and that's one of its strengths.
Note that not all Java APIs for SOAP are created equal: JAXM does not provide the same clean API that GLUE does, which is a pity; JAXM follows Apache SOAP's model of exposing the underlying transport to the programmer, which is a grand failure in my opinion. The unfortunately named SAAJ (as implemented by Apache Axis) is better than JAXM, in this regard, but still requires a lot of code compared to GLUE. Hopefully, as the JCP matures the XML services for Java, they will follow GLUE's excellent example.
The result of all this is that Java and .NET compete, but primarily in mind share, not in technology. The marketing drive for both continues to escalate, but the interoperability between the two continues to improve; that is a huge win for implementers, as we can now visualize even operating environments as commodities. The goal should not be to dominate the market to the exclusion of other solutions, but to make implementation easier than it is using the available technology. If the implementation is as easy to use as GLUE's is, then the technology will be adopted.
Published May 1, 2003 Reads 18,058
Copyright © 2003 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Joseph Ottinger
Joseph Ottinger, formerly editor-in-chief of JDJ (2003-4), is a consultant with Fusion Alliance in Indianapolis and is one of the contributors to the OpenSymphony project.
![]() |
Raj Singhal 05/30/03 04:57:00 AM EDT | |||
This article compares Java & c# only is webservcies domain. There is much more than webservices in the world. Right Now .Net by no means a threat to Java because of large base already made by Java. |
||||
![]() |
Mark Wilcox 05/12/03 05:33:00 PM EDT | |||
First, neither .NET nor Java are constrained by Web Services. It's just Web Services is where the next generation of Web applications are likely to go. Basically Web Services solve 2 issues that should have been solved a decade or more ago, by CORBA, but that was scuttled by a bunch of ignornant & greedy business managers under the cover of developers. Same thing killed Unix. And darn near killed the 'Net if it wasn't for open-source. .NET potential big win is that it can create nify UI that run on Windows that can talk to any remote system. For most people on the net this may never matter - but for in-house development this may make for a real boon in productivity because HTML just really doesn't cut it for repetive data entry. Java will still maintain a strong server presence & may even gain some ground on the client side by a combination of SWT adoption (the toolkit in Eclipse) and improvements in the JVM. Another win in Web services is back-office integration. Instead of shoving CSV data around over FTP, Web services can provide us with the benefits of XML and HTTP. In terms of other competitors -- there are other options -- you can do Web services in Perl/Python/PHP/Ruby. But open source doesn't have a very active marketing arm with a catchy name for this like MS and Sun/IBM do with Web Services. Plus there are open-source versions of Java and .NET Web Services. This really just makes non-techies head's hurt. Ultimately though who wins is really based on risk assessment. If you view it's riskier to move onto a single vendor (ie. an end-to-end MS solution) than you will likely go a mixed route. Mark |
||||
![]() |
Frank 05/07/03 08:10:00 AM EDT | |||
It's like Boeing and Airbus - at any one time one of them is in the lead but with so much money on the line they are always trying to beat each other. Java and .Net is the same deal as long as Sun/IBM and M$ keep competing the platforms will always be close in terms of functionality and ease of use, cost etc. The true winner is the developer/business. If anything is likely a third or fourth platform competitor will arise. Probably from the Open Source world? My advice - everyone should hedge their bets for maximum employability - first become an SQL/XML expert then learn Java and C# (should be a relatively easy transition from either language). -Frank |
||||
![]() |
Colin 05/07/03 03:47:00 AM EDT | |||
Lets make a decision...well I could right my business software in a platform neutral architecture that will run on an Apple mac or windows machine upto an IBM ZSeries Mainframe or I could write it in .Net and have it only run on Windows... This decision is too hard for me to make!! Please! everyone...wake up! |
||||
![]() |
P. Jones 05/06/03 10:21:00 PM EDT | |||
You seem to be making the author's point. You say that 99% of applications don't use web services and, according to MS's own website's on .Net, .Net is built around webservices. As for the other 1%, the author makes the arguement for Java's support of web services. Therefore, no competition. Is there even a real Java vs .Net debate? And when I speak of "Java", I am refering to the whole collection, not just the language. |
||||
![]() |
W. Anderson 05/06/03 07:56:00 PM EDT | |||
With the great benefit in this case of not being a technologist, I feel there is a more important issue of Java vs .NET, particularly regarding the business cost and flexibility of technology choice between the two offerings Java is now implemented by many large and small solutions providers, while .NET is wholelly under the control of Microsoft. For a sensible and prudent business owner, nothing else needs to be said. |
||||
![]() |
Carlos E. Perez 05/06/03 04:33:00 PM EDT | |||
I can't believe that this was even published. First of all the author talks about the .NET vs Java debate. Then he talks about webservices and that webservices make the debate a moot point. Possibly for webservices, however 99% of all implementations don't use webservices! The title should be "Do Java and .NET compete in Webservices?" |
||||
- JDJ Archives: Eclipse vs NetBeans - "Point/Counterpoint" Special
- Java Trends - Exclusive Interview with Amy Fowler
- Java Viewpoint: "I'm Starting to Like Java Studio Creator..."
- Project Rave - First Thoughts
- Where Are the Components?
- How Can I Escape Quotes in SQL Queries?
- Let's Do Better
- Do Java and .NET Really Compete?
- For the Coming Year...
- The Culture Conflict
- It Just Works
- Sun Is Losing Its Way


























