速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

使用 IDEA 远程 Debug 调试,太实用了!

java易二三

学习 编程 程序员 IDEA 计算机

捷报:斩获32项认证,6大奖项!

天翼云开发者社区

云计算

工程项目管理软件有哪些?

优秀

项目管理软件 工程管理

PoseiSwap:通过 RWA 的全新叙事,反哺 Nautilus Chain 生态

BlockChain先知

低代码平台实际解决了哪些问题?

互联网工科生

软件开发 低代码 低代码平台 JNFP

LED显示屏在高温的状态下工作影响有多大

Dylan

企业 常识 LED显示屏 户外LED显示屏 led显示屏厂家

ShareSDK 国内平台登陆返回参数

MobTech袤博科技

前端 APP开发 分享工具

IPD(集成产品开发)与传统项目管理的区别

禅道项目管理

项目管理 IPD

聆心智能Open Day发布CharacterGLM,共创超拟人大模型全“心”未来

硬科技星球

明道云与美洽产品生态合作介绍

明道云

MySQL事务隔离机制与实现原理详解(MySQL专栏启动)

java易二三

MySQL 数据库 程序员 计算机

三分钟白话RocketMQ系列—— 核心概念

互联网工科生

分布式 RocketMQ 消息中间件

远距离传输大型文件:如何应对不同地区的网络环境和带宽约束

镭速

NFTScan | 07.24~07.30 NFT 市场热点汇总

NFT Research

NFT\

建设数字工厂:MRP物料需求计划的逻辑原理与配置方法

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

生态伙伴 | 华秋硬创联合长虹创投,共同打造更优生态系统

华秋电子

如何在远距离传输大型文件时避免网络延迟和数据丢失

镭速

远距离传输大型文件 传输效率

聆心智能“超拟人”模型升级,助力AI实现“走心”突破

硬科技星球

一文读懂原生应用与混合应用

没有用户名丶

Flink SQL 优化实战 - 维表 JOIN 优化

腾讯云大数据

流计算 Oceanus

码力全开!请查收HDC.Together 2023亮点日程

HarmonyOS开发者

HarmonyOS

ACM图灵大会开幕,王海峰解读文心大模型3.5最新进展

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

PoseiSwap:通过 RWA 的全新叙事,反哺 Nautilus Chain 生态

西柚子

需求太多处理不过来?MoSCoW模型帮你

敏捷开发

项目管理 需求处理 MoSCoW模型 排序优先级

IIOT -IPQ9574+IPQ8074-High Performance Router Motherboard-Support Wi-Fi 6 and Powerful Quad-Core Processor

wifi6-yiyi

wifi6 WiFi7

一文带你入门网络协议

高端章鱼哥

数据 网络协议 网络 协议

MegEngine Python 层模块串讲(下)

MegEngineBot

深度学习 开源

如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

java易二三

程序员 面试 计算机

数据库行业需要什么样的人才?高校老师这样说

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

晋级榜单揭晓!华秋第九届硬创大赛-华南分赛区路演成功举办

华秋电子

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