(第24讲)java小程序——Applet

来源:互联网 发布:淘宝催好评短信模板 编辑:程序博客网 时间:2024/05/17 01:10

Java分为2类程序,分别是Application(Java应用程序)和Applet(Java小程序)。

Application是指在计算机操作系统中运行的程序。用java创建应用程序与其他任何计算机语言创建应用程序相似,这些应用程序可以基于GUI或命令行界面。

Applet是为了在Internet上工作而特别创建的java小程序,通过支持java的浏览器运行,applet可以使用任何java开发工具创建,但必须包含或嵌入到网页中,当网页显示在浏览器上后,applet就被加载并执行。

Applet的基本工作原理:

作为解释型语言,java语言的字节码程序需要一个专门的解释器来执行它,对于Application来说,这个解释器就是独立的软件,如JDK中的java.exe(exe是execute的缩写,可执行的意思,扩展名为exe的文件是指可执行的程序,不需要用其它软件打开,双击即可运行)。对于Applet来说,这个解释器就是Internet的浏览器软件,更确切的说是兼容java语言的Internet浏览器。

Applet的工作原理是:将编译好的小程序字节码文件,即.class文件保存在特定的WWW的服务器上,在同一个或另一个WWW服务器上保存着嵌入有该字节码文件名的HTML文件。当某一个浏览器向服务器请求下载嵌入了小程序的HTML文件时,该文件从WWW服务器上下载到客户端,由WWW浏览器解释HTML文件中的各种标记,将文件中的信息以一定的格式显示在用户屏幕上。当浏览器遇到HTML文件中嵌入有小程序的标记时,浏览器会根据这个小程序的名字和位置自动把字节码文件从WWW服务器上下载到本地,并利用浏览器本身拥有的java解释器直接执行该字节码文件。从某种意义上来讲,小程序有些类似于组件。

Applet的生命周期:

在Java Applet的生命周期中,一般有四种状态(初始态、启动态、暂停态和消亡态)和四个方法:init()、start()、stop()和destroy()。这里我介绍五个成员方法,在前面四个的基础上添加一个paint()。

1. init()方法——初始状态

当创建Java Applet且第一次使用支持Java的浏览器载入时,就会执行init()方法。在Java Applet生命周期中,该方法只执行一次,因此可以利用这一点在init()方法中进行一些只需执行一次的初始化操作,例如对变量的初始化等。

2. start()方法——启动状态

调用完init()方法后,系统将自动调用start()方法。当用户离开包含Applet的主页后又再返回时,或者当浏览器从图标状态恢复为窗口时,系统都会自动再执行一遍start()方法。

和init()方法不同,start()方法在Applet的生命周期中被多次调用,该方法是Applet的主体。在start()方法中,可以执行一些任务,或者是启动相关的线程来执行任务,如循环播放歌曲等。

3.paint()方法——运行状态

用来绘制Applet的图形界面。当需要刷新Applet的图形界面时,一般会调用该成员方法。例如:Applet在刚启动之后或者当窗口大小发生变化时,一般都会调用该类java.applet.Applet的成员方法paint。

4. stop()方法——暂停状态

和star()方法相对应,当浏览器窗口失去焦点变为不活动状态、切换到其他网页浏览或是关闭浏览器时,需要停止小程序的运行,此时系统会自动调用stop()方法以暂停小程序的运行,因此该方法也是可以被多次调用的。

stop()方法起到这样的作用:当用户在当前时刻并不十分关注Applet时,起到暂停小程序的运行并暂时释放小程序所占用的资源的作用,这样就可以提高系统的运行速度,而且系统会自动调用该方法,并不需要人为干预。倘若编写的Applet中不涉及动画等多媒体,一般不必重写该方法。

5.destroy()方法——结束状态

当用户退出浏览器或关闭Applet时,由浏览器或 applet viewer 调用destroy()方法来完成一些释放资源。关闭连接之类的操作。如果在关闭时,Applet的运行状态不是暂停状态,则会先调用stop方法,在调用destroy方法。

Application与Applet区别:

1、  运行方式不同

Applet程序不能单独运行,必须依附于网页并嵌入其中,通过支持java的浏览器来空值执行。而Application是完整的程序,能够独立运行。

2、  运行工具不同

