恒拓开源发布Java EE企业级应用开源开发平台Koala,以DDD思想为核心

2013年9月2日,恒拓开源发布了开源项目Koala(考拉),这是一款Java EE企业级应用的开发平台,基于Apache 2.0开源许可协议发布。Koala项目的官网上介绍该项目特性如下:

  • 开源免费的开发平台,允许你任意修改源码并扩展功能
  • 以DDD领域驱动思想为核心,抛弃传统的以数据库为中心的四层编码模型
  • 丰富的基础组件支持,包括:国际化、异常、缓存等
  • 向导式的搭建项目过程,支持各种技术选择:JPA,mybatis,SpringMVC,struts2MVC等
  • 向导式的数据库到实体的生成过程
  • 向导式的实体生成CURD功能
  • 向导式的服务发布一键无缝发布成war、EJB、webservice(SOAP/REST) 多种服务形式
  • 基于RBAC3模型的权限子系统
  • 监控子系统轻松协助你监控URL,方法,数据库,内存等状态
  • 使用通用查询子系统轻松定制完成查询功能
  • 基于IP过滤,用户名验证及方法权限控制的WS安全子系统
  • 基于JBPM5的流程子系统

InfoQ中文站采访到了恒拓开源技术副总监陈操,了解有关Koala项目的更多细节。

InfoQ:首先,请你简单的介绍一下Koala项目。它是为什么开发的?它主要面向哪些用户?

陈操:Koala是一个免费的、开源的JavaEE企业应用开发平台。它的主要设计目标是:

  • 促进领域驱动设计(DDD)思想的普及推广;
  • 简化架构师的系统设计工作;
  • 提高开发人员的工作效率;
  • 降低软件开发成本。
  • 集成JavaEE企业应用开发中常用的技术组件和业务组件,使得开发人员不必自行开发和配置;
  • 提供一个简单、一致的核心,同时不限制开发人员的自由度。
  • 促进面向标准和规范编程,降低框架、类库的耦合度,避免厂商锁定。
  • 促进单元测试、验收测试、自动化构建、持续集成、软件质量度量等软件质量保证措施的广泛采用

Koala是为企业应用而开发的,它面向IT企业与开发人员,为他们生成一个可直接部署运行的项目核心,集成了绝大多数企业应用中都要用到的技术基础组件和业务组件,开发人员可以以此为基础添加自己的内容,形成一个完整的企业应用。

InfoQ:在Koala项目开发的过程中,你们参考了哪些前人的解决方案?之前的解决方案存在哪些问题?

陈操:与Koala类似的软件有不少,有一些很流行的平台或解决方案,很多软件企业也都有自己内部的解决方案。这些软件虽然都有各自的亮点,但也或多或少存在以下的问题:

  • 范式落后,停留在“以数据库表为中心的增删改查”这种面向过程而不是面向对象的、以技术实现而不是业务领域为中心的开发方式。
  • 内容单薄,通常只集成了流行的SSH三大框架。只对编码过程进行有限的支持,对质量保证、运行监控、生命周期管理等软件开发中至关紧要的环节没有提供有效支持。
  • 过度封装,严重限制了开发人员的自由度。开发人员只能严格按照开发平台的规定来编写代码,限制了他们的创造性。
  • 耦合性强。代码被紧密耦合到开发平台,不能在别的地方重用。
  • 不遵循标准和规范编程,直接绑定到具体的实现框架,无法自由切换到其他实现方式。
  • 扩展性差。很多开发平台鼓励面向实现编程,取消接口和抽象,美其名曰“简单第一”,因此都是不可扩展的。
  • 学习曲线陡峭,开发人员不得不花费大量的时间和精力来掌握开发平台的使用方法。
  • 一些框架不是开源的,需要支付很高的费用。

InfoQ:Koala项目对这个问题的实现思路是什么?

陈操:针对同类软件中存在的种种问题,我们的实现思路是:

  • 开发平台生成的企业应用以领域驱动设计(DDD)开源项目DDDLib为核心,鼓励开发人员遵循领域驱动设计范式进行面向对象的软件开发。领域对象(业务实体)是最“丰满”的对象,封装了领域逻辑,而不是一个贫血的数据容器,或数据库记录的Java对象形式。
  • 为企业软件开发提供从代码到工具到平台的全套技术支持。
  • 最大化开发人员的自由度。用户的代码对平台没有依赖,可以脱离平台自由重用。
  • 遵循标准和规范编程。可以自由扩展和替换各种基础技术组件,而主体代码不变。
  • 遵循面向对象的“依赖倒置”原则,实践并鼓励面向接口、面向意图编程。
  • 致力于免费和开源。Koala全部采用开源组件,而且Koala本身也是开源的,降低企业的总拥有成本。Koala是开放的。我们彻底公开全部的源代码,欢迎所有的人使用和修改。我们期待来自开发人员的反馈意见并欢迎他们的参与,为开源事业贡献自己的力量。

