java入门
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 平台的源码,并开始征询对许可协议和管理方式的反馈。
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 发展计划的重要部分:
了解关于 IBM 的面向服务架构(SOA) 计划的更多信息,以及 SOA 如何帮助用户构建复合应用程序,从而将来自多个来源的功能组合在企业中以支持横向业务流程。
IBM Business Innovation and Optimization 为战略性调整提供一种基于组件的全面的方法。提供的解决方案基于一个灵活、可扩展、基于开放标准的软件(包括 Java 技术)和硬件基础结构。
Java 平台的多个版本
Java 平台有三个版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发:
Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。大多数 Java 开发人员使用 Java SE 5,也称为 Java 5.0 或 “Tiger”(2006 年 6 月,Java SE 6 或 “Mustang” 发布了 beta 版。)
Java SE 6 新特性系列 专栏主要介绍 Java SE 6 在 API 库方面的部分新特性。
驯服 Tiger 专栏对 Java SE 5 做了精彩的概述。
Merlin 的魔力 系列讨论了以前的 Java SE 平台版本,J2SE 1.4 或 “Merlin”。许多现有的 Java 应用程序基于 J2SE 1.4,而且这个系列中的大多数概念是与 Java SE 5 编程相关的。
Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。
J2EE 探索者 专栏提供关于 Java EE 的知识。
走上开放之路:迁移到 Java 平台 文章系列帮助 .NET、Windows 客户机/服务器和 ASP 应用程序的开发人员迁移到 Java EE 平台。
Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。
这个全面的 分四部分的系列 包含两个教程和两篇配套文章,它们集中介绍 J2ME 和 Mobile Information Device Profile(MIDP)。
还可以在 developerWorks Wireless technology 专区中找到许多 J2ME 参考资料,比如分两部分的教程 “构建灵活的 J2ME 移动应用程序”。
什么是 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 中的技术:
Enterprise JavaBeans(EJB)技术使用一个组件模型来简化中间件应用程序的开发,它提供了对事务、安全性和数据库连接等服务的自动支持。(参见教程 “Enterprise JavaBean 基础”;参见 EJB 最佳实践 系列;阅读 “使用 EJB 3.0 Java Persistence API 设计企业应用程序”。)
Portlet Specification 定义了一套用于 Java 门户计算的 API,可以解决聚合、个人化、表示和安全性方面的问题。(参见 “使用 Apache Pluto 构建和测试 JSR 168 兼容的 portlets”。)
JavaMail 是一个 API,提供了一套对邮件系统进行建模的抽象类。(参见教程 “JavaMail API 基础教程”。)
Java Message Service(JMS)是一个 API,它为所有与 JMS 技术兼容的消息传递系统定义一套通用的消息概念和编程策略,从而支持开发可移植的基于消息的 Java 应用程序。(参见教程 “Java 消息服务介绍”。)
JavaServer Faces(JSF)提供一个编程模型,帮助开发人员将可重用 UI 组件组合在页面中,将这些组件连接到应用程序数据源,将客户机生成的事件连接到服务器端事件处理程序,从而轻松地组建 Web 应用程序。(参见 怀疑论者的 JSF 专栏和教程 “用 JavaServer Faces 进行 UI 开发”,以及 JavaServer Faces 技术专题。)
JavaServer Pages(JSP)允许 Web 开发人员快速地开发和轻松地维护动态的独立于平台的 Web 页面,并将用户界面和内容生成隔离开,这样设计人员就能够修改页面布局而不必修改动态内容。这种技术使用类似 XML 的标记来封装为页面生成内容的逻辑。(参见教程 “JSP 技术入门”;还请参考 JSP 最佳实践 系列,以及 JavaServer Pages 技术专题。)
Standard Tag Library for JavaServer Pages(JSTL)是一个定制标记集合,它以一种标准化的格式启用许多常见的 Web 站点功能。(参见 “使用 JSTL 来更新 JSP 页面” 和分四部分的文章系列 “JSTL 入门”。)
Java Servlets 提供一种基于组件的独立于平台的方法,可以构建基于 Web 的应用程序,同时避免 CGI 程序的性能限制,从而扩展并增强 Web 服务器的功能。(教程 “Java Servlet 技术简介” 可以帮助您了解 Java Servlets。)
J2EE Connector Architecture(JCA)为将 J2EE 平台连接到各种结构的 Enterprise Information Systems(EIS)定义了一个标准的体系结构,它定义了一套可伸缩的安全的事务性机制,使 EIS 厂商能够提供标准的资源适配器,可以将这些资源适配器插入应用服务器中。(参见 “理解 JCA 事务”、“为 EAI 选择 JCA、JMS 或 Web 服务”、“Integrate remote enterprise information systems with JCA, JMS, and Web services” 和教程 “Introduction to the J2EE Connector Architecture”。)
J2EE Management Specification(JMX)为 J2EE 平台定义了一个信息管理模型。根据其设计,J2EE Management Model 可与多种管理系统和协议进行互操作;包含模型到 Common Information Model(CIM)的标准映射,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 的实现,它支持 JTA 并在这个 API 之下的层上实现 OMG Object Transaction Service(OTS) 1.1 规范的 Java 映射。JTS 使用 Internet Inter-ORB Protocol(IIOP)传播事务。(参见 “Understanding JTS -- An introduction to transactions”。)
J2ME 中的技术:
Connected Limited Device Configuration(CLDC)是组成资源有限的移动信息设备的 Java 运行时环境的两种配置之一。CLDC 描述最基本的库和虚拟机特性,所有包含 K 虚拟机(K virtual machine,KVM)的 J2ME 环境实现中都必须提供这些库和特性。
Mobile Information Device Profile(MIDP)是组成资源有限的移动信息设备的 Java 运行时环境的两种配置之一。MIDP 提供核心应用程序功能,包括用户界面、网络连接、本地数据存储和应用程序生命周期管理。(参见教程 “Implementing Push technology with J2ME and MIDP”;阅读 “Better MIDlets by design”、“Custom GUI development with MIDP 2.0” 和教程 “MIDlet development with the Wireless Toolkit”。)
Connected Device Configuration(CDC)是一个基于标准的框架,用来构建和交付可以跨许多连接网络的消费类设备和嵌入式设备共享的应用程序。(参见 “确保无线 J2ME 的安全”。)
Mobile 3D Graphics API for J2ME(M3G)是一种轻量的交互式 3D 图形 API,它作为可选的包与 J2ME 和 MIDP 结合使用。(参见分两部分的文章 “针对 Java 移动设备的 3D 图形”。)
Java 技术与 SOA/Web 服务的关系
面向服务体系结构是一种组件模型,它通过服务之间定义良好的接口和合约将应用程序的功能性单元(称为服务,或 Web 服务)联系在一起。定义接口的方式独立于硬件、操作系统和用来实现服务的编程语言,这使在不同系统上构造的服务可以以统一的通用的方式相互进行交互。SOA 是一种松散耦合的模型,可以替代更传统的紧密耦合的面向对象模型。
产生的 Web 服务可以用 XML 定义业务规则和过程,使软件应用程序可以按照一种独立于平台和编程语言的方式进行通信。XML 技术使数据具有可移植性并促进消息的创建,而 Java 技术使代码具有可移植性。XML 和 Java 语言能够很好地结合在一起,这使它们成为构建和部署 Web 服务的理想组合。
可以通过以下参考资料了解关于 SOA 的更多信息:
developerWorks 上的 SOA and Web services 新手入门 和 XML 新手入门 页面会帮助您开始学习这些复杂的技术。
“Java Web 服务,第 1 部分: Java Web 服务在未来一年内的发展” 启动一个文章系列,这个系列介绍新的 Java Web 服务框架和在 Web 服务上构建的新的功能层。
“SCA application development, Part 1: An overview of Service Component Architecture” 提供了一个关于 Service Component Architecture (SCA) 的文章系列,SCA 是一个规范,它描述一个使用 SOA 构建应用程序和系统的模型。
“服务数据对象简介” 介绍了 Service Data Objects (SDO) 框架,这个框架简化了基于 SOA 的应用程序的 Java EE 数据编程模型。
还可以访问 developerWorks Web 开发专区,这里有对构建企业应用程序的技术建议。
Java 技术与开放源码软件开发的关系
大量的 开放源码项目 通过库、工具、框架、应用程序和应用服务器对 Java 技术进行扩展,从而帮助程序员利用这种强大的技术。许多开放源码技术已经结合到了 Java 平台本身之中,还有一些技术受到了 Java 开发人员的喜爱(在某些情况下甚至已经成为事实标准)。
可以通过以下参考资料进一步了解 Java 编程方面的开放源码技术:
Apache Software Foundation 这个庞大的组织主持着大量开放源码项目,其中很多是基于 Java 语言的。比如:
Apache Struts 是一个用来创建基于 Model-View-Controller 设计模式的 Java Web 应用程序的框架。(参见 “深入 Struts 1.1 和 Struts 专题”。)
Apache Shale 是一种基于 JavaServer Pages 技术的现代的 Web 应用程序开发框架,是 Apache Struts 的后续者。( 你好,Shale 文章系列介绍了 Shale。)
Apache Ant 是 Java 开发构建工具的事实标准。(参见教程 “Apache Ant 101:使 Java 项目生成易如反掌” 和 “以编程方式调用 Apache Ant”。)
Apache Tomcat 是一种流行的 Web 容器,它支持 servlet 和 JavaServer Pages 技术。(教程 “Tomcat for beginning Web developers” 会帮助您学习 Tomcat。)
Apache Geronimo 项目正在构建一个完全基于开放源码组件的完全符合规范的 Java EE 应用服务器。(“Geronimo 入门” 介绍了 Geronimo 的基础知识,还可以查阅 developerWorks Apache Geronimo 项目资源中心 中的大量 Geronimo 信息。)
Apache Derby 是一种完全用 Java 语言实现的关系数据库。(通过 “用 Apache Derby 进行开发 —— 取得节节胜利: 介绍 Apache Derby” 学习基础知识,并查阅 developerWorks Apache Derby 项目参考资料 中的大量信息。)
Eclipse 是一种独立于厂商的开放式开发平台,提供了一套用来构建软件的应用程序框架。Eclipse 平台是用 Java 语言编写的,提供了一个基于插件的框架,这使得创建、集成和使用软件工具更加容易。(IBM 是 Eclipse 的创始成员之一,并积极参与 Eclipse.org Board of Stewards 及其工作小组委员会。)通过以下参考资料进一步了解这个平台为 Java 开发提供的组件技术:
AspectJ 是面向方面的 Java 语言扩展,可以用来对横切关注点(比如日志和异常处理)进行模块化。(参见教程 “AOP 介绍”。)
Standard Widget Toolkit(SWT) 是一个用户界面工具包,可以按照高效且可移植的方式访问底层操作系统的 UI 设施。(参见 “SWT 和 JFace,第 1 部分: 简介。”)
Eclipse Test and Performance Tools Platform(TPTP)为测试和性能工具提供框架和服务。(参见教程 “Eclipse Test and Performance Tools Platform 简介。”
Eclipse Web Tools Platform(WTP)为 Eclipse 平台提供了用来开发 Java EE Web 应用程序的工具。(参见教程 “Eclipse Web 工具平台 V1.0 简介”。)
访问 developerWorks Eclipse 项目资源中心,这里有大量关于 Eclipse 的文章和教程。
流行的 Spring 框架 是一种用于 Java EE 应用程序开发的层次化框架:
Spring 系列 和 “Spring 2 和 JPA 简介” 提供了详细信息。
访问 Spring 专题,学习更多有关 Spring 框架的文章和教程。
本问转自:http://hanyuanbo.iteye.com/blog/731146