我常常在思考:这就是21世纪的J2EE开发现状,甚至有时会怀念VB、Delphi、PB等传统技术。
在J2EE技术体系中,往往被灌输了太多容器的概念,什么EJB容器、Servlet容器等等,而开发过程也在开发、配置、部署之间迭代与反复;如此一来常会出现令人尴尬的状况:往往花几分钟时间去改一个Bug、却要再花双倍或者更多时间去部署和测试,开发工程师们不得不中断思路,看着服务器如蜗牛般启动,并在开发工具和部署工具之间来回切换。
事实上,配置也好、部署也罢,都是开发过程中一个必不可少的阶段。如何通过集成式的开发环境将这些开发阶段有机集成在一起,是摆在我们面前的迫切需要。在本文中,我将阐述一种"轻量级"开发的理念,以及如何实现该理念的Apusic Platform平台,它包括应用服务器和Studio开发平台。
技术模型简单化
J2EE发展到今天,一种普遍的看法是:开源社区的蓬勃发展给J2EE官方标准带来很大的冲击,甚至于部分开发者对Java EE 5.0的权威性都产生了质疑,并对Java EE 5.0 是否能够占据主流开发平台地位产生了顾虑。
事实上,我认为,开源社区与J2EE之间更多的是一种相辅相承的关系。开源代表的经常是理想主义,而商业公司代表的经常是现实主义,两者之间有相互竞争的地方,但从长远来看,更多的是一种是相互补充、相互促进的过程。
在Apusic Platform的实现上,一方面对各种开源技术予以非常大的支持,包括Struts、Hibernate、Spring等;不仅提供一系列的示例样板,以演示如何在Apusic应用服务器上使用这些开源组件,甚至还提供这些开源框架的商业支持,以更好地推动这些开源技术在国内的推广与使用。
Java EE中最引人注目的恐怕是EJB 3和JSF了,EJB 3克服了EJB 2.x版本的很多不足与缺陷,使EJB技术真正成为企业应用的主要计算模型,为EJB的全面普及奠定了理论上的基础。而JSF则是Java EE试图解决Web应用开发的主要解决方案。我们即将推出的Apusic JSF则融合了JSF与Ajax技术,克服了常规JSF实现的弊端,使JSF成为一种轻量级的Web开发模型。目前,我们正试图将Apusic JSF以开源的形式反馈给国内的广大Web开发人员,并期望围绕Apusic JSF形成一个丰富的Web UI组件市场,从而彻底解决目前Web应用开发的主要不足。
开发过程一体化
以一个简单的Web应用开发为例,在Apusic Studio中,可以通过jsp编辑器提供的语法加亮、代码辅助、断点调试等功能,非常方便的辅助开发人员快速完成web页面的开发;还可以通过可视化的配置界面,完成繁琐的web/ejb/ear等配置信息。
当要运行某一个页面时,只需点击一下右键菜?quot;在Apusic应用服务器上调试",Apusic Studio就会自动帮助我们做这样一系列动作:首先判断应用服务器是否已经运行(倘若没有运行就会自动新建一个启动配置项,设置好类路径启动应用服务器),然后判断应用是否已经部署(倘若没有部署就会自动部署应用),最后自动打开浏览器,运行指定的jsp页面,甚至于Apusic Studio还能够感应到应用发生的变化,在应用需要重新部署时自动部署。
业务组件实用化
回顾J2EE技术体系,甚至于诸多流行的开源框架,我们不难看出,它们所解决的问题无一例外的都集中在软件模型本身:譬如OR Mapping、AOP、MVC等。而现实中的应用系统的开发者,希望能通过某种业务开始平台或者某些通用的业务组件,屏蔽这些底层的实现技术,从而使他们聚焦于业务本身。
但是,由于业务组件缺乏相应的规范与标准,导致它们的实用性与可用性不高。这一方面来源自业务系统本身的需求复杂度与可变性,另外一方面则缺少一个类似于JCP的组织,去制定并发展这些业务组件的规范与标准。
Apusic Platform试图提供另外一种选择:通过一种可插拔可替换的机制,打造实用程度较高的业务组件,譬如组织架构、权限模型、报表打印等。这些业务组件,融合了金蝶公司及其合作伙伴多年的应用开发智慧结晶,能够给业务系统开发人员带来实实在在的方便。
轻量级的两层含义
何谓轻量级?在我看来,轻量级包含两层含义。一是运行期的轻量级:在完成相同的运算任务下消耗最少的系统资源;二是开发期的轻量级,指开发过程的敏捷以及快速响应能力。
运行期的轻量级可以说在以微内核体系为核心、代码量仅为同类软件20%的Apusic应用服务器上得到了极佳验证:无论是启动速度,还是运行期所消耗的系统资源,Apusic都大幅度领先,也许业界唯一能够与之比较的只有Tomcat了。但Tomcat仅仅是一个Web容器,而Apusic应用服务器则是全面实现J2EE 1.4规范的企业级产品(今年5月份已经全面实现Java EE 5.0规范),至于而运行期的健壮性与稳定性,Apusic在各项指标上与国外同类软件不相上下。
开发期的轻量级,我们可以通过与Apusic应用服务器紧密集成的开发工具Apusic Studio获得开发过程的敏捷性。无论是编码、配置、部署与测试,还是后期的监控与性能调优,我们都可以通过Apusic Studio获得一体化的支持。
让J2EE开发更轻松
开发过程一体化,使开发人员无需再考虑部署、配置等琐碎过程,也不需中断思路忍受服务器反复启动的煎熬;技术模型简单化,通过优秀简单的技术解决现实中复杂的问题;业务组件实用化,能够摆脱某些具体实现细节,聚焦于业务逻辑本身。
以上的理念,我称之为类似武侠小说中高手练功到一定层次的"三化盖顶",它很大程度上解放了J2EE,让我们拥有开发过程中的敏捷与愉悦。
敏捷快速,让J2EE开发更轻松,为什么不呢?