简约淘宝网站模板免费下载,重庆seo网站系统,购物网站建设课程设计报告,wordpress centos查看目录JDK 7 增加了对 JSR 292 的支持#xff0c;在 JVM 中动态类型语言的运行速度将变得更快。这一支持的关键在于增加了新的 Java 字节码#xff0c;invokedynamic#xff0c;它用于方法调用#xff0c;还有新的连接机制#xff0c;其中包含了一个新的构造#xff1a;方法句柄…JDK 7 增加了对 JSR 292 的支持在 JVM 中动态类型语言的运行速度将变得更快。这一支持的关键在于增加了新的 Java 字节码invokedynamic它用于方法调用还有新的连接机制其中包含了一个新的构造方法句柄(method handle)。此次JDK 7在动态语言支持上的更新是Java平台发展的重要趋势之一在今年6月的JavaOne大会上这些基于Java平台的动态语言也十分的活跃。动态类型语言和 JVMJVM 可以执行 Java 程序将其编译机器独立的字节码。事实上任何可以使用有效 class 文件表述的功能性语言都可以运行在 JVM 上。多年来运作在 JVM 上语言一直在增加从 armed Bear for Common Lisp 到Yoix.动态语言的 JVM 实现也越来越多比如 JRuby 和 Jython以及 Groovy 脚本语言。动态语言的灵活性尤其是脚本语言对于实验性、原型应用程序以及需频繁更新的程序都具有独特的吸引力。这种灵活性源自动态类型。动态类型语言中运行时(runtime)验证程序中的值是否与预期类型一致相对的静态类型语言如 Java是在编译期间检查变量类型而不是值类型。值得一提的是Java 平台上另一个前景很被看好的静态语言就是Scala包括Java之父和Groovy创始人在内的很多开发者都很看好Scala这个强类型的、可扩展性良好的静态语言。通常动态类型比静态类型更具灵活性因为前者允许程序根据运行时的数据生成类型。不过静态类型语言的执行更为高效因为它能够在编译期间排除错误。动态类型固有的灵活性与 JVM 的执行效率合二为一。很明显这就是它能够吸引动态编程语言创建者以及使用这些语言构建应用程序的开发者的原因。JSR 223 动态语言支持的第一步JSR 223 Scripting for the Java Platform 是将动态语言引入 JVM 的第一步它是一个规范定义了从动态脚本语言代码访问 Java 代码的 API 接口。它还指定了一个 framework 框架用户在 Java 应用程序中运行脚本引擎。该规范及其实现使得包含 Java 和脚本代码的应用程序的创建更为容易。动态类型语言的问题为运行在 JVM 上的动态类型语言开发引擎必须满足 JVM 所执行的 Java 字节码的要求而字节码专为静态类型语言设计。对于引擎开发者当生成字节码用于方法调用这种设计一直都是棘手的难点。方法调用的字节码要求静态类型语言中编译时进行类型检查意味着方法调用以及它生成的字节码需要知道该方法返回的值类型以及调用中指定的参数类型。下面为一段 Java 代码String sHello World;System.out.println(s);这里参数类型是已知的。System.out.println()并不返回值如果方法返回值需要指定返回值的类型。以上代码相应的字节码如下ldc #2astore_1getstatic #3aload_1 invokevirtual #4//Method java/io/PrintStream.println(I)VJVM 中字节码的执行通常包含对操作对象栈(operand stack)中值的操作。操作栈是一个相当于硬件寄存器的虚拟机。通常字节码会指示 JVM 局部值压入操作对象栈将值从栈中取出放进局部变量中复制或交换栈中的值或者执行生成或使用值的操作。