Jakarta Turbine 可能大家不是非常熟悉,但是它是一个很好的Web Framework(也有缺点,在以后为大家指出),先介绍一下 Turbine 的整体结构吧。
Turbine 的开发包叫:TDK(Turbine Developer Kit),它有一组Jakarta Turbine子项目组成(Turbine 项目的子项目数仅次于 Jakarta Common 项目位于第二位),列举如下:
1.Turbine:核心框架
2.Torque:JDO 的Turbine实现,利用XML技术将关系性数据库和Java Class OO 映射,足以让你耳目一新。
3.Fulcrum:服务框架,提供了大量的Web系统服务功能,个人认为Intake Service,Cache Service很棒。
4.Maven:Java 项目更新工具,基于POM(project object model)概念,目前只支持Turbine。
5.JCS(Java Caching System):是服务器段Java程序的分布式缓存系统,极棒的概念。
6.Stratum:Turbine 和 Avalon 的移植工具。
还有一个和 Turbine 轻密如战友的 Web 模版项目 Jakarta Velocity.
1.Turbine 的历史:
我用Turbine的时候是 2001年1月(很早吧),当时的 TDK 版本是1.1.A13,非常的不稳定,并且有相当多的 Bug.当时促使我们用Turbine的原因是其良好的MVC架构.当时EJB还根本没有火起来,Struts也只是一个雏形而已,而当时的Turbine已经发展的不错了(当然还有很多的问题).
我当时选择了Turbine来开发一套物流管理系统,遇到的最大的困难是帮助文档奇缺,这是Microsoft的开发组件远远胜于当时的Java的一点(注1).
但是我觉得当时的Turbine News Group的氛围非常的好,基本上问题都能得到解决,而且Turbine的升级速度要比现在快的多(我觉的最近的Turbine组有点懒,TDK(Turbine)3.0 Released 版本都快等了一年了,我的天).虽然文档很缺(注2),但是有这个新闻组的帮助,项目做的还比较顺利,一个附带的好处是让我习惯了看E文文档.
Turbine 的发起人之一是Brett McLaughlin,我比较崇敬的程序员之一(我顶礼膜拜的是伟大的Anders).Turbine的开发宗旨是:"Turbine is a servlet based framework that allows experienced Java developers to quickly build secure web applications."(Turbine 提供给有经验的Java开发者一个快速开发安全Web应用的Servlet平台),我深有感触的觉得的确如此.
日志:
2000/9 Turbine 诞生了
2001/3 Turbine 1.1 Released
2001/6 Turbine 2.1 Released
2002/12 Turbine 2.2 Released
期待 3.0
2.一些看法
我现在在做 EJB + Struts 的开发,结合现在的经验谈谈我作为第一线的软件设计开发人员的想法.
EJB 吸引大家的是它的标准中的容器(Container),组件(Component),分布式概念.我说一句实话,EJB 真的只适合于做大项目(ERP,SCM,CRM 等等),如果你只是做一个 Web Application(1000个人使用,提供100个动态页面的话)真的没必要自己给自己找麻烦.
EJB 和数据层的结合用的是 CMP (EJB 2.0 & 2.1 建议尽量使用CMP来取代BMP以提高性能),但是你要用EJB进行抽象、多态是在是太困难了.IBM DeveloperWorks 上的一句话是我感同身受:"CMP 是开发针对于意志薄弱的开发者来说是不适合的".
而 Turbine 的 Torque OM 机制使得你能充分发挥你的想象力和创造力,我一直认为计算机语言有好坏之分,标准就是它是否能使你的想象得到实现并且十分漂亮.Turbine Framework 对于开发者来说是十分优秀的.
(注3)
3.TDK 的相关技术
Ant:Turbine 项目的编译技术使用的都是Ant.熟悉Ant至关重要.TDK 的核心编译文件是..\webapps\yourproject\WEB-INF\build\build.xml 和 build.properties.熟悉Ant的人一看,拷,太熟悉了!!!
Log4j:Turbine 项目的日志纪录用的是 Jakarta 组的Log4j.
---------------------------------------------------------------------------------
# -------------------------------------------------------------------
#
# L O G G I N G
#
# -------------------------------------------------------------------
# We use Log4J for all Turbine logging and we embed the log4j
# properties within our application configuration.
#
# NOTE:
# The presence of ${webapp} in the logging configuration
# is not a mistake. Internally the value of ${webapp}
# is set so that you can use it with standard log4j
# properties to get logs to appear in your
# webapp space.
# -------------------------------------------------------------------
log4j.category.default = INFO, default
log4j.appender.default = org.apache.log4j.FileAppender
log4j.appender.default.file = ${webapp}/logs/turbine.log
log4j.appender.default.layout = org.apache.log4j.PatternLayout
log4j.appender.default.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.default.append = false
log4j.category.sql = DEBUG, sql
log4j.appender.sql = org.apache.log4j.FileAppender
log4j.appender.sql.file = ${webapp}/logs/sql.log
log4j.appender.sql.layout = org.apache.log4j.PatternLayout
log4j.appender.sql.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.sql.append = false
log4j.category.vdebug = DEBUG, vdebug
log4j.appender.vdebug = org.apache.log4j.FileAppender
log4j.appender.vdebug.file = ${webapp}/logs/vlog.log
log4j.appender.vdebug.layout = org.apache.log4j.PatternLayout
log4j.appender.vdebug.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.vdebug.append = false
---------------------------------------------------------------------------------
以上的配置是位于../WEB-INF/conf/下的TurbineResources.properties文件中,看看文件名就知道他有多重要了,我会在以后的文章中详细介绍这个文件的.:-)
Velocity:Jakarta 项目组极棒的模版项目,它的配置信息也在TurbineResources.properties中
---------------------------------------------------------------------------------
# -------------------------------------------------------------------
#
# V E L O C I T Y S E R V I C E
#
# -------------------------------------------------------------------
# The location of Velocity configuration file, relative to webapp root
# These properties will override the default properties set by Velocity.
# You should specify the path to the templates directories as well as
# the path to the log file and they should also be relative to webapp root
services.VelocityService.template.extension=vm
services.VelocityService.default.page.template = /Default.vm
services.VelocityService.default.layout.template = /Default.vm
services.VelocityService.runtime.log=/logs/velocity.log
# 注意定义为中文 GB2312
services.VelocityService.input.encoding=GB2312
services.VelocityService.velocimacro.library = GlobalMacros.vm
services.VelocityService.resource.loader = file
services.VelocityService.file.resource.loader.deSCRIPTion = Velocity File Resource Loader
services.VelocityService.file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
services.VelocityService.file.resource.loader.path = /templates
services.VelocityService.file.resource.loader.cache = false
services.VelocityService.file.resource.loader.modificationCheckInterval = 2
services.VelocityService.resource.loader = classpath
services.VelocityService.classpath.resource.loader.deSCRIPTion = Velocity Classpath Resource Loader
services.VelocityService.classpath.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
services.VelocityService.earlyInit = true
---------------------------------------------------------------------------------
Velocity 使用的详细介绍可参看我转贴的<>,这篇文章我很早就收集了,实在忘了是那位高人之作(如果是你,请指正,我也真的感谢你的文章对我的帮助).
4.结束语
这篇文章是我随性写的,看官如果有任何意见的话写信给我:jacky.li@trade-chic.com,绝对虚心接受.
注:
1.在Java开发之前,我用的是Microsoft Visual Studio 5.0 - 6.0,一个遗留问题是当时写Turbine时的版本控制软件选择的还是SourceSafe 6.0.:-).
2.目前为止,我还没有看见过介绍Jakarta组项目的中文书籍,除了一本Velocity的使用手册,我大致看了一看,基本上属于翻译Velocity的Help文档,价值不是很高,没有涉及到Velocity的源代码分析和实现.
3.关于 EJB 和 Trubine 技术的比较我会在以后写专题的
分享到:
相关推荐
Turbine项目由一系列子项目构成,包括Turbine核心框架、Torque、Fulcrum、Maven、JCS和Stratum,以及与Turbine密切相关的Web模板项目Jakarta Velocity。 1. **Turbine核心框架**:它是整个Turbine架构的基础,提供...
### Turbine框架简介 Turbine是一个开源的Java Web应用程序框架,由Jakarta项目维护,致力于简化Web应用程序的开发过程。Turbine以其强大的模块化结构、灵活性以及对MVC(Model-View-Controller)模式的支持而受到...
**TDM** 是Turbine框架中的数据管理组件,用于处理数据访问和事务管理。 ##### 1. **TDM启动** - **初始化**:在应用启动时初始化TDM。 - **配置**:通过配置文件设置数据源和其他参数。 ##### 2. **TDM中的Screen...
尽管现在可能不如其他现代框架那么流行,但Turbine提供的设计理念和技术仍然具有一定的学习价值。 **1. 程序员中的Turbine介绍** 在《2003.07程序员》这本杂志的50页中,可能会对Turbine有一个初步的介绍。Turbine...
本教程旨在引导读者了解如何使用Apache Turbine Web框架及Maven构建工具进行快速应用程序开发。通过本教程的学习,目标是帮助初学者跨越入门障碍,熟悉基本操作流程。 **关于讲师:** - 自2001年起(Turbine 2.1...
Turbine 采用了视图和控制器框架,这使得开发者可以更轻松地分离业务逻辑和显示逻辑,从而提高代码的可维护性和可复用性。 #### 七、Turbine 示例:Apache Faces 在这一部分,我们将通过构建一个简单的基于 Apache...
Turbine是一款由Apache软件基金会开发的Java框架,主要用于构建高性能、高可用性的分布式系统。这个“最全的Turbine文档资料集”包含了关于Turbine的详尽信息,特别关注了针对初学者的配置、运行指导,以及针对版本...
- Action是Turbine框架中的核心部分,负责处理用户数据和控制程序流程。 - 当用户提交表单时,通过特定的隐藏字段指定了要执行的Action。 3. **事件映射机制**: - 通过将表单字段命名为`eventSubmit_XXX`,...
spring-cloud微服务框架demo,可以完整运行。这里面包含的组件和内容有: spring cloud eureka,服务注册和服务发现 spring cloud config,动态配置项 ribbon,客户端负载均衡 feign, hystrix,熔断 turbine Spring ...
从上述内容可以看出,《Definition of a 5-MW Reference Wind Turbine for Offshore System Development》这篇报告聚焦于一种新型5 MW级别的海上风力涡轮机的设计及其在海上风电系统开发中的应用。这份报告的重要性...
5. 整体仿真框架:整合所有组件,进行动态仿真,分析风力发电系统在不同条件下的性能。 在压缩包内的“fengliWind_Turbine.mdl”文件中,用户可以找到一个已经搭建好的风力发电系统仿真模型。通过打开并调试这个...
【标题】"turbine.zip" 是一个包含多个子项目的压缩包,这些子项目与Spring框架中的微服务组件和消息队列技术RabbitMQ的整合有关。这个压缩包的描述指出,它包含了作为示例代码的文章...
- **集成能力**:Velocity可以与多种系统集成,如Turbine Web开发框架,以实现真正的MVC模型开发。 #### 三、iBATIS:Java开源持久层框架 iBATIS是一个轻量级的持久层框架,它主要通过SQL映射来简化数据库操作。与...
#### 三、常见JAVA框架介绍 ##### 1. WAF (Web Application Framework) - **全称**:Web Application Framework - **主要应用方面**:EJB层,WEB层也有涉及但相对较少。 - **主要应用技术**:EJB等 - **出处**:...
### 10-Choerodon猪齿鱼-微服务框架介绍 #### 背景介绍 Choerodon猪齿鱼是一款面向企业的开源多云应用平台,其核心目标是帮助企业更好地管理和治理微服务应用。随着互联网业务的发展和技术的进步,传统的单体架构...
Spring Boot是Spring框架的一个扩展,旨在简化Spring应用的初始搭建以及开发过程。它集成了大量的常用库,如数据访问、安全、Web、WebSocket等,使得开发者可以快速创建生产级别的、基于Spring的Java应用程序。 在...
- **dqo参考框架模型**:采用旋转坐标系下的模型,更便于控制策略的设计。 - **磁链作为状态变量**:将磁链作为状态变量,便于观察磁链的变化。 - **电流作为状态变量**:更适合于直接电流控制。 - **简化模型**...