Java 技术是什么?
Java 技术既是一种高级的面向对象的编程语言,也是一个平台。Java 技术基于 Java 虚拟机(Java virtual machine,JVM)的概念 —— 这是语言与底层软件和硬件之间的一种转换器。Java 语言的所有实现都必须实现 JVM,从而使 Java 程序可以在有 JVM 的任何系统上运行。
Java 编程语言(Java programming language) 与众不同之处在于:Java 程序既是编译型的(compiled)(转换为一种称为 Java 字节码的中间语言),又是解释型的(interpreted)(JVM 对字节码进行解析和运行)。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对 JVM 优化过的机器码形式;解释器是 JVM 的实现。
Java 平台(Java platform) 是一种纯软件平台,它可以在各种基于硬件的平台上运行。它有三个版本(参见后面的 Java 平台的多个版本)。它由 JVM 和 Java 应用程序编程接口(Java Application Programming Interface,API)组成。Java API 是一个大型的现成软件组件(类)集合,它可以简化 applet 和应用程序的开发和部署,包括健壮、安全且可互操作的企业应用程序。它涵盖从基本对象到连网和安全性,再到 XML 生成和 Web 服务的所有东西。Java API 组织成相关类和接口的库;库也称为包(package)。
除了 Java API 之外,每个完整的 Java 平台实现还包含:
- 用来编译、运行、监视、调试应用程序以及建立应用程序文档的开发工具。
- 用来部署应用程序的标准机制。
- 用来创建复杂的图形用户界面(GUI)的用户界面工具包。
- 用来启用数据库访问和操作远程对象的集成库。
Java 技术是最初由 Sun Microsystems 公司开发的。Java Community Process(JCP,一个由全世界的 Java 开发人员和获得许可的人员组成的开放性组织)对 Java 技术规范、参考实现和技术兼容性包进行开发和修订。在 2006 年 8 月,Sun Microsystems 宣布它打算开放 Java 平台的源码,并开始征询对许可协议和管理方式的反馈。

回页首
<!--Spacer-->
Java 技术为什么是重要的?
Java 语言的主要好处是,Java 应用程序可以跨硬件平台和操作系统进行移植 —— 这是因为每个平台上安装的 JVM 都可以理解同样的字节码。
Java 语言和平台的可伸缩性非常强。在低端,现有的应用程序可以很容易地适应内存资源有限的设备。这种语言是进行服务器端 Web 编程的理想框架。因为它被设计为按照一种安全的方式通过网络运行,在通过互联网进行操作时,它提供了一定程度的安全性。在本质上,Java 技术将用户的计算能力从桌面扩展到了 Web 资源。Web 组件由称为Web 容器(Web container) 的运行时平台支持,Web 容器的服务包括请求分派、安全性、并发性、生命周期管理以及对命名、事务和电子邮件等 API 的访问。在高端,Java 应用服务器(application server) 作为 Java 组件、XML 和 Web 服务的 Web 容器,可以与数据库进行交互并提供动态的 Web 内容;它们还为企业应用程序提供应用程序开发环境,具有事务管理、安全性、集群、性能、可用性、连接性和可伸缩性等功能。
Java 语言是第一批支持企业开放标准的技术之一,支持使用 XML 和 Web 服务跨业务线共享信息和应用程序(参见下面的 Java 技术与 SOA/Web 服务的关系)。Java 技术是许多 IBM 产品和技术咨询服务的核心(参见下面的 Java 程序员可用的 IBM 工具和产品),是 IBM 发展计划的重要部分:
-
- Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。
- Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。


