Analogues of Java and .NET technologies/frameworks

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.

9815 次浏览

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

.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".

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.

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.)

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

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

To the growing list I submit: