究竟什么是Java?

时间:2010-11-12 16:27:30

标签: java jvm terminology definition vm-implementation

这个问题起初可能听起来很愚蠢,但也许根本不存在。

  • Java不是Java语言,大多数人都知道,因为你可以用lots of other langauges编写Java,如Scala或Groovy

  • Java不是具体的VM实现,因为还有其他实现,不仅是SUN,Microsoft或IBM。

  • Java不是类框架,因为许多实现都会随意添加或省略类。

  • 甚至不必使用常见的VM规范甚至Java字节码,请参阅Dalvik VM

  • 也许这只是他们分享的一套原则,无论这可能是什么。它绝对不是“一次编写,随处运行”,因为至少Dalvik和Microsoft VM / J#不是这种情况。

所以问题是,究竟什么是Java?是否有确切的定义?

修改 很多人似乎都认为java只是编程语言。因此,支持java的移动电话必须是一个电话,使用户能够使用由仅使用java语言创建的类文件组成的程序。如果这是真的,那么java虚拟机/ java运行时环境/ java开发工具包将仅用于java,而其他jvm语言将拥有自己的对应xvm / xre / xdk。

7 个答案:

答案 0 :(得分:39)

Java 实际上是 Java语言。 Groovy,Scala 编译成可以在JVM上运行的等效字节码,但它们不是 Java。

正式地,我说Java是JLS

答案 1 :(得分:6)

Java是一种编程语言。语法部分。

答案 2 :(得分:5)

在我看来,这是语言。我不认为人们说他们用Groovy编写Java,或者如果他们这样做,他们就是不准确。

答案 3 :(得分:5)

严格来说Java只是一种编程语言。但它是一种包含许多标准的编程语言:例如许多API和JVM规范。这就是为什么SUN和其他人将其称为平台的原因。

Scala,Ruby等其他语言 Java,它们只是编译为在Java虚拟机中运行的字节代码。它们只是构建在Java平台之上,但它们本身并不是Java。

JVM是高度标准化的,许多公司可以并确实为其硬件平台提供自己的实现。这也不是Java,这些只是Java平台的一部分实现。

Java VM规范是100%标准化的东西,由Oracle声称版权归Java所强制执行。这就是为什么Android(Dalvik VM)目前是甲骨文针对谷歌的法庭案件的主题。

答案 4 :(得分:3)

实际上,它取决于使用该词的上下文。一切都是:语法,技术,框架,编程语言。

作为旁注,Oracle回答了以下问题:What is Java?

答案 5 :(得分:2)

你不能说Scala是Java,只不过是因为你碰巧用它梳理你的头发就可以说叉子就是梳子。或者,如果我提出经典类比,用扳手钉钉子不会成为锤子。

如果需要,您可以创建一个将COBOL编译为C ++的编译器,但这并不意味着COBOL就是C ++。

许多语言都有x86机器码作为目标编译语言,这是否意味着它们都是一样的?

其他语言是否可以编译为JVM的字节码并不重要,也不能将Java编译成特定体系结构的机器代码。 JVM仍然是Java的平台;其他语言只是碰巧共享它,Java恰好能够编译到JVM字节码以外的目标。就像叉子一样,恰好可以根据你的处理方式梳理你的头发。

我认为这是一个愚蠢的问题(除了编程之外没有任何关系)。某人是否有可能像文艺复兴时期的哲学家那样行事,并试图争辩说你的叉子实际上是梳子,因为你从来没有用它作为叉子并且总是只用在头发上?当然,继续争辩,也许你甚至会有一点意见,但希望没有人浪费时间听它。这只是一个语义游戏,一旦你开始争论语义,每个人都会失败。

(编辑) 呸!我刚刚意识到我在争论语义!

答案 6 :(得分:1)

大多数人将Java视为编程语言(由Java语言规范定义)。但是还有很多其他人将其分为编程语言,各种虚拟机和更大的生态系统。

对于所谓的Java(例如商标)也有法律定义,但我想我现在就打算单独留下一个: - )

相关问题