CUBA Platform
CUBA Platform
—— 开源的、可靠的企业级应用开发利器
原文:CUBA Platform: An Open-Source Java Framework for Rapid Application Development
翻译:CUBA China
CUBA-Platform 官方网站:https://www.cuba-platform.com
CUBA China 官方网站:http://cuba-platform.cn
欢迎转载,转载请注明来源
前言
CUBA China是CUBA-Platform在中国的合作伙伴,是由多名具有十年以上丰富的行业软件、工具软件开发经验的开发人员组成的团队,同时部分团队成员具有长期的跨国公司工作背景。
作为企业软件开发行业的“老兵”,我们经历过众多的开源框架,包括国内的、国外的,我们每个人对于所使用过的框架都持有种种不满意,直到我们发现了CUBA-Platform,她有近十年的历史(GITHUB上自2009年起有代码提交)、源自实践的设计、丰富的文档、开放的姿态、先进的技术栈、完备的企业软件基础功能、高度可定制的系统架构、开发工具加持等等,所有这些深深地打动了我们。
独乐乐不如众乐乐,所以我们计划将CUBA-Platform带入中国,为中国的企业软件开发人员提供一个新的选择。
我们将与CUBA官方一起在中国推广CUBA-Platform、构建并维护中国地区CUBA-Platform的社区、为中国地区开发人员提供关于CUBA-Platform的技术服务。
这篇文章是我们介绍CUBA-Platform的第一篇文章,后续我们会持续推出一系列翻译或原创文章。 如果您希望进一步了解CUBA-Platform,请关注我们我们的公众号。
摘要
本文为CUBA-Platform简介 ,一个结合了可靠架构、企业级应用程序“必备”功能和应用程序快速开发工具的开源框架。
为什么需要开发框架?
从进入计算机时代起,企业应用软件开发一直面临一个挑战:虽然企业应用开发的目的是解决实际业务问题,但事实上开发人员必须花费大量时间和精力在纯技术层面,比如软件架构和一些很通用的功能。
为了解决上述技术与业务之间的不对等精力消耗,涌现了很多开发框架,目的都是为了提高抽象级别,将开发人员从低级繁杂的工作中解放出来。随着时间的推移,这些开发工具越来越智能,使得开发效率越来越高。Borland Delphi就是21世纪初最成功的例子之一,它能使开发产出大幅提升。
过去的十年以来, 企业级应用软件的需求越来越多、系统越来越庞大、功能越来越复杂、技术更新迭代不断,促生了对新一代高效框架和开发工具的需求。
在这篇文章里我们要介绍 CUBA-Platform:一个结合了可靠架构、企业级应用程序必备功能和快速应用程序开发工具的开源框架,它有助于大幅提高研发团队的开发效率、提高交付质量。
CUBA平台与其他框架有何不同?
CUBA平台与其他大多数Java框架最大的区别是:它的抽象级别更高,开发人员可以只专注于解决业务问题。它把稍高但是又有些偏“底层”的技术细节(如Vaadin,Spring和EclipseLink)也封装起来,并自带丰富的应用功能和开发工具,因此开发人员可以最大限度地专注于业务实现 。同时,CUBA并不限制对底层代码的访问,这样可以保证框架可以适应具体项目的需求。
CUBA平台能为开发企业应用程序带来巨大价值:复杂的数据模型、数十或数百个页面、各式各样的业务流程、系统的健壮性安全性等等。
CUBA应用内部细节初探
架构
CUBA应用程序具有标准的三层体系架构。连接各层的纽带是元数据 – 就是我们所知的数据模型。它使所有可视组件都具有数据感知能力。比如,表格可以知道自己所展示实体的属性、标签知道自己在显示日期。类似地,元数据有助于可视组件通过ORM与数据层进行通信,ORM用来定义对象的关系图,决定是否需要加载或者更新数据。安全子系统、报表生成器和平台的其他组件也有同样的机制。
前端界面(Vaadin)
CUBA-Platform使用Vaadin作为默认的前端界面框架,并提供声明式的界面开发模型,用户可以在可视化设计器或XML中定义页面布局。CUBA框架内置70多种Vaadin可视化组件供选择,比如各类按钮、表格组件、树组件、表单字段、 地图组件、动态图表、透视表等等,涵盖企业应用界面需要的一切组件。界面定义完成后,在Java控制器中添加组件的初始化逻辑和事件处理逻辑。基于组件的数据感知功能,用户可以非常快速地创建专业的企业应用页面。业务逻辑代码和页面布局代码分离,系统更易于维护。如果各式各样可视化组件还是不能满足用户需求,CUBA也可以灵活的集成外部JavaScript库、GWT或Vaadin组件。
[WEB前端界面示例]
前端界面 (Polymer)
Google Polymer是CUBA-Platform的另一个可选的前端界面技术,通过Restful API与CUBA项目服务端进行通讯。Google Polymer客户端界面一般用于功能操作较少,但界面要求更灵活、可提供移动优先的响应式WEB界面。
[Polymer界面示例]
过滤器
CUBA用户界面的一个重要功能:过滤器 – 这个组件能够让用户自定义搜索条件,并且开发起来很简单:开发人员只需将它放到一个显示实体列表的页面就万事大吉了。用户或管理员可以根据各自的需求定义各自的搜索条件。
过滤器得益于CUBA元数据驱动的开发理念,过滤器能感知到自己绑定的实体,通过元数据,过滤器可准确地展示出表格可过滤的字段、限制关键字的值类型、提供备选值列表等。
[添加过滤字段]
[过滤器界面]
安全控制
访问控制对于企业级应用来说至关重要,在CUBA项目中所有的用户操作均由安全子系统控制。
CUBA支持实体级别、行级别、实体属性级别(列级别)的数据读写控制;功能界面功能也可以基于角色开放或拒绝;也可以对界面上的组件进行基于角色的权限控制。行级别的安全机制用来控制用户只能对实体的某些数据记录(行)的访问 - 例如,某部门的用户只能看到该部门用户创建的文档。
所有权限设置都可以在运行时通过界面进行配置,所有更改都可以由系统管理员线上操作。当然,所有数据的更改历史都有记录,谁在何时更改了什么 -出现问题时溯源以及汇报都很方便!
企业级应用必备功能
内置基础的WEB安全设施
CUBA-Platform作为一个框架,整合了最佳安全实践,可自动对WEB应用程序中的大部分常见漏洞提供防护。比如跨站脚本(XSS)攻击、跨站请求伪造攻击(CSRF)、SQL注入攻击等。
用户管理模块
用户管理模块包含了用户管理、角色管理、访问组管理等界面,通过用户管理模块可在运行时对系统用户、角色、访问组进行增、删、改的维护;可对用户的权限进行管理。
管理员工具
CUBA-Platform内置了多个管理员实用工具,这些有助于系统管理员了解系统的运行情况、快速查找定位系统问题、自动执行重复性的管理任务等。
日志查看功能
通过日志查看功能,系统管理员不必登录服务器,直接登录系统来查看各种日志,比如服务器日志、实体日志、session日志等。
实体(Entity)探查
CUBA-Platform可在运行时分析实体定义、动态生成实体数据浏览界面、数据编辑界面,管理员可通过实体探查功能查看、维护系统数据。
性能统计
通过性能统计功能,管理员可 全面了解系统运行的数据,比如系统运行时间、内存占用数据、CPU占用数据、数据库连接数据、客户端请求数据等。这些数据可为管理员优化系统配置、硬件配置、排查问题提供依据。
定时任务
通过定时任务,管理员可配置任意需要周期性或定时执行的任务,比如定时清理磁盘空间、定时发送系统状态通知等。
数据恢复
CUBA-Platform支持数据软删除,实体删除执行了删除操作后并不被物理删除,只是给数据添加了删除标记。如果发生了数据误删,管理可通过数据恢复功能恢复删除的数据。
Session查看
通过用户会话功能,管理员可查看所有在线的用户,并可对用户会话进行管理。比如发送消息给用户、注销用户登录等。
多语言和多时区支持
CUBA-Platform提供了标准化多语言开发规范,可以使业务系统很方便地支持多国语言,这点对于开发国际性的业务系统很有帮助。
通用REST API
通过CBUA-Platform,可很容易地实现REST API。方便外部系统与CUBA开发的业务系统进行集成,外部系统可以通过REST API调用基于CUBA的业务系统的中间件服务、访问领域实体数据。交互的数据格式支持JSON和XML。
报表管理
报表模块可以帮助开发人员快速生成各种类型的统计报表,并支持以多种格式输出。
工作流模块
CUBA Platform的BPM模块基于Activiti,提供流程设计、执行和管理业务流程的工具,支持BPMN 2.0标准。
全文检索
CUBA-Platform的全文搜索(FTS)功能对实体属性和上传的文件内容进行索引,提供非结构化搜索。
CUBA应用部署
在程序部署和软件运行环境方面,可选项很多。CUBA应用程序有多种部署配置方案,可以在单个服务器运行所有程序,或者采用单独中间件(后台服务程序)加Web集群的方式。
平台开箱支持的数据库有:PostgreSQL,Oracle,Microsoft SQL Server,MySQL和HSQL(通常用于原型设计),随着项目的发展,用户也可以轻松地切换数据库。
WEB应用方面, CUBA应用程序可以部署到任何Java EE Web 服务器(例如Jetty,Tomcat,Glassfish或Websphere)。当然,用户也可以把应用编成Docker镜像,也可以在流行的PaaS云中部署,比如CloudFoundry,OpenShift或Jelastic。
如何开发CUBA应用?
使用CUBA 平台开发应用程序,你只需要懂得Java SE,XML和JPQL – 你的应用程序代码会更统一更易于维护。你的开发团队也更加灵活 – 你并不需要专门的Web开发人员或Java EE专家团队。
配置项目基础信息可视化设计UI和数据模型用户可以自己选择IDE开发业务逻辑,比如IntelliJ IDEA或Eclipse。CUBA也提供了CUBA应用的集成开环境:CUBA Studio – 一个辅助开发的可视化工具,CUBA有关的任务都可以通过它自动完成:
- 带有多种布局选项的增删查改脚手架页面
- 自动生成和运行数据库脚本
- 为监听处理器(handlers)和接口创建脚手架代码
Studio与IDE之间的所有改动都是同步的,用户可以完全自由地选择在哪里进行更改。为了进一步提高开发人员的效率,Studio会自动热部署除数据模型之外的所有代码。因此,Studio大大避免了例行工作和编写样板代码的工作量,而且还不限制用户对编码工具的选择。
如果用户考虑将旧系统升级到流行的技术栈,CUBA也有解决方案。Studio自带的迁移工具可以将旧数据库转换为符合CUBA平台的数据库,并根据数据模型自动生成页面,用户只需要添加自定义页面和迁移业务逻辑代码。
收费吗?
如标题所述,核心框架(CUBA Framework)是开源的,是Apache 2.0许可, 源码都在GitHub上。所以对用户在CUBA上开发的软件没有许可限制。您可以免费使用IDEA或Eclipse基于CUBA Framework进行业务系统的开发。
如果您想加快开发过程或者团队中有一些初级开发人员,那么您可以使用CUBA Studio来帮助提升开发效率。CUBA Studio提供免费和商业版本。免费版的CUBA Studio功能齐全,但限制了应用程序数据模型数量。免费版是创建项目和探索平台功能的理想选择,在项目达到了免费版限制后,如果想进一步开发可以在Java IDE中继续开发,或者购买商业版许可证。商业版中支持更多高级附加组件:报表、图表、地图、全文搜索和工作流。
结束
CUBA-Platform是一个基础设施可靠、通用功能完善的开发框架,一篇文章不足以概括她的方方面面。希望本文可以让您对CUBA平台有一个初步的了解并且决定亲自试一试。接下来您可以:下载免费的Studio,根据快速入门指南,在几分钟内运行您的第一个CUBA应用程序!
您也可以访问我们的论坛,通过讨论提交您的问题、想法。
转载于:https://my.oschina.net/cubacn/blog/1917833
CUBA Platform相关推荐
- CUBA Platform 7.0.4 发布,企业级应用开发平台
开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> CUBA Platform 7.0.4 发布,这次发布主要包含对 CUBA Core 的 Bug 修复,共计修复 ...
- CUBA Platform 6.3的新增功能
我们很自豪地宣布新版本的CUBA平台和Studio全面上市! 也许这是有史以来功能最丰富的平台版本之一–在各个级别都有重要的变化:体系结构,可扩展性,API可用性和性能. 本文介绍了该平台的主要增强功 ...
- cuba.platform_CUBA Platform 6.3的新增功能
cuba.platform 我们很自豪地宣布新版本的CUBA平台和Studio全面上市! 也许这是有史以来功能最丰富的平台版本之一–在各个级别上都有重要的变化:体系结构,可扩展性,API可用性和性能. ...
- cuba 平台_CUBA平台:TypeScript SDK和REST API
cuba 平台 在本文中,我们将讨论已存在很长时间但尚未广为人知的CUBA平台的功能- 前端SDK生成器 ,并了解它如何与CUBA的REST API插件一起使用 . Java + JavaScript ...
- cuba.platform_CUBA 7.2 –有什么新功能?
cuba.platform CUBA平台的第七版向前迈出了一大步. 内部体系结构的改进和新的IDE为进一步改进奠定了良好的基础. 我们将继续添加新功能,以使开发人员的生活更轻松,并使他们的工作更加高效 ...
- cuba 平台_认识CLI for CUBA平台
cuba 平台 毫无疑问,软件开发人员(尤其是Java开发人员)的世界充满了键盘狂热者,最好通过单击一下鼠标键入10-15个字母. 而且我们的社区也不例外,因此我们经常被问到"如何在没有CU ...
- cuba开发_使用CUBA进行开发–与Spring相比有很大的转变?
cuba开发 阅读另一个供内部公司使用的Web项目的要求时,您(至少是我自己)通常会看到一个很普通的集合:定义明确的数据存储结构(或有时是现有的旧数据库),大量的数据输入形式,非常复杂的业务逻辑,报告 ...
- CUBA平台:TypeScript SDK和REST API
在本文中,我们将讨论已存在很长时间但尚未广为人知的CUBA平台的功能- 前端SDK生成器 ,并了解它如何与CUBA的REST API插件一起使用 . Java + JavaScript –网络婚姻 仅 ...
- 认识CUBA平台的CLI
毫无疑问,软件开发人员(尤其是Java开发人员)的世界充满了键盘狂热者,最好是一次单击即可键入10-15个字母. 而且我们的社区也不例外,因此经常有人问我们"如何在没有CUBA Studio ...
- 使用CUBA进行开发–是Spring的重大转变吗?
阅读另一个供内部公司使用的Web项目的要求时,您(至少是我自己)通常会看到一个很普通的集合:定义明确的数据存储结构(或有时是现有的旧式DB),大量的数据输入形式,非常复杂的业务逻辑,报告和与许多现有公 ...
最新文章
- Java 专业人士必备的书籍和网站列表
- 解决python时间戳最大为3001年1月1日15时59分59秒的问题
- web服务器采用的是什么协议,webservice中采用协议Http,它是指什么意思
- python小学生口算题生成器_小学数学题出题神器
- linux如何过滤字符串,在linux系统如何grep过滤中,不包含某些字符串的命令
- mongodb 教程一
- caffeine 时间轮的实现
- amd黑苹果万能显卡驱动_22款显卡乱战《赛博朋克2077》:AMD 4K败走麦城-显卡,赛博朋克2077,AMD,NVIDIA ——快科技(驱动之家旗下媒体)-...
- 用GSON 获取JSON数组属性
- redistemplate hash 过期时间_Redis过期监听——订单超时-取消
- scala中的协变和逆变
- mybatisplus自动填充时间出现的问题
- 标准误(Standard Error)
- fb2 android,FBReader PDF plugin app
- 渗透技巧总结、渗透技巧
- 台式计算机上的硬磁盘,如何在台式计算机上安装机械硬盘驱动器?在台式计算机上安装机械硬盘驱动器的详细步骤...
- 即使是庸才我也要成为庸才中的人才
- 《菩萨蛮·隔花才歇帘纤雨》
- 2.3 视图的层次关系
- Python 快速对比字符串的差异
热门文章
- 计算机按键截图,截图按什么键,电脑按哪个键是截屏
- 大学计算机课程进制的转换教程,交大计算机课程(1):各种进制转换
- UG二次开发(C#)—依据特征获取选择体对象
- 2022开放原子全球开源峰会OpenAnolis分论坛圆满落幕
- linux 网站图片无法加载失败怎么办,网页无法加载图片怎么办?解决网页图片无法显示的方法...
- 嵌入式开发中三种操作系统的分析与比较
- 即使被拖库,也可以保证密码不泄露(一种安全的加密方案)
- AutoIT:界面与自动化操作结合来简化日常劳动: .Net Reactor验证License,设置License,创建License,截图AutoIt自动化实现。(七)...
- 区块链游戏企鹅大陆面世了,会是腾讯的区块链游戏吗?
- 计算机群星闪耀时-记计算机界的大牛们