java学习之Java桌面软件开发
大家都知道Java软件开发工具有很多,本文面向 Java 技术新手,它描述了创建各种类型的桌面应用程序所涉及的技术以及您可能决定何时使用它们。
要使用本文中的任何技术,您必须 在计算机上安装Java 平台。
桌面应用程序的类型、外观和功能
在您阅读许多可用的 Java 技术之前,您必须了解谁将使用您的应用程序,他们将如何使用它,它是驻留在单个机器上还是网络上,以及什么样的外观或图形用户界面( GUI)应用程序将具有 - 如果有的话。
在创建应用程序之前,请考虑以下五个方面:
应用程序分布
GUI 或缺少 GUI
应用程序的功能
应用程序的部署
其他 Java 技术
应用程序分布
首先,您必须决定是否分发您的应用程序。一个 分布式应用程序是一种在多台计算机上运行并通过网络进行通信的程序。一些分布式应用程序是两个独立的软件程序:后端服务器软件和前端客户端软件。后端软件在共享系统(如 Solaris 操作环境或 Linux)上运行,并管理共享资源,如磁盘、打印机和调制解调器。后端软件还包含应用程序的主要处理能力。前端客户端软件在工作站或个人计算机上运行。这是用户在使用应用程序时看到的内容。前端客户端软件处理用户界面功能,例如从键盘接收输入并将输出显示到屏幕上。
分布式应用程序可以很简单,需要一台客户端计算机和一台服务器,或者更复杂,允许使用多台客户端计算机和多台服务器。非分布式应用程序运行在本地机器上,不需要访问后端服务器。例如,您可以编写一个简单的计算器程序,该程序可能只能在本地运行,但您也可以使这些类型的应用程序分布式。
通常,您创建的应用程序将是分布式程序,并且会在网络或 Internet 上运行,供许多计算机使用。
要创建分布式应用程序,您需要了解和使用 Java 远程方法调用 (Java RMI),其中可以从其他 Java 虚拟机 (JVM) *可能在不同主机上调用远程 Java 对象的方法 。Java RMI 使用 对象序列化来编组和解组参数并且不截断类型,支持真正的面向对象的多态性。
以下是您将用于实现 Java RMI 的一些包:
java.rmijava.rmi.activationjava.rmi.dgcjava.rmi.registryjava.rmi.server请注意,以下包名称以javax,而不是开头 java:
javax.rmijavax.rmi.CORBAjavax.rmi.ssl有关使用 Java RMI 的背景信息和说明。
GUI 或缺乏 GUI
应用程序通常包含许多具有各种功能的小程序。一些小程序具有图形用户界面(GUI),如果只是一个简单的窗口或对话框,许多小程序没有 GUI。然而,应用程序本身可能有一个主 GUI,它由菜单、按钮、工具栏、文本字段和其他图形功能组成。GUI主要用于用户输入,无论用户是点击按钮还是输入信息,GUI都可以为用户提供额外的信息。此外,GUI 组件经常向用户显示信息。
要创建 GUI,您可以使用 Java Foundation Classes/Swing (JFC/Swing) 和 Abstract Window Toolkit (AWT) API。这些包中的许多类和接口允许您轻松创建按钮、复选框对象、文本字段和其他组件,以及用于组织它们的组件。
到目前为止,为应用程序创建框架和所有 GUI 组件的最简单方法是使用集成开发环境 (IDE),例如 NetBeans IDE。此 IDE 允许您在为您编写复杂的组件代码时将组件拖放到位。它易于学习并为您节省大量时间。但是每个开发人员都必须了解 JFC/Swing 和 AWT 代码的工作原理,因此您应该学习手动编写足够多的组件来理解这些概念。
表 1:用于 GUI 程序的主要包
当然,您不必导入所有这些包,只需导入您使用的包即可。如果您使用 NetBeans IDE,您会发现该 IDE 会在您使用 JFC/Swing 或 AWT 组件时在您的代码中创建导入语句。您可以从它们的名称中很好地了解这些包中的许多包的作用。
应用程序的功能
本文无法讨论您可能在应用程序中使用的所有功能,但某些功能对于许多或大多数应用程序是通用的。
要让按钮、菜单和文本字段在您的 GUI 中执行某些操作,您需要了解事件处理的工作原理。一个 事件处理程序是包含在用户按下按钮或者选择一个菜单会发生什么指令的类。从那里,可以进行许多操作:应用程序可以将信息显示回 GUI,将数据写入文件或数据库,进行数学运算并在条形图中显示结果,或者执行一些像打开对话框这样简单的操作供用户输入更多信息。
读写数据
将用户输入写入平面文件系统是应用程序中的常见操作,就像从文件中读取以写回 GUI 一样。例如,用户可以在 GUI 表单中输入姓名、地址和电话号码以在服务器上注册软件。处理此数据的一种方法是让应用程序将数据写入主机或服务器上的文件。
该包通过数据流、序列化和文件系统提供系统输入和输出 (I/O)。I/O 流代表输入源或输出目的地。流可以表示许多不同类型的源和目标,包括磁盘文件、设备、其他程序和内存阵列。流支持许多不同类型的数据,包括简单字节、原始数据类型、本地化字符和对象。一些流只是简单地传递数据,而另一些流则以有用的方式操作和转换数据。java.io无论它们在内部如何工作,所有流都向使用它们的程序呈现相同的简单模型: 流是一个数据序列。java.io包中使用的两个比较流行的类是和 。两者都创建链接到文件的字节流。 FileInputStream FileOutputStream存储数据的常用方法是使用数据库管理系统。要编写应用程序以将数据写入数据库然后检索结果,您需要学习 JDBC API。JDBC API 提供了来自 Java 编程语言的通用数据访问,允许您访问几乎任何数据源——从关系数据库到电子表格和平面文件。JDBC 技术还提供了构建工具和替代接口的通用基础。
JDBC API 支持用于数据库访问的两层和三层模型。
在 两层模型中,Java 小程序或应用程序直接与数据源对话。这需要可以与应用程序访问的特定数据源通信的 JDBC 技术驱动程序。用户的命令被传递到数据库或其他数据源,这些语句的结果被发送回用户。数据源可能位于用户通过网络连接到的另一台机器上。这被称为 客户端-服务器配置:用户的机器是客户端,容纳数据源的机器是服务器。例如,该网络可以是公司内部网,用于连接公司内部的员工,也可以是 Internet。
在 三层模型中,应用程序将命令发送到服务的中间层,然后服务层将命令发送到数据源。数据源处理命令并将结果发送回中间层,然后中间层将它们发送给用户。管理信息系统 (MIS) 主管发现三层模型非常有吸引力,因为中间层可以保持对访问和可以对公司数据进行的更新类型的控制。另一个优点是三层模型简化了应用程序的部署。例如,可以在不干扰用户体验的情况下更改数据库中的数据或添加新组件。最后,在很多情况下,三层架构可以提供性能优势,因为多个事务和内存的效率更高。
要编写使用 JDBC API 访问数据库的应用程序,您将使用以下内容:
包中的类和接口 。 java.sql数据库管理系统,例如 Java DB数据库系统。作为 Java EE 下载的一部分,您还可以下载带有Sun Java System Application Server Platform Edition 9 的Java DB 。
适合您的数据库管理系统的驱动程序。
要下载服务器和数据库以及用于编写应用程序的 IDE,请访问 NetBeans IDE 5.0 下载页面。
执行计算和管理数据
您的大部分应用程序都包含必须在幕后出现的指令代码。您可能会使用字符串和数字进行大量编程。因为您必须用 Java 编程语言键入所有数据,所以您应该熟悉使用该 包。 java.lang在 java.lang包中,你应该了解 strings,一个字符序列。字符串在 Java 技术编程中被广泛使用。在 类用于创建和操作字符串,是 类。 String StringBuilder您还应该熟悉包中的 类及其子类 ,这使您能够使用这些类的实例化而不是原始数字类型。的 和 类提供用于写入格式化的数字输出的方法。最后, 该类包含数学函数来补充语言中内置的运算符。此类具有三角函数、指数函数等的方法。 Number java.lang PrintStream DecimalFormat Math为了处理或操作各种类型的数据,您需要了解 集合框架,这是一种用于表示和操作集合的统一架构。甲 集合,有时被称为一个容器,是一个对象,组中的多个元素到单个单元中。集合用于存储、检索、操作和交流聚合数据。通常,集合表示形成自然组的数据项,例如一手扑克牌、一组卡片、一个邮件文件夹、一组信件或将姓名映射到电话号码的电话簿。
图 1 显示了集合框架以及包中涉及和发现的一些流行接口 。 java.util核心 Collection接口是集合框架的基础。A Set是一种特殊的 Collection,a SortedSet是一种特殊的 Set,依此类推。另请注意,层次结构由两个不同的树组成。A Map不是真的, Collection即使它以类似的方式用作集合。该 Map界面提供了三个集合视图,允许将映射的内容视为一组键、一组值或一组键值映射。
并发
应用程序通常必须一次做不止一件事。例如,流音频应用程序必须同时从网络上读取数字音频、解压缩、管理播放和更新其显示给用户。文字处理程序应该始终准备好响应键盘和鼠标事件,无论它是多么忙于重新格式化文本或更新显示。可以做这些事情的软件被称为 并发软件。
包中提供基本货币支持 。 java.util.concurrent
错误处理
Java 编程语言使用异常来处理错误和其他意外事件。一个 例外是,在程序的执行过程中发生的事件和中断的程序的指令的正常流动。当方法中发生错误时,该方法会创建一个对象并将其交给运行时系统。该对象称为异常对象,包含有关错误的信息,包括错误类型和发生错误时程序的状态。创建异常对象并将其交给运行时系统称为抛出异常。
要处理应用程序中的异常,您需要了解如何编写代码以便应用程序可以捕获或抛出异常。您可以在 Java 教程的异常课程中了解有关异常处理的所有详细信息 。
应用程序的部署
当您希望应用程序在浏览器中运行或应用程序与网页内容紧密集成时,请使用 Java 插件技术部署小应用程序。当您希望您的应用程序独立于用户桌面时。
Java Web Start 技术要求将应用程序打包在 Java Archive (JAR) 文件中。JAR 文件格式使您能够将多个文件捆绑到一个归档文件中。通常,JAR 文件包含与小程序和应用程序相关联的类文件和辅助资源。
JAR 文件采用 ZIP 文件格式打包,因此您可以将它们用于无损数据压缩、存档、解压缩和存档解包等任务。这些任务是 JAR 文件最常见的用途之一,您将通过仅使用这些基本功能发现 JAR 文件的许多好处。
如果您想利用 JAR 文件格式提供的高级功能,例如电子签名,您首先需要熟悉基本操作。要使用 JAR 文件执行基本任务,请使用作为Java 开发工具包 (JDK)一部分提供的 JAR 工具 。使用 JAR 文件: Java 教程中的基础这一课 解释了使用 JAR 工具的详细信息。
将应用程序打包成 JAR 文件后,就可以使用 Java Web Start 技术来部署应用程序。Java Web Start 软件提供了通过单击启动全功能应用程序的能力。用户可以下载和启动应用程序,例如完整的电子表格程序或 Internet 聊天客户端,而无需经过复杂的安装过程。
相反,使用 Java Web Start 软件,用户通过单击网页中的链接来启动基于 Java 技术的应用程序。
其他 Java 技术
本节将讨论您应该考虑的其他一些 Java 技术。
应用安全
大多数开发人员都非常关心应用程序安全性,Java 技术在许多方面帮助解决了这个问题。Java 安全技术包括大量 API文档、工具和常用安全算法、机制和协议的实现。Java 平台安全 API 跨越广泛的领域,包括密码学、公钥基础设施、安全通信、身份验证和访问控制。Java 安全技术为您提供了编写应用程序的综合安全框架,同时也为用户或管理员提供了一套安全管理应用程序的工具。
全屏独占模式API
如果您的应用程序需要高性能图形,例如游戏或幻灯片放映等程序,那么您应该了解全屏独占模式 API。全屏独占模式是一项强大的新功能,可让您暂停窗口系统,以便应用程序可以直接绘制到屏幕上。
国际化
国际化是设计应用程序的过程,以便它可以在不进行工程更改的情况下适应各种语言和地区。有时术语 国际化缩写为 i18n,因为第一个和最后一个字母之间有 18 个字母。Java 教程中的 国际化小道教您需要了解的有关国际化和本地化的知识。本地化,通常缩写为 L10N,是通过添加特定于区域设置的组件和翻译文本来使软件适应特定区域或语言的过程。