首先我要说的是Applet是一种应用程序,它是一种由JAVA编写的小应用程序,通常这样的应用程序都像他的名字一样,是一个非常小的程序,或许有些朋友就会问了,那么它是用来干什么的呢?JAVA程序就是JAVA程序啊,为什么要弄出个小应用程序?

一、Applet初识

Applet编程是JAVA编程语言至关重要的独特功能,它不同与一般的JAVA程序的地方是,它可以嵌入在HTML网页中,并由支持JAVA的WEB浏览器来动态下载解释运行,当然我们所使用的IE浏览器3.0以上的版本号是支持JAVA小应用程序的,有了这样的小应用程序,我们的网页就能有一定的交互功能。

在Java Applet中,能够实现图形绘制,字体和颜色控制,动画和声音的插入,人机交互及网络交流等功能。 Applet还提供了名为抽象窗体工具箱(Abstract Window Toolkit, AWT)的窗体环境开发工具。 AWT利用用户计算机的GUI元素,能够建立标准的图形用户界面,如窗体、button、滚动栏等等。眼下,在网络上有许多的Applet范例来生动地展现这些功能,读者能够去调阅对应的网页以观看它们的效果。

Applet的工作原理

含有Applet的网页的HTML文件代码中部带有<applet> 和</applet>这样一对标记,当支持Java的网络浏览器遇到这对标记时,就将下载对应的小应用程序代码并在本地计算机上运行该Applet。

Applet的下载与图形文件一样须要一定的时间,若干秒后它才干在屏幕上显示出来。等待的时间则取决于Applet的大小和用户的网络连接的速度。一旦下载以后,它便和本地计算机上的程序以同样的速度执行了。

Applet在用户的计算机上运行时,还能够下载其他的资源,如声音文件、图像文件或很多其他的Java代码,有些Applet还同意用户进行交互式操作。但这须要反复的链接与下载,因此速度非常慢,这是一个亟待解决的问题,能够想到的一个好办法是採用类似快速缓存的技术,将每次下载的文件都暂时保存在用户的硬盘上,尽管第一次使用时花的时间比較多,但当再次使用时,仅仅需直接从硬盘上读取文件而无需再与Internet连接,便能够大大提高性能了。

二、Applet和application

在JAVA语言中,可以独立执行的程序称为Java应用程序(Application)。Java语言还有第二种程序——Application 程序。

JavaApplet和JavaApplication在结构方面的主要差别表如今:

(1)执行方式不同。Java Applet程序不能单独执行,它必须依附于一个用HTML语言编写的网页并嵌入当中,通过与Java兼容的浏览器来控制执行。Java Application是完整的程序,能够独立执行,仅仅要有支持Java的虚拟机,它就能够独立执行而不须要其它文件的支持。

(2)执行工具不同。执行Java Applet程序的解释器不是独立的软件,而是嵌在浏览器中作为浏览器软件的一部分。Java Application程序被编译以后,用普通的Java解释器就能够使其边解释边执行,而Java Applet必须通过网络浏览器或者Applet观察器才干执行。

(3)程序结构不同。每一个Java Application程序必然含有一个而且仅仅有一个main方法,程序执行时,首先寻找main方法,并以此为入口点開始执行。含有main方法的那个类,常被称为主类,也就是说,Java Application程序都含有一个主类。而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立执行的原因。虽然Applet没有含main方法的主类,但Applet一定有一个从 java.applet.Applet派生的类,它是由Java系统提供的。

(4)Java Applet程序能够直接利用浏览器或AppletViewer提供的图形用户界面,而Java Application程序则必须另外书写专用代码来营建自己的图形界面。

(5)受到的限制不同Java Application程序能够设计成能进行各种操作的程序,包含读/写文件的操作,可是 Java Applet 对网站的磁盘文件既不能进行读操作,也不能进行写 操作。然而,因为 Applet的引入,使Web页面具有动态多媒体效果和可交互性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能,不但能够显示文本信息,并且还能够有各种图片效果和动态图形效果,从而使页面显得生动漂亮;另外,Applet使Web页面添加了button等功能,从而添加了交互性。

