Java和.NET技术/框架的类比
我在一个主要由Java和.NET技术人员组成的商店中工作。 在讨论新的解决scheme和体系结构时,我们经常在试图比较两个阵营之间使用的各种技术,框架,API等方面遇到阻碍。 看来每个阵营对另一个阵营知之甚less,我们最终将苹果与橘子进行比较,忘记了蒲式耳。
在研究这个话题的时候,我发现了这个: Java – > .Net粗略的等价物
这是一个不错的列表,但并不完整,缺less关键的.NET 3.0技术和其他一些小技巧。 要完成这个清单:在Java中,接近/粗略的等价物(或者技术的组合)是什么?
- WCF〜=
- WPF〜=
- Silverlight〜=
- WF〜=
- generics〜=
- 扩展方法〜=
- Lambdaexpression式〜=
- Linq(而不是Linq-to-SQL)〜=
- TPL〜=
- F#〜=
- IronPython〜=
- IronRuby〜=
- …我错过了什么吗?
Java技术(有没有.NET等价物?):
- 〜= EJB
- 〜= WebSphere
- 〜= GlassFish
- 〜= JBoss应用服务器
- 〜= Tomcat?
请注意,我省略了链接文章中已经涵盖的技术。 我还想听到关于链接文章是否准确的反馈。
注意:这似乎正在变成一个维基types的文章,所以我标记为这样。
.NET – > Java
- WCF〜 = JAX-WS (如WS)和/或JMS (用于MQ)。
- WPF〜 = Swing (用户界面), Java 2D (用于2D), Java 3D (用于3D)和/或RMI (用于远程处理)。
- Silverlight〜 = JavaFX
- WF〜 =不确定? 有人说这是CAPS 。
- Generics自Java 5.0起已经可用。 主要区别在于它是编译时(不是Reified )。
- Lambdaexpression式在Java 8.0中还没有成为“闭包”
- Linq〜 = Jaque和jpropel-light
- TPL〜 =
java.util.concurrent
( 这里指导和教程 ) - F# 〜= Scala或Clojure
- IronPython〜 = Jython
- IronRuby〜 = JRuby
Java – > .NET
- EJB〜 = MTS / COM +
- WebSphere AS , GlassFish , JBoss AS都是具体的Java EE API实现。 .NET的等价物将是至less有MTS / COM +支持的IIS(有没有竞争IIS的方式?)。
- Tomcat是一个webcontainer,也就是servletcontainer,它只实现庞大的Java EE API(基本上只有
javax.el
和javax.servlet
部分, JSP / EL和Servlet API )的Web Component部分。 .NET等价物仍然是IIS,但是不支持MTS / COM +,邮件,消息队列,持久性等等。 即只有一个简单的networking服务器纯“经典ASP”。
下面是我自己的研究和BalusC的后续列表,Rafa's(et al。)的回答:
(慢慢地更新这个列表,也会提供链接给.NET技术人员,他们可能会感兴趣。)
- WCF
- WPF
- Silverlight = JavaFx
- WF = jBMP(Java业务stream程pipe理)
- generics = Javagenerics
- Lambdaexpression式 = lambdaJ项目或闭包
- Linq (不是Linq-to-SQL)= jaque或Quaere
- TPL〜 = java.concurrent包
- F# = 斯卡拉
- IronPython = JPython
- IronRuby = JRuby
- Hibernate = NHibernate
- JUnit = NUnit
- Spring = Spring.NET
- .Net Remoting〜= RMI
- MEF / System.AddIn〜= OSGi / Jigsaw
- 〜= EJB
- 〜= WebSphere
- 〜= GlassFish
- 〜= JBoss应用服务器
- 〜= Tomcat?
- 〜= GWT
- 〜= Maven2 / Nexus / Sonatype
- 〜= JMX
- ClickOnce〜 = Java Web Start
JavaFX与Silverlight大致相当。 这就是我从列表中知道的
主要技术已经涵盖,所以一些外围技术:
- TPL〜= java.concurrent包
- F#〜= Scala
- IronPython / IronRuby〜= Jython / JRuby
- .Net Remoting〜= RMI
- MEF / System.AddIn〜= OSGi / Jigsaw
对于越来越多的名单我提交:
- ClickOnce≅Java Web Start
Java世界中的Linq equiv是Quaere – http://quaere.codehaus.org/
如果我理解正确,C#中的Lambdaexpression式是从函数式语言中“借用”的,因此在Java中没有直接的等价物( 至less现在是这样 ),但是LambdaJ同时给你类似的东西。