background image

Java 中的四个核心技术思想

Java 已经成为一个庞大而复杂的技术平台,对于开发人员而言,要想更好的
掌握 Java 技术,深入理解底层的技术处理细节必不可少。对核心概念和思想
的掌握可以帮助我们举一反三、触类旁通,有助于提升我们对整个 Java 平台
的理解力。这里所介绍的是 Java 技术平台的几个核心概念,其中所蕴含的思
想有助于我们更深刻的理解 Java 技术。

  Java 虚拟机

  Java 虚拟机的主要任务是装在 class 文件并且执行其中的字节码。Java 虚
拟机包含一个类装载器,它可以从程序和 API 中装载 class 文件。Java API 中
只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。

  不同的 Java 虚拟机中,执行引擎可能实现得非常不同。在由软件实现的
虚拟机中,最简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,
但是也更消耗内存,叫做"即时编译器(just-in-time compiler)"。在这种情况
下,第一次被执行的字节码会被编译成本地机器代码。编译出的本地机器代码
会被缓存,当方法以后被调用的时候可以重用。第三种执行引擎是自适应优化
器。在这种方法里,虚拟机开始的时候解释字节码,但是会监视运行中程序的
活动,并且记录下使用最频繁的代码段。程序运行的时候,虚拟机只把那些活
动最频繁的代码编译成本地代码,其他的代码由于使用得不是很频繁,继续
保留为字节码-由虚拟机继续解释它们。一个自适应的优化器可以使得 Java 虚
拟机在 80%~90%的时间里执行被优化过的本地代码,而只需要编译
10%~20%的对性能有影响的代码。

  当 Java 虚拟机是由主机操作系统上的软件实现的时候,Java 程序通过调
用本地方法(native method)和主机交互。Java 中有两种方法: Java 方法和本
地方法。Java 方法是由 Java 语言编写,编译成字节码文件,存储在 class 文
件中的。本地方法是由其他语言(比如 c,c++或汇编语言)编写的,编译成何处
理器相关的机器代码。本地方法保存在动态链接库中,格式是各个平台专有的。
运行中 Java 程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,
并调用这个方法。本地方法是联系 Java 程序和底层主机操作系统的连接方法。

  通过本地方法,Java 程序可以直接访问底层操作系统的资源。一个本地方
法接口(Java Native Interface, JNI)-使得本地方法可以在特定主机系统的任
何一个 Java 平台实现上运行。