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 t开发者_如何转开发o 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.
.NET --> Java
- WCF ~= JAX-WS (as WS) and/or JMS (for MQ).
- WPF ~= Swing (as UI), Java 2D (for 2D), Java 3D (for 3D) and/or RMI (for remoting).
- Silverlight ~= JavaFX
- WF ~= not sure? Some say that it's CAPS.
- Generics is already available since Java 5.0. Major difference is that it's compiletime (not Reified).
- Lambda expressions is yet to be come in Java 8.0 as "Closures"
- Linq ~= Jaque and jpropel-light
- TPL ~=
java.util.concurrent
(guide here and tutorial here) - F# ~= Scala or Clojure
- IronPython ~= Jython
- IronRuby ~= JRuby
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
andjavax.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".
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.)
- WCF
- WPF
- Silverlight = JavaFx
- WF = jBMP (Java Business Process Management)
- Generics = Java Generics
- Lambda expressions = lambdaJ project or Closures
- Linq (not Linq-to-SQL) = jaque or Quaere
- TPL ~= java.concurrent package
- F# = Scala
- IronPython = JPython
- IronRuby = JRuby
- Hibernate = NHibernate
- JUnit = NUnit
- Spring = Spring.NET
- .Net Remoting ~= RMI
- MEF/System.AddIn ~= OSGi/Jigsaw
- ~= EJB
- ~= WebSphere
- ~= GlassFish
- ~= JBoss App Server
- ~= Tomcat?
- ~= GWT
- ~= Maven2/Nexus/Sonatype
- ~= JMX
- ClickOnce ~= Java Web Start
JavaFX is the rough equivalent of Silverlight. That's all I know from that list...
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:
- ClickOnce ≅ Java Web Start
The Linq equiv in the Java world is Quaere - http://quaere.codehaus.org/
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.
精彩评论