回页首
<!--Spacer-->
什么是 Java 组件技术?
developerWorks Java technology 专区维护了 标准 Java 组件技术 的完整词汇表。下面是每个 Java 平台版本的组件、可选包和扩展的部分列表,以及简短的描述和参考资料的链接,可以通过这些参考资料进一步了解这些组件在 Java 开发中的作用。注意,下面的许多参考资料同时适用于三个版本。
Java SE 中的技术:
- JavaBeans Component Architecture 是一个为 Java 平台定义可重用软件组件的框架,可以在图形化构建工具中设计这些组件。
- Java Foundation Classes(Swing)(JFC)是一套 Java 类库,支持为基于 Java 的客户机应用程序构建 GUI 和图形化功能。(参见教程 “Swing 入门”;“使用 Swing 进行动态界面设计” 和 “增强图形用户界面的可访问性” 也有助于掌握 Swing。)
- JavaHelp 是一个独立于平台的可扩展的帮助系统,开发人员和作者可以使用它将在线帮助集成到 applet、组件、应用程序、操作系统和设备中,还可以提供基于 Web 的在线文档。(参见 “向 Java 应用程序伸出援助之手”。)
- Java Native Interface(JNI)使 JVM 中运行的 Java 代码可以与用其他编程语言编写的应用程序和库进行互操作。(参见 “用 Java 代码处理本地对象的事件”。)
- Java Platform Debugger Architecture(JPDA)是用于 Java SE 的调试支持基础结构。(参见 “诊断 Java 代码: 软件开发的未来”。)
- Java 2D API 是一套用于高级 2D 图形和图像的类(为图像组合和 alpha 通道图像提供丰富的支持)、一套提供精确的颜色空间定义和转换的类以及一套面向显示的图像操作符。(参见教程 “Java 2D 简介”。)
- Java Web start 允许用户通过一次点击下载并启动特性完整的应用程序(比如电子表格),而不需要进行安装,从而简化 Java 应用程序的部署。(参见 “Java Web Start”。)
- Certification Path API 提供了一套用于创建、构建和检验认证路径(也称为 “认证链”)的 API,可以安全地建立公共密钥到主体的映射。(参见 “为测试 Java 应用程序生成证书链”。)
- Java Database Connectivity(JDBC)是一个 API,它使用户能够从 Java 代码中访问大多数表格式数据源,提供了对许多 SQL 数据库的跨 DBMS 连接能力,并可以访问其他表格式数据源,比如电子表格或平面文件。(参见 “JDBC 3.0 有什么新特性” 和教程 “理解 JDBC”。)
- Java Advanced Imaging(JAI)是一个 API,它提供一套面向对象的接口,这些接口支持一个简单的高级编程模型,使开发人员能够轻松地操作图像。(参见 “利用 JSP 代码管理您的图像”。)
- Java Authentication and Authorization Service(JAAS)是一个包,它实现了标准的 Pluggable Authentication Module(PAM)框架的 Java 版本并支持基于用户的授权,使服务能够对用户进行身份验证和访问控制。(参见 “用 JAAS 和 JSSE 实现 Java 安全性” 和 “Java 授权内幕”;教程 “Java 安全性, 第 2 部分: 认证与授权” 也有帮助。)
- Java Cryptography Extension(JCE)是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。它提供对对称、不对称、块和流密码的加密支持,它还支持安全流和密封的对象。(参见教程 “Java 安全性,第 1 部分: 密码学基础”。)
- Java Data Objects(JDO)是一种基于标准接口的持久化 Java 模型抽象,使程序员能够将 Java 领域模型实例直接存储进持久化存储(数据库)中,这可以替代直接文件 I/O、串行化、JDBC 以及 EJB Bean Managed Persistence(BMP)或 Container Managed Persistence(CMP)实体 bean 等方法。(参见教程 “Java 数据对象上机实践”;更深入的解释请参考 “无需容器的对象关系映射”。)
- Java Management Extensions(JMX)提供了用于构建分布式、基于 Web、模块化且动态的应用程序的工具,这些应用程序可以用来管理和监视设备、应用程序和服务驱动的网络。(参见 “使用 Java 平台管理 bean”。)
- Java Media Framework(JMF)可以将音频、视频和其他基于时间的媒体添加到 Java 应用程序和 applet 中。(参见教程 “Java Media Framework basics”。)
- Java Naming and Directory Interface(JNDI)为 Java 应用程序提供一个连接到企业中的多个命名和目录服务的统一接口,可以无缝地连接结构不同的企业命名和目录服务。(参见 “工业强度的 JNDI 优化”;还可以参考 “走出 JNDI 迷宫”。)
- Java Secure Socket Extensions(JSSE)是一组包,它们支持安全的互联网通信,实现了 SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)的 Java 版本,包含数据加密、服务器身份验证、消息完整性和可选的客户机身份验证等功能。(参见 “用 JAAS 和 JSSE 实现 Java 安全性”;还可以参考教程 “将 JSSE 用于安全套接字通信”。)
- Java Speech API(JSAPI)包含 Grammar Format(JSGF)和 Markup Language(JSML)规范,使 Java 应用程序能够将语音技术集成到用户界面中。JSAPI 定义一个跨平台的 API,支持命令和控制识别器、听写系统和语音识别器。(参见 “Java 2 用户界面”。)
- Java 3D 是一个 API,它提供一套面向对象的接口,这些接口支持一个简单的高级编程模型,开发人员可以使用这个 API 轻松地将可伸缩的独立于平台的 3D 图形集成到 Java 应用程序中。(参见教程 “Java 3D 探奇”。)
- Metadata Facility 允许给类、接口、字段和方法标上特定的属性,从而使开发工具、部署工具和运行时库能够以特殊方式处理它们。(参见 “Tiger 中的注释,第 1 部分: 向 Java 代码中添加元数据”。)
- Java Content Repository API 是一个用于访问 Java SE 中独立于实现的内容存储库的 API。内容存储库是一个高级信息管理系统,它是传统数据存储库的超集。(参见 “Java Content Repository API 简介”。)
- Enumerations(枚举) 是一种类型,允许以类型安全的方式将特定的数据表示为常量。(参见 “枚举类型入门”。)
- Generics(泛型) 允许定义具有抽象类型的参数的类,可以在实例化时指定这些参数。(参见 “介绍 JDK 5.0 中的泛型”。)
- Concurrency Utilities 是一套中级实用程序,提供了并发程序中常用的功能。(参见教程 “JDK 5.0 中的并发”。)
- Java API for XML Processing(JAXP)允许 Java 应用程序独立于特定的 XML 处理实现对 XML 文档进行解析和转换,允许灵活地在 XML 处理程序之间进行切换,而不需要修改应用程序代码。Java API for XML Binding(JAXB)允许在 XML 文档和 Java 对象之间进行自动的映射。(参见分三部分的教程 “利用 Java 技术进行 XML 编程”;还可以阅读 “JAXP 全面介绍,第 1 部分” 和 “JAXP 全面介绍,第 1 部分” 来进一步了解 JAXP; 实用数据绑定 文章系列提供了更多信息;还可以访问 developerWorks XML 专区。)
- SOAP with Attachments API for Java(SAAJ)使开发人员能够按照 SOAP 1.1 规范和 SOAP with Attachments note 生成和消费消息。(参见 “技巧: 使用SAAJ发送和接收SOAP消息”;“Java Web 服务进阶” 会帮助您掌握 Java Web Services Developers Pack。)
J2EE 中的技术:
J2ME 中的技术:


