内容简介
第1天课程 挑战N层开发
1.1 单层程序的开发
目录
第一周课程 J2EE和EJB的简介
1.2 向二层开发进军
1.3 用模块简化复杂性
1.4 三层方案的优势
1.3.2 模块化的好处
1.3.1 组件技术
1.5.2 持久性
1.5.1 生命周期
1.5 企业计算模块
1.6 Java 2企业版(J2EE)
1.5.4 事务
1.5.3 命名
1.6.2 J2EE标准服务
1.6.1 组件和容器
1.6.3 J2EE蓝图
1.6.4 J2EE兼容性测试套件
1.9 问与答
1.8 小结
1.7 J2EE的发展前景
1.10 练习
2.1 再谈J2EE平台
第2天课程 J2EE平台和角色
2.2.1 安装J2EE SDK 1.3
2.2 使用Sun微系统的J2EE SDK
2.2.2 启动J2EE引用实现(RI)
2.2.3 解决J2EE和云景数据库服务器启动时的常见问题
2.2.5 本书中涉及的软件
2.2.4 关闭J2EE RI和云景数据库服务器
2.3.1 业务层
2.3 了解层和组件的概念
2.3.2 表达层
2.3.3 组件:以Web应用为中心
2.3.4 客户层
2.3.5 独立的客户端
2.4 了解容器
2.5.4 Java事务API(JTA)
2.5.3 Java数据库连接(JDBC)
2.5 了解容器为组件提供的服务
2.5.1 超文本传输协议(HTTP)
2.5.2 安全套接层超文本传输协议(HTTPS)
2.5.8 JavaBean激活框架(JAF)
2.5.7 Java命名和目录接口(JNDI)
2.5.5 Java认证和授权服务(JAAS)
2.5.6 用于解析XML的JavaAPI(JAXP)
2.5.12 基于IIOP协议的远程方法调用(RMI-IIOP)
2.5.11 Java接口定义语言(JavaIDL)
2.5.9 JavaMail
2.5.10 Java消息服务(JMS)
2.6.1 J2EE产品供应商
2.6 J2EE平台上的角色简介
2.5.13 连接器体系结构
2.6.6 工具供应商
2.6.5 系统管理员
2.6.2 应用程序组件供应商
2.6.3 应用程序组装者
2.6.4 应用程序部署者
2.7 打包和部署J2EE应用程序
2.6.7 J2EE工具发展前景
2.7.1 J2EE应用程序
2.7.2 将模块分解为组件
2.9 问与答
2.8 小结
2.10.2 使用求职代理实例
2.10.1 求职代理
2.10 练习——学习实例
2.10.3 熟能生巧
2.10.5 安装实例数据库
2.10.4 学习实例在光盘中的目录
3.1 命名和目录服务
第3天课程 命名和目录服务
3.4 常见命名服务
3.3 JNDI是什么
3.2 为什么使用命名服务
3.6 使用JNDI
3.5 命名约定
3.7 获得一个初始环境
3.8.1 定义JNDI服务
3.8 初始环境命名异常
3.8.2 JNDI属性文件
3.8.5 硬编码的属性
3.8.4 Applet参数
3.8.3 应用程序属性
3.9.2 绑定时的常见问题
3.9.1 对象绑定
3.9 JNDI对象绑定
3.9.5 解除对象绑定
3.9.4 重绑定对象
3.9.3 名字持久性
3.10.1 改变环境参数
3.10 JNDI名字查找
3.9.6 对象重命名
3.10.2 定位RMI-IIOP对象
3.11.1 环境参数列表
3.11 环境参数
3.11.2 创建和销毁环境参数
3.12.2 复合名字与混合名字
3.12.1 特殊字符
3.12 更多关于JNDI名字的内容
3.13 属性
3.12.3 URL
3.13.3 使用OpenLDAP
3.13.2 获取LDAP服务器
3.13.1 LDAPX.500命名概述
3.13.5 测试LDAP服务器
3.13.4 配置JNDI以使用LDAP
3.13.7 读取属性
3.13.6 获取目录环境
3.13.8 搜索对象
3.13.9 操作属性
3.14 更多关于对象的内容
3.14.2 定义代码基
3.14.1 从代码基中装载类
3.14.3 引用
3.15.2 安全性
3.15.1 JNDI事件
3.15 JNDI还可以做什么
3.16 小结
3.18 练习
3.17 问与答
4.1.1 Bean、客户端、容器和服务器
4.1 什么是EJB
第4天课程 EJB简介
4.1.3 发现EJB
4.1.2 EJB概览
4.2 为什么使用EJB
4.1.5 EJB的常见使用
4.1.4 EJB的类型
4.2.2 从UI和数据访问中分离业务逻辑
4.2.1 隐藏程序的复杂性
4.3.1 业务接口
4.3 EJB中包括什么
4.2.3 容器服务
4.3.2 业务逻辑
4.3.3 厂类信息
4.4 如何创建EJB
4.3.4 Bean元数据
4.4.3 创建可部署组件
4.4.2 创建代码的限制
4.4.1 创建机制
4.6.1 发现EJB
4.6 如何使用EJB
4.5 如何部署EJB
4.5.1在容器中插入配置
4.5.2 执行部署
4.6.3 除去EJB
4.6.2 检索与使用
4.7 在J2EE RI中部署和使用一个EJB
4.6.4 运行客户端
4.7.1 打开学习实例的EAR文件
4.7.2 查看学习实例应用程序
4.7.3 部署实例应用程序
4.7.4 测试实例应用程序
4.7.5 解决实例应用程序中出现的问题
4.9 问与答
4.8 小结
4.10 练习
5.1 概述
第5天课程 会话EJB
5.2 会话Bean的javax.ejb包
5.3 无状态会话Bean的生命周期
5.4 指定无状态会话Bean
5.5.2 本地接口方法的实现
5.5.1 javax.ejb.SessionBean的实现
5.5 无状态会话Bean的实现
5.5.3 远程接口方法的实现
5.5.4 异常
5.6.1 使用deploytool
5.6 配置和部署一个无状态会话Bean
5.6.2 结构元素
5.6.3 表达元素
5.6.4 会话元素
5.7 有状态会话Bean的生命周期
5.6.5 部署企业应用程序
5.8 指定有状态会话Bean
5.9.1 钝化
5.9 有状态会话Bean的实现
5.9.3 连锁状态
5.9.2 超时
5.11 客户端视图
5.10 配置和部署有状态会话Bean
5.12.1 业务接口
5.12 模式和习惯
5.13 忠告
5.12.3 粗粒度
5.12.2 适配器
5.16 练习
5.15 问与答
5.14 小结
6.1.1 再谈n层体系结构
6.1 概述
第6天课程 实体EJB
6.1.3 识别实体
6.1.2 与关系型数据库管理系统技术的比较
6.2 实体Bean的javax.ejb包
6.4 远程接口与本地接口
6.3 实体Bean的类型
6.5 BMP实体Bean的生命周期
6.6 指定BMP实体Bean
6.6.1 本地Home接口
6.6.2 本地接口
6.7 BMP实体Bean的实现
6.7.1 实现本地Home接口方法
6.7.2 实现本地接口方法
6.7.3 生成ID号
6.7.5 使用查找方法的注意事项
6.7.4 再谈粒度
6.7.6 EJB容器性能调试
6.8 配置和部署BMP实体Bean
6.9 客户端视图
6.10 再谈会话Bean
6.11.2 为实体Bean使用本地接口
6.11.1 接口、外观和状态
6.11 模式和习惯
6.11.3 与值集绑定的类
6.11.6 晚连接,早释放
6.11.5 不要为查找方法使用Enumeration
6.11.4 自我封装域
6.11.7 再谈业务接口
6.12 忠告
6.15 练习
6.14 问与答
6.13 小结
7.1 容器管理的持久性概述
第7天课程 CMP和EJB QL
7.1.1 N层体系结构(再谈谈)和CMP字段
7.1.2 浅谈实例数据库
7.2 CMP实体Bean的生命周期
7.3 容器管理的关联
7.3.2 导航
7.3.1 关联类型
7.3.3 cmr字段元素
7.3.4 操作关联
7.4 EJB查询语言
7.4.1 EJB选择方法
7.4.2 语法和例子
7.4.3 更多内容
7.5.2 本地接口
7.5.1 本地Home接口
7.5 指定CMP实体Bean
7.6.1 实现javax.ejb.EntityBean
7.6 CMP实体Bean的实现
7.6.2 实现本地Home接口方法
7.6.3 查找方法
7.6.4 实现本地接口方法
7.7.1 entity元素
7.7 配置CMP实体Bean
7.7.2 relationships元素
7.8 部署CMP实体Bean
7.9.1 在ejbLoad()/ejbStore()中规范化/反规范化数据
7.9 模式和习惯
7.9.2 不要显示cmp字段元素
7.9.3 不要显示cmr字段元素
7.9.5 使用选择方法实现Home方法
7.9.4 通过Bean接口实施引用的完整性
7.11 小结
7.10 忠告
7.13 练习
7.12 问与答
8.1 事务处理概述
第8天课程 事务处理和持久性
第二周课程 开发J2EE应用程序
8.2 容器管理的事务划分
8.3.2 使用Java事务API
8.3.1 动机和限制
8.3 Bean管理的事务划分
8.3.4 客户划分事务
8.3.3 部署BMTD Bean
8.3.5 再谈异常
8.4 延长有状态会话bean的生命周期
8.5 后台事务:事务实质
8.5.1 事务管理器、资源管理器和2PC
8.5.2 JTA API
8.5.3 事务出错后应如何解决
8.5.4 JTA与JTS
8.6 持久性技术概述
8.7 JDBC
8.8 SQLj
8.8.1 SQLj Part0
8.8.2 SQLj Part1
8.8.3 SQLj Part2
8.9 JDO
8.9.1 JDO概念
8.9.2 javax.jdo类和接口
8.9.3 查询
8.10 忠告
8.9.4 其他功能
8.12 问与答
8.11 小结
8.13 练习
9.1 消息
第9天课程 Java消息服务
9.3 JMS API体系结构
9.2 Java消息服务API
9.3.3 JMS发布/订阅消息域
9.3.2 JMS点对点消息域
9.3.1 消息域
9.4 使用JBoss开发JMS应用程序
9.5.3 在J2EE RI中创建队列
9.5.2 在J2EE RI中添加目的地
9.5 使用J2EE RI开发JMS应用程序
9.5.1 J2EE RI连接工厂
9.6 点对点消息实例
9.6.1 JMS消息
9.6.2 创建消息
9.6.5 发送JMS文本消息实例
9.6.4 关闭连接
9.6.3 发送消息
9.6.6 使用消息
9.7.1 接收JMS文本消息实例
9.7 简单的同步接收器实例
9.7.2 异步消息
9.8 发布/订阅消息域
9.9.1 公告板发布程序
9.9 发布/订阅消息实例
9.9.2 公告板订阅程序
9.9.3 创建持久订阅
9.9.4 JMS的其他特点
9.10 XML简介
9.12 问与答
9.11 小结
9.13 练习
10.1 什么是消息驱动Bean
第10天课程 消息驱动Bean
10.2 消息驱动Bean的编程接口
10.1.2 与其他EJB的异同之处
10.1.1 消息生产者的观点
10.3 消息驱动Bean的生命周期
10.4.1 就绪方法池
10.4 创建肖息驱动Bean
10.4.4 处理异常
10.4.3 使用消息
10.4.2 删除Bean
10.4.5 容器管理的事务处理和Bean管理的事务处理
10.5 编写简单的消息驱动Bean
10.4.7 JMS消息过滤器
10.4.6 消息认可
10.6.1 创建队列
10.6 运行实例
10.6.2 部署消息驱动Bean
10.6.3 创建发送客户端以创建消息
10.7 开发代理学习实例
10.7.1 步骤1——Sender Helper类
10.7.2 步骤2——代理和注册会话Bean
10.7.3 步骤3——消息驱动bean
10.8 使用其他的体系结构
10.7.6 步骤6——测试ApplicantMatch Bean
10.7.4 步骤4——创建JMS队列
10.7.5 步骤5——部署EJB
10.11 练习
10.10 问与答
10.9 小结
11.1 E-Mail常识
第11天课程 JavaMail
11.1.1 简单邮件传输协议(SMTP)
11.2 JavaMail API简介
11.1.5 多用途Internet邮件扩展(MIME)
11.1.2 邮箱协议(POP3)
11.1.3 网络消息访问协议(IMAP)
11.1.4 其他协议
11.4 发送第一封电子邮件
11.3 安装开发环境
11.5 创建多媒体电子邮件
11.5.1 创建消息:方法#1
11.5.2 创建消息:方法#2
11.6 发送带附件的电子邮件
11.7.1 检索消息
11.7 探索JavaMail API
11.7.2 删除消息
11.7.3 取得附件
11.7.4 认证用户和安全性
11.9 问与答
11.8 小结
11.10 练习
12.1.1 为Web应用程序修改Servlet
12.1 Servlet的用途和使用
第12天课程 Servlet
12.1.4 整合Servlet和服务器
12.1.3 高效与可扩展性
12.1.2 服务器与平台独立性
12.2.1 HTTP结构
12.2 HTTP简介
12.2.3 服务器响应
12.2.2 其他的HTTP方法
12.3 HTML简介
12.2.4 内容类型头
12.6 简单的Servlet实例
12.5 Servlet类继承体系
12.4 Servlet环境
12.7.2 具有参数的Servlet实例
12.7.1 如何访问参数
12.7 向Servlet传递参数数据
12.7.4 Servlet生命周期
12.7.3 使用POST请求
12.7.5 Servlet环境
12.8.1 Web应用程序的文件和目录结构
12.8 Web应用程序
12.8.2 Web应用程序的部署描述符
12.9.1 HTTP错误
12.9 处理错误
12.9.2 Servlet异常处理
12.10.1 使用会话对象
12.10 保留客户端信息和状态信息
12.10.2 表单隐藏域
12.10.4 创建一个Cookie
12.10.3 Cookie
12.10.5 重写URL
12.11.1 设计过滤器
12.11 Servlet过滤
12.11.2 审计过滤器实例
12.11.3 部署过滤器
12.12 事件监听
12.14 安全性和Servlet沙箱
12.13 Servlet线程
12.15.1 AgencyTable Servlet代码
12.15 求职代理学习实例
12.15.2 部署AgencyTable Servlet
12.18 练习
12.17 问与答
12.16 小结
13.1 JSP是什么
第13天课程 JSP
13.1.2 转换和执行
13.1.1 角色分离
13.2 JSP语法和结构
13.3 第一个JSP实例
13.4 JSP生命周期
13.4.1 发现和纠正JSP错误
13.5 JSP指令
13.4.2 JSP生命周期方法
13.5.2 page指令
13.5.1 include指令
13.7 使用HTTP请求的参数
13.6 存取HTTP Servlet变量
13.8.2 定义JavaBean
13.8.1 什么是JavaBean
13.8 用JavaBean简化JSP网页
13.8.4 设置Bean属性
13.8.3 取得Bean属性
13.8.6 在求职代理实例中使用Bean
13.8.5 初始化Bean
13.9.1 结构和导航
13.9 向求职代理实例中添加Web接口
13.9.2 外观和感受
13.9.3 错误处理页的定义
13.9.4 部署JSP学习实例
13.10 比较JSP和Servlet
13.13 练习
13.12 问与答
13.11 小结
14.1 标记库扮演的角色
第14天课程 JSP标记库
14.2.1 使用简单的标记
14.2 开发简单的自定义标记
14.2.2 标记库描述符(TLD)
14.2.3 自定义Java标记
14.2.5 自定义标记“HelloWorld”
14.2.4 自定义标记的生命周期方法
14.2.6 部署标记库Web应用程序
14.2.7 定义TLD位置
14.3 带属性的标记
14.2.8 使用简单的标记
14.4 定义脚本变量的标记
14.5 迭代标记
14.6.2 分层的标记结构
14.6.1 使用共享脚本变量
14.6 协作标记
14.7 定义标记的额外信息对象
14.7.1 验证属性
14.7.2 定义脚本变量
14.8 处理标记体
14.9 JSP标准标记库(JSPTL)
14.9.2 使用JSPTL的forEach标记
14.9.1 在J2EE RI中使用JSPTL
14.9.3 其他JSPTL标记
14.9.5 其他Jakarta标记库
14.9.4 JSPTL脚本语言
14.11 问与答
14.10 小结
14.12 练习
15.1 安全概述
第15天课程 安全
第三周课程 在企业中集成J2EE
15.2.1 对称加密法
15.2 常用安全技术
15.2.3 SSL和HTTPS
15.2.2 非对称加密
15.2.5 数字证书
15.2.4 校验和与摘要
15.3.1 J2EE安全术语
15.3 J2EE中的安全
15.3.2 使用J2EE RI安全
15.4.2 定义角色
15.4.1 定义EJB安全
15.4 安全和EJB
15.4.3 定义安全身份
15.4.4 定义方法许可
15.4.5 映射代理到角色
15.4.6 使用角色作为安全身份
15.5 Web应用程序和组件的安全
15.5.2 配置J2EE RI基本认证
15.5.1 Web认证
15.5.3 声明的Web授权
15.5.5 加入可编程Web安全到学习实例
15.5.4 可编程Web授权
15.6 安全和JNDI
15.5.6 使用安全的Web认证方案
15.6.2 SASL认证
15.6.1 简单LDAP认证
15.8 问与答
15.7 小结
15.9 练习
16.1 平台无关数据交换的原因
第16天课程 整合XML和J2EE
16.2 XML起源
16.3.1 HTML和XML
16.3 XML结构和语法
16.3.4 元素
16.3.3 声明
16.3.2 XML文档结构
16.3.5 结构良好的XML文档
16.3.7 注释
16.3.6 属性
16.4.1 文档类型定义
16.4 创建有效XML文档
16.4.2 名称空间
16.4.3 用XML Schema强化文档结构
16.4.4 如何在J2EE中使用XML
16.5 解析XML
16.7 使用SAX解析XML
16.6 JAXP包
16.8 文档对象模型(DOM)解析器
16.9 修改DOM树
16.10 支持XML绑定的Java体系结构
16.11 扩展求职代理学习实例
16.11.1 步骤1——改变会话Bean
16.11.2 步骤2——修改MessageSender帮助类
16.11.3 步骤3——修改ApplicationMatch消息驱动Bean
16.14 练习
16.13 问与答
16.12 小结
17.1 在客户端表示XML文档
第17天课程 XML文档转换
17.1.3 XSL格式化对象(XSL-FO)
17.1.2 可扩展样式表语言(XSL)
17.1.1 在浏览器上表示XML文档
17.2 可扩展样式转换(XSLT)
17.2.3 在客户端表示XML文档和样式表
17.2.2 在服务器上存储转换后的文档
17.2.1 应用样式表
17.3 通过J2EE使用XALAN
17.2.4 在服务器上转换XML文档
17.3.2 从命令行使用XALAN
17.3.1 使用XALAN转换XML文档
17.4 在Java应用程序中使用XSLT
17.5.1 模板规则
17.5 XSLT样式表
17.5.2 XML元素的文本表示
17.5.3 通过XSLT使用Xpath
17.5.5 处理属性
17.5.4 默认的样式表规则
17.6 使用样式表元素
17.6.1 处理空格和文本
17.6.2 添加注释
17.6.3 属性值
17.6.4 创建和复制元素
17.6.5 属性和属性集
17.6.6 其他XSL元素
17.9 问与答
17.8 小结
17.7 XSLT编译器
17.10 练习
18.1.1 什么是模式
18.1 J2EE模式
第18天课程 模式
18.1.2 为什么使用模式
18.1.4 J2EE模式
18.1.3 模式的类型
18.2.1 在环境中应用模式
18.2 应用J2EE特定的模式
18.1.5 模式目录
18.2.3 J2EE表达层模式
18.2.2 通用模式
18.2.5 J2EE综合层模式
18.2.4 J2EE业务层模式
18.3.1 分析学习实例
18.3 环境中的模式
18.2.6 J2EE中的模式
18.3.2 会话Facade和实体EJB
18.3.3 数据交换和值对象
18.3.4 非实体EJB的数据访问
18.3.6 组装实体
18.3.5 消息和异步激活
18.3.7 组装JSP
18.3.8 JSP和关注点分离
18.3.9 客户端代理服务器和委托
18.3.11 其他业务
18.3.10 定位服务
18.5 小结
18.4 J2EE模式趋势
18.3.12 重构学习实例
18.7 练习
18.6 问与答
19.1 回顾外部资源和原有系统
第19天课程 整合外部资源
19.2.1 体系结构概述
19.2 连接器体系结构简介
19.2.2 角色与职责
19.3 使用公共客户接口
19.3.2 安装资源适配器
19.3.1 与EIS交互
19.3.3 创建第一个CCI应用程序
19.3.4 管理事务和查找记录
19.5 CORBA简介
19.4 其他连接技术简介
19.6 JavaIDL简介
19.7.1 基于JRMP的RMI实例
19.7 使用基于IIOP的RMI
19.7.2 基于IIOP的RMI实例
19.8 JNI简介
19.9 整合技术评估
19.12 练习
19.11 问与答
19.10 小结
第20天课程 借助J2EE使用RPC样式的Web服务
20.1.1 什么是Web服务
20.1 Web服务概述
20.1.4 Web服务体系结构
20.1.3 Web服务技术和协议
20.1.2 为什么使用Web服务
20.2 J2EE的Web服务
20.2.2 工具和技术
20.2.1 J2EE的Web服务体系结构
20.3 使用基于SOAP、RPC样式的Web服务
20.2.3 整合Web服务和已存在的J2EE组件
20.3.1 面向RPC的Web服务
20.3.2 在Tomcat4.0下设置Axis
20.3.4 WSDL文档剖析
20.3.3 服务描述信息
20.3.5 从WSDL创建Java代理服务器
20.3.6 通过SOAP调用Web服务
20.3.8 调试SOAP交互
20.3.7 折衷方案
20.4.1 将Java类包装为Web服务
20.4 实现基于SOAP、RPC样式的Web服务
20.4.2 Web服务的客户端
20.4.3 从WSDL开始
20.4.4 使用AxisJWS文件
20.4.5 会话情景和Web服务
20.4.6 将存在的J2EE功能包装为Web服务
20.5.1 Java和SOAP/WSDL类型间的映射
20.5 参数类型和类型映射
20.5.2 采用Serializer映射复杂类型
20.7 问与答
20.6 小结
20.5.3 深入探讨复杂类型映射
20.8 练习
21.1.1 什么是Web服务注册表
21.1 Web服务注册表
第21天课程 Web服务注册表和消息样式的Web服务
21.1.4 注册表分类
21.1.3 注册表如何工作
21.1.2 为什么我们需要Web服务注册表
21.1.5 ebXML Registry和Repository
21.2 访问UDDI注册表中的信息
21.1.6 UDDI概述
21.2.1 使用UDDI4J操纵服务信息
21.2.2 使用IBM的WSTK客户端API操纵服务信息
21.3.1 一种通用方法
21.3 使用JAXR进行注册表访问
21.2.3 检索和使用信息
21.4 使用基于消息的SOAP接口
21.3.2 使用JAXR存储和检索服务信息
21.4.2 创建客户
21.4.1 消息样式与RPC样式
21.5 使用JAXM发送和接收SOAP消息
21.4.3 创建服务
21.5.2 配置JAXM
21.5.1 JAXM和J2EE
21.5.3 发送基本的SOAP消息
21.5.5 填充消息
21.5.4 运行简单的客户
21.5.6 Header和附件
21.5.7 使用JAXM接收SOAP消息
21.5.8 使用JAXM profile
21.5.9 使用JAXM Profile发送一条消息
21.5.10 使用JAXM profile接收一条消息
21.7 问与答
21.6 小结
21.8 练习
A.1 UML简介
附录A UML简介
A.2 用例图
A.3 类图
A.3.2 属性
A.3.1 关联
A.3.3 操作
A.3.5 约束
A.3.4 泛化
A.4 顺序图
B.1.1 修改表(ALTER TABLE)
B.1 常用的SQL语句(SQL99)
附录B SQL语句参考
B.1.3 创建视图(CREATE VIEW)
B.1.2 创建表(CREATE TABLE)
B.1.8 选择(SELECT)
B.1.7 插入(INSERT)
B.1.4 删除(DELETE)
B.1.5 删除数据表(DROP TABLE)
B.1.6 删除视图(DROP VIEW)
B.1.12 右外联接
B.1.11 左外联接
B.1.9 内联接
B.1.10 交叉联接
B.2.2 WHERE子句
B.2.1 FROM子句
B.1.13 全联接
B.1.14 更新(UPDATE)
B.2 常用的SQL子句
B.2.5 ORDER BY子句
B.2.4 HAVING子句
B.2.3 GROUP BY子句
C.1.1 元素
C.1 什么是XML
附录C XML概述
C.1.2 声明
C.1.5 名称空间
C.1.4 特殊字符
C.1.3 注释
C.2.1 文档类型定义
C.2 强化XML文档结构
C.2.2 XML Schema
C.3 在哪里获取更多相关信息
D.2.1 JCP成员
D.2 JCP相关内容
附录D Java Community Process
D.1 JCP简介
D.3 了解JSR进程
D.2.5 执行委员会
D.2.2 专家组
D.2.3 公共成员
D.2.4 过程管理办公室
D.4 进入下一步
术语表