在最近完成的一次Java.net的投票中,有超过75%的开发人员认为使用非Java语言是有一定的原因的。有19%(有点吃惊)的开发人员认为,在JVM上完全没有必要使用非Java语言进行开发。总共有181个人进行了投票,有一人进行了评论。下面是投票的内容及结果:
在JVM上使用非Java语言最重要的原因:
23%(42票)——更先进的语法
6%(11票)——更好的性能
38%(69票)——一些非Java语言更适合某些类型的编程任务
8%(15票)——不太懂Java,不过了解移植到JVM的那门语言
19%(34票)——没理由使用非Java语言
6%(10票)——其它
做出这份调查问卷花费了我不少心思,我发现调查的结果非常有意思(尽管这不是一疹专业的调查)。我在猜测人们选择某个选项的时候究竟是怎么想的。“一些非Java语言更适合某些类型的编程任务”这个赢得了大多数的投票,我认为这是合理的。各种非Java的JVM语言已经被广泛使用,并且仍在不停地增长中。
我认为,"更先进的语法"当然也是一个非常合理的选择。Java 7和Java 8中语言的一些改进本质上就是想引入其它语言的一些特性(包括一些很受欢迎的非JVM语言)。更新的那些JVM语言,它们不需要向下兼容,也没有历史遗留代码的负担,可以在开始设计的时候就考虑使用一些现代的语法,也可以针对某些特定类型的编程任务而专门设计语法。这又回到了“一些非Java语言更适合某些类型的编程任务”这点上了。
我把“更好的性能”这个选项放到问卷中很大一部分原因是出于好奇。提起性能的时候,大家并不认为Java是很笨重的,如果你清楚你要做的是什么,你可以通过对Java进行性能调优,从而获得不可思议的处理速度,或者难以置信的响应延迟,又或者是意想不到的处理大数据的能。和,等等。我在想,或者有些语言在原生状态就已经针对高性能的特点对JVM进行了调优,我希望那6%的投了“更好的性能”的那帮人也是这么想的。。
我很高兴看到只有8%的人使用非Java的JVM语言是因为"不太懂Java,不过了解移植到JVM的那门语言"。我能想到有人在必要的时候会选择使用非Java的JVM语言,因为他们确定很快就不会再使用JVM了。如果你计划长期作为一名职业的软件工程师,甚至将来进阶成为一名软件架构师的话,由于你不想学Java而成为一名Jython或者JRuby开发人员恐怕不是上策。
下面是19%的那些人,他们选择了“没理由使用非Java语言”。我把这个选项放到投票里,一个是出于好玩,一个是为了给某些Java粉表表忠心。问题在于,选择这个选项的人都是出于好玩吗?有没有人选择它是因为尝试了其它非Java语言后却不喜欢的呢?有没有人是因为不知道JVM上面除了Java还有别的语言而选择了这项的?我希望选中这个选项都是那些骄傲的Java老兵。
6%选择了“其它”,网友pjmlp还留下了评论:
选择其它,是因为我认为有许多原因,不止一个:
现代的语法
类型推导的支持
值类型
物化泛型(reified generics)
对外国语言有更好的FFI支持。
可以通过AOT (Ahead-Of-Time)编译器生成本地代码,有官方的工具支持
原创文章转载请注明出处:
http://it.deepinmind.com
英文原文链接
分享到:
相关推荐
Java语言规范和JVM规范是理解Java编程基础和高级特性的关键参考资料,它们定义了Java程序的语法、语义以及虚拟机的行为。本压缩包包含了Java6至Java9的版本,涵盖了一系列重要的语言和虚拟机改进,对于Java开发者来...
Java虚拟机(JVM)规范和Java语言规范是Java开发者深入理解这个平台和技术的基石。这两部分规范分别定义了Java程序如何在JVM上运行以及Java编程语言的语法和语义。 《Java语言规范》(Java Language Specification...
在提供的资源"使用C++创建java虚拟机JVM,使用JNI调用java函数"中,可能详细介绍了以上步骤的实际应用,包括代码示例和可能遇到的问题及解决方案。通过学习和实践这个教程,开发者可以更好地理解和掌握C++与Java之间...
Java语言规范和JVM虚拟机规范是理解Java编程基础及其执行机制的核心文档,它们由Oracle官方发布,确保了Java开发的准确性和一致性。本压缩包包含的文件详细阐述了Java编程语言的各个方面以及Java虚拟机(JVM)的工作...
在计算机科学领域,Java虚拟机(JVM)是Java语言的关键组成部分,它使得Java程序能够在不同平台上运行而无需重新编译。本项目“jvmjava”是一个开源项目,由Java语言实现,目的是为了让开发者能够更深入地理解JVM的...
标题 "框架->java语言->jvm->os->汇编->硬件" 描述了一条技术学习路径,从上至下深入理解软件开发的核心技术栈。这个路径涵盖了从应用框架到底层硬件的关键环节,让我们逐步解析其中涉及的知识点: 1. **框架**:...
类加载器负责加载类文件,运行时数据区存储程序执行时的各种数据,执行引擎执行字节码,本地方法接口用于调用非Java语言实现的函数,本地库则提供了这些函数的实现。 工作流方面,JVM的启动首先是加载主类,然后...
Android最初使用Dalvik虚拟机来执行Android应用程序,虽然Dalvik与传统的JVM在设计上有所不同,但随着Android的发展,现在主流Android应用也是基于Java或Kotlin开发,并且在Android Runtime (ART)下运行,ART替代了...
JVM的概念是Java语言跨平台能力的关键,通过将Java源代码编译为一种称为字节码(ByteCode)的中间格式,使得编译后的程序可以在任何安装了Java虚拟机的平台上运行。这意味着开发者只需要编写一次代码,就可以在多种...
1. **平台无关性**:由于JVM在各个操作系统上都有实现,Java程序可以在任何安装了相应JVM的平台上运行,极大地提高了软件的移植性。 2. **安全性**:JVM提供了严格的类型检查和安全限制,防止恶意代码破坏系统。 3...
总的来说,"JVM.zip"提供的资源对于任何Java开发者来说都是有价值的,它帮助我们更好地理解和管理Java应用程序在JVM上的运行状态,从而实现更高效、更稳定的系统性能。通过深入学习和利用这些工具,开发者能够提升...
Java 语言具有平台无关性,即 Java 语言可以在多种平台上运行,如 Windows、Linux、Unix 等。这是因为 JVM 负责将字节码文件翻译成机器语言,並执行机器语言,从而使得 Java 语言具有跨平台的特性。 JVM 内存模型 ...
这得益于Java的运行时环境,即Java虚拟机(JVM),它允许Java程序在任何安装了JVM的平台上运行,而不需要重新编译。 2. **面向对象**:Java是一种面向对象的语言,支持封装、继承和多态等特性。 3. **健壮性**:...
- 可以在任何安装了JVM的平台上运行。 - 由JVM解释执行或者由JIT编译器转换成本地机器码。 #### 四、Class文件 **Class文件**是由Java编译器生成的文件格式,用于存储Java类的信息。 1. **Class文件结构**: -...
JVM是Java语言的核心组成部分,它实现了Java的跨平台特性。JVM的主要职责包括加载类、验证字节码、创建对象、垃圾回收等。理解JVM的工作原理对于优化Java应用性能至关重要,包括堆内存管理、栈内存管理、方法区以及...
在Java平台上,尽管Java语言是主要的开发工具,但其实并不仅限于Java,还有许多其他编程语言可以在Java虚拟机(JVM)上运行。这些语言通常被称为“JVM语言”,因为它们编译成字节码,可以在Java虚拟机上执行,从而...
4. 本地方法接口和本地库:JVM允许调用非Java语言编写的方法,例如C或C++,通过本地方法接口(JNI,Java Native Interface)实现。 JVM还有垃圾回收机制,自动管理内存,避免了程序员手动释放内存的麻烦。它通过...
Java Native Interface(JNI)允许Java代码调用本地(非Java)代码,实现了Java与其他语言的互操作性。通过JNI,开发者可以充分利用C/C++的性能优势。 九、JVM的监控与诊断 JDK提供了一系列工具,如jconsole、...
本文档的主要目标是研究Java虚拟机(JVM)的工作原理及其设计背后的原因,而非深入探讨Java语言本身。我们将关注于机器如何运作,并且更重要的是,探究JVM开发者为何选择特定的方式来设计这些功能。 #### 为什么...
- **与平台无关性**:Java语言的一个关键特性是其跨平台能力。JVM通过屏蔽不同操作系统之间的差异,使得Java程序无需重新编译即可在不同的平台上运行。 - **自动内存管理**:JVM提供了一套自动化的内存管理机制,...