回页首
<!--Spacer-->
Java 技术与 SOA/Web 服务的关系
面向服务体系结构是一种组件模型,它通过服务之间定义良好的接口和合约将应用程序的功能性单元(称为服务,或 Web 服务)联系在一起。定义接口的方式独立于硬件、操作系统和用来实现服务的编程语言,这使在不同系统上构造的服务可以以统一的通用的方式相互进行交互。SOA 是一种松散耦合的模型,可以替代更传统的紧密耦合的面向对象模型。
产生的 Web 服务可以用 XML 定义业务规则和过程,使软件应用程序可以按照一种独立于平台和编程语言的方式进行通信。XML 技术使数据具有可移植性并促进消息的创建,而 Java 技术使代码具有可移植性。XML 和 Java 语言能够很好地结合在一起,这使它们成为构建和部署 Web 服务的理想组合。
可以通过以下参考资料了解关于 SOA 的更多信息:


回页首
<!--Spacer-->
Java 技术与开放源码软件开发的关系
大量的 开放源码项目 通过库、工具、框架、应用程序和应用服务器对 Java 技术进行扩展,从而帮助程序员利用这种强大的技术。许多开放源码技术已经结合到了 Java 平台本身之中,还有一些技术受到了 Java 开发人员的喜爱(在某些情况下甚至已经成为事实标准)。
可以通过以下参考资料进一步了解 Java 编程方面的开放源码技术:
- Apache Software Foundation 这个庞大的组织主持着大量开放源码项目,其中很多是基于 Java 语言的。比如:
- Eclipse 是一种独立于厂商的开放式开发平台,提供了一套用来构建软件的应用程序框架。Eclipse 平台是用 Java 语言编写的,提供了一个基于插件的框架,这使得创建、集成和使用软件工具更加容易。(IBM 是 Eclipse 的创始成员之一,并积极参与 Eclipse.org Board of Stewards 及其工作小组委员会。)通过以下参考资料进一步了解这个平台为 Java 开发提供的组件技术:
访问 developerWorks Eclipse 项目资源中心,这里有大量关于 Eclipse 的文章和教程。
- 流行的 Spring 框架 是一种用于 Java EE 应用程序开发的层次化框架:


