2017.2.5 Java有感6.5(Applet)

本文介绍了Java Applet的基本概念,包括其生命周期、与普通Java应用程序的区别、安全限制等,并详细解释了Applet类加载器和安全管理器的工作原理。
什么是Applet?
java applet是能够被包含在HTML页面中并且能被启用了java的客户端浏览器执行的程序。Applet主要用来创建动态交互的web应用程序。

解释一下Applet的生命周期
applet可以经历下面的状态:
Init:每次被载入的时候都会被初始化。
Start:开始执行applet。
Stop:结束执行applet。
Destroy:卸载applet之前,做最后的清理工作。

当applet被载入的时候会发生什么?
首先,创建applet控制类的实例,然后初始化applet,最后开始运行。

Applet和普通的Java应用程序有什么区别?
applet是运行在启用了java的浏览器中,Java应用程序是可以在浏览器之外运行的独立的Java程序。但是,它们都需要有Java虚拟机。
进一步来说,Java应用程序需要一个有特定方法签名的main函数来开始执行。Java applet不需要这样的函数来开始执行。
最后,Java applet一般会使用很严格的安全策略,Java应用一般使用比较宽松的安全策略。

Java applet有哪些限制条件?
主要是由于安全的原因,给applet施加了以下的限制:
applet不能够载入类库或者定义本地方法。
applet不能在宿主机上读写文件。
applet不能读取特定的系统属性。
applet不能发起网络连接,除非是跟宿主机。
applet不能够开启宿主机上其他任何的程序。

什么是不受信任的applet?
不受信任的applet是不能访问或是执行本地系统文件的Java applet,默认情况下,所有下载的applet都是不受信任的。

从网络上加载的applet和从本地文件系统加载的applet有什么区别?
当applet是从网络上加载的时候,applet是由applet类加载器载入的,它受applet安全管理器的限制。
当applet是从客户端的本地磁盘载入的时候,applet是由文件系统加载器载入的。
从文件系统载入的applet允许在客户端读文件,写文件,加载类库,并且也允许执行其他程序,但是,却通不过字节码校验。

applet类加载器是什么?它会做哪些工作?
当applet是从网络上加载的时候,它是由applet类加载器载入的。类加载器有自己的java名称空间等级结构。类加载器会保证来自文件系统的类有唯一的名称空间,来自网络资源的类有唯一的名称空间。
当浏览器通过网络载入applet的时候,applet的类被放置于和applet的源相关联的私有的名称空间中。然后,那些被类加载器载入进来的类都是通过了验证器验证的。验证器会检查类文件格式是否遵守Java语言规范,确保不会出现堆栈溢出(stack overflow)或者下溢(underflow),传递给字节码指令的参数是正确的。

