Java Applet 学习笔记(详细版)
Java Applet作为被淘汰的技术,因为二级会考只能被迫了解一下了,不得不说GUI页面其实也挺好看的。
一、Java Applet
1. 定义
Java Applet 是一种使用 Java 编程语言编写的小程序,它可以嵌入到网页中运行,通过浏览器的 Java 插件(Java Plug-in)或 Java 运行时环境(JRE)来执行。Applet 能够提供丰富的图形用户界面(GUI)、动画效果以及交互功能,增强网页的动态性和用户体验。
2. 与 Java 应用程序的区别
-
运行环境 :Java 应用程序通常运行在本地操作系统环境中,需要用户手动启动;而 Java Applet 嵌入在网页中,通过浏览器加载并运行。
-
安全限制 :为了保护用户计算机的安全,Java Applet 运行在一个沙箱(sandbox)环境中,受到严格的访问限制,例如不能直接访问本地文件系统、不能与本地网络进行通信等;Java 应用程序则没有这些限制,可以自由访问本地资源。
-
部署方式 :Java 应用程序需要将可执行文件(.exe)分发给用户安装运行;Java Applet 则是将编译后的字节码文件(.class)嵌入到 HTML 页面中,用户只需通过浏览器访问网页即可运行。
二、Java Applet 的运行机制
1. 浏览器加载
当用户使用浏览器访问包含 Java Applet 的网页时,浏览器会检测到 HTML 页面中的 <applet>
标签或 <object>
标签(用于嵌入 Applet)。浏览器会根据标签中的参数(如 Applet 的类名、代码路径、宽度、高度等)来加载 Applet。
2. 下载 Applet 代码
浏览器会从服务器下载 Applet 的字节码文件(.class),以及可能需要的其他资源文件(如图像、音频等)。下载完成后,浏览器会将字节码文件交给 Java 插件或 JRE 进行处理。
3. 执行 Applet
Java 插件或 JRE 会创建一个安全的沙箱环境,并在其中加载和执行 Applet 的字节码文件。Applet 的生命周期方法(如 init()
、start()
、stop()
、destroy()
)会被依次调用,以完成 Applet 的初始化、启动、停止和销毁过程。
三、Java Applet 的开发环境搭建
1. 安装 Java 开发工具包(JDK)
-
从 Oracle 官方网站下载适合自己操作系统的 JDK 安装包,并按照提示进行安装。
-
安装完成后,配置系统的环境变量,将 JDK 的
bin
目录添加到系统的PATH
变量中,以便在命令行中能够直接使用 Java 编译器(javac
)和运行时工具(java
)。
2. 选择文本编辑器或集成开发环境(IDE)
-
可以使用简单的文本编辑器(如 Notepad、Notepad++)编写 Java Applet 的代码;也可以使用专业的 IDE(如 Eclipse、IntelliJ IDEA),这些 IDE 提供了代码高亮、自动补全、调试等功能,能够提高开发效率。
3. 安装浏览器和 Java 插件
-
安装常用的浏览器(如 Chrome、Firefox、IE 等),并确保浏览器支持 Java 插件。需要注意的是,随着技术的发展,许多现代浏览器已经逐渐停止对 Java 插件的支持,因此在开发和测试 Java Applet 时,可能需要使用较旧版本的浏览器。
-
从 Oracle 官方网站下载并安装 Java 插件,确保浏览器能够正确加载和运行 Java Applet。
四、Java Applet 的基本结构
1. 导入必要的类
import java.applet.Applet;
import java.awt.Graphics;
-
java.applet.Applet
是 Java Applet 的核心类,它定义了 Applet 的基本行为和生命周期方法。 -
java.awt.Graphics
是用于绘图的类,Applet 可以通过继承该类来实现绘图功能。
2. 继承 Applet 类
public class MyFirstApplet extends Applet {
// Applet 的代码
}
通过继承 Applet
类,可以使用 Applet 提供的各种方法和功能,并实现自己的业务逻辑。
3. 重写生命周期方法
public void init() {
// 初始化操作,如设置 Applet 的大小、颜色等
}
public void start() {
// 启动操作,如开始动画或声音播放等
}
public void stop() {
// 停止操作,如暂停动画或声音播放等
}
public void destroy() {
// 销毁操作,如释放资源等
}
-
init()
方法在 Applet 被加载到浏览器时调用一次,用于进行初始化操作。 -
start()
方法在 Applet 被启动时调用,当 Applet 从停止状态变为运行状态时也会调用该方法。 -
stop()
方法在 Applet 被停止时调用,当 Applet 从运行状态变为停止状态时也会调用该方法。 -
destroy()
方法在 Applet 被销毁时调用一次,用于释放资源。
4. 实现绘图功能
public void paint(Graphics g) {
// 绘图操作,如绘制文本、图形等
g.drawString("Hello, Applet!", 50, 50);
g.drawRect(100, 100, 200, 100);
}
paint()
方法是 Applet 绘图的核心方法,通过该方法可以使用 Graphics
对象提供的各种绘图方法来绘制文本、图形等内容。
五、Java Applet 的示例代码
1. 绘制简单图形的 Applet
import java.applet.Applet;
import java.awt.Graphics;
public class SimpleGraphicsApplet extends Applet {
public void paint(Graphics g) {
// 绘制矩形
g.drawRect(50, 50, 100, 100);
g.fillRect(150, 50, 100, 100);
// 绘制椭圆
g.drawOval(50, 150, 100, 50);
g.fillOval(150, 150, 100, 50);
// 绘制文本
g.drawString("Hello, Applet!", 50, 250);
}
}
-
该 Applet 在页面上绘制了一个矩形、一个填充矩形、一个椭圆、一个填充椭圆以及一段文本。
-
将该 Applet 的代码保存为
SimpleGraphicsApplet.java
文件,使用 Java 编译器编译后生成SimpleGraphicsApplet.class
文件,然后将该文件嵌入到 HTML 页面中即可在浏览器中运行。
2. 实现交互功能的 Applet
import java.applet.Applet;
import java.awt.Button;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class InteractiveApplet extends Applet implements ActionListener {
private Button myButton;
public void init() {
// 创建按钮并添加到 Applet 中
myButton = new Button("Click Me");
add(myButton);
// 为按钮添加事件监听器
myButton.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
// 按钮点击事件处理
repaint();
}
public void paint(Graphics g) {
super.paint(g); // 调用父类的 paint() 方法,绘制 Applet 的边框等
g.drawString("Button was clicked!", 50, 50);
}
}
-
该 Applet 创建了一个按钮,当用户点击按钮时,会在页面上显示一段文本 “Button was clicked!”。
-
在
init()
方法中创建了按钮并添加到 Applet 中,同时为按钮添加了事件监听器。 -
在
actionPerformed()
方法中处理按钮点击事件,调用repaint()
方法重新绘制 Applet。 -
在
paint()
方法中绘制了文本,显示按钮被点击的信息。
3. 动画效果的 Applet
import java.applet.Applet;
import java.awt.Graphics;
public class AnimationApplet extends Applet {
private int x = 0;
private int y = 0;
public void init() {
// 设置 Applet 的大小
resize(400, 300);
}
public void start() {
// 启动动画
new Thread(new Runnable() {
public void run() {
while (true) {
x++;
y++;
repaint();
try {
Thread.sleep(50); // 控制动画速度
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
public void paint(Graphics g) {
super.paint(g);
g.drawString("Animation!", x, y);
}
}
-
该 Applet 实现了一个简单的动画效果,文本 “Animation!” 在页面上不断移动。
-
在
start()
方法中创建了一个新的线程,用于控制动画的运行。 -
在线程中不断更新文本的位置(
x
和y
坐标),并调用repaint()
方法重新绘制 Applet。 -
在
paint()
方法中绘制了文本,显示动画效果。
六、Java Applet 的生命周期方法详解
1. init() 方法
-
作用 :在 Applet 被加载到浏览器时调用一次,用于进行初始化操作,如设置 Applet 的大小、颜色、字体等,以及创建和初始化 Applet 中的组件(如按钮、文本框等)。
-
示例代码 :
public void init() { // 设置 Applet 的大小 resize(400, 300); // 设置 Applet 的背景颜色 setBackground(Color.WHITE); // 创建按钮并添加到 Applet 中 Button myButton = new Button("Click Me"); add(myButton); }
2. start() 方法
-
作用 :在 Applet 被启动时调用,当 Applet 从停止状态变为运行状态时也会调用该方法。通常用于启动动画、声音播放等操作。
-
示例代码 :
public void start() { // 启动动画 new Thread(new Runnable() { public void run() { // 动画代码 } }).start(); }
3. stop() 方法
-
作用 :在 Applet 被停止时调用,当 Applet 从运行状态变为停止状态时也会调用该方法。通常用于暂停动画、声音播放等操作。
-
示例代码 :
public void stop() { // 暂停动画 }
4. destroy() 方法
-
作用 :在 Applet 被销毁时调用一次,用于释放资源,如关闭数据库连接、释放内存等。
-
示例代码 :
public void destroy() { // 释放资源 }
七、Java Applet 的优缺点
1. 优点
-
跨平台性 :Java Applet 是基于 Java 语言开发的,具有良好的跨平台性,可以在不同的操作系统和浏览器上运行。
-
丰富的图形用户界面 :Java Applet 可以提供丰富的图形用户界面,包括各种控件(如按钮、文本框、列表框等)、图形绘制、动画效果等,增强网页的交互性和用户体验。
-
安全性 :Java Applet 运行在一个沙箱环境中,受到严格的访问限制,能够有效防止恶意代码对用户计算机的攻击。
2. 缺点
-
性能问题 :由于 Java Applet 需要在浏览器中运行,受到浏览器性能和网络带宽的限制,可能会出现性能问题,如加载速度慢、运行卡顿等。
-
兼容性问题 :随着浏览器技术的不断发展,许多现代浏览器已经逐渐停止对 Java 插件的支持,导致 Java Applet 的兼容性问题日益突出。
-
开发和调试困难 :Java Applet 的开发和调试相对复杂,需要使用特定的开发工具和调试方法,对开发人员的技术水平要求较高。
八、Java Applet 的时代背景与发展现状
1. 时代背景
Java Applet 在 20 世纪 90 年代末和 21 世纪初得到了广泛的应用,当时互联网技术刚刚兴起,网页的功能相对简单,Java Applet 为网页提供了丰富的交互功能和动态效果,成为当时网页开发的重要技术之一。
2. 发展现状
随着互联网技术的不断发展,特别是 HTML5、CSS3 和 JavaScript 等技术的兴起,网页的功能和性能得到了极大的提升,Java Applet 的应用逐渐减少。许多现代浏览器已经停止对 Java 插件的支持,导致 Java Applet 无法在这些浏览器上运行。因此,Java Applet 已经逐渐退出了历史舞台,被更先进的网页开发技术所取代。