关于Applets

天下之事常成于困约,而败于奢靡。这篇文章主要讲述关于Applets相关的知识,希望能为你提供帮助。
Applet的基本工作原理
Applet:
Applet是一种很重要的java程序,是工作在浏览器上的java程序。编写Applet小程序必须要用到java.applet包中的Applet类,该类是java.awt.Panel类的子类。Applet默认的基本工作原理:编译好的字节码文件保存在特定的www服务器上,同一个或另一个服务器上保存着嵌入了该字节码文件名的html文件。
当某一个浏览器向服务器请求下载嵌入了Applet的html文件时,该文件从服务器上下载到客户端,由浏览器解释html,当遇到< applet> ,表明它嵌有一个Applet,浏览器会根据这个Applet的名字和位置自动把字节码从服务器上下载到本地,并利用浏览器本身拥有的java解释器执行字节码。
Applet类:
Applet程序在结构上必须创建一个用户类,该类的父类是系统的Applet类。通过这个子类,完成Applet与浏览器的配合。
import java.applet.Applet;
public class MyApplet extends Applet;
1、Applet类
该类存在于java.applet包中,具有的作用:
1)包容和排列其他的界面元素,如按钮、文本框等。
2)响应它所包容范围内的事件,或把事件向更高层传递。
另外它还有一些与浏览器和Applet生命周期有关的方法。
Applet类的主要方法
在实际运行Applet中,浏览器在下载字节码的同时,会动创建一个用户Applet子类的实例,并在适当事件发时自动调用该实例的几个主要方法:
init():用来完成主类的初始化工作。字节码下载后,浏览器将创建一个Applet类的实例并调用它从Applet类那里继承来的init方法。用户程序可以重载父类的init方法,定义一些初始化操作。
start():用来启动浏览器运行Applet的主线程。浏览器在调用init()初始化Applet类的实例后,将接着自动调用start()方法,加入当前实例被激活时要实现的功能。
除了在init初始化后被调用外,start方法在Applet被重新启动时也会被自动调用:一是用户使用了Reload操作;二是浏览器重新加载,那么其中的Applet实例就会被重新启动并调用start方法,但是init方法只能被调用一次。
paint():在Applet的界面中显示文字、图形和其他界面元素。在下列情况下使用paint():
1)Applet被启动之后,自动调用paint()来重绘
2)Applet所在的浏览器窗口改变时使用paint重画界面。
paint方法有一个Graphics类的对象g作为参数。它用来完成一些较低级的图形用户界面操作,当一个Applet类实例被初始化并启动时,浏览器将自动生成一个Graphics类的实例g,并把g作为参数传递给Applet的paint方法,就可以绘制Applet的界面。
stop():当用户浏览其他网页,或切换到其他应用时,浏览器会暂停执行的Applet线程,暂停前首先自动调用stop方法。
destroy():当用户退出浏览器时,浏览器会自动调用Applet实例的destroy方法来完成一些释放资源、关闭连接等操作。
HTML 文件参数 
Applet 时需要嵌入在HTML 文件并依赖浏览器运行的程序。在HTML 文档中嵌入Applet 需要使用一组约定好的特殊标记:< applet< < /applet> , 至少需要三个参数code,height,width。
总结,Applet由浏览器自动调用的主要方法init(),statr(),stop(),destroy()分别对应了Applet从初始化,启动,暂停到消亡的生命周期的各个阶段。
【关于Applets】Applet安全基础
Applet被设计为从远程站点下载然后在本地执行,所以安全问题非常重要。如果用户在游览器中启用了Java,那么浏览器就会自动下载网页中的Applet代码并执行。用户没有机会来确认或者停止Applet的运行。基于这样的原因,与Application应用程序相比,Applet被作了限制。
Applet的限制执行环境常常称作“沙箱(sandbox )”。运行在沙箱中的Applet不能更改或探查用户的系统。
当运行在沙箱中时:
(1)Applet不能读写本地计算机的文件系统,也不能运行任何本地可执行程序。
(2)Applet不能同除它们的下载处的服务器(该服务器称作原始主机)以外的其他任何主机通信。这条规则使得Applet不能探查企业内部网上的资源。
(3)Applet只能获取本地计算机中的以下信息:当前使用的Java版本;操作系统的名字和版本;用来分离文件、路径以及行的字符。除此以外,Applet不能获取任何其它关于本地计算机的信息。
(4)Applet弹出的所有窗口都会带有一警告消息,告诉用户这是一个Applet。
因为Java解释器会检查所有的危险指令和程序区域,所以一个带有敌意的Applet不能覆盖系统内存、改变操作系统赋予的特权或者使计算机崩溃。
在某些情况下,这些限制显得过于严格。为了充许在不同情况下使用不同的安全级别,Java引入了签名Applet。
一个签名Applet带有一个能够表明签名者特征的证书。加密技术保证了这样的证书不可能被伪造。如果信任签名者,那么可以选择给该Applet额外的特权。被完全信任的Applet可以获得同本地应用程序一样的访问特权。





































    推荐阅读