亮网络解锁器,解锁网络数据的无限可能 了解详情
写点什么

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

  • 2013-09-02
  • 本文字数:3190 字

    阅读完需:约 10 分钟

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 的官网获取更多信息。

2013-09-02 00:496162

评论

发布
暂无评论
发现更多内容

一次因PageHelper引起的多线程复用问题的排查和解决 | 京东物流技术团队

京东科技开发者

素数检验---跨越2000年的人类智慧

fliter

通过人力资源规划,实现企业财务计划与分析的转型

智达方通

全面预算 财务规划与分析 人力资源规划

左耳听风 - 关于招聘「读书打卡 day 20」

Java 工程师蔡姬

读书笔记 程序员 个人成长 招聘 职业发展

软件测试的发展现状与未来趋势

测试人

软件测试

测试开发高薪私教线下周末班试听精彩内容回顾

测吧(北京)科技有限公司

测试

超越常规!探索多态在程序设计中的奇妙应用与巧妙技巧!

测吧(北京)科技有限公司

测试

小程序定制开发:解析定制化移动应用的未来

天津汇柏科技有限公司

小程序 小程序开发 小程序开发,软件开发

SpringBoot实现动态数据源配置

不在线第一只蜗牛

Java 后端 springboot

软件测试|人工智能:测试开发的新宠儿

霍格沃兹测试开发学社

人工智能:测试开发的新宠儿

测试人

软件测试

iTunes Connect 中修改后的内购(IPA)审核所需的时间

雪奈椰子

人工智能:测试开发的新宠儿

测吧(北京)科技有限公司

测试

Walrus 实用教程|Walrus + Gitlab,打通CI/CD 自动化交付!

SEAL安全

开源 gitlab CI/CD Walrus

火山引擎ByteHouse:分析型数据库如何设计列式存储

字节跳动数据平台

数据库

测试开发高薪私教线下周末班试听精彩内容回顾

霍格沃兹测试开发学社

软件测试|探索多态在程序设计中的奇妙应用与巧妙技巧!

霍格沃兹测试开发学社

年度重磅更新!“AI+可视化拖拽”实现个性化页面极速开发!组件设计器即将上线!

优秀

AI 网站开发 组件化开发

VUE3子表格嵌套分页查询互相干扰的问题解决

EquatorCoco

前端 前端开发 Vue3

2024年带大家一起深入了解堡垒机功能以及作用

行云管家

网络安全 数据安全 云安全 堡垒机

超越常规!探索多态在程序设计中的奇妙应用与巧妙技巧!

测试人

软件测试

ETL怎么实现文件处理

RestCloud

ETL 数据集成 文件处理

flutter+go构建的即时通讯app,ChatCraft

编程的平行世界

golang #开源项目 fluter

恒拓开源发布Java EE企业级应用开源开发平台Koala,以DDD思想为核心_语言 & 开发_sai_InfoQ精选文章