JVM平台开发语言 一直在流行

开发 后端
关于JVM平台开发语言一直是Java开发者茶余饭后的一个热门话题,JVM作为一种机制用以提供Java应用在不同的环境,其他平台以及不同硬件上的可移植性,而基于JVM平台的编程语言也是不断的在增加。从动态语言如Groovy、JRuby, Jython到静态型Scala语言, JVM也正成为一个多元化的平台,开发人员可以充分利用不同语言来满足各自不同的需求。

关于JVM平台开发语言一直是Java开发者茶余饭后的一个热门话题,JVM作为一种机制用以提供Java应用在不同的环境,其他平台以及不同硬件上的可移植性,而基于JVM平台的编程语言也是不断的在增加。从动态语言如GroovyJRuby, Jython到静态型Scala语言, JVM也正成为一个多元化的平台,开发人员可以充分利用不同语言来满足各自不同的需求。

 

本月的编程语言排行榜上我们可以看出,本次***的5种编程语言中3种就属基于JVM平台开发的编程语言。这也意味着开发者对JVM平台开发语言的关注、使用也不断的增加。为什么JVM的编程语言会如此受到开发者的青眯?下面我们从JVM平台的3点特性进行分析。

动态语言支持

从SE 6开始就是对动态语言的支持,动态语言逐渐成为许多Java开发者应用开发日常工作的一部分,并常常用于原型开发或用来提高开发速度。为了快速得到更大规模的Java应用程序,人们一直在使用动态语言胶合程序部件。

事实上,任何可以使用有效class 文件表述的功能性语言,都可以运行在JVM上。动态语言的灵活性,尤其是脚本语言,对于实验性、原型应用程序以及需频繁更新的程序,都具有独特的吸引力。

Java开发人员也可以使用动态语言进行部分编程,然后将这部分代码转换成Java,或继续用Java来开发程序中更为健壮、生命力更强的部分,其他代码则可以通过更加动态的语言来进行开发。动态类型固有的灵活性与JVM的执行效率,合二为一。很明显,这就是它能够吸引动态编程语言创建者以及使用这些语言构建应用程序的开发者的原因。

跨平台性

如果单单说JVM支持动态语言编程就能够吸引更多的开发者那是不可能的,曾有这么一句话“一次编程,到处运行”,这句话说的就是JVM的跨平台性。指即不依赖于操作系统,也不信赖硬件环境。

那么JVM是如何跨平台的呢?下面提供张JVM的结构图

JVM跨平台的四种执行引擎部分说明:

1、解释器

简单,一次性解释字节码。易于实现但是执行缓慢。

2、即时编译器

将***次执行的字节码编译为本地机器代码。编译出的本地机器代码会被缓存,第二次调用的时候可以重用。执行速度快,但是消耗更多内存(与解释器相比)。

3、自适应优化器

虚拟机开始的时候是解释字节码,但是他会监视运行中的程序,并记录下使用最频繁的代码段。程序运行的时候,将最频繁的代码编译成本地代码,其他使用不频繁的代码,继续保持为字节码。

4、硬件芯片:

用本地方法执行字节码。java通过编译器后生成class文件,为字节码,通过虚拟机编译后形成机器码,电脑上只能运行机器码。字节码是可以运行在任何支持java虚拟机的硬件平台和操作系统上的二进制文件。
(摘自:bobiy45785的博客)

混合编程

JVM平台能够受到开发者的青眯还有一点就是能够进行多语言混合编程,也就是说在JVM平台上不仅Java一种编程语言可以使用。事出于单一的Java开发已经无法满足当前软件复杂的需求。而混合编程也受到了开发者的热捧,至今已成为主流。

JVM不断的向多语言方向发展,每种语言都可以针对自己擅长的方面更好的解决问题;日趋复杂的软件需求也使得混合编程的应用场景更加的频繁。在不远的未来我们将会看到,我们的项目中,并行进程用Clojure编写,展示层使用Jruby/Rails,中间层用的是Java编写。

总  结

多年来,在JVM上运行的语言越来越多。而动态语言、跨平台性、混合编程的特性对开发者是非常具有吸引力的。随着JVM平台开发的流行,Java开发者也跟着发生了一些改变,因为他们不仅仅只限于Java一种编程语言。因此,51CTO还针对JVM平台的9种编程语言出了个专题,开发者可以进入详细了解有关JVM平台的编程语言。

【编辑推荐】

  1. 程序员需要谨记的九大安全编码规则
  2. 从程序员到第四次创业的生活
  3. 每个程序员都应该知道的福利
责任编辑:林师授 来源: 51CTO
相关推荐

2012-05-22 17:07:38

开发技术周刊

2011-03-25 15:35:55

ARM微软处理器架构

2021-03-05 08:00:00

Web开发工具

2023-09-13 17:08:31

2023-09-13 11:19:49

2017-07-06 11:08:12

开源云计算EasyStack

2018-03-21 18:00:15

NestJS

2021-11-29 18:34:14

内存异步死循环

2016-07-20 17:19:21

SDN软件定义网络SDN商用

2022-09-26 08:30:41

黑客网络攻击隐私

2023-08-20 16:49:04

UbuntuLinux

2009-05-21 09:28:05

阿里巴巴马云忽悠

2011-06-21 17:24:10

2021-09-14 11:04:55

谷歌AIDeepMind

2021-09-27 09:57:04

IBM工程师RustGRUB

2011-06-09 11:02:22

Sun甲骨文服务器

2009-05-22 15:27:23

JVM脚本语言Java

2019-12-03 13:16:55

PHP流封装协议

2016-01-12 10:00:32

点赞
收藏

51CTO技术栈公众号