⑤. 沙箱安全机制
①. 如图,虽然我们自定义了一个java.lang包下的String尝试覆盖核心类库中的String,但是由于双亲委派机制,启动加载器会加载java核心类库的String类(BootStrap启动类加载器只加载包名为java、javax、sun等开头的类),而核心类库中的String并没有main方法
②. 自定义String类,但是在加载子弟敬意String类的时候回率先使用引导类加载器加载,而
引导类加载器在加载过程中会先加载jdk自带的文件(rt.jar包中的java\lang\String.class),
报错信息说没有main方法就是因为加载的是rt.jar包中的String类。这样可以保证对java
核心源代码的保护,这就是沙箱安全机制
③. 沙箱安全机制作用:
保证程序安全
保护Java原生的JDK代码
④. JDK1.6时期,当前最新的安全机制实现,则引入了域(Domain)的概念
虚拟机会把所有代码加载到不同的系统域和应用域。系统域部分专门负责与关键资源进行
交互,而各个应用域部分则通过系统域的部分代理来对各种需要的资源进行访问。虚拟机
中不同的受保护域(Protected Domain),对应不一样的权限(Permission)。存在于不同域中
的类文件就具有了当前域的全部权限,如下图所示,最新的安全模型(jdk1.6)