CUBA平台–用于快速应用程序开发的开源Java框架

传统上,自计算时代开始以来,企业软件开发自然面临着一个挑战,当时自然而然地,企业软件开发本应专注于解决实际的业务问题,但与此同时,开发人员必须在技术上花费大量时间和精力。解决方案的一面,例如架构和通用功能实现。

为了解决以技术为中心的编程和面向问题的编程之间的这种不平衡,出现了许多框架,这些框架旨在提高抽象级别并使开发人员脱离低级例程。 另外,为了提高开发效率,多年来开发工具变得越来越聪明。 Borland Delphi是2000年代初期的最好例子之一,它极大地提高了桌面应用程序的开发速度。

在过去的十年中,企业软件得到了很大的发展,从而增加了对新一代高生产率框架和开发工具的需求。 因此,在本文中,我们将介绍CUBA平台 -一种开放源代码框架,该框架结合了坚实的体系结构,任何企业应用程序的“必备”功能和快速的应用程序开发工具,旨在提高开发效率。
鸡尾酒

CUBA平台与其他框架有何不同?

与大多数其他Java框架的主要区别在于CUBA平台是一个高级框架 。 这意味着它将开发人员从基础技术(例如Vaadin,Spring和EclipseLink)中抽象出来,从而使他们可以专注于业务任务,并通过一组丰富的功能和开发工具进行授权。 同时,CUBA并不限制对低级代码的访问,从而使人们确信该框架可以适应项目的需求。

CUBA平台在开发企业应用程序时带来了最大的价值,企业应用程序通常需要复杂的数据模型,数十或数百个屏幕,对运行各种业务流程的支持,强大的安全性要求等。

到底是什么东西?

CUBA应用程序具有标准的三层体系结构。 关系是元数据–应用程序数据模型的知识。 首先,它使所有视觉组件都具有数据感知能力。 因此,例如,一个表知道它正在显示驱动程序实体的某些属性,而标签知道它正在显示日期。 同样,元数据可帮助可视化组件通过ORM与数据层进行对话-定义应上载或更新的对象图。 这同样适用于安全子系统,报告生成器和平台的其他部分。

丰富的网络用户界面具有声明性:您可以在视觉编辑器或XML中定义屏幕布局,可以从70多种视觉组件中进行选择,从各种按钮到Google Maps和动态图表。 然后,在Java控制器中添加初始化和事件处理逻辑。 考虑到数据感知组件,您可以非常快速地创建复杂的UI,并且由于代码和布局之间的清晰区分,它仍将易于维护。 如果可用组件的选择不够,则可以集成外部JavaScript,GWT或Vaadin组件。

屏幕-sb-2

通用过滤器是CUBA用户界面的重要组成部分,该组件使用户可以创建自己的搜索条件。 开发人员只需将组件放到浏览器屏幕(显示实体列表的屏幕)上,然后就不用管它了。 用户或管理员将定义他们要自行搜索的条件。

1个过滤器

所有用户动作均由安全子系统控制。 基于角色的模型控制CRUD访问实体属性,甚至可以在代码中使用的某些屏幕组件或自定义令牌。 行级安全性有助于控制对某些数据记录的访问-例如,区域部门的用户将仅看到该部门创建的文档。 安全设置是在运行时在应用程序的UI中配置的,因此,系统管理员可以随时进行所有更改。 最后,所有对数据的更改都将被记录下来,因此您将看到谁更改了内容以及更改的时间–在出现问题时方便进行汇报!

除上述功能外,CUBA还提供了许多现成的功能,包括:

  • 用户管理和管理工具
  • 报告管理
  • 使用集成的可视设计器进行业务流程管理
  • 多语言界面和多个时区支持
  • 全文搜索
  • 通用REST API

我可以在哪里部署我的应用程序?

关于部署阶段和环境选项,您在这里有很多自由。 CUBA应用程序可以部署为各种配置,从运行所有内容的单个服务器开始,到具有单独的中间件和Web群集的高可用性配置。 该平台开箱即用地支持PostgreSQL,Oracle数据库,Microsoft SQL Server,MySQL和HSQL(通常用于原型设计),并且随着项目的发展,您可以从一个切换到另一个。 同样重要的是,可以将CUBA应用程序部署到任何Java EE Web Profile服务器,例如Jetty,Tomcat,Glassfish或Websphere。 当然,您可以将应用程序封装在Docker中和/或在流行的PaaS云中运行,例如CloudFoundry,OpenShift或Jelastic。

听起来不错,那么如何开发CUBA应用程序?

