【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

恒拓开源发布 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:496159

评论

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

化整为零优化重用,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang函数的定义和使用EP07

刘悦的技术博客

Go 教程 Go web 教程分享

A tour of gRPC:07 - gRPC bidirectional straming 双向流

BUG侦探

gRPC RPC protocolBuffer

MQTT over QUIC:下一代物联网标准协议为消息传输场景注入新动力

EMQ映云科技

车联网 物联网 mqtt emqx 8月月更

从洞察到决策,一文解读标签画像体系建设方法论丨DTVision分析洞察篇

袋鼠云数栈

开源项目丨一文详解一站式大数据平台运维管家ChengYing如何部署Hadoop集群

袋鼠云数栈

培训预告 | 企业应用现代化实用教程——微服务治理与开发篇

York

容器 微服务 云原生 数字化转型 应用现代化

业内首份!博睿数据入选中国信通院《中国AIOps现状调查报告(2022)》

博睿数据

博睿数据 智能运维AIOps Swift AI

我们总结了 3 大使用建议,并首次公开 Nacos 3.0 规划图 | Nacos 开源 4 周年

阿里巴巴云原生

阿里云 开源 微服务 云原生 nacos

如何提升IT对业务发展的贡献度

凌晞

数字化 构架 IT管理

用 manim 写一个排序算法动画

ooooooh灰灰

算法 前端 后端 动画 排序

【接入指南 之 云云接入】快速接入HONOR Connect平台(下)

荣耀开发者服务平台

开发者 IoT 新手指南 荣耀 honor

活动报名| MongoDB 使用规范及最佳实践线上直播来啦!

MongoDB中文社区

mongodb

DevSecOps|极狐GitLab IaC 安全扫描,保障云原生安全

极狐GitLab

Docker gitlab 运维 DevSecOps IaC

落地DevOps,探索高效研发运营一体化解决方案

云智慧AIOps社区

DevOps 质量管理 代码管理 自动化运维 研发效率

直播预告 | 如何从 0 到 1 打造敏捷团队?

Authing

袋鼠云申杭:数雁EasyDigit,致力成为金融行业数据洞察平台供应商的“领头雁”

袋鼠云数栈

开源一夏 | 实战之AngularJS 的Scope和Service的深入应用心得

恒山其若陋兮

开源 8月月更

一文读懂BizDevOps:数字化转型下的技术破局

阿里云云效

技术 DevOps 云原生 数字化转型 开发.

有一说一!阿里巴巴8月最新发布的这份Spring Cloud Alibaba学习笔记,几乎涵盖了其所有操作

程序员小毕

Java 程序员 面试 微服务 SpringCloud

TDesign 品牌价值观

TDesign

袋鼠云思枢:数驹DTengine,助力企业构建高效的流批一体数据湖计算平台

袋鼠云数栈

如何通过FinOps实现企业云成本优化?——信通院《中国FinOps产业发展现状研究报告》解读

星汉未来

云原生 k8s IT FinOps 云成本优化

实证与虚无,抽象和具象,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang接口(interface)的使用EP08

刘悦的技术博客

Go 编程 教程 Go web 教程分享

“阿里爸爸”最新总结的303页Spring全家桶高级笔记,都是面试必问的知识点

Java工程师

Java spring Spring全家桶

全新升级!《云原生架构白皮书 2022 版》重磅发布

阿里巴巴云原生

阿里云 架构 云原生 白皮书

SpringMVC(五、AOP)

开源 springmvc spring aop 8月月更

自动化测试-存储测试用例,哪个更好

和牛

Python 自动化 测试 8月月更

30分钟成为Contributor|共建测试子系统,赋能提升项目代码质量

OpenHarmony开发者

OpenHarmony

深度学习公式推导:从神经元出发

老崔说架构

想要精准营销,从学习搭建一套对的标签体系开始丨DTVision分析洞察篇

袋鼠云数栈

1分钟创建3000台云电脑 阿里云无影发布多款千人协同生产力方案

Lily

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