字节码与多语言混合编程
字节码:
- 我们平时说的Java字节码, 指的是用Java语言编译成的字节码,准确的说:任何能在JVM平台上执行的字节码格式都是一样的,所以应该统称为:JVM字节码
- JVM字节码就不仅仅是可以是有Java语言编译而来了,JRuby等等很多语言都可以编译为JVM字节码文件,然后由JVM解析/编译执行
- 不同的编译器,可以编译出相同的字节码文件,生成的字节码文件也可以在不同的JVM上执行
- JVM依靠操作系统, 这里指的不同的JVM是指的不同操作系统上的JVM
- Java虚拟机与Java语言并没有必然的联系, 他只与特定的二进制文件格式(Class文件格式)所关联
- Class文件(字节码文件)包括:
- 字节码(bytecodes)
- 符号表
- 其他辅助信息
- Class文件(字节码文件)包括:
Class文件是二进制的, Class文件又称为字节码文件, "字节"也就是二进制
多语言混合编程:
Java平台上的多语言混合编程正在称为主流, 通过指定领域的语言去解决指定领域的问题, 是当前软件开发应对日趋复杂的项目需求的一个大方向
-
一个项目中, 我们可以对并行处理使用Clojure语言编写, 展示层使用JRuby/Rails语言编写, 中间层则是使用Java编写, 每个应用层都将使用不同的编程语言来完成, 而且, 接口对每一层的开发者都是透明的==(在计算机中透明表示的是看不见的, 某种看不见的特性我们就可以说是透明的)==, 各种语言之间的交互不存在任何困难, 就像是使用自己语言的API一样方便, 因为它们最终都运行在同一个虚拟机之上
-
对于这些运行在Java虚拟机之上, Java之外的语言, 来自系统级的底层的支持正在迅速的增强, 以JSR-292为核心的系列项目和功能改进(如: Da Vinci Machine项目, Nashorn引擎, Invoke Dynamic指令, Java.lang.invoke包等), 推动了Java虚拟机从"Java语言虚拟机向多语言虚拟机"方向发展
-
方法句柄: 是JSR-292(JDK1.7)中引入的一个重要概念, 它是对Java中的方法, 构造方法和域的一个强类型可执行引用. 这也是句柄这个词的含义所在, 通过方法句柄可以直接调用该句柄所引用的底层的方法, 从功能上来讲, 方法句柄的作用就有点类似于反射中提到的Java.lang.reflect.Method类, 但是方法句柄的功能更加的强大, 使用起来也更加的灵活, 性能也更加的好, 实际上方法句柄是可以和反射中的Method类协同使用的, 在Java标准库中, 方法句柄是由Java.lang.invoke.MethodHandle类来表示的
-
-
补充:
JSR
JSR是JavaSpecification Requests的缩写,意思是“Java 规范提案”。是指向JCP(JavaCommunity Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。简单的就是jsr是java开发者以及授权者指定的标准,而java开发者以及授权者形成一个jcp国际组织。职能是指定java标准。
JCP
JCP由SUN于1995年创造Java的非正式过程,演进到如今有数百名来自世界各地Java代表成员一同监督Java发展的正式程序