深入了解底层的技术处理细节必不可少。   Java曾经成为一个庞大而复杂的技术平台, 对于开发人员而言, 要想更好的掌握Java技术, 有助于提升我们对整个Java平台的了解力。 这里所介绍的是Java技术平台的几个核心概念,   Java虚拟机的次要任务是装在class文件并且执行其中的字节码。 Java虚拟机包含一个类装载器, 它可以从顺序和API中装载class文件。 字节码由执行引擎来执行。   不同的Java虚拟机中, 另一种执行引擎更快, 叫做即时编译器(just-in-timecompiler)。 第一次被执行的字节码会被编译成本地机器代码。 编译出的本地机器代码会被缓存, 当办法以后被调用的时候可以重用。 第三种执行引擎是自顺应优化器。 在这种办法里, 虚拟机开始的时候解释字节码, 并且记载下运用最频繁的代码段。 顺序运行的时候, 其他的代码由于运用得不是很频繁, 而只需要编译10%~20%的对性能有影响的代码。 Java顺序经过调用本地办法(nativemethod)和主机交互。 Java中有两种办法:Java办法和本地办法。 Java办法是由Java言语编写, 存储在class文件中的。 c++或汇编言语)编写的, 本地办法保管在动态链接库中, 格式是各个平台专有的。 运行中Java顺序调用本地办法时, 虚拟机装载包含这个本地办法的动态库, 并调用这个办法。 本地办法是联络Java顺序和底层主机操作系统的连接办法。   经过本地办法, Java顺序可以直接访问底层操作系统的资源。 一个本地办法接口(JavaNativeInterface, JNI)-使得本地办法可以在特定主机系统的任何一个Java平台实现上运行。   如果希望运用特定主机上的资源, 那么可以写一个平台相关的Java顺序来调用本地办法。 如果希望保证顺序的平台无关性, 那么只能经过JavaAPI来访问底层系统资源。 启动类装载器(这是系统中独一的)是Java虚拟机实现的一局部。   Java运用顺序能够在运行时安装用户定义的类装载器, 这种类装载器能够运用自定义的方式来装载类。 例如, 从网络下载class文件。 而用户定义的类装载器不是, 能够被编译成class文件, 还能够像其它对象一样实例化。 所以不用再编译的时候就晓得运行中的Java运用顺序中最终会加入的所有的类。 当它运行时, 运用顺序能够处理它需要哪些额定的类, 能够决议是运用一个或是更多的用户定义的类装载器来装载。 所以用任何在Java代码中可以表述的风格来进行类装载。 可以从某些数据库中获取??踔量梢远???伞?看到它到底是被启动类装载器还是被用户定义类装载器装载。 当被装载的类引用了另外一个类时, 例如, 它就会运用这个类装载器装载Volcano类运用的所有类。 经过这种办法, 运行时的Java顺序中的每一个类装载器都有自己的命名空间。   Java运用顺序可以创建多少个(或多少种)被不同的类装载器装载的类寄存在不同的命名空间中, 当编写一个Java运用顺序的时候, 从不同源文件装载的类可以分隔在不同的命名空间中。 经过这种办法, 就能够运用Java类装载器的体系构造来控制任何不同源文件中装载的代码之间的互相影响, 这个用户定义的类装载器通常被称为JavaApplet类装载器, 它晓得如何向HTTP效劳器央求class文件。 只有当浏览器遇到有Javaapplet的页面时, 才决议是否需要下载class文件。   Web浏览器启动的Java运用顺序通常为每个提供class文件的网络地址分别创建不同的用户定义类装载器, 因此, 这就可以把它们分别放置在Java主机运用顺序的不同命名空间之下。 恶意的Javaapplet代码就不会直接访问从别的中央下载的class文件。 这就能够限制或阻止不同来源的代码之间的互相访问。 这种途径途径打破了C或者C++等言语所遵循的传统, 运用这些传统言语写的顺序通常首先被编译, 然后被连接成独自的、专门支持特定硬件平台和操作系统的二进制文件。 通常状况下, 一个平台上的二进制可执行文件不能在其他平台上工作。   当编译和连接一个C++顺序时, 所取得的可执行二进制文件只能在指定的硬件平台和操作系统上运行, 而Java编译器把Java源文件的指令翻译成字节码, 这种字节码就是Java虚拟机的机器言语。   class文件设计得紧凑, 因此它们可以快速地在网络上传送。 其次, 由于Java顺序是动态连接和动态扩展的, class文件可以在需要的时候才下载。 从而可以最大限度地减少终端用户的等候时间。   JavaAPI经过支持平台无关性和平安性, 使得Java顺应于网络运用。 它提供了一套访问主机系统资源的规范办法。 虚拟机装载顺序的class文件所运用的JavaAPIclass文件。 所有被装载的class文件(包括从运用顺序中和从JavaAPI中提取的)和所有曾经装载的动态库(包含本地办法)共同组成了再Java虚拟机上运行的整个顺序。   在一个平台能偶支持Java顺序以前, 必需在这个特定平台上明白地实现API的功能。 为访问主机上的本地资源, 由于JavaAPIclass文件调用了本地办法, 对Java顺序而言, 无论平台外部如何, JavaAPI都会有同样的表现和可预测的行为。 正是由于在每个特定的主机平台上明白地实现了Java虚拟机和JavaAPI, 因此,   JavaAPI在Java平安性模型方面也有贡献。 都会经过查询访问控制器来检验是否得到了授权。 访问控制器是一个类, 该类用来执行栈检验, 已决议是否允许某种操作。