⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0003.htm

📁 关于java的开发文档
💻 HTM
字号:
<html>

<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1  {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
    <p align="center"><big><strong>Java Applet编程技巧</strong></big></p>

<table border="1" width="100%" cellspacing="0">
  <tr>
    <td width="100%" bgcolor="#808000"><p align="right"> 陈冲 </td>
  </tr>
  <tr>
    <td width="100%" bgcolor="#219BC9">1.Java Applet概述 </td>
  </tr>
  <tr>
    <td width="100%">  Java程序分为两类:Java小程序(Applet)和Java应用程序(Applic 
    ation),这两类程序是有区别的。Java Applet嵌入在WWW的页面,作为 
    页面的组成部分被下载,并能运行在实现Java虚机器(JVM)的Web浏览 
    器中。Java的安全机制可以防止小程序存取本地文件或其他安全方面 
    的问题。而一个Java应用程序运行于Web浏览器之外,没有Applet运行 
    时的诸多限制。另外,两者程序设计上的最大区别在于:Java Applet 
    没有主程序,而Java应用程序一定要有主程序。<br>
      在Java中每个applet都是由Applet的子类来实现。开发人员自定 义的applet通过重载A 
    pplet的几个主要成员函数完成小应用程序的 
    初始化、绘制和运行。这些函数是init()、pa int()、start()、sto p()和destory()。<br>
      一个applet的生命周期与Web页面有关。当首次加载含applet的 
    页面时,浏览器调用ini t()方法,完成applet的初始化。然后调用pai nt()或start()方法绘制或启动程序。当用户离开页面时,浏览器调用 
    stop()方法停止小程序运行。若用户关闭浏览器将使applet停止运行 ,浏览器调用destory()方法终止,使小应用程序有机会释放其存在期 
    间锁定的资源。只要用户不关闭浏览器,重新加载页面,浏览器则只调 
    用start()方法和paint()方法重新绘制并运行小程序</td>
  </tr>
  <tr>
    <td width="100%" bgcolor="#219BC9">2.扩展小程序基类支持多线程 </td>
  </tr>
  <tr>
    <td width="100%">  通常情况下,设计小程序是为了给主页增加交互性,使页面更加生 
    动活泼。因此,那些真正有用小程序,如动画、实时更新Internet服务 
    器信息回取、一般娱乐等通常都是持续运行的,即小程序的逻辑主体 
    存在着无限循环。这个逻辑主体不宜放在几个浏览器调用方法中,如i 
    nit()、paint()、start()等。这是因为隐含情况下,小程序所有主逻 
    辑都采用单一线程。当浏览器调用方法中出现死循环,则程序控制不 
    返回。如果用户换到另一个页面之后小程序还在运行,就会浪费处理 
    器资源。你可以做一个实验,使用小程序查阅器运行小程序,你会发现 
    查阅器本身完全停止作用,因为它要等到调用函数返回后,才能继续处 
    理其他事情(如响应菜单)。显然,这个逻辑主体必须放在其他地方。 
    解决方法是在小程序框架中加入线程,把逻辑主体放在线程run()方法 
    中。只在浏览器调用方法start()中生成线程,而在stop()中终止线程 运行,这样当用户不查阅时不会占用处理器资源。图2表示浏览器、小 
    程序和线程之间的关系。由于浏览器/小程序/线程是所有浏览器都采用的模型,而Java.ap 
    plet.Applet类本身并不支持线程。在实际使用中,为方便操作,我们 
    可以派生Applet类生成一个支持线程的子类, 今后再编写applet时, 
    就可以直接从子类中派生,程序逻辑主体放在run()方法中,将线程控 
    制隐藏起来。这个子类如下:<br>
      import Java.applet.*;<br>
      import Java.awt.*;<br>
      class MultiThreadApplet extends Applet implements Runnab le {<br>
       Thread thisThread;<br>
       public void start() {<br>
        if (thisThread==null) {<br>
         thisThread=new Thread (this);<br>
         thisThread.start();<br>
        }<br>
       }<br>
       public void stop() {<br>
        if (thisThread!=null) {<br>
         thisThread.stop();<br>
         thisThread=null;<br>
        }<br>
       }<br>
       public void run() { }<br>
      }<br>
      由于run()是接口Runnable的抽象方法,所以在MultiThreadApple t类中也需要进行定义,只不过内容为空。下面的例子显示如何使用这 
    个类。程序包含一个无限循环累加操作,并将结果显示在屏幕上:<br>
      import java.awt.*;<br>
      public class counter extends MultiThreadApplet{<br>
       int Counter;<br>
       public void run(){<br>
        while(true) {<br>
        counter++;<br>
        repaint();<br>
       }<br>
      }<br>
      public void paint(Graphics g){<br>
      g.drawString(string.valueof(counter), 10, 10); }<br>
      }很显然,这个小程序对线程的操作已被隐藏在MultiThreadApplet 中。</td>
  </tr>
  <tr>
    <td width="100%" bgcolor="#219BC9">3.解决动画中的一些问题 </td>
  </tr>
  <tr>
    <td width="100%">  动画的本质就是运动的图形,一系列连续显示的静止图形会给我 
    们一种连续动画的假象。只要动画速度足够快,则分散的静止图形就 
    会合并成一个连续运动的流程。<br>
      绘制动画十分简单,只需遵照以下三步即可:①擦去整个小程序绘 
    图区;②重画动画背景;③在新的位置绘制图形。但是,当动画连续帧 
    之间运动和颜色不连续时就会发生闪烁现象( 例子略)。问题出在小 
    程序区的屏幕刷新上,有两种方法可以防止动画闪烁。第一种方法是 
    只做局部刷新,即每次只擦除改变的部分。例如:如果要绘制一幅&quot;飞 
    行的星空&quot;动画,每次刷新操作,先擦去前一位置的星星,再在新的位置 
    绘制一个。但是,如果动画比较复杂,运动部分重叠较多,则局部刷新 
    操作很繁琐也影响程序运行速度。在这种情况下,可以用另外一种方 
    法( 双缓存)来解决闪烁问题。它的核心思想是在屏幕外完成一帧的 
    全部动画,然后把最后绘制完的帧显示在小程序屏幕上。过程如图3所 
    示。<br>
      示例程序如下:<br>
      import java.awt.*;<br>
      public class Ball extends MultiThreadApplet {<br>
       Image ball=null;<br>
       Image applet=null;<br>
       Graphics appletG,ballG;<br>
       public void run() {<br>
       if(ball==null) {<br>
       applet=createlmage(bounds().width, bounds().<br>
       height);<br>
       ball=create Image(70,70);<br>
       appletG=applet.getGraphics();<br>
       ballG=ball.getGraphics();<br>
       ballG.setColor(Color.gray);<br>
       ballG.drawOral(0,0,70,70); }<br>
       for(int x=0;x&lt;400;x++) {<br>
       double angle=((double)x)/20;<br>
       int y=(int)(Math.abs(Math.sin(angle))*80);<br>
       appletG.clearRect(0,0,bounds().width.bounds(),<br>
       helght);<br>
       drawBackground(appletG);<br>
       appletG.drawImage(ball,x.80y,this);<br>
       this.getGraphics().drawImage(applet,0,0,this);<br>
       try {<br>
       Thread.sleep(25);<br>
       } catch(Exception ignored) { } }<br>
       }<br>
       private void drawBackground(Graphics g){<br>
       for (int i=0;i&lt;1;i++){<br>
       g.drawLine(0.i* 10, 400,i*10); }<br>
       }<br>
       }<br>
    小程序首先用createImage()取得与小程序大小完全相同的屏外 图形缓存,赋给变量app 
    let,然后得到缓存的绘图对象appletG。以后 
    对帧的刷新操作过程都是针对appletG。这包括清除帧、绘制背景、 
    在新位置绘制图形。最后再用drawImage()方法把缓存复制到小程序 
    的屏幕显示区。运行这个小程序,你会发现动画非常平滑,不存在闪烁 
    现象。<br>
      除了闪烁之外,如果动画过于复杂,帧速率就可能降低。若动画降 
    到每秒20帧,则动画会出现间断现象影响显示效果。因此有必要优化 
    动画速度,下面列出了一些可行的方案;①画得尽可能少;②用较快的 
    绘图算法;③用颜色循环等技巧来绘画某一部分;④用图案来表示细节 
    ;⑤用定点整数进行三维计算;⑥用查询的预先计算结果来处理复杂算 
    法。</td>
  </tr>
  <tr>
    <td width="100%" bgcolor="#219BC9">4.缩短小程序装入时间 </td>
  </tr>
  <tr>
    <td width="100%">  真正功能性的小程序本身并不小,这就意味着小程序从Internet 
    上下载需要花很多时间。随着小程序的普及,越来越多的Internet频 
    带被用于从各地的服务器向客户端Web浏览器传送这些小程序,因此响 
    应时间进一步下降。为了缩短小程序下载和装入时间,可以采取以下3 
    种方法。<br>
      &middot;使执行文件尽量小尽管Internet (TCP协议)可以接受任意长度 
    的数据流,但负责点对点传送的网络设备(例如:路由器)对一次传送分 
    组包的上限有严格的限制,通常这一限制是2 56的整数倍。因此,当小 
    程序在网上传送时,按照上限它被分成若干包,而最后一个包可能只有 
    几个字节。这些包是单独传送,需要在客户端重新组装为原先小程序 
    执行文件字节流。当最后一个包延迟时,可能要用好几秒来等待最后 
    几个字节到达。唯一的解决办法就是保持类文件尽量小。开发人员可 
    以在不影响程序逻辑主体的前提下尝试下列方案:①删除查错代码;② 
    缩小String直接量;③选择Java编译器优化编译选项;④删除用不到的 
    方法等<br>
      &middot;类散保持在可控范围内几乎没有一个小程序是由一个类组成。 
    通常,开发人员为了实现一个功能较强的小程序需要从标准的Java基 
    类中派生出若干子类,并对之进行组合。因此,若要使一个小程序运行 
    ,Java虚拟机就要分别下载并装入这些类。如果实现中类的数目较多, 
    下载的时间也就相应较长。我们都知道,下载20个独立的数据块比下 
    载一个相当于20个数据块之和的大数据块要花费更多的时间,这是由 
    于下载每个独立数据块都要重新进行网络联接,而进行每次联接都要 
    花费时间的缘故。因此,开发人员在设计小程序时,类的数目要选择适 
    中,即可保证结构层次清晰,又要保证程序精简,不增加冗余。<br>
      &middot;缩短小程序初始化时间用户讨厌等待,因此,程序下载后应尽量 
    缩短初始化时间。如果预处理工作较多,可以用辅助线程先同用户进 
    行交互,例如:问候用户、询问用户姓名、显示进程指示等。总之,让 
    用户&quot;忙起来&quot;。同时,小程序主线程可以继续在后台做初始化工作。 
    有句话请记住:&quot;高兴时时间过得快&quot;,充分利用这一现象可以改变用户 
    对小程序装入时间的感觉。<br>
      使用Java开发WWW客户端应用程序十分方便,技术也很多,本文只 
    简单介绍几种方法和注意事项供大家参考。</td>
  </tr>
</table>

  </table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -