zoukankan      html  css  js  c++  java
  • 关于invokedynamic指令

    JVM字节码指令集一直比较稳定,到Java7中才增加了一个invokedynamic指令,这是Java为了实现动态类型语言支持做的一种改进。但是Java7中没有提供直接生成invokedynamic指令的方法,需要借助ASM这种底层字节码工具来产生invokedynamic指令。到Java8Lambda表达式出现,invokedynamic指令的生成,在Java中才有了直接的生成方式。

    Java7中增加的动态语言类型支持的本质是对Java虚拟机规范的修改,而不是对Java语言规则的修改,这一块相对比较复杂,增加了虚拟机中的方法调用,最直接的受益者就是运行在Java平台的动态语言的编译器。

    动态类型语言与静态类型语言:

    动态类型语言和静态类型语言的区别在于对类型的检查是在编译期还是运行期,满足前者是静态类型语言,反之是动态类型语言。

    静态类型语言是判断变量本身的类型信息,动态类型语言是判断变量值的类型信息,变量没有类型信息,变量值才有类型信息;这是动态语言的一个重要特征。例如:

    • Java: String info =”eleanor”;//info=eleanor;静态类型语言
    • Python:info=15.8;动态类型语言
    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    第二周:对Java面向对象的特点的基本感受
    第一周学习情况
    插入排序
    快速排序
    vue传值(小demo)
    Vue下简单分页及搜索功能
    js超简单冒泡算法
    vue框架中实现今天昨天前天最近时间
    vue简单的v-for
    ssm web.xml配置解析
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/13657374.html
Copyright © 2011-2022 走看看