一个 Java Applet 可以包含在 HTML 页面中并且可以在启用 Java 客户端的浏览器中运行。Applets 可以用来创建动态和交互式的 web 应用程序。
一个 Applet 可能会经历以下的几个状态:
首先,会创建一个 applet 的控制类的实例。然后,applet 初始化,最后 applet 开始运行。
Applets需要一个支持Java的浏览器, 但是Java应用程序可以被单独执行。但是,他们都需要一个Java虚拟机,JVM。 还有, 一个Java应用程序需要一个main方法与特定的签名,来确保启动. Java applets并不需要这样一些东西。 最后, Java Applet通常使用严格的安全策略,而Java应用程序通常使用较宽松的安全策略。
这主要是由于安全原因,以下限制强加在Java小程序:
不受信任的Applet是那些Java Applet不能访问或执行本地系统的文件的程序。默认情况下,所有下载的Applet被认为是不可信的。
关于其中一个applet被加载在互联网的情况下,applet是由applet类加载器加载并须受该applet安全管理器执行的限制。
关于其中一个applet是从客户端的本地磁盘加载的情况下,applet是由文件系统加载器加载的。
通过文件系统加载的applet允许读取文件,写入文件并加载在客户端上。还有,通过文件系统加载applet允许执行,最后,通过文件系统加载的applet不管是否通过字节码验证都可加载。
当在互联网上加载applet,该applet是由applet的类加载器加载的。类加载器强制执行Java命名空间的层次结构。此外,类加载器保证这是在来自本地文件系统的类中唯一的命名空间,以及在每个网络源中唯一的命名空间。
当浏览器在网络上加载applet,applet的类被放置在私人的和applet起始地址有关的命名空间中。那么,那些类加载器加载的类就会通过校验。这个校验会检查类文件是否符合Java语言规范。除此之外,校验器会确保没有堆栈溢出或者向下溢出,参数的所有字节码指令也是正确的。
applet安全管理是对Java applet做了限制的机制。浏览器只能有一个安全管理器。安全管理器在启动的时候建立,之后它不能被取代,重载,重写或者延长。