自从 Java 技术出现以来, 有关 Java 平台的安全性及由 Java 技术发展所引发的新的安全性问题,引起了越来越多的关注.目前,Java 已经大量应用在各个领域,研究 Java 的安全 性对于更好地使用 Java 具有深远的意义.
    本文主要从两个方面阐述了 Java 的安全性:一是 Java 平台(主要通过 JDK)的安全完备性;二是 Java 虚拟机的安全机制.
    Java 平台提供的原始安全模式是:沙箱模型.
    对于从开放网络中得到的不被信任的代码, 该模型提供了一个非常严格的使用环境.沙箱模型的实质在于信任本地代码, 使其可以完全访问重要的系统资源(例如文件系统) ;而对于下载的远程代码则不被信任,因此只能访问 沙箱内提供的有限资源.
    沙箱模型通过 Java 开发工具包(JDK)发布,一般被用 JDK 编写的应用程序所采纳(包括支持 Java 的网络浏览器) . Java 开发工具 JDK 1.2 中引入了新的安全体系结构,安全检查扩展到所有Java 程序,包括应用程序及 Applet.所有本地代码均可信任的概念已不再存在.相反,本地代码的安全控制与Applet的类似.当然,必要时本地代码(或远程代码)上的策略仍有可能被声明为具有最大自由权,从而使之类似完全可信任的代码那样高效运行.同样的原则适用于签名的Applet和所有Java应用程序. Java 沙箱是运行 Java 小应用程序的一个软件单元,对Java 小应用程序的访问权限加以限制,防止它访问计算机的关键部分,如磁盘驱动器,网络套接口和内存区.
    Java 沙箱由三部分组成:字节码检验器,类装载器和安全管理器,这三部分共同完成装载和运行时对Java Applet的检验,用以限制对文件系统和网络的访问以及对浏览器内部的访问. Java 程序可以从网络上下载运行,这必然带来许多不安全因素.一些恶意的 Hacker 可以直接写出字节代码段攻击用户节点, 如删除文件, 搞乱硬盘或未经用户许可在网上发送本地信息等.这些防卫本地机被攻击的任务就交给了 Java 虚拟机完成.Java 虚拟机提供了几种安全机制,其中两种主要的机制是安全管理器和 Java 类文件认证器. 安全管理器是安全的实施者, 它是一个可扩展类, 提供加在应用程序和特殊系统上的安全措施.它实现 Java 虚拟机的安全策略.安全管理器建立 Java 程序的名空间,限制对网络, 本地文件系统和程序其它部分的访问. Java 认证器在.class 文件运行前完成该文件的安全检查, 确保 Java 字节码符合 Java 虚拟 机规范.Java 平台通过使用认证器查看类文件的句法和词法的正确性,检查版本及 API 符合性等,保证病毒和其它恶意程序不会侵犯本地系统.认证器包括四个阶段的操作:类文件认证,类型系统认证,字节码认证和运行时类型的访问检查.此外,认证器在检查期间还能识别算法操作的上溢和下溢等其它可能发生在运行期间的程序错误.
    Java 虚拟机是加在当前主机操作系统上的,由于 Java 字节码执行速度目前要比本地机器慢 10~20 倍,速度问题可能是影响 Java 推广的惟一原因.目前,针对 Java 虚拟机程序速度慢的问题, Microsoft,Borland 等提出了及时编译技术(Just-In-Time)JIT.具体说,就是 JIT 编译器在程序开始执行前把所有字节码翻译成本地机器码, 然后再将翻译后的机器码放在 CPU 上运行.这样,就用字节码编译器代替了原来的解释器,它对用户透明而又提高 了执行速度.也许将来 JIT 编译器加到 Java 虚拟机中,可以解决所有性能问题.