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 类库。 (码农翻身注: 参见文章《 声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除 |