核心概念:一句话概括
- Java应用程序 (Java Application / Standalone Application):就是我们平时最常见的、独立运行的桌面或服务器程序,它像一个完整的“独立王国”,拥有自己的主入口和生命周期,由Java虚拟机直接启动和管理。
- Java小应用程序 (Java Applet):是一种被嵌入在HTML网页中、由Web浏览器运行的Java程序,它更像一个“访客”或“插件”,其生命周期受浏览器和网页的控制,主要用于在网页上实现丰富的交互式动画和功能。
主要区别详解
| 特性/维度 | Java 应用程序 | Java 小应用程序 |
|---|---|---|
| 运行环境 | 独立运行,在自己的JVM(Java虚拟机)实例中启动,可以是桌面操作系统(Windows, macOS, Linux)或服务器。 | 嵌入在Web浏览器中运行,需要浏览器插件(如Java Plugin)来启动一个JVM来执行它。 |
| 启动方式 | 通过命令行 (java YourClassName) 或双击可执行的jar包来启动,有一个明确的 main 方法作为程序入口。 |
通过HTML标签 <applet> 或 <object> 嵌入到网页中,当用户访问该网页时,浏览器会自动下载并启动它。没有 main 方法。 |
| 用户界面 | 使用 Swing 或 JavaFX 等图形用户界面工具包来创建窗口、按钮、文本框等,UI是程序自身的一部分。 | 使用 AWT (Abstract Window Toolkit) 的子集来创建界面,AWT组件被绘制在浏览器提供的“画布”上,而不是独立的窗口。 |
| 安全模型 | 拥有完整的系统权限,可以读写本地文件系统、访问网络、执行本地命令等,这和普通桌面程序一样。 | 沙箱安全模型,为了安全,小应用程序被限制在一个“沙箱”中,默认情况下它不能访问本地文件系统、不能执行本地程序、不能与除其来源服务器外的其他服务器通信,除非用户明确授予权限(签名Applet)。 |
| 生命周期 | 由程序自己控制,从 main 方法开始,直到程序正常退出或发生未捕获的异常。 |
由浏览器和网页控制,生命周期方法包括 init(), start(), stop(), destroy(),当用户离开包含Applet的网页时,stop() 会被调用;当浏览器关闭时,destroy() 会被调用。 |
| 主要用途 | - 桌面应用程序 (如OpenOffice, IntelliJ IDEA) - 服务器端应用 (如Tomcat, JBoss) - 企业级应用 - 移动应用 (通过Android SDK,本质上是Java应用的一种) |
- 在网页上显示交互式动画和游戏 - 提供复杂的科学计算可视化 - 创建交互式教学工具 |
| 当前状态 | 仍然是目前Java开发的主流和核心,Java EE/Spring Boot等现代技术都是构建在Java应用程序之上的。 | 已过时,被废弃,由于安全漏洞、性能问题以及现代Web技术(HTML5, CSS3, JavaScript)的崛起,Oracle已在Java 9中移除了Applet API,并在Java 11中彻底移除了Java插件,主流浏览器早已不再支持。 |
一个简单的代码示例对比
Java 应用程序
它必须有一个 public static void main(String[] args) 方法作为程序的入口。

// HelloWorldApplication.java
public class HelloWorldApplication {
public static void main(String[] args) {
System.out.println("Hello, World from a Java Application!");
// 可以创建GUI窗口
// javax.swing.JOptionPane.showMessageDialog(null, "Hello Application!");
}
}
Java 小应用程序
它没有 main 方法,而是重写 init(), paint() 等方法。
// import java.applet.Applet;
// import java.awt.Graphics;
//
// // HelloWorldApplet.java
// public class HelloWorldApplet extends Applet {
// public void paint(Graphics g) {
// g.drawString("Hello, World from an Applet!", 50, 25);
// }
// }
对应的HTML文件 (applet_demo.html):
<html>
<head>Applet Demo</title>
</head>
<body>
<h1>My First Applet</h1>
<applet code="HelloWorldApplet.class" width="300" height="100">
Your browser does not support Java applets.
</applet>
</body>
</html>
为什么小应用程序会消失?
- 安全漏洞:Applet的沙箱模型曾多次被攻破,恶意Applet可以越狱并执行恶意代码,对用户构成严重安全威胁。
- 性能问题:启动一个完整的JVM来运行一个小小的网页组件,开销巨大,远不如原生JavaScript。
- 用户体验差:用户需要手动安装并启用Java插件,过程繁琐,且浏览器经常会弹出安全警告,打断浏览体验。
- 技术迭代:随着HTML5、CSS3和JavaScript(特别是JavaScript引擎如V8的飞速发展)的成熟,网页本身已经能够实现过去Applet才能完成的复杂动画、游戏和交互功能,且无需任何插件,更加轻量和安全。
| Java 应用程序 | Java 小应用程序 | |
|---|---|---|
| 形象比喻 | 独立的房子 | 房子里的一个租客/客人 |
| 角色 | 主角 | 配角 |
| 时代 | 现代Java开发的现在和未来 | Java历史上的过去,已退出历史舞台 |
对于现代Java开发者来说,你几乎只会接触到Java应用程序,了解小应用程序主要是为了学习Java的历史和演进过程,如果你在学习Java时遇到Applet,可以将其作为一个历史概念来理解,而不必花时间去学习如何实际开发它。