JavaApplet和JavaApplication在执行方面的主要差别表如今:Java Application通常是在本地机上执行,而Java Applet一般放在server上,它是依据本地机的请求被下载到本地机,然后才在本地机上执行。

三、基本框架

Applet的基本框架是由一套方法组成的,它们提供了浏览器与Applet之间的接口以及二者运行控制的基本机制;方主要法例如以下:

1、init():

创建Applet时运行,该方法仅仅被运行一次;

当Applet程序第一次被支持Java的浏览器载入时,便运行该方法;在Applet程序的生命周期中,该方法仅仅被运行一次,因此能够在当中进行一些仅仅运行一次的初始化操作,如:处理由浏览器传递进来的參数、加入用户接口组件、载入图像和声音文件等;Applet程序有默认的构造方法,但它习惯于在init()方法中运行全部的初始化,而不是在默认的构造方法内;

2、start():

该方法多次运行,当浏览器从图标恢复成窗体,或者是返回该主页时运行;

系统在调用完init()方法之后,将自己主动调用此方法;并且每当浏览器从图标恢复为窗体时,或者用户离开包括该Applet程序的主页后又再返回时,系统都会再运行一遍start()方法;因此,该方法在Applet程序的生命周期中被调用多次,以启动Applet程序的运行,这一点与init()方法不同;该方法是Applet程序的主体,在当中能够运行一些须要反复运行的任务或者又一次激活一个线程,比如:開始动画或播放声音等;

3、stop():

该方法被多次运行,当浏览器变成图标时,或者是离开主页时运行,主要功能是停止一些耗用系统资源的工作;

与start()相反,当用户离开Applet程序所在页面或浏览器变成图标时,会自己主动调用此方法;因此,该方法在Applet的生命周期中也被多次调用;这样使得能够在用户并不注意Applet程序的时候,停止一些耗用系统资源的工作(如中断一个线程),以免影响系统的执行速度,且并不须要去人为地去调用该方法;假设你的Applet程序中不包括动画、声音等程序,通常也不必重载该方法;

4、destroy():

该方法用来释放资源,在stop()之后运行;

浏览器正常关闭时,Java自己主动调用这种方法;该方法方法用于回收不论什么一个与系统无关的内存资源;当然,假设这个Applet程序仍然处于活动状态,那么Java会在调用该方法之前,先自己主动调用stop()方法;

5、其他方法:

paint(Graphicsg):该方法用于详细的界面绘制;

update():该方法用于详细的界面刷新;

repaint():该方法用于详细的界面重绘;

四、例子程序

1、Applet代码:

<span style="font-size:18px;">importjava.io.*;
importjava.awt.*;
importjava.lang.*;
importjava.applet.*;
publicclass MyApplet extends Applet
{
private String strUserName;
private String strPassword;
private int iCount;
private int iPosX;
public void init()
{
strUserName =this.getParameter("username");
strPassword =this.getParameter("password");
iCount = Integer.parseInt(this.getParameter("count"));
iPosX = 25;
}
public void paint(Graphics g)
{
g.drawRect(10, 10, iWidth, iHeigh);
g.drawString("UserName: " +strUserName + " Count:" + iCount, iPosX, 60);
g.drawString("Password: " +strPassword, iPosX, 80);
}
}</span>

2、HTML代码:

<span style="font-size:18px;"><html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=GB2312">
<metahttp-equiv="Content-Language" Content="zh-CN">
<title>JSP APPLET TEST</title>
</head>
<body>
<Applet id="MyApplet"name="MyApplet" code="MyApplet.class"codebase="." height="300" width="300">
<param name="username"value="sankhya">
<param name="password"value="bdxnote">
<param name="count"value="30">
</Applet>
</body>
</html></span>

五、Applet相关问题

1.  Applet是什么

Applet又称为Java小应用程序,是可以嵌入到一个HTML页面中,而且可通过Web浏览器下载和运行的一种Java类。  Applet不须要main()方法,由Web浏览器中内嵌的Java虚拟机调用运行。

