We are thinking about combining .NET technology with Java technology (WCF, JBoss/ESB, MOM, WPF, WF) and I need to have a high-level idea of what are the apples and oranges in the .NET 3.5 and Java worlds.
Does anyone know of a good, clear article or better yet a simple chart which answers questions such as:
- WCF in the Java world is ______
- the equivalent of WPF in the Java world is _____
- the closes thing to JBoss in the .NET world is _____
- the JVM and CLR are essentially the same except for these differences: ....
- in the Java world you don't have the concept of WF/WCF/WPF, instead you have ....
- there is no "LINQ" in the Java world yet, but you can use ___
- the closest you get to ADO.NET Data Services in the Java world is ....
I'm not looking to debate this so I'm not looking for "fighting points", I just need a neutral what-is-what chart comparing the two worlds.
I don't know of a good, clear chart, but I'll venture some answers to your questions. (Warning -- I'm a J2EE developer, and the last time I did Microsoft programming it was with classic ASP and VB 6. I won't be able to evaluate the MS technologies, but I do have a good sense of a lot of the Java equivalents.)
-
WCF: WCF seems to be about simplifying Web Services. The J2EE equivalent would be Apache CXF, which uses annotations available in the JAX-WS 2.0 spec to simplify the creation of Web Services.
-
WPF: This one's easy. Microsoft's technology looks like a straight-up rip-off of JavaServer Faces. I can't tell you which one is better, but they resemble each other a lot. EDIT: I was too quick off the mark with this one -- JSF doesn't work on the desktop, like WPF is supposed to. The underlying technologies are similar, but JavaFX may be the better comparison.
-
JBoss in .NET: Someone else might want to set me straight, but I feel fairly safe saying this doesn't exist. Think about it. You're asking for a free, open-source product to run a proprietary, non-free specification. If you go with Microsoft, you're stuck with IIS just as much as you're stuck with Windows.
-
JVM vs. CLR: I found a paper, available here, that suggests there is little or no difference between the two. A lot of the argument between the two that I've seen centers on the weaknesses (real or perceived) of Windows as a server technology.
-
What the Java world has instead of WF/WPF/WCF: Now here's where, to my mind, the Java world has real benefits over MS. There are countless frameworks out there, so you're bound to find something that suits your needs (for free!). You can use Spring MVC or Struts 2.0 or Wicket. For your database layer, you have a choice of Hibernate or Ibatis. Look at this list of Web Services frameworks. Java has a total of nine frameworks listed. Microsoft has one: WCF.
-
LINQ's Java Equivalent: Again, someone can correct me, but I'm not sure there is an equivalent. Advantage Microsoft.
-
ADO.NET Data Services: This is doable in Java through JPA and RESTful Web Services, but I imagine it's a little easier in the MS world to implement.
There's another area where I perceive Microsoft to be creeping ahead of the Java community: they're making some smart investments in functional programming, while Java folks are bickering pointlessly about the best way to add closures to Java. There are likewise some emerging technologies -- OSGi, namely -- to handle the overwhelming complexity involved in the sheer number of Java frameworks out there. Since MS has tighter control over their domain, it's easier for them to deal with their various components.
And then there are the human considerations: who you can find to work what technologies and how much hiring for X will cost versus hiring for Y. But that's true no matter what you choose.
Hope this helps!