究竟什么是Java?

cod*_*nix 13 java jvm terminology definition vm-implementation

这个问题起初可能听起来很愚蠢,但可能根本就没有.

  • Java不是Java语言,大多数人都知道,因为您可以使用Scala或Groovy 等许多其他语言对Java进行编程

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

And*_*yle 39

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

在形式上,我会说Java是JLS.

  • +1这绝对是正确的答案.规范是语言的一切.其他一切都只是实施细节. (7认同)
  • @McSim:我认为术语"Java"指的是语言."Java虚拟机(JVM)"是一个相关但完全独立的实体.JVM有一个单独的语言(字节码),并有一个单独的规范:http://java.sun.com/docs/books/jvms/ (3认同)
  • @codymanix是的,这是我的看法.Scala,Groovy和Clojure不是Java的一部分. (3认同)

Luc*_*eis 6

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


wax*_*ing 5

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


Kde*_*per 5

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

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

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

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