views:

702

answers:

7

I work in a shop that is a mix of mostly Java and .NET technologists. When discussing new solutions and architectures we often encounter impedance in trying to compare the various technologies, frameworks, APIs etc. in use between the two camps. It seems that each camp knows little about the other and we end up comparing apples to oranges and forgetting about the bushels.

While researching the topic I found this: Java --> .Net rough equivalents

It's a nice list but it's not quite exhaustive and is missing the key .NET 3.0 technologies and a few other tidbits. To complete that list: what are the near/rough equivalents (or a combination of technologies) in Java to the following in .NET?

  • WCF ~=
  • WPF ~=
  • Silverlight ~=
  • WF ~=
  • Generics ~=
  • Extension Methods ~=
  • Lambda expressions ~=
  • Linq (not Linq-to-SQL) ~=
  • TPL ~=
  • F# ~=
  • IronPython ~=
  • IronRuby ~=
  • ...have i missed anything else?

Java Technologies (are there .NET equivalents?):

  • ~= EJB
  • ~= WebSphere
  • ~= GlassFish
  • ~= JBoss App Server
  • ~= Tomcat?

Note that I omitted technologies that are already covered in the linked article. I would also like to hear feedback on whether the linked article is accurate.

Note: This seems to be turning into a wiki-type article so i marked it as such.

+5  A: 

JavaFX is the rough equivalent of Silverlight. That's all I know from that list...

Dave Swersky
+16  A: 

.NET --> Java

Java --> .NET

  • EJB ~= MTS/COM+
  • WebSphere AS, GlassFish, JBoss AS are all concrete Java EE API implementations. The .NET equivalent would be IIS with at least MTS/COM+ support (is there by the way competition for IIS?).
  • Tomcat is a webcontainer aka servletcontainer, it only implements the Web Component part of the huge Java EE API (basically only the javax.el and javax.servlet parts, the JSP/EL and Servlet API). The .NET equivalent would be still IIS, but then without support for MTS/COM+, mail, message queue, persistence and more. I.e. only a simple web server for pure "Classic ASP".
BalusC
i like this answer but i'm not sure about the WPF ~= Swing comparison. Those are the two frameworks i've actually touched between .Net and Java and i'm not sure that they're all that similar. Could you expand on that comparison? (Thanks for all the links btw. i'll be following up on them over the next few hours. This answer is definitely a candidate for acceptance. Adn once i follow up i'll fold the answers into the body of the original question.)
Paul Sasik
I'm not sure to what extent the comparison WPF ~= Swing is true. I know it's not meant to be an exact comparison, but the greatest part of WPF is its declarative nature, so I would consider WinForms ~= Swing a better comparison.
Rafa Castaneda
Agreeing with Rafa. Though Swing does seem force some patterns whereas WinForms is pretty wide open.
Paul Sasik
Little inaccuracy: the RI of JAX-WS is JAX-WS RI, not Metro. Metro = JAX-WS RI + WSIT.
Pascal Thivent
@Paul and @Rafa: WPF is indeed more than just UI. I've expanded the answer. @Pascal: I removed Metro van the answer.
BalusC
ja ik zie dat :) Nice answer BTW.
Pascal Thivent
@BalusC: You're right, so for the sake of precision you should add Java RMI to the WCF comparison as you can use .Net Remoting bindings.
Rafa Castaneda
@Pascal: hey, I accidently inserted a Dutch word in my comment! For others: `van` should have been `from`. @Rafa: valid point, added as well.
BalusC
I would say SWING is more like WINFORMs than WPF
jle
+1  A: 

If I've understood correctly, Lambda expressions in C# are "loaned" from functional languages and as such there's no direct equivalent in Java (at least for now), however LambdaJ gives you something similar in the meanwhile.

Esko
Nice find. It's a 3rd party plug in of sorts (correct?) but seems to provide the similar functionality to .NET lambdas.
Paul Sasik
It's a library, not a plugin. ...well, I guess the semantics are quite the same but anyways. And yes, Java has been around for a long while, a lot of useful thing are in 3rd party libraries and frameworks instead of Java itself.
Esko
+5  A: 

Here is a list from my own research and follow up on BalusC's, Rafa's (et al.) answers:

(Slowly updating this list. Will also provide links back to .NET technologies for Java folks who may be interested.)

Paul Sasik
I'd be interested in .NET equivalents for GWT, Maven2/Nexus/Sonatype, JMX
unhillbilly
Nice. i'll add them to the list.
Paul Sasik
+1  A: 

The Linq equiv in the Java world is Quaere - http://quaere.codehaus.org/

Jon
+1 Very nice find!
Paul Sasik
I've found it a bit weird though. closures will really change future implementations of it...
Jon
Take a look at Jacque as well, looks more promising - http://code.google.com/p/jaque/
Jon
@Jon. Nice find too. Why not post it as an answer for upvotes? You'll get +1 from me.
Paul Sasik
+2  A: 

The main technologies are already covered, so a few peripheral technologies:

  • TPL ~= java.concurrent package
  • F# ~= Scala
  • IronPython/IronRuby ~= Jython/JRuby
  • .Net Remoting ~= RMI
  • MEF/System.AddIn ~= OSGi/Jigsaw
Rafa Castaneda
you meant jython, not jpython, right?
Cem Catikkas
Yes, corrected.
Rafa Castaneda
Indeed, the same guy who made Jython went on to write IronPython.
Gabe
+2  A: 

To the growing list I submit:

unhillbilly