2.  Applet的安全限制

由于applet是从远端server上下载而且在本地执行,所以安全性就显得格外重要。通过限制applet在沙箱(applet的执行环境)中执行,保证了对本地系统而言applet是安全的。

applet在沙箱中执行时:

⑴    不能执行不论什么本地可执行程序;

⑵    除了存放下载的applet的server外,applet不能和其他主机进行通信。

⑶不能对本地文件系统进行读写。

3.  Applet的生命周期

init():当浏览器载入applet,进行初始化的时候调用该方法。

start():在init()方法之后调用。当用户从其他页面转到包括applet的页面时,该方法也被调用。

stop():在用户离开包括applet的页面时被调用。

destroy():当applet不再被使用,或浏览器退出的时候,该方法被调用。

4.  paint()方法这个paint还是来自于AWT

Applet本质上是图形方式的,我们应该在图形环境中绘制我们的显示内容。

我们能够通过创建一个paint()方法在Applet的panel上画图。仅仅要Applet的显示须要刷新,paint()方法就会被浏览器环境调用。比如,当Applet的显示尺寸发生变化的时候,或浏览器窗体被最小化或被要求以图标方式显示时,这样的调用就会发生。

我们应该编写自己的paint()方法,以使它在不论什么时候被调用,都能正常地工作。对它的调用是异步产生的,且由Applet的执行环境而不是程序来驱动。

paint()方法带有一个參数,它是java.awt.Graphics类的一个实例。这个參数总是建立该Applet的panel的图形上下文,我们能够用这个图形上下文在Applet中画图或写入文本。

5.  applet从网页中获取信息

正如应用程序能够通过命令行參数来获取信息一样,通过使用param标记,applet能够从网页中获取信息。

在浏览器中显示信息:调用AppletContext接口中的showStatus()方法

请求浏览器显示指定的网页:调用AppletContext接口中的showDocument()方法。

6.  applet的HTML标记和属性

n  用于定位的applet属性

⑴    width和height:必要的属性,以象素为单位,设定applet的宽度和高度。

⑵        align:可选的属性,指定applet对齐的方式。

left:       把applet放在网页左边,后面的文本会移至applet的右边。

right:      把applet放在网页右边,后面的文本会移至applet的左边。

bottom:     把applet的底部与当前行文本底部对齐。

top:        把applet的顶部与当前行顶部对齐。

texttop:    把applet的顶部与当前行文本顶部对齐。

middle:     把applet的中部与当前行基线对齐。

absmiddle:  把applet的中部与当前行中部对齐。

baseline:   把applet的底部与当前行基线对齐。

absbottom:  把applet的底部与当前行底部对齐。

⑶vspace和hspace:可选的属性,指定在applet上/下的象素数目(vspace)和applet两边的象素数目(hspace)。

用于编码的applet属性

⑴    code:指定applet类文件的名字。该名字要么是相对于codebase,那么是相对于当前页面。

⑵        codebase:可选的属性,告诉浏览器到哪个文件夹下去寻找类文件。

⑶ archive:可选的属性,列出Java存档文件、包括类文件的文件或者applet须要的其他资源。

(4)object:用来指定applet类文件的另外一个方法。

⑸name:可选的属性,页面脚本编写人员希望赋予applet名字属性,这样,在编写脚本的时候,就能够用为该属性指定的名字来代表这个applet。

附录:AWT动画,还是讨论paint(),update(),repaint()之间的关系

更新显示由一种被称为AWT线程的独立的线程来完毕。这个线程可用来处理与显示更新相关的两种情况。

第一种情况是显露(exposure),它在首次显示时,或在部分显示已被破坏而必须刷新时出现。显示的破坏可能发生在不论什么时刻,因此,我们的程序必须能在随意时刻更新显示。

另外一种情况是在程序重画带有新内容的画面时。这样的重画可能会要求首先擦除原来的图像。

paint(Graphicsg)方法

