### J2EE开源框架知识点详解
#### J2EE开发中的基本准则
1. **基于接口编程**:在软件设计中采用面向接口的方式进行编程能够增强代码的灵活性与可维护性。这种方式强调的是“做什么”而不是“怎么做”,通过定义清晰的接口来规范组件之间的交互方式,使得系统的各部分能够更加独立地发展,降低耦合度。
2. **微内核体系结构**:微内核架构将系统的核心服务和业务逻辑分离,核心服务只负责最基本的功能如进程间通信和设备驱动等,而业务逻辑则由外部的服务提供。这种架构的优势在于能够提高系统的稳定性和可扩展性,同时也便于服务的替换和升级。
3. **测试先行(TDD)**:测试驱动开发是一种软件开发方法论,强调在编写实际代码之前先编写测试用例。这种方法有助于确保代码质量,并且能够在开发初期发现潜在的问题。
4. **完善的配置管理和每日构建**:良好的配置管理能够确保项目的版本一致性,避免因版本混乱导致的问题。每日构建则可以帮助团队及时发现问题并解决,保证项目进度。
#### 主流开源软件及框架介绍
1. **视图层框架**
- **页面技术和模板引擎**:Apache MyFaces JSF 是一种面向对象的页面开发技术,适合大型企业级应用。Velocity 是一个功能强大的模板引擎,被广泛用于生成HTML网页或任何文本格式的数据。SiteMesh 和 FreeMarker 则是另外两种常用的模板引擎。
- **门户框架**:Liferay 是一款功能全面的门户框架,适用于复杂的业务需求;JetSpeed 是一个基于开源框架构建的企业级门户解决方案,具有高度的灵活性和可定制性;Pluto 是符合 JSR-168 规范的门户框架,适用于集成多种应用和服务。
- **JSP 标签库**:displaytag 通常与 Struts 结合使用,用于生成列表和表格;Struts-Layout 提供了一系列丰富的 UI 组件,方便开发者构建用户界面。
- **客户端脚本**:AJAXTags、StrutsAjaxTags 和 AjaxAnywhere 分别提供了一组方便的 AJAX 相关功能,如下拉级联选择、自动完成等,支持局部页面更新。
- **搜索引擎**:Lucene 是一个高性能的全文检索库,支持多种语言。
- **RSS 工具**:RSSLibJ 和 RSSLib4J 分别支持读取和生成 RSS 文件,方便实现信息聚合。
2. **模型层框架**
- **持久层框架**:Hibernate 是一款流行的 ORM(对象关系映射)框架,它能够将 Java 对象映射到数据库表上,简化了数据访问层的开发;JDO 是 Java 数据对象规范,相比 Hibernate 更加轻量级;PropertySet 则是一个基于 XML 的持久化方案。
- **AOP 和 IoC 框架**:Spring 是一个全能型的 AOP 和 IoC 容器,尽管配置较为复杂,但提供了强大的功能;AspectJ 和 AspectWerkz 分别是 AOP 方面的框架;PicoContainer 则是一个轻量级的 IoC 容器,无需 XML 配置。
- **规则引擎**:Drools 是一个基于规则的引擎,支持 JSR-94 标准,可用于实现复杂的业务逻辑处理。
- **公共组件包**:Apache Commons 包含了大量的实用类和工具包,涵盖了文件上传、字符串操作等多种应用场景。
- **缓存系统**:OSCache 提供了在现有 JSP 页面内的快速内存缓冲功能;JCACHE 是 JSR-107 的实现,为 Java 应用程序提供了一个统一的缓存接口。
- **内容管理系统**:InfoGlue 和 OpenCms 是两个开源的内容管理系统,适用于构建和管理网站内容。
- **企业应用集成(EAI)**:BIE 和 openadaptor 是用于企业应用集成的框架,能够帮助不同应用之间进行数据交换。
- **身份认证与授权**:Kasai、Gabriel 和 jGuard 提供了 JAAS 实现,用于身份验证和授权。
- **日志工具**:Log4j 是一个流行的日志记录工具,广泛应用于 Java 应用程序中。
3. **控制层框架**
- **Web 框架**:Struts 是一个经典的 MVC 框架,适用于构建复杂的 Web 应用程序;WebWork2 类似于 Struts,但无需 ActionForm,更加灵活。
- **页面流**:NetUI 基于 Annotation 构建于 Struts 之上,简化了页面流的控制。
- **工作流系统**:OSWorkflow 和 Shark 是两个灵活的工作流系统,支持多种工作流标准,能够帮助企业实现自动化流程管理。
4. **CASE 工具**
- **测试工具**:JUnit 是一个用于 Java 的单元测试框架,支持 TDD 方法论,能够帮助开发者编写高质量的代码。
以上是对 J2EE 开发中的一些基本准则以及主流开源软件和框架的详细介绍,这些工具和技术的选择对于构建高效稳定的 J2EE 应用程序至关重要。