InfoQ:请简单介绍一下Koala项目的实现。

陈操:Koala是以领域驱动思想为核心,在此基础上为开发人员提供了一整套可选的完整的辅助解决方案。

Koala现在包含以下功能及实现:

  • 向导式项目定制与生成。通过Eclipse插件自动生成按标准分层的、多模块的Maven项目骨架,省去了开发人员收集、装配和配置各种技术组件的麻烦。可以在多种持久化框架、IoC容器、Web框架之中自由选择一种,灵活搭配。可以选择消息服务、缓存、规则引擎、业务流程引擎、ftp、定时任务、Excel导入导出等基础技术组件(未来还会提供更多技术组件)作为项目的组成部分。
  • 通过Eclipse插件从数据库表生成实体类,以及根据实体类生成CRUD功能的Java类和Web页面,以减轻开发人员的机械性、重复性工作。开发人员可以在生成的类和页面的基础上作进一步的修改,以满足自己的特定需要。
  • 对测试自动化的支持。系统提供了方便的测试基础设施和测试基类,开发人员只专注于编写测试用例,不需要自行搭建任何测试支持环境。另外,在代码生成的过程中也自动生成了测试类和某些测试方法。
  • 权限子系统。生成的项目中集成了一个基于RBAC3模型的权限子系统,以用户、角色和资源为核心的关系而建立,可以针对URL、业务方法、页面中的按钮、文字和图片等资源施加细粒度的权限控制。
  • 流程子系统。系统集成了一个基于JBPM5的业务流程运行和设计平台。你只需通过浏览器在线设计流程并部署,即可发起、执行和监控流程实例。其余的一切由流程平台为你解决。
  • 监控子系统。系统集成了一个可开关的监控子系统。它可以为你监控http请求,找出哪个请求访问次数最多或最耗时;为你监控业务方法,找出请求最多或最耗时或抛出异常的方法;为你监控数据库资源,连接池健康状态监控以及SQL监控,等等等等。
  • 透明的远程化支持。你可以通过Eclipse插件,将项目中的某些类发布成SOAP和/或RESTful风格的Web Service或Stateless EJB,在此过程中无需修改现有的类代码。Koala自动生成可部署的发布包,可以选择WAR + EJB或WAR两种部署形式之一。
  • WS的安全机制。使用Koala发布的Web Service,你可以立刻获得基于IP过滤,用户名密码验证,方法级权限控制的Web Service安全机制。无需自己编写和配置。
  • 通用查询组件。无论事先多么详细规划,也无法穷尽最终用户的查询需求,甚至在系统上线之后客户还可能提出更多的查询需求。Koala对此的解决方案是提供一个通用查询组件,用户可以在系统提供的界面上自由定制自己需要的查询,即时生效。

InfoQ:对于Koala项目,你们的下一步计划是什么?

陈操:现阶段Koala已经发布了第二期,提供了一些较为丰富的功能与支持。Koala下一步计划是:

1)推广并支持项目使用Koala进行开发

Koala一期在一些项目中已经进行使用,获得了一些认可。接下来二期功能发布后,Koala会继续在项目中推广与使用,并对使用过程中的问题进行支持,同时也会不断收集反馈,以优化与完善。

2)开始三期的项目开发

  • 集成持续交付子系统
    • 持续集成支持:hudson和Jenkin
    • 代码质量持续检查:Sonar
    • BUG管理平台支持Trac和 JIRA
    • 版本管理支持:SVN和Git
  • Koala UI开发

    KoalaUI是一个面向前端美工和前端开发人员的UI开发平台,基于Html5标准,集成主题皮肤、页面模板和可视化页面编辑等功能,目的在于提高前端UI的开发效率,通过KoalaUI平台快速开发企业前端应用,以及消除美工与前端开发之间的合作隔膜。

    KoalaUI平台的特点:

    1. 可视化操作
    2. 拖拽式组件的页面编辑
    3. 内置企业平台前端模板
    4. 可自定义皮肤、模板和组件
  • 集成更多的子系统

    包括组织机构子系统与日志子系统等新加的子系统开发

  • 已有功能的进一步完善与功能扩充

如果对Koala有兴趣,可访问Koala的官网获取更多信息。

你可能感兴趣的:(恒拓开源发布Java EE企业级应用开源开发平台Koala,以DDD思想为核心)