使用CUBA平台开发应用程序所需的全部是Java SE,XML和JPQL,这使您的应用程序代码更加统一且易于维护。 这也使您的开发团队更加灵活-您实际上不需要Web开发人员或Java EE专家团队。

图片1

您可以在自己选择的IDE(例如IntelliJ IDEA或Eclipse)中创建业务逻辑,但是CUBA还具有Studio –一个补充的可视化工具,该工具可以自动完成整个CUBA特定任务的范围:

  • 建立项目基础设施
  • 进行UI和数据模型的可视化设计
  • 带多个布局选项的脚手架CRUD屏幕
  • 通过自动生成和运行更新脚本来使数据库保持最新
  • 为处理程序,服务等生成存根。

Studio和IDE之间的所有更改都是同步的,因此您可以自由选择在何处进行更改。 为了进一步提高开发人员的性能,Studio会自动热部署除数据模型之外的所有代码。 因此,Studio消除了许多常规工作和样板代码,而不会限制您用来编写代码的工具。

如果您打算将旧系统升级到现代堆栈,那么CUBA也可以提供解决方案。 Studio包含一个迁移工具,该工具会将旧版数据库转换为CUBA兼容,并根据数据库架构自动生成屏幕。 因此,您只需要添加自定义屏幕并迁移业务逻辑。

好的,我几乎说服了……许可呢?

如标题所述,核心框架是开源的,在Apache 2.0下获得了许可,其源代码可在GitHub上获得。 这意味着您在CUBA上开发的软件没有许可证限制。 CUBA Studio提供免费和商业版本。 免费版CUBA Studio具有全部功能,但是限制了应用程序数据模型的大小。 引导项目并探索平台功能是理想的选择。 可以完全免费使用Java IDE继续免费进行进一步开发,或者您可以购买商业许可订阅,其中还包括访问Premium Add-on的能力 :报告,图表和地图,全文本搜索和BPM。 每年每位开发人员订阅的价格仅为311美元起

希望本概述使您对CUBA平台是个好主意,并且很容易尝试。 如果是这样,只需访问网站, 下载免费的Studio ,通过快速入门 ,即可在几分钟内运行您的第一个CUBA应用程序!

翻译自: https://www.javacodegeeks.com/2016/06/cuba-platform-open-source-java-framework-rapid-application-development.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#与mongoDB初始环境搭建

mongoDB官网https://www.mongodb.com/ mongoDB默认安装路径(Windows x64平台) C:\Program Files\MongoDB\Server\3.4\bin mongoDB环境变量配置 启动mongoDB服务 > mongod -dbpath D:\mongodb > mongo Visual Studio引用mongoDB PM> install-package M…

浅析MATLAB中的内联函数、匿名函数和函数函数

内联函数 内联(inline)函数是MATLAB 7以前经常使用的一种构造函数对象的方法。在命令窗口、程序或函数中创建局部函数时,通过使用inline构造函数,而不用将其储存为一个M文件,同时又可以像使用一般函数那样调用它。 MA…

二十世纪数学家排名