applet安全管理器是什么?它会做哪些工作?
applet安全管理器是给applet施加限制条件的一种机制。浏览器可以只有一个安全管理器。安全管理器在启动的时候被创建,之后不能被替换覆盖或者是扩展。
<think>我们正在处理用户关于Java Applet的查询。用户要求查找与Java Applet相关的技术信息,特别是开发指南或使用说明。 根据提供的引用,我们有两个参考: 引用[1]:主要讨论将Java应用转换为applet的步骤,包括配置、参数传递、通信机制和调试技巧。 引用[2]:主要讨论在资源受限环境下(如Java Card)的优化技巧,包括使用基本类型、常量、避免局部对象、重用变量等。 注意:用户的问题是关于Java Applet的,而引用[2]的内容似乎更偏向于Java Card(智能卡应用)的优化,这与传统的Java Applet(在浏览器中运行)有所不同。但我们可以从中提取与Java Applet相关的优化建议,因为Applet也运行在受限环境(浏览器沙箱)中。 我们需要组织一个清晰的回答,包括以下方面: 1. Java Applet的基本概念和开发流程。 2. 如何将Java应用转换为Applet(参考引用[1])。 3. Applet的配置和参数传递(参考引用[1])。 4. Applet与浏览器的通信(参考引用[1])。 5. 调试技巧(参考引用[1])。 6. 性能优化建议(参考引用[2],但需注意区分Java Card和Java Applet的环境差异,只提取通用部分)。 由于引用[2]中的优化建议是针对Java Card的,其中一些建议(如避免创建对象、使用基本类型等)在Java Applet中也可能适用,因为Applet同样需要注意资源使用。但要注意,现代浏览器已经不再支持Applet,因此这些信息可能用于维护旧系统。 回答结构: 1. 简介:Java Applet是什么,以及它的现状(已过时,但可能用于维护旧系统)。 2. 开发指南:如何编写一个Applet,包括继承Applet类,生命周期方法等。 3. 转换应用为Applet:参考引用[1]的步骤。 4. 配置和参数传递:使用HTML标签和属性,以及<param>标签传递参数。 5. 通信机制:Applet与浏览器(JavaScript)的通信。 6. 调试技巧:避免频繁重启浏览器的方法(例如,使用AppletViewer工具或浏览器开发者工具)。 7. 优化建议:根据引用[2]提取适用于Applet的优化点(如使用常量、重用变量、减少对象创建等)。 注意:由于引用[2]是针对Java Card的,我们在引用时需谨慎,只选择适用的部分。 最后,按照要求生成相关问题。 开始回答:</think>### Java Applet开发指南与技术要点 Java Applet是一种在Web浏览器中运行的小型Java程序,常用于实现动态网页功能。以下是核心开发指南和技术要点: #### 一、开发基础 1. **Applet类继承** 所有Applet必须继承`java.applet.Applet`类,并实现生命周期方法: ```java import java.applet.*; import java.awt.*; public class MyApplet extends Applet { public void init() { /* 初始化 */ } public void start() { /* 启动 */ } public void paint(Graphics g) { /* 绘制界面 */ } public void stop() { /* 暂停 */ } public void destroy() { /* 销毁 */ } } ``` 2. **HTML嵌入配置** 通过`<applet>`标签嵌入HTML,指定尺寸和参数: ```html <applet code="MyApplet.class" width="300" height="200"> <param name="fontSize" value="14"> </applet> ``` #### 二、关键技术实现 1. **参数传递机制** 使用`getParameter()`获取HTML传递的参数: ```java public void init() { String fontSize = getParameter("fontSize"); // 使用参数配置 } ``` 2. **浏览器通信** - **JavaScript调用Applet**: ```javascript document.applets[0].appletMethod(); ``` - **Applet调用JavaScript**: 使用`netscape.javascript.JSObject`类(需导入插件库)。 3. **调试技巧** - 使用`AppletViewer`工具替代浏览器调试,避免频繁重启[^1]。 - 启用Java控制台日志(通过系统设置启用)。 #### 三、性能优化建议 针对资源受限环境(如早期浏览器沙箱): 1. **内存管理** - 避免创建冗余对象,优先使用基本类型[^2]。 - 重用局部变量减少内存分配。 ```java // 优化前 for(int i=0; i<1000; i++) { String temp = new String("data"); } // 优化后 String reusable = "data"; for(int i=0; i<1000; i++) { // 复用变量 } ``` 2. **执行效率** - 使用`static final`定义常量提升访问速度[^2]。 - 用`switch`替代多层`if-else`结构。 - 减少EEPROM写入(适用于智能卡环境)。 3. **代码精简** - 删除未使用的方法和变量[^2]。 - 合并算术语句减少中间指令: ```java // 合并前 a = b + c; d = a * e; // 合并后 d = (b + c) * e; ``` #### 四、安全限制与现状 - **沙箱限制**:禁止访问本地文件系统、网络通信仅限来源服务器。 - **现代替代方案**:由于浏览器已弃用NPAPI插件,推荐转为: - Java Web Start(桌面应用部署) - HTML5/JavaScript实现动态功能 > **注意事项**:现代浏览器已不再支持Applet,本指南适用于遗留系统维护或特殊环境(如智能卡开发)[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值