Java应用技巧
1. Applet 与 Application 合 并
--------------------------------------------------------------------------------
---- Java 是 一 种 建 立 分 布 应 用 程 序 的 技 术 。 它 是 网 络 编
程 的 最 优 秀 工 具 。 使 Internet 的 应 用 从 通 讯 工 具 扩 展 到 能
够 运 行 成 熟 应 用 程 序 的 网 络 。
---- Java 程 序 有 两 种 类 型:Applet 和 Application 。 简 单 的 讲 ,
Applet 就 是 嵌 入Web 文 档 的 程 序 , 而Application 则 是 所 有 其 它
类 型 的 程 序 。
---- 就Java 而 言 ,Applet 与 Application 的 大 小 和 复 杂 性 都 没 有
限 制 , 但 是 因 为Applet 主 要 是 用 于 网 络 通 讯 , 由 于 通 讯
速 度 有 限 , 下 载 时 间 较 长 , 因 而 Applet 一 般 来 说 规 模 较
小 , 而 对 于Application 则 无 此 顾 虑 。
---- Applet 与 Application 之 间 的 技 术 差 别 来 源 于 其 运 行 环 境
的 差 别 。 Applet 需 要 来 自 浏 览 器 的 大 量 信 息: 浏 览 器 客
户 机 的 位 置 和 大 小 、 嵌 入 主HTML 文 档 的 参 数 、 初 始 化 过
程(init) 、 启 动 过 程(start) 、 停 止 过 程(stop) 、 终 止 过 程(de
story) 、 绘 图 过 程(paint) 等 等 , 而Application 则 相 对 要 简 单
得 多 , 它 来 自 外 部 世 界 的 唯 一 输 入 就 是 命 令 行 参 数 。
---- 对 于 Applet 必 须 做 为java.applet.Applet 的 子 类 , 而Applicat
ion 则 必 须 有 一 个 公 共 的 方 法 main( ) 。 其 次 , 两 者 的 主 线
程 是 不 同 的 ,Applet 是 由 方 法 init( ) 来 对applet 进 行 初 始 化
的 , 而Application 则 由 方 法main( ) 来 开 始 运 行 程 序 的 。 一
般 地 ,Java 的 Applet 和 Application 是 完 全 遵 照 以 上 的 原 则 进
行 编 程 的 , 但 是 , 我 们 可 以 运 用 技 巧 写 出 即 是Applet 又
是 Application 的 程 序 来 。 这 样 , 即 可 以 使 我 们 更 进 一 步 了
解Java 的 内 部 结 构 又 可 以 使 同 一 程 序 运 行 于 不 同 的 运 行
环 境 、 还 可 以 提 高 研 究Java 的 兴 趣 。
---- 例 程 如 下:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Example extends Applet implements
ActionListener{ // #1
public static void main(String[] args){
Frame win=new Frame("Example");
Example example=new Example();
win.add(?enter", example);
example.init(); // #2
win.setSize(600,360);
win.setVisible(true);
}
public void init(){ // #3
Button button;
Label label;
button=new Button(" OK "):
button.setBounds(280,200,100,20);
button.addActionListener(this);
label=new Label();
label.setBounds(260,100,200,20);
add(button);
add(label);
}
public void actionPerformed(ActionEvent e){
Object source=e.getSource();
if(source==button){
label.setText(" It is a example !");
}
}
}
---- 在 程 序 中 的 #1 处 , 必 须 让 程 序 继 承java.applet.Applet 类
这 是 做 为Applet 的 必 要 条 件 , 在 #2 处 , 需 要 生 成 本 类 的
一 个 实 例 example , 通 过 此 实 例 来 调 用init() 方 法 , #3 是
init() 方 法 。
---- 如 果 把 该 程 序 看 作Applet , 它 只 是 覆 盖 了init() 方 法 和a
ctionPerformed( ) 方 法 来 响 应Button 事 件 。 如 果 作 为Application
, 则 由main( ) 方 法 开 始 , 先 生 成 程 序 本 身 的 实 例 将 程 序
加 入 窗 口 , 然 后 调 用init() 方 法 。 编 译 此 程 序 , 即 可 以
在 提 示 下 作 为Application 直 接 运 行 , 又 可 以 作 为Applet 送 入
任 何 浏 览 器 。
2. Java 中 的 发 声 提 示
--------------------------------------------------------------------------------
---- Java 作 为 一 种 网 络 编 程 语 言 , 在 浏 览 器 中 即 可 以 进
行 动 画 演 示 , 也 可 以 播 放 声 音 。 在 人 机 的 交 互 过 程 中 ,
为 了 加 强 效 果 或 起 到 提 示 的 作 用 , 需 要 加 入 声 音 。
---- Java 的 包 java.applet 中 有AudioClip 接 口 , 此 接 口 封 装 有
关 声 音 片 断 的 一 些 常 用 方 法 。 用 法 如 下:
AudioClip audio;
audio=getAudioClip(getCodeBase(),"Hi.au");
audio.play();
---- 第 一 行 生 成 接 口AudioClip 的 一 个 变 量 , 第 二 行 利 用 此
变 量 取 得 声 音 文 件 Hi.au , 此 文 件 与 程 序 本 身 在 同 一 目 录
下,getCodeBase() 方 法 是 用 来 取 得Applet 的class 文 件 的URL 地 址
。 第 三 行 是 播 放 声 音 文 件 。 在Applet 中 利 用 此 用 法 可 在
浏 览 器 中 发 出 声 音 。 那 么 , 在Application 中 是 否 也 可 以 用
此 方 法 来 发 出 声 音 呢 ? 不 可 以 。 因 为 接 口AudioClip 是 在
包 java.applet 中 , 而 此 包 只 适 用 于Applet 。 是 否 可 以 用 其 它
方 法 来 实 现 呢 ? 我 们 可 以 利 用 1 中 的 技 巧 来 编 写 一 个 即
是Applet 又 是 Application 的 程 序 试 试 。 结 果 , 还 是 不 行 。
这 是 因 为play() 方 法 只 能 在Applet 中 实 现 , 对 于Applicationpla
y() 方 法 是 不 能 够 被 调 用 的 。
---- 那 么 , 如 何 在Application 中 实 现 发 声 提 示 呢 ?
---- 记 得 VB 中 有 beep 语 句 来 使 系 统 发 声 器(System Speaker ) 发
声 , 那 么 ,Java 中 也 应 有 类 似 的 方 法 。
---- 在 Java 的 java.awt.Toolkit 类 中 有 方 法beep() 是 来 实 现 这 一
功 能 的 。 类 Toolkit 是 抽 象 类 , 它 是 实 现AWT 的 所 有 工 具 的
父 类 。 Java 中 的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地
, 抽 象 类 可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方
法 来 取 得 此 类 的 替 代 品 。 在 Toolkit 中 是 利 用 getDefaultTool
kit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例: 这 是 一 个 客 户
机/ 服 务 器 的Application 。 当 服 务 器 运 行 时 如 果 有 客 户 机
与 服 务 器 相 连 , 则 服 务 器 会 自 动 发 声 警 报 提 示 服 务 器 端
的 用 户 有 客 户 要 与 自 己 进 行 对 话 。
---- 程 序 如 下:
服 务 器:
import java.util.*;
import java.io.*;
import java.net.*;
import java.awt.*;
public class ServerT{
public static void main(String[] args){
Server server;
String clientRequest;
boolean quit=false;
server=new Server(8001);
while(!quit){
DataInputStream keyboard=new DataInputStream(System.in);
try{
clientRequest=server.in.readLine();
if(clientRequest.trim().equals("CLOSE")){
System.out.println("Client says: "+clientRequest);
System.exit(1);
}
System.out.println("Client says: "+clientRequest);
server.out.println(keyboard.readLine());
}catch(IOException e){
System.out.println("IOException in server.in.readLine()"+e);
System.exit(1);
}
}
}
}
class Server{
private ServerSocket server;
private Socket socket;
public DataInputStream in;
public PrintStream out;
public Server(int port){
try{
server=new ServerSocket(port);
System.out.println("/n
*************************************************");
System.out.println("/n @(#)Net Applecation
Version 1.00 97/12/30 ");
System.out.println(" Copyright (c) 1997
(Lui DongBing) All Rights Reserved.");
System.out.println("/n
***************************************************");
System.out.println("/n Server is: /n "+server);
socket=server.accept();
for(int i=0;I < 260;i++){ // 发 声 提 示
Toolkit.getDefaultToolkit().beep();
}
System.out.println("/n Server is ready ! /n");
in=new DataInputStream(socket.getInputStream());
out=new PrintStream(socket.getOutputStream());
out.println("We connect in "+new Date());
}catch(IOException e){
System.out.println("Server is failied !");
}
}
}
客 户 机 :
import java.util.*;
import java.io.*;
import java.net.*;
public class ClientT{
public static void main(String[] args){
String welcome,response;
Client client;
client=new Client("202.120.80.20",8001); // #1
DataInputStream keyboard=new DataInputStream(System.in);
boolean Bye=false;
while(!Bye){
try{
welcome=client.in.readLine();
System.out.println(" Server says: "+welcome);
client.out.println(keyboard.readLine());
}catch(IOException e){
System.out.println("/n The talk is CLOSED !");
System.exit(1);
}
}
try{
Thread.sleep(200);
}catch(Exception e){
System.out.println("It is a bug !");
}
}
}
class Client{
public DataInputStream in;
public PrintStream out;
private Socket client;
public Client(String host,int port){
try{
client=new Socket(host,port);
System.out.println("/n
***************************************************");
System.out.println("/n @(#)Net Applecation
Version 1.00 97/12/30 ");
System.out.println(" Copyright (c) 1997
(Lui DongBing) All Rights Reserved.");
System.out.println("/n
**************************************************");
System.out.println("/n Client socket:"+client);
System.out.println("/n Client is ready ! /n");
out=new PrintStream(client.getOutputStream());
in=new DataInputStream(client.getInputStream());
}catch(IOException e){
System.out.println("/n IOException !/n"+e);
System.exit(1);
}
}
}
---- 程 序 中 #1 处 的"202.120.80.20" 是 笔 者 的IP 地 址 , 读 者 可
改 为 自 己 相 应 的 地 址 。
分享到:
相关推荐
了解其配置、部署应用、管理资源(如数据源、JMS队列)以及性能调优等技巧,对于开发和运维Java应用至关重要。 3. **JDBC连接数据库**:Java Database Connectivity (JDBC) 是Java与数据库交互的标准API。掌握如何...
以下是一些关于在Eclipse中提高效率和优化环境的Java使用技巧: 1. **设置执行环境**:Eclipse可以自动识别安装的JRE,但用户也可以自定义。在Windows->Preferences中选择Java->Installed JREs,通过Add和Remove...
Java编程技巧典型案例解析 在Java编程领域,掌握高效、实用的编程技巧对于提升代码质量、优化性能以及提高开发效率至关重要。本资料集旨在通过一系列典型示例,深入剖析Java编程中的常见问题及其解决策略,帮助...
本文将围绕“张孝祥Java面试技巧”这一主题,深入探讨Java集合框架的重要组成部分——`map`、`set`、`list`,以及它们在Java中的实现方式和应用场景,帮助读者在面试中更好地展现自己的专业素养。 #### Collection...
通过对Java循环结构的深入了解和实践应用,我们可以编写出更高效、更易于维护的代码。合理选择循环类型和控制语句,以及适当使用带标签的循环和模拟`goto`语句,都是提升程序质量的重要手段。希望本文能够帮助读者更...
java学习心得及其使用技巧java学习心得及其使用技巧
在Java编程领域,掌握高效的编程技巧对于提升代码质量和开发效率至关重要。《Java编程技巧典型案例解析》一书聚焦于这些关键技巧,通过24个精心挑选的源代码案例,深入浅出地展示了Java编程中的精华所在。以下是根据...
标题“java面试小技巧1”所揭示的知识点: 一、Java面试准备的必要性与实用性 1. 应聘Java开发岗位时,面试准备的重要性,尤其对于应届毕业生。 2. 通过实用的面试技巧,有助于快速掌握面试要点,提升面试通过率。 ...
动画和音乐在Java应用中可以通过Java的AWT和Swing库实现,例如使用Timer类创建动态效果,或者集成第三方音频处理库如JMF或JavaSound API来播放音乐。实现与用户对话的功能可能涉及到文本输入、对话框和事件处理。 ...
在Java编程中,多线程编程是一个重要且复杂的主题,因为它允许程序同时执行多个任务,提高CPU的利用率,尤其对于网络和交互式应用至关重要。Java内置了对多线程的支持,使得程序员可以直接在代码中创建和管理线程。 ...
在这个"java打包技巧.rar"压缩包中,我们可以期待找到一些关于Java应用程序打包的实用方法和技术。 首先,Java应用程序打包的主要目标是创建JAR(Java Archive)文件。JAR文件是一个包含多个类文件、资源文件以及元...
7. **网络编程**:Java的Socket编程是实现客户端-服务器应用程序的关键,100.011可能包含TCP和UDP通信的实例,以及ServerSocket和Socket类的使用。 这些实例不仅提供了学习材料,还可以作为练习题,帮助开发者巩固...
Java数组特点及基本使用技巧 Java数组是Java编程语言中的一种基本数据结构,用于存储同类型的多个值。 Java数组有很多特点和基本使用技巧,下面将详细介绍。 关于数组的特点 1. 边界检查:Java中的数组和容器都有...
Java是一种广泛使用的面向对象的编程语言,以其平台独立性、高效性和丰富的类库而闻名。在"Java程序设计技巧1001个实例"中,我们可以深入学习如何利用Java进行高效的程序开发。这个资料集涵盖了从基础到高级的Java...
Java开发是一种广泛应用于企业级应用、桌面应用、移动应用、Web应用等领域的编程语言,具有“一次编写,到处运行”的跨平台特性。本资料集大汇总涵盖了Java开发过程中的核心概念、最佳实践以及实用技巧,旨在帮助...
Java技巧 - JDK文档的使用, 对初学者有很大帮助
Java 代码性能优化技巧总结 Java 代码性能优化是每个 Java 开发者都需要掌握的重要技能。以下是对 Java 代码性能优化的各种技巧的总结: 字符串池的实现 在 Java 中,字符串池(String Intern Pool)是通过使用...
【JAVA数据库技巧详解】 在Java开发中,与数据库交互是一项基础且重要的技能。...通过深入理解这些Java数据库操作的基础和高级技巧,开发者能够更加高效、安全地进行数据库交互,从而提升应用程序的整体性能和可靠性。
Java NIO(New Input/Output)是Java标准库提供的一种I/O模型,它与传统的 Blocking I/O(IO)相比,提供了更加高效的数据传输方式。在Java NIO中,"新...学习和掌握NIO,对于提升Java应用的性能和扩展性至关重要。