二十世纪数学家排名 陈彬整理2010.1.1 1.A.N.Kolmogorov(柯尔莫哥(戈)洛夫)——为概率论建立了公理体系的俄罗斯人,但排第一似乎有些不妥? 2.H.Poincare(庞加莱(Jules Henri Poincar))——有些人不需要说明,H.庞加莱就是其中之一。 3.D.Hilbert(希尔伯特…

Matlab英文操作系统下中文乱码的解决方案

打开注册表(win+R,运行框中输入regedit),然后进入HKEY_CURRENT_USER\Control Panel\International,将右侧 : "Locale""00000409" 改成 "Locale""00000804&q…

Git 从了解到放弃

1. 简单介绍 1.1. git起源 在1991年linus创建了Linux从此linux成为服务器领域的佼佼者,大部分web服务器、邮件、数据库各种服务器端程序都安装在了linux上面运行,主要是因为它运行的快速、高效、利用率高,这样一个优秀的系统并不是一个人在维…

LIS(Longest Increasing Subsequence)最长上升(不下降)子序列

有两种算法复杂度为O(n*logn)和O(n^2)O(n^2)算法分析如下: (a[1]...a[n] 存的都是输入的数)1、对于a[n]来说,由于它是最后一个数,所以当从a[n]开始查找时,只存在长度为1的不下降子序列;2、若从a…

java ee 的使用方法_改善Java EE生产支持技能的8种方法

java ee 的使用方法参与Java EE生产支持的每个人都知道这项工作可能很困难。 7/24寻呼机支持,多个事件和错误修复(要定期处理),来自客户和管理团队的压力,要求它们尽快解决生产问题并防止再次发生。 在日常工作中&…

Tp3.1 文件上传到七牛云

TP3.1 中不支持Composer 就无法用composer 安装 下载历史的SDK https://github.com/qiniu/php-sdk/releases/tag/v7.0.8 下载下来放到 Think 目录下的Vendor下 进入代码 HTML的代码 <form id"upload" methodpost action"file" enctype"multipart/f…

Matlab元胞数组操作

元胞数组 删除行的方法比较特殊 A(i,:)=[];%注意,两边都没有用花括号 元胞数组中的操作函数 cell:创建空的元胞数组 cellfun:为元胞数组的每个元胞执行指定的函数 celldisp:显示所有元胞的内容 cellplot:利用图形方式显示元胞数组 cell2mat…

激励自己的名言警句

激励自己的名言警句 1、忍别人所不能忍的痛&#xff0c;吃别人所别人所不能吃的苦&#xff0c;是为了收获得不到的收获。 2、销售是从被别人拒绝开始的。 3、好咖啡要和朋友一起品尝&#xff0c;好机会也要和朋友一起分享。 4、生命之灯因热情而点燃&#xff0c;生命之舟因拼搏…

Java Spring 后端项目搭建

参考了几位同行的Blogs和StackOverflow上的许多问答&#xff0c;搭建了此后端项目&#xff0c;替换原来的node.js后端&#xff0c;和前一篇中搭建的Vue Web App项目配合使用&#xff0c;后端准备只提供服务&#xff0c;不包含后端装配的页面&#xff0c;打算只使用MongoDb和Red…

新电子书:解决生产中Java应用程序错误的完整指南

构建明智的错误处理工作流程需要什么&#xff1f; 生产异常处理是一门黑暗的科学。 一旦您的代码投入生产&#xff0c;任何小的缺陷或故障都可以转化为数百万个日志事件。 尤其是在将异常作为控制流的一部分使用的情况下。 它是研究最少的主题&#xff0c;对您的应用程序的行…

Matlab运行指定m文件

当m文件在当前目录时可以直接输入该m文件的名字运行&#xff0c;但是当不在当前目录时可以使用run(filename)的方式运行&#xff0c;使用edit(filename)还可以直接编辑&#xff0c;当然filename可以包含文件路径。

在VC中使用MATLAB C++函数库

http://Tech.16C.Cn 在VC中使用MATLAB C/C函数库 MATLAB广泛应用于线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等领域。因此如果在VC中对MATLAB进行调用将大大减少编程的工作量、保证程序的准确性&#xff0c;并且继承了VC强大的功能&#x…

转帖 IBM要推POWER9,来了解一下POWER处理器的前世今生

https://blog.csdn.net/kwame211/article/details/76669555 先来说一下最新的POWER 9 在Hot Chips会议上首次提到的IBM Power 9 处理器有可能成为劲爆芯片&#xff0c;Power 9预计有助新 OEM 和加速器合作伙伴的发展&#xff0c;并可为大蓝色IBM叫板主要竞争对手英特尔的高端服…

java线程死亡_Java模因拒绝死亡

java线程死亡也有标题&#xff1b; 我的宠物讨厌Java编码。 有许多Java模因让我很烦&#xff0c;部分是因为它们总是一个坏主意&#xff0c;但主要是因为人们在找到更好的替代方案后的几年里仍在不断地选择它们。 使用StringBuffer代替StringBuilder 从2004年开始&#xff0c…

Eclipse报错 due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决方案

Eclipse报错 due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决方案Eclipse 编译时报错&#xff1a; Access restriction:The type NEW is not accessible due to restriction on required library C:/Java/jdk1.6.0_10/jre/lib/rt.jar 解决…

Matlab找到不知道的函数名

如果你知道和你要找到类似的函数的函数名&#xff0c;可以在help中查看你知道的函数名&#xff0c;然后再最下面会列出几个类似的函数&#xff0c;也许这里就有你要找的函数

asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)

asp.net core 2.0使用JWT认证园子里已经有挺多帖子了&#xff0c;但开发中发现认证未授权情况下返回的401状态码是没有任何信息的&#xff0c;业务中可能有需要返回一串错误的Json信息。在这里我分享一个自定义错误页面内容信息的方法&#xff0c;使用该扩展方法还可以捕获异常…

关于ANTLR的通用库的需求:使用反射来构建元模型

我是一名语言工程师&#xff1a;我使用多种工具来定义和处理语言。 在其他工具中&#xff0c;我使用ANTLR&#xff1a;它简单&#xff0c;灵活&#xff0c;可以围绕它进行构建。 但是&#xff0c;我发现自己围绕ANTLR为不同的项目重建了类似的工具。 我看到两个问题&#xff1…