Java动态澄清

aks*_*h1t 3 java jvm dynamic

在阅读一本关于Java的书时,我在Java Buzzwords这个术语中遇到了这个摘录,我不明白.

动态

Java程序带有大量的运行时类型信息,用于在运行时验证和解析对象的访问.这使得以安全和方便的方式动态链接代码成为可能.这对于Java环境的健壮性至关重要,其中字节码的小片段可以在正在运行的系统上动态更新.

我的问题是:

  1. 词是什么 "运行时类型信息"是什么意思?如果提供一个例子,我将不胜感激.
  2. "字节码的小片段可以在正在运行的系统上动态更新." 根据我的理解,当我们使用该javac命令时,Java代码被转换为字节码,并使用该java命令执行.那么为什么/如何在正在运行的系统上更新字节码的片段呢?

Kon*_*kov 7

  1. compile-time type一个变量的是它被声明为类型,而runtime type是实际对象的变量指向类型.假设我们有以下内容:

    Object obj = new Integer(1);

    compile-time类型的oObject,同时其运行时类型会Integer.

  2. "字节码的小片段可以在正在运行的系统上动态更新."

    这基本上意味着在调试某些java程序时,您可以进行一些更改并重新编译该程序,然后再次运行它,而无需重新启动JVM.