Java核心技术:卷1笔记[8] applet和应用程序

来源:互联网 发布:网络谐音词大全 编辑:程序博客网 时间:2024/05/18 03:32
 

1.applet仅仅是一个扩展了java.applet.Applet类的Java类,如果applet包含Swing组件就必须扩展JApplet类。applet中使用init函数来替代main函数,因为applet是在网页中运行的,所以没有必要指定退出方法。

2.applet嵌入Html中的格式:

       <applet code=”HelloWorld.class” width=”300” height=”300”>

       </applet>

3.将应用程序转换成applet的详细步骤:

       1)创建一个HTML页面,它有合适的标记来装载applet代码;

       2)创建一个JApplet的子类,将该类标记为public;

       3)删除应用程序中的main方法,因为应用程序会在浏览器中显示,所以不要构造框架窗口;

       4)将所有的初始化代码从框架窗口的构造器中移到applet的init方法中。不需要显式地构造applet对象,浏览器会实例化一个该对象并且调用init方法;

       5)删除对setSize的调用,浏览器会通过html中的width和height来指定大小;

       6)删除对setDefaultCloseOperation的调用,applet不可能被用户关闭,当浏览器退出时applet才会终止执行;

       7)如果应用程序调用了setTitle方法,删除该调用,applet没有标题栏;

       8)不要调用show方法,applet会自动显示;

4.applet的生命周期:applet类提供四个方法,它们构造了创建任何applet的框架:

       1)init:当Java第一次运行applet时,系统会自动调用该方法,applet可以有构造器,但是通常是在init方法中而不是在默认的构造器中进行全部的初始化工作。

       2)start:当init方法被调用后该方法会被自动调用,而当用户从其他页面返回到包含applet的页面时,该方法也被调用,也即start方法会被多次调用,而init方法仅仅会被调用一次。start方法是applet重新启动线程的地方,如果applet在离开当前页面时没有什么需要挂起,则没有必要实现该方法。

       3)stop:该方法在用户离开包含applet的页面时会被自动调用。该方法是当用户不再关注applet时停止那些耗时操作。

       4)destroy:仅仅在浏览器正常退出时,该方法会被调用。

5.不同于应用程序,applet的行为受限,当applet视图违反任何一条访问规则时,applet管理器都会抛出异常。限制applet的执行环境常常被称为“沙箱”,在“沙箱”中运行的applet不能修改或者探测用户系统。

6.Java通过三个独立的机制来加强安全性:

       1)程序代码是在Java虚拟机中解释执行的,而不是直接运行;

       2)安全管理器会检查Java运行库中的所有敏感操作;

       3)applet可以通过签名技术来表明其来源。

7.想applet传递数据

       <applet code=”FontParamApplet.class” width=”200” height=”200”>

       <param name=”font” value=”Helvetica”/>

       </applet>

      

       public class FontParamApplet extends JApplet

       {

              public void init()

              {

                     String fontName=getParameter(“font”);

              }

       }

       只能在applet的init方法中调用getParameter方法,而不能在构造器中调用。

8.获得URL的常见方法是询问applet的来源,特别是:

       1)当前调用它的页面的URL:使用getDocumentBase方法;

       2)当前applet自己的URL:使用getCodeBase方法;

9.获取图像和声音文件:

       Image cat=getImage(getCodeBase(),”images/cat.gif”);

       AudioClip meow=getAudioClip(getDocumentBase(),”audio/meow.au”);

       图像和声音文件必须放在同一个服务器上,而且applet代码也是存放在同一个服务器上,出于安全原因,applet不能访问其他服务器上的文件。

       为了提高下载速度,可以将多媒体对象存储在JAR文件中,getImage和getAudioClip/play方法会自动搜索applet的jar文件。如果图像或者声音文件包含在一个jar文件内,它会被立刻从该JAR文件中加载,否则浏览器向服务器请求下载该声音或图像文件。

10.applet上下文:为了与浏览器通信,applet应该调用getAppletContext方法,该方法返回一个实现了AppletContext接口的对象。AppletContext接口的具体内部实现就是applet和浏览器之间的通信途径。