回页首
<!--Spacer-->
如何提高自己的 Java 编程技能
可以按照两条路线提高自己的技能:参加一个课程(为了认证或者只是为了学习)或自学(当然,还要通过编写代码进行实践)。除了能够从有经验的开发人员那里获得知识之外,课程或认证路线还可以向老板有力地证明您具备他们需要的技能。使用各种参考资料进行自学,可以在 Java 技术的各个方面提高您的技能。以下参考资料对于这两种学习方式都有帮助:
- 教程和文章
- 图书和 Web 站点:
- 游戏
- Robocode 是一个用 Java 技术构建的容易使用的机器人大战模拟器,它在教您进行编程的同时,可以提供数小时纯粹的娱乐。关于 Robocode 的介绍,请阅读 “重锤痛击 Robocode!”;更多相关内容,请访问 Robocode 技巧精粹专栏。
- CodeRuler、CodeRally 和 CodeInvaders Challenge 是在 Eclipse 平台上构建的基于 Java 的实时编程游戏。关于 CodeRuler 的介绍,请阅读 “用 CodeRuler 征服中世纪王国”。
- IBM 技术培训
- 可以在 IBM Global Services 提供的各种在线、课堂和基于多媒体的 Java 课程 中进行选择。
- 认证培训
- 如果您正在考虑对自己的 Java 技能进行认证,那么要参加几个考试。为了帮助您准备考试,我们在 Whizlabs 的朋友编写了分四部分的教程 “Java 认证成功之路”,这些教程讨论了 Sun Certified Java Programmer(SCJP)1.4、Sun Certified Web Component Developer(SCWCD)、Sun Certified Business Component Developer(SCBCD)和 Sun Certified Enterprise Architect(SCEA)。对于 SCJP exam for Java SE 5 的更新,请阅读文章 “Are you SCJP 5 certified?”。“Preparing for the Mobile Application Developer Certification” 帮助您准备 Sun Certified Mobile Application Developer(SCMAD)。
- IBM 在 WebSphere 开发(用于企业 Java 应用程序)、IBM Rational 软件、DB2、XML 和 SOA 等相关技术领域提供 专业人员认证。
- 论坛