杰瑞科技汇

java应用程序和小应用程序的区别

核心概念:一句话概括

  • 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 方法
用户界面 使用 SwingJavaFX 等图形用户界面工具包来创建窗口、按钮、文本框等,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) 方法作为程序的入口。

java应用程序和小应用程序的区别-图1
(图片来源网络,侵删)
// 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>

为什么小应用程序会消失?

  1. 安全漏洞:Applet的沙箱模型曾多次被攻破,恶意Applet可以越狱并执行恶意代码,对用户构成严重安全威胁。
  2. 性能问题:启动一个完整的JVM来运行一个小小的网页组件,开销巨大,远不如原生JavaScript。
  3. 用户体验差:用户需要手动安装并启用Java插件,过程繁琐,且浏览器经常会弹出安全警告,打断浏览体验。
  4. 技术迭代:随着HTML5、CSS3和JavaScript(特别是JavaScript引擎如V8的飞速发展)的成熟,网页本身已经能够实现过去Applet才能完成的复杂动画、游戏和交互功能,且无需任何插件,更加轻量和安全。
Java 应用程序 Java 小应用程序
形象比喻 独立的房子 房子里的一个租客/客人
角色 主角 配角
时代 现代Java开发的现在和未来 Java历史上的过去,已退出历史舞台

对于现代Java开发者来说,你几乎只会接触到Java应用程序,了解小应用程序主要是为了学习Java的历史和演进过程,如果你在学习Java时遇到Applet,可以将其作为一个历史概念来理解,而不必花时间去学习如何实际开发它。

java应用程序和小应用程序的区别-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