11.一个网页可以包含多个applet。如果一个网页中包含的多个applet都来自同一个codebase,则它们之间可以通信。如果HTML文件中的每个applet都被赋予了name属性,则可以使用AppletContext接口中的getApplet(String)方法来获得对applet的引用;无论有没有name属性,都可以列出网页上全部的applet,通过getApplets方法可以得到一个枚举对象,如下打印出当前页面包含的全部applet的类名:

       Enumeration e=getAppletContext().getApplets();

       while(e.hasMoreElements())

       {

              Object a=e.nextElement();

              System.out.println(a.getClass().getName());

       }

       一个applet不能和其他网页上的applet通信。

12.修改浏览器状态栏:

       getAppletContext().showStatus(“…”;

13.打开新的网页:

       URL url=new URL(“http://www.baidu.com”);

       getAppletContext().showDocument(u,”_blank”);

      

14.Java允许将所有需要的类文件甚至是图像及声音文件打包成一个单一的文件。只要向服务器发出一个单一的http请求,就可以下载这个文件,这样的存档Java类文件的文件被称为Java存档文件(JAR)。JAR文件使用的是ZIP压缩格式的压缩文件。在applet标记中标记jar文件如下:

       <applet archive=”xxx.jar” …

       每次需要类文件、图像或者声音文件时,浏览器首先在archive属性中指定的JAR文件中寻找,当文件不在这些JAR文件中时,才会到Web服务器上去取。

15.JAR文件是一个简单的ZIP格式文件,它包含类文件、程序需要的其他文件以及描述该JAR文件特性的清单文件。可以将应用程序所需要的类文件和其他资源打包成一个JAR文件,然后在清单文件中增加一项来指定该程序的主类(清单文件的最后一行必须是以换行符结束)。一旦程序打包后,就可以通过一个简单的命令来加载它,如果正确的配置了系统的话,还可以通过双击JAR文件来打开它。

16.Java中的资源定位机制

       1)获得一个具有资源的类的Class对象;

       2)调用getResource(filename)来获取资源的位置,返回值是URL;

       3)如果资源是图像或者声音文件,则直接通过getImage或者getAudioClip方法读取它;

       4)否则,就对URL使用openStream方法读取文件中的数据,要“从找到AboutPanel.class类的地方找到一个名为about.txt的文本文件“:

       URL url=AboutPanel.class.getResource(“about.txt”);

       InputStream in=url.openStream();

       也可以将这两步结合起来:

       InputStream in= AboutPanel.class.getResourceAsStream(“about.txt”);

17.Java Web Start是一项新技术,目的是改善用户通过Internet发布Java程序的经验,其与applet的主要区别如下:

       1)Java Web Start用来发布普通的Java应用程序,这些应用程序是通过调用某一个类的main方法来启动的,它们不需要从Applet继承;

       2)Java Web Start不在浏览器中运行,它在浏览器外显示,尽管它可以通过浏览器启动,但是后台的机制完全不同于applet的启动;

       3)一旦一个Java Web Start应用程序被下载,它可以在浏览器外面运行;

       4)Java Web Start的“沙箱“相对比较宽松,它允许未签名的应用程序访问一些本地资源;

18.对于一个要使用Java Web Start发布的应用程序,应该将其打包成一个或多个JAR文件,然后创建一个JNLP格式的描述符文件,并且将这些文件放在web服务器上。接着要确保web服务器对于具有.jnlp后缀的文件会返回application/x-java-jnlp-file的MIME类型描述,浏览器会使用MIME类型来确定使用哪一种辅助应用程序。

19.JNLP API允许应用程序开发者在一些限定的条件下访问某些本地资源,它提供如下服务:

       1)打开和保存文件

       2)访问剪贴板

       3)下载文件

       4)打印

       5)保存和获取持久性的配置信息

       6)在默认的浏览器中打开一个文档

       要使用任何一种服务都需要使用ServiceManager,如:

       FileSaveService service=(FileSaveService)ServiceManager.lookup(“javax.jnlp.FileSaveService”);

       如果服务不可用,则会抛出UnavailableServiceException异常。

20.属性集是存储键值对的数据结构,常常用来存放配置信息。在Java中实现属性集的类为Properties,例如:

       Properties settings=new Properties();

       settings.put(“font”,”Courier”);

       setting.put(“size”,”10”);

21.Preferences类提供了一个与平台无关的中心存储器,它具有树状结构。在Windows系统上它就是使用注册表来存放信息。

原创粉丝点击