运行Applet程序的解释器不是独立的软件,而是嵌在浏览器中作为浏览器软件的一部分。APPlication被编译之后,用普通的java解释器就可以使其边解释边执行,而Applet必须通过网络浏览器或者Applet Viewer才能执行,这里的网络浏览器或者Applet Viewer扮演的就是JVM的角色。其中jdk文件夹中的bin文件中的常用命令appletviewer.exe就是小程序浏览器,用来执行嵌入在HTML文件中的java小程序的java浏览器。

3、  程序结构不同

每个Application必定含有一个并且仅含有一个main方法,程序执行时,首先寻找main方法,并以此为入口点开始运行,含有main方法的类,通常被称为主类,也就是说Application都含有一个主类,这个主类可以不是public修饰的。如果是给外部程序调用,必须使用public,但是如果是你包中的内部程序调用,则可以不必指定为public,例如不指定访问修饰符时(缺省访问修饰符),则同一个包内的其它类可以调用到它。而Applet程序必须是一个继承JApplet或Applet的子类,且该类必须是public的,但是主类中没有含有main方法,这也正是Apple程序不能独立运行的原因。

4、  界面利用方式不同

Applet程序可以直接利用浏览器或Applet Viewer提供的图形用户界面,而Application则必须另外编写专门的代买来创建自己的图形用户界面。

5、  读写操作不同

Application可以设计成能进行各种操作的程序,包括读写文件的操作,而Applet不能对站点的磁盘文件进行读写操作,但是引入Applet可以使Web界面具有动态多媒体效果和可交互性。如果没有得到许可,Applet不能读取主机的各种信息或未授权的数据,不能随意访问主机内存,也不能将数据写到主机的硬盘上,不能加载本地化的方法和库,这保证了Applet具有良好的网络安全特性。

Applet运行方式:

1、  用cmd运行:

假设源文件为HelloApplet.java,则用命令提示符运行步骤如下:

编译:javac HelloApplet.java

执行:appletviewer HelloApplet.html

2、用集成开发工具(IDK)——eclipse运行java小程序

直接在编写好的java源文件处点击运行即可(点击Run-->Run即可运行JavaApplet程序。)

Applet父类:

Java.lang.Object

Java.awt.Component

Java.awt.Container

Java.awt.Panel

Java.applet.Applet:默认的布局方式是FlowLayout

Javax.swing.JApplet:默认的布局方式是BorderLayout

其中向Java.applet.Applet容器添加组件的语句格式为:

theApplet.add(Component awtComponent);//其中theApplet是Java.applet.Applet类型的对象

可以直接向Java.applet.Apple容器添加组件

向Javax.swing.JApplet容器添加组件的语句格式为:

theJApplet.getContentPane().add(Component  swingComponent);

//其中theApplet是Javax.swing.JApplet类型的对象

不可以直接向Javax.swing.JApplet容器添加组件,先获得容器内容窗格的引用,再向该窗格添加组件。

Applet网页标记:

将Applet嵌入到网页的关键字是APPLET,他常常以<applet>开始,以</applet>结束。另外还有object网页标记和embed网页标记。

1、  applet网页标记

<applet  code=”以class为后缀的文件名”  width=”宽度值”  height=”高度值” 

codebase=”路径名”> Java小程序的提示说明信息

</applet>

2、object网页标记

<object  codetype=”application/java”  classid=”java插件classid”  width=”宽度值”  height=”高度值”  >

<param name =”code” value=”以class为后缀的文件名”>

Java小程序的提示说明信息</object>

2、  embed网页标记

<embed code=”以class 为后缀的文件名”  width=”宽度值”  height=”高度值” 

Type=”application /x-java-applet;version=版本号”>

<noembed>

Java小程序的提示说明信息

</noembed>

</embed>

即是Application又是Applet的java程序是存在的
基本思路是:从类java.applet.Applet中派生出子类,并让该子类含有main方法

在图形窗口中只能使用drawString()方法才能在图形窗口中输出文字,而不能使用System.out.println()语句输出文本字符,因为在程序中使用System.out.println()语句输出的字符串会显示在命令行窗口中。

Applet 传递参数问题

利用HTML往Applet中传递参数:HTML中不区分大小写。

<applet code="Clock" width=50 height=50>

 <param name=Colorvalue="blue">

 </applet>

那么调用getParameter("Color")将返回值 "blue"。value指参数的值;如果未设置,则返回null。


 

0 0