庞大的Java家族
什么是 Java 技术?
Java 技术(版本 2)是一种面向对象的编程语言,是 Sun Microsystems 所开发的编程平台。Java 技术基于单一 Java 虚拟机(JVM)的概念,JVM 是编程语言与机器底层软件和硬件之间的翻译器。编程语言的所有实现都必须模拟 JVM,从而使 Java 程序可以在具有 JVM 版本的任何系统上运行。Java 编程语言是与众不同的,因为 Java 程序需要经过编译(翻译为叫做 Java 字节码的中间语言)和解释(通过 JVM 分析和运行字节码)。编译只进行一次,而解释则在每次运行程序时都要进行。编译的字节码是 JVM 的最佳机器码形式;解释程序是 JVM 的实现。Java 平台具有三个版本(请参阅下面的 Java 平台的多个版本),该平台由 JVM 和 Java Application Programming Interface (API) 组成,Java API 是现成软件组件的集合,便于进行 applet 和应用程序的开发和部署,其中包括健壮的、安全的和可互操作的企业应用程序。Java API 被分组到相关类和接口的库中;这些库称为包。
要了解 Sun 的 Java 编程语言的未来发展方向,请阅读 2003 JavaOne Developer Conference 的 technical keynote digest。
Java 平台的多个版本
因为 Java 技术的迅速普及,开发人员强烈要求某些东西更简单些。Sun Microsystems 通过创建三个 Java 平台版本来满足此需要 ― Standard Edition、Enterprise Edition 和 Micro Edition。
- J2SE (Java 2 Standard Edition)
包括标准的 Java 2 SDK、工具、运行时环境和 API,用于那些采用 Java 程序设计语言编写、部署和运行 applet 和应用程序的开发人员。 Merlin 的魔力 专栏极好地介绍了最新版本的 J2SE 1.4。
2. J2EE (Java 2 Enterprise Edition)
通过基于标准化模块组件,通过为这些组件提供一整套服务,以及通过自动处理应用程序行为的许多细节,而无需进行复杂编程,企业版简化了多层企业应用程序的构造和部署。J2EE 探索者 专栏将增加您对此版本的了解。
3. J2ME (Java 2 Micro Edition)
该版本是高度优化的 Java 运行时环境,针对特定的消费者领域,从智能型手机或寻呼机到机顶盒等一系列小型设备(外形小或者存储能力受限)。在“ J2ME 101,第 1 部分:介绍 MIDP 的高层 UI”教程中可以了解更多关于 J2ME 的信息。(您还可以在 developerWorks 无线 专题找到许多 J2ME 参考资料。)
Java 技术为什么重要?
总体来说,Java 语言的主要优点在于跨平台和操作系统的可移植性,以及它可以通过带宽相对较窄的通道提供(比如拨号连接)。Java 语言还具有可伸缩性;现有应用程序可以很容易地适应那些受内存资源限制的设备。另外,由于 Java 语言设计用于通过网络以安全的方式运行,所以当通过 Internet 操作时,它也提供了此级别的安全性。本质上,Java 技术将用户计算能力从桌面扩展到了 Web 资源。
到页首
什么是 Java 组件技术?
管理 Java 技术缩略词的字母汤(alphabet soup)可能是一项巨大的任务,就正如通过 Java Community Process 管理 Java 语言的发展一样。下面是 Java 语言各版本的组件、可选包和扩展包的部分列表(也就是组成这个平台的复杂部件),并给出了简短描述和参考资料链接,用以说明它在 Java 开发领域中的作用。注意下面许多参考资料都可以在各版本中使用。
J2SE 中的技术:
Java Access Bridge 用于 Microsoft Windows,它起到了网桥的作用,允许基于 Windows 的辅助技术与 Java Accessibility API 进行交互(请参阅“为可访问性编码”。)
JavaBeans Component Architecture 是平台独立的规范,它为 Java 平台定义了一套标准组件软件 API。(请参阅“Reflecting, introspecting, and customizing JavaBeans”。)
Javadoc 是一种工具,用于从源代码的 doc 注释中生成 HTML 格式的 API 文档。(请参阅“Java 理论和实践:我必须对那些内容进行文档编制吗?”。)
Java Foundation Classes (Swing) (JFC) 是 Java 类库的集合,它支持为基于 Java 的客户机应用程序构建 GUI 和图形功能。(请参阅“Java 2 用户界面”。)
Java Platform Debugger Architecture (JPDA) 是 Java 2 的调试支持基础设施。JPDA 包括三层 API:
JDI (Java Debug Interface)是一种支持远程调试的高级别编程语言接口。
JDWP (Java Debug Wire Protocol) 定义在调试过程和调试器前端之间传输的信息和请求的格式。
JVMDI (Java Virtual Machine Debug Interface) 是低级别本地接口,定义了调试时 JVM 必须提供的服务。
(请参阅“ 软件开发的未来 ”。)
Java 2D API 是用于高级 2D 图形和成像(为图像合成和 alpha 通道图像提供广泛支持)的类集合,是提供正确的色彩空间定义和转换的类集合,是面向显示的成像操作符的集合。(请参阅教程“Java 2D简介”。)
Java Web Start 使您可以通过单击而无需经历安装过程来下载和启动功能完善的应用程序(如电子表格),从而简化 Java 应用程序的部署。(请参阅“Java Web Start”。)
Java Database Connectivity (JDBC) 是一种 API,使您可以从 Java 内访问大多数表格式数据源,它提供了大多数 SQL 数据库的跨 DBMS 连通性,以及对其他表格式数据源的访问(如电子表格或平面文件)。(请参阅“JDBC 3.0 有什么新特性”。)
Remote Method Invocation (RMI) 提供引导命名服务,不会改变类型,并使用对象序列化使编程人员能够创建基于 Java 技术的分布式应用程序,在该应用程序中,可以从不同主机上的其他 Java 虚拟机上调用远程 Java 对象的方法。(请参阅教程“分布式对象 101-使用RMI和CORBA ”。)
Java Advanced Imaging (JAI) 是一种 API,提供了面向对象的接口的集合,这些接口支持简单的高级编程模型,使得开发人员可以很容易地操纵图像。(请参阅“利用 JSP 代码管理您的图像”。)
Java Authentication and Authorization Service (JAAS) 是一个包,它启用服务,通过实现标准 Pluggable Authentication Module (PAM) 框架的 Java 版本,通过支持基于用户的授权,对用户进行验证和执行访问控制。(请参阅教程“Java 安全性 第二部分 认证与授权”;“扩展 JAAS 实现类实例级授权”也是很好的信息来源。)
Java Cryptography Extension (JCE) 是一个包集合,提供了加密、密钥生成和协议以及 Message Authentication Code (MAC) 算法的框架和实现。它提供了对称、非对称、分组和流密码的加密支持,并支持安全流和密封对象。(请参阅教程“Java 安全性第一部分 密码学基础”。)
Java Data Objects (JDO) 是持久性的基于标准接口的 Java 模型抽象,它允许编程人员直接将 Java 域模型实例存储到持久存储(数据库)中,可能替代直接文件输入输出、序列化、JDBC 和 EJB Bean Managed Persistence (BMP) 或 Container Managed Persistence (CMP) Entity Bean 等方法。(请参阅教程“Java 数据对象上机实践”。)
Java Management Extensions (JMX) 提供的工具用于构建分布式、基于 Web 的、模块化和动态应用程序,以便管理和监视设备、应用程序和服务驱动的网络。(请参阅由三部分组成的“从黑箱到企业,第 1 部分:管理,JMX 1.1 样式”。)
Java Media Framework (JMF) 允许音频、视频和其他基于时间的媒体添加到 Java 应用程序和 applet 中。(请参阅教程“Java Media Framework 基础”。)
Java Naming and Directory Interface (JNDI) 是一种标准扩展包,为企业中的多个命名和目录服务提供具有统一接口的 Java 应用程序,允许不同种类的企业命名和目录服务的无缝连通性。(请参阅“EJB 最佳实践:工业强度的 JNDI 优化”。)
Java Secure Socket Extensions (JSSE) 是启用安全 Internet 通信的包集合,实现 SSL (Secure Sockets Layer) 和 TLS (Transport Layer Security) 协议的 Java 版本,并包括数据加密、服务器验证、消息完整性和可选客户机验证的功能。(请参阅教程“将 JSSE 用于安全套接字通信”。)
Java Speech API (JSAPI) 允许 Java 应用程序将语音技术合并到用户接口中。JSAPI 定义了跨平台的 API,以支持命令和控制识别程序、听写系统和语音合成器。(请参阅“The Java 2 user interface”部分。)
Java 3D 是一种 API,通过提供支持简单高级编程模型的一组面向对象的接口,开发人员可以使用它容易地将可伸缩的平台独立的 3D 图形合并到 Java 应用程序中。(请参阅教程“Java 3D 探奇 ”。)
J2EE 中的技术:
Java API for XML Processing (JAXP) 通过使应用程序解析和转换不依赖特定 XML 处理实现的 XML 文档,通过使开发人员可以灵活地在 XML 处理器程序之间进行交换,而无需更改应用程序代码,从而支持使用 DOM、SAX 和 XSLT 处理 XML 文档。(请参阅“使用 Java 编程利用在线 XML 数据”。)
Java API for XML Registries (JAXR) 为访问不同种类的 XML 注册中心提供了统一和标准的 API (用于构建、部署和发现 Web 服务的可用基础设施)。(请参阅 Java 技术标准。)
Java API for XML-based RPC (JAX-RPC) 使开发人员可以开发基于 SOAP 的可互操作的和可移植的 Web 服务。(请参阅 Java 技术标准。)
SOAP with Attachments API for Java (SAAJ) 使开发人员可以生产和消费符合 SOAP 1.1 规范和 SOAP with Attachments 注解的消息。(从“使用SAAJ发送和接收SOAP消息”开始;有关 XML 技术的详细信息,请参阅 developerWorks XML 专区。)
Common Object Request Broker Architecture (CORBA) 是异构计算的开放标准,通过提供分布式对象框架、支持该框架的服务以及与其他语言的互操作性,该标准对 Java 进行了补充。(请参阅教程“使用RMI和CORBA ”;“企业中的 RMI-IIOP”也是很好的信息来源)。
ECperf 是用于度量 Web 商务系统的性能和可伸缩性的基准。它包括:组成应用程序的 EJB 组件;使用 JSP 进行单一用户/交互测试的 Web 客户机;模式脚本和加载程序;makefile 和部署描述符;用于实现运行规则和模拟客户机加载的驱动程序。(请参阅 Java 技术标准。)
Enterprise JavaBeans (EJB) 是一种技术,通过提供对事务、安全性、数据库连通性等服务的支持,它使用组件模型来简化中间件应用程序的部署。(请参阅介绍该技术的教程“Enterprise JavaBean 基础”;另请参阅系列文章 EJB 最佳实践。)
Java Authorization Contract for Containers (Java ACC) 是一种规范,它定义了容器使用的授权提供者的安装和配置。Java ACC 定义了提供者必须使用的接口,从而允许容器部署工具创建和管理与角色相对应的权限集合。(请参阅教程“Developing accessible GUIs with Swing”。)
JavaMail 是一种 API,它提供了模拟邮件系统的抽象类的集合。(请参阅教程“ JavaMail API 基础”。)
Java Message Service (JMS) 是一种用来添加提供者框架的 API。通过定义所有兼容 JMS 技术的消息系统所支持的消息概念和编程策略的公共集合,该框架为 Java 平台启用了可移植的、基于消息的应用程序的部署。(请参阅“实现独立于供应商的 JMS 解决方案”。)
JavaServer Faces 提供了一种编程模型,通过汇集页面中可重用的 UI 组件,将这些组件连接到应用程序数据源以及将客户机生成的事件写入服务器端事件处理程序,该模型有助于开发人员开发 Web 应用程序。(请参阅“JSP pages, evolving and contributing to Web services”。)
JavaServer Pages (JSP) 使 Web 开发人员可以使用单独的用户界面和内容生成功能,快速地进行开发和轻松地维护动态的、平台独立的 Web 页面,这样设计人员就可以更改页面布局,而无需改变动态内容。该技术使用类似于 XML 的标签,这些标签封装了用于生成页面内容的逻辑。(请参阅教程“JSP 技术入门 ”;另请参阅系列文章 JSP 最佳实践。)
Java Servlets 是一种扩展和增强 Web 服务器功能的 Java 方式。要做到这一点,应该为构建基于 Web 的应用程序提供基于组件的平台独立的方法,而不会出现 CGI 程序的性能限制。(developerWorks 中有许多关于 servlet 的信息。“创建 Java HTTP Servlet”和“构建带会话跟踪的 Servlet”这两篇入门教程应该是最好的起点。)
J2EE Connector Architecture 定义了一种标准体系结构,通过定义一组可伸缩的、安全的事务性机制,允许 EIS 供应商提供插入到应用服务器中的标准资源适配器,该体系结构用于将 J2EE 平台连接到异构企业信息系统(Enterprise Information Systems, EIS)。(请参阅教程“J2EE Connector Architecture 介绍”。)
J2EE Management Specification (JMX) 定义了 J2EE 平台的管理信息模型。该模型设计用于与许多管理系统和协议互操作,包括到 Common Information Model (CIM)、SNMP Management Information Base (MIB)的模型的标准映射,以及通过服务器驻留 EJB 组件(J2EE Management EJB Component,MEJB)到 Java 对象模型的模型的标准映射。(请参阅“从黑箱到企业,第 1 部分:管理,JMX 1.1 样式”。)
Java Transaction API (JTA) 是高级的独立于实现和协议的 API,它允许应用程序和应用程序服务器访问事务。Java Transaction Service (JTS) 指定 Transaction Manager 的实现, Transaction Manager 支持 JTA,并在低于 API 的级别上实现 OMG Object Transaction Service (OTS) 1.1 规范的 Java 映射。JTS 使用 Internet Inter-ORB Protocol (IIOP) 传输事务。(请参阅“理解 JTS ― 平衡安全性和性能 ”。)
J2ME 中的技术:
Connected Limited Device Configuration (CLDC) 是组成资源受限移动信息设备的 Java 运行时环境的两个配置之一。CLDC 提供了最基本的库集合和虚拟机功能,在包含 K 虚拟机(KVM)的 J2ME 环境的每个实现中,这些都是必须存在的。(请参阅“Know no limits: Approaches to mobile device constraints”)
Mobile Information Device Profile (MIDP) 是组成资源受限移动信息设备的 Java 运行环境的两个配置之一。MIDP 提供核心应用程序功能,包括用户界面、网络连通性、本地数据存储和应用程序生命周期管理。(请参阅教程“Implementing Push technology with J2ME and MIDP”。)
Connected Device Configuration (CDC) 是一种基于标准的框架,用于构建和提供可在许多网络连接消费者和嵌入式设备之间共享的应用程序。(请参阅“Securing wireless J2ME”。)
developerWorks Wireless technology 专区包含了 J2ME 相关技术的多篇文章和教程。
Java 网络技术:
JAIN APIs 是一组基于 Java 的 API,用于快速开发下一代电信产品和服务。(请参阅 Java 技术标准。)
Java Metadata Interface (JMI) 是实现动态的、平台独立的基础设施的规范,它允许进行元数据的创建、存储、访问、发现和交换。该规范基于 Object Management Group (OMG) 的 Meta Object Facility (MOF) 规范,由一组使用统一建模语言(Unified Modeling Language,UML)描述的基本建模工件组成。(请参阅 Java 技术标准。)
JavaGroups 是一个软件工具包(API 库),用于使用分布式系统解决方案进行设计、实现和实验。(请参阅“High-impact Web tier clustering, Part 1”和 Part 2。)
Jini 是一种开放体系结构,用于为硬件和软件创建高适应性的以网络为中心的服务。Jini 系统体系结构由三个类别组成:编程模型、基础设施和服务。(请参阅“Jini networking technology, the next step”。)
JXTA 是一组开放协议,允许网络上所有连接设备以 P2P 方式通信和协作。JXTA 对等方创建虚拟网络,任何对等方都可以在其中与其他对等方或资源进行直接交互,甚至当一些对等方和资源位于防火墙或 NAT 后或者位于不同的网络传输中也是如此。(请参阅“Making P2P interoperable: The JXTA story”。)
到页首
Java 技术如何与 Web 服务联系起来?
Web 服务是一种技术,允许用 XML 定义业务规则和过程,这样软件应用程序能够以平台独立和编程语言无关的方式进行通信。XML 技术使数据可以移植,方便了消息创建,而 Java 技术则使代码可以移植。事实上,XML 和 Java 语言可以很好地结合起来,成为构建和部署 Web 服务的完美组合。
了解更多信息:
developerWorks 的“Web services 新手入门”和“XML 新手入门”页面将帮助您了解这些复杂的技术。
如何提高 Java 编程技能?
有两种途径可以提高您的技能:选学一门课程(为获得证书或仅为了学习)或者自学(当然要通过编写代码来练习)。除了汲取有经验的开发人员的知识外,获取证书途径还可以向未来的雇主提供确实的证据,证明您拥有构建他们要求的技术所需的技能。通过试验自己的技能,使用可用资源,您可以在 Java 技术的不同领域提高您的技能。下列参考资料对以上两种途径都应该有帮助。
了解更多信息:
要获得 Java 语言的全面介绍,Java 语言基础 教程是个很好的起点。
如果基本教程看起来有些复杂,您可以尝试 Robocode。Robocode 是基于 Java 技术构建的易于使用的机器人战争模拟程序,它在提供纯粹娱乐的同时教您如何编程。要获得 Robocode 的介绍,请阅读“重锤痛击 Robocode!”
如果您是 C/C++ 编程人员,不熟悉 Java,“Java programming for C/C++ developers”教程通过比较和对照 Java 编程概念和 C/C++ 编程概念,可以帮助您快速入门 Java。
本文是循序渐进的 帮助您准备 SCJP 考试指南,即 Sun Certified Java Programmer 证书考试。
IBM 在 WebSphere 开发(用于企业 Java 应用程序)、DB2、XML、电子商务和 Linux 这些相关技术方面提供了 专业认证。
如果您没有听说过 XP 精华 或 XP,它是一种应用程序设计理念,它合并了连续阶段测试、在编码前编写测试、现场客户输入、重构(在不更改功能的情况下改进代码)等,本文可提供用于编写 Java 应用程序的极好工具。(揭开极端编程的神秘面纱:“XP 精华”重访,第 2 部分 中详细描述了如何进行实践。)
将设计理论转换为实际应用程序是 Java 理论与实践 系列文章的出发点。
Java 编程人员知道利用集成 bug 检测和测试进行程序设计,所以利用 Java 调试 提高您的调试技能。而且,developerWorks 提供了关于 Java 调试(重点是称为 bug 模式的工具)的专栏集,称为 诊断 Java 代码。
developerWorks 提供了大量 基于 Java 的教程,这是下一代自己编写代码的最佳学习体验。
要获得更多学习如何使用 Java 语言的交互式方法,请参加 Java 讨论区,该论坛由具有多年 Java 相关技术开发经验的著名专家主持。
Java 编程人员可以使用哪些 IBM 工具和产品?
作为在 Java 技术使用方面的一流创新者,IBM 站在了最前线。浏览 Java technology downloads and products 页面可以获得工具和产品的完整列表。以下提供了一些重要部分。
了解更多信息:
软件开发工具箱:构造应用程序的工具箱,用于各种 Java 相关技术的大量工具。下面只是其中的几个:
IBM developer kits for Java technology,用于在一些最普通的 IBM 平台上创建和测试 Java applet 和应用程序。
Agent Building and Learning Environment,用于开发混合智能软件代理和代理应用程序。
Emerging Technologies Toolkit 在网格计算、异步 Web 服务、业务流程、自主计算和其他服务中为 Web 服务开发提供高级工具。
Toolkit for MPEG-4,Java 类和带有简单应用程序的 API 的集合,用于生成 MPEG-4 内容,以便与兼容 MPEG-4 的设备一起使用。
Update Tool,一种使基于 Java 桌面应用程序的用户可以易于升级的机制。
Java technology on alphaWorks 是 IBM 生成的 Java 相关技术的虚拟仓库,包括 API、集成开发环境和 devkit、组件、参考实现和实用程序。
WebSphere 系列的 Java 开发工具:
Application Server。
Branch Transformation Toolkit for WebSphere Studio,以前称为 WebSphere Business Components Composer,是一组工具、组件和服务,它们用于加速构建访问事务系统的多通道银行应用程序。
MQ 是允许应用程序相互通信的应用程序编程服务。
MQ Everyplace 允许利用确定的消息提供方式访问移动工作者和远程设备的企业数据。
Business Integration Message Broker 帮助将信息引向需要它的位置和时间,以及帮助访问公司数据,而不管数据位于何处,采用何种格式。
SDK for Web Services。
Studio Site Developer 为构建和维护动态 Web 站点、Web 服务和 Java 应用程序提供开发环境。
Studio Application Developer 是基于 Web 的应用程序的集成开发环境。