当组件第一次显示,或受损的部分须要修复时被调用。除非必要,更新不会全然覆盖整个图形区域,而是严格限制在被破坏的范围内。

repaint()方法

对repaint()的调用可通知系统:你想改变显示,于是系统将调用paint()。

update(Graphicsg)方法

repaint()实际上产生了一个调用还有一方法update()的AWT线程。update方法通常清除当前的显示并调用paint()。update()方法能够被改动,比如:为了降低闪烁可不清除显示而直接调用paint()。

三:Java之Applet的更多相关文章

  1. 20145208 实验三 Java面向对象程序设计

    20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  2. 多线程(三) java中线程的简单使用

    java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依 ...

  3. Android JNI学习(三)——Java与Native相互调用

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  4. 实验三 Java基本程序设计(2)

                                             实验三 Java基本程序设计(2)                                           ...

  5. JAVA card 应用开发(三) 把APPLET(CAP文件)装载到卡片

    依据前面两篇博文.我们能够在Eclipse上建立好Applet.而且能够有多个AID.能够选择不同的应用. 那么,以上我们都是基于模拟环境的逻辑,实际上有些函数接口是须要实际的环境.就是说我们须要把A ...

  6. 我的Java之旅 第三课 从Applet到JSP

    一.Applet   Applet是一种特殊的Java程序,它本身不能单独运行(因为本身没有main()),需要嵌入在一个HTML文件中,借助浏览器或者appletviewer来解释执行.   App ...

  7. java提高篇(三)-----java的四舍五入

    Java小事非小事!!!!!!!!!!!! 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么简单了.在讲解之间我们先看如下一个经典的案例: public stat ...

  8. 实验三 java敏捷开发与XP

    一.实验内容 (一)敏捷开发与XP 软件开发流程的目的是为了提高软件开发.运营.维护的效率,并提高软件的质量.用户满意度.可靠性和软件的可维护性. 光有各种流程的思想是不够的,我们还要有一系列的工具来 ...

  9. Java小应用程序Applet,画布上新建按钮和文本

    <pre name="code" class="java">package com.hx; import java.applet.*; import ...

随机推荐

  1. VC使用ADO连接远程oracle数据库

    _ConnectionPtr pConn;//连接对像 _RecordsetPtr pRect;//记录集对象 _CommandPtr  pCmd;//命令对象 pRect.CreateInstanc ...

  2. Mahout快速入门教程 分类: B10_计算机基础 2015-03-07 16:20 508人阅读 评论(0) 收藏

    Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...

  3. webuploader 小demo

    页面写法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  4. boost::any的一般使用方法

    01.#include <iostream>    02.#include <list>    03.#include <boost/any.hpp>    04. ...

  5. JDBC之一:JDBC快速入门 分类: B1_JAVA 2014-02-19 14:49 745人阅读 评论(0) 收藏

      (1)下载Oracle的JDBC驱动,一般放在$ORACLE_HOME/jdbc/lib目录,关于驱动的版本请见: http://elf8848.iteye.com/blog/811037     ...

  6. WP8.1:onedrive操作

    小梦今天给大家分享一下windows phone 8.1开发 onedrive中的一些操作: Windows phone 8.1 中 onedrive 登录 Windows phone 8.1 中 o ...

  7. 监控tcp,占用端口---netstat命令

    netstat命令监控tcp,占用端口等等  netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息,语 法:netstat [ ...

  8. [React Native] Writing Platform-Specific Components for iOS and Android in React Native

    Learn to write components that render differently on iOS and Android, but present the same API. Firs ...

  9. oracle11g 在azure云中使用rman进行实例迁移

    1,開始备份 备份脚本rman_full_backup.sh内容例如以下: #!/bin/sh export DATE=`date +%F` export BACK_DIR='/backupdisk/ ...

  10. Nginx与真实IP

    配置了Nginx,Tomcat中的Web程序,获得的ip一直是"127.0.0.1",比较纳闷.获得远程ip,已经判断了很多情况,为什么会这样呢? 正解 proxy_set_hea ...