首页 存档 技术 查看内容

聊聊Java 平台上的非Java语言

2018-3-30 13:00 |来自: 互联网 311 0

摘要: Java 的创造者们在一开始就把Java 语言和Java 虚拟机分开, 现在看来是个非常明智的决定。 Java虚拟机定义了一个"软CPU", 和Intel 的x86 的指令集一样, 这个软CPU也有一套自己的指令,这就意味者对于任意一门 ...

Java 的创造者们在一开始就把Java 语言和Java 虚拟机分开, 现在看来是个非常明智的决定。


Java虚拟机定义了一个"软CPU", 和Intel 的x86 的指令集一样, 这个软CPU也有一套自己的指令,这就意味者对于任意一门编程语言, 只要你能编译成Java 的字节码指令,或者在运行时动态的生成字节码指令, 就可以运行在Java虚拟机中。


Java 虚拟机发展了这么多年, 已经非常的成熟和稳定, 是一个很有吸引力的平台。 除了Java 之外还有不少编程语言慕名而来, 今天就来聊一聊。


1

Jython和JRuby


从这两位名字开头的字母 "J" 就可以看出来这两个语言和Java 的血缘关系。


没错,他们就是可以运行在Java 虚拟机上的Python 和 Ruby 。 不同于用C语言写的CPython和 CRuby, 这两者需要一个JVM才能运行。


既然是运行在JVM上的语言, 自然要能调用Java 类库, 要不然放着这么多优质Java 资源不用多可惜!


下面就是一个在JRuby 脚本中调用 Java Swing的例子:

如果你思考的深入一些,就会有这么一个问题 : 由于Python 和ruby 都是脚本语言, 都是解释执行的, 没有编译的过程, 那Jython和JRuby 在解释的过程中,肯定得生成Java 字节码, 要不然JVM就会把他们拒之门外。那字节码是怎么在运行中生成的?


答案就是ASM , 一个可以动态生成字节码的Java 类库。


(码农翻身注: 参见文章《 声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除


路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部