为什么.NET是一个框架而Java是一种语言

12

好的。这不是一场战争。我对框架的概念很感兴趣,我在不同层次上使用过一些框架,比如django、zend、rails和cakephp。

今天我的一个朋友给我发了一份演示文稿,在其中列出了.NET作为一个框架,这并不令人惊讶。我已经讨论过.NET框架,并且我知道它背后的基本概念,在我有限的.NET技术视角中,似乎公平地说它是一个框架。

但是突然间我想到了一个问题:为什么Java是一种语言,而.NET是一个框架?我读得越多,就越感到困惑。Java和.NET都有SDK,难道是因为Java是在虚拟机上运行吗?还是因为.NET支持多种编程语言?我错过了什么重要的区别吗?


Java是一种编程语言,这是事实。同样的,C#和VB也是。除此之外,还有许多其他编程语言。 - user395760
这实际上是一个非常有趣的问题,我以前从未考虑过。你如何区分框架和语言之间的界限? - Chris Thompson
4个回答

25

Java既是一种语言又是一个框架,二者紧密结合并共同称为Java。

.NET是一个平台,有许多语言使用它——C#、VB.NET、F#等等。

区别仅在于名称和语义,没有更多的不同。


7
除了Java之外,您还可以使用Java框架/类库与其他语言一起使用(有许多为JVM编写的语言)。 - Kirk Woll
1
Java是一个框架和编程语言。谢谢,我不知道这一点。(以为Java只是一种编程语言)那么在软件工程方面,我如何区分框架和平台?你能分享给我任何链接吗? - Praveen

4

Java就像C#对.NET一样,是针对JVM的。不幸的是Sun将他们的虚拟机命名为“Java虚拟机”,因为实际使用Java程序的情况越来越少。它是JVM和庞大的标准类库构成了这个平台。Java只是其编程语言之一;它有竞争者,如Groovy、Scala、JRuby、Clojure等,就像.NET有F#、最新的VB等。


4
不,Java对JVM的关系就像C#对CLR的关系一样。CLR并不等同于“.NET”。 - Kirk Woll
虚拟机是CLR,而不是.NET,这点是可以肯定的。问题在于,“.NET”明确是虚拟机和整个平台的名称(以及伴随着它的整个Windows开发空间的哲学变革),而“Java”主要是一种编程语言的名称 - 因此,“.NET”这个术语没有准确的等价物。 - Kilian Foth
Twitter是使用Scala在JVM上运行的吗? - Jonathan DS

4
  • .NET是一个框架,因为它围绕着您的代码提供功能:例如,当您使用WebForms时,您不必从接收HTTP请求到编写HTML的所有内容进行编码,WebForms和WebServices也是如此,它们都是围绕着您的代码。

  • 在Java中(仅有Java),你没有任何东西,只有一种语言,你可以编译执行你的程序,但你将不得不在软件生命周期内处理一切(桌面或C / S),如果你使用Java EE或Swing,那么你就会有一个框架。

混淆来自于它们都强制使用它们自己的框架(微软比Sun更多),所以语言-框架的组合非常强大(即使你可以分离它们并使用其他东西)。但他们推广了一对不同的部分,MS推广框架,而Sun则推广语言。


2

C#、VB、J#等是Visual Studio中的编程语言。.NET是一个代码框架,提供了丰富的功能集,供您直接使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接