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

java cuba

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

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

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

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

与大多数其他Java框架的主要区别在于CUBA Platform是一个高级框架 。 这意味着它将开发人员从基础技术(例如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 Platform开发应用程序所需的全部是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

java cuba

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

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

相关文章

java中什么时候应用异常_生产Java应用程序中的十大异常类型-基于1B事件

java中什么时候应用异常Pareto记录原理:97%的记录错误语句是由3%的唯一错误引起的 在最新的数据整理帖子之后,我们收到了很多反馈和问题,我们发现97%的记录错误是由10个唯一错误引起的 。 根据大众的需求&…

C++ 11 深度学习(十四)C++类

(一)综述:类是我们自己定义的数据类型 设计时要考虑的角度: 站在设计和实现的角度来考虑;站在使用者的角度考虑;父类,子类之间的考虑; (二)explicit 首先, C中的explicit关键字只…

手动编译 lombok_Lombok,一种编译时Java注释预处理器,可最大程度地减少代码大小...

手动编译 lombok在本文中,我们将看到如何在常规Java代码中使用lombok来最大程度地减少代码长度和冗余。 什么是Lombok? Lombok,一个编译时注释预处理器,有助于在编译时注入一些代码。 在详细介绍之前,我要求您应该从…

mysql超大表处理方式是_第29问:MySQL 的复制心跳说它不想跳了

问题最近年底,大家的数据库经常跑批量大事务,会发现复制突然断开,报错“心跳与本地信息不兼容”:会是什么原因?实验我们先来复现一下,再进行分析。宽油,做一对主从数据库:我们先造一…

sap 分摊分配不产生会计凭证的原因_SAP软件的物料分类账功能

物料账介绍物料分类账(Material Ledger)是SAP财务模块的重要功能之一,用于对标准价计价的物料进行差异处理。激活ML后,系统会在"工厂物料"层(或更细的层次)为每个物料建立子账簿,记录该物料在各个期间的数量、价值变化情况。月底运…

忽略异常_忽略已检查的异常,所有出色的开发人员都在这样做–基于600,000个Java项目...

忽略异常Github和Sourceforge上超过600,000个Java项目中的异常处理概述 Java是使用检查异常的少数几种语言之一。 它们在编译时强制执行,并且需要某种处理。 但是……在实践中会发生什么? 大多数开发人员实际上会处理任何事情吗? 他们怎么做…

数据结构【队列专题】

先进先出(First In First Out,FIFO)的线性序列,成为“队列”。 队列也是一种线性表,只不过它是操作受限的线性表,只能在两端操作: 一端进,一端出。进的一端成为队尾(re…

oracle安装卡在create inventory_滴滴云服务器上安装Oracle12cR2单实例数据库

一、相关说明Oracle数据库是由美国甲骨文公司推出的一款优秀的关系型数据库。当前最新版为Database 19c。本文简述Oracle Database 12cR2在滴滴云主机上的安装过程。如需更权威的指导方法请参考Oracle官方安装文档。二、环境概述一台DC2云主机(2c4g)一个…

【WebRTC---序篇】(二)Windows平台WebRTC源码编译

需要准备的东西 (一)一个强大的梯子(懂得都懂)!!!!!!!!! (二) 下载depot_tools Windows指定地址必须在此下载 打开这个页面,找 install depot_tools 这个关键字 请把他解压到C盘,并且设置到PATH环境变量种,且让它处于最顶端。 其他需要设置的额外变量 DEPOT_TOOLS_…

商品管理后台发布商品时,规格值组合的前端交互的实现逻辑

方案1:先计算总行数,再循环填充规格值 根据每种规格值数量计算得到总行数,如果下图有3种规格:长度、重量、大小,规格值个数分别为:3、3、2,3x3x218行。 规格种类有3种,于是写3层嵌套递归循环填…

【WebRTC---源码篇】(五)WebRTC视频引擎

1. 视频数据的采集时间 2.视频分发器VideoBroadCaster

activiti异步执行_对基于消息队列的Activiti异步执行器进行基准测试

activiti异步执行一点历史 永无休止的一件事是,Activiti在某些非常大的规模的大型组织中的使用方式。 过去,这导致了各种优化和重构,其中包括异步执行器-替换旧的作业执行器。 对于未启动的用户:这些执行器在流程实例中处理计时器…

chrome浏览器设置网页快速到顶部和到底部的方法

鼠标移到浏览器的书签任意位置,点击鼠标右键添加书签,在添加书签的窗口输入名称和js代码,然后把书签移到浏览器书签栏的最左侧,这样每次浏览网页就可以使用快捷方式快速到底部或者顶部了。 快速到顶部的js代码:javascr…

apache pdfbox_Apache PDFBox命令行工具:无需Java编码

apache pdfbox在博客文章Apache PDFBox 2中 ,我演示了将Apache PDFBox 2用作从Java代码中调用的库来操作PDF。 事实证明,Apache PDFBox 2还提供了可以直接从命令行直接使用的命令行工具 ,而无需其他Java编码。 有几种命令行工具可用&#xff…

【WebRTC---源码篇】(六)NACK判断包位置的关键算法

首先保证a与b不相等 template <typename T, T M = 0> inline bool AheadOf(T a, T b) {static_assert(std::is_unsigned<T>::value,"Type must be an unsigned integer.");return a != b && AheadOrAt<T, M>(a, b); } template <type…

spring集成mq_使用Spring Integration Java DSL与Rabbit MQ集成

spring集成mq我最近参加了在拉斯维加斯举行的2016年Spring大会 &#xff0c;很幸运地看到了我在软件世界中长期敬佩的一些人。 我亲自遇到了其中的两个人&#xff0c;他们实际上合并了几年前我与Spring Integration相关的一些次要贡献– Gary Russel和Artem Bilan &#xff0c;…

MyEclipse 如何使用断点调试

文章目录1、在需要的代码行处打断点右键添加断点双击添加断点快捷键添加断点2、以debug模式开启服务器通过debug执行列表&#xff0c;选择服务器启动当前程序按右键&#xff0c;选择debug as&#xff0c;再选择服务器启动开发视图底部server列表选择服务器开启debug视图&#x…

【WebRTC---源码篇】(八)音频数据采集

ADM的创建 1.Audio Device Module是在逻辑层与硬件设备层之间进行了转换,需要使用什么功能,调用什么接口就可以,不要管底层平台实现。 2.AudioDeviceModule是一个接口类,定义了一系列接口。最终实现由子类AudioDeviceModuleForTest实现,其中包括一些测试函数(对设备的…

jsf netbeans_NetBeans Java EE技巧9:从数据库创建JSF应用程序

jsf netbeans您需要非常快速地创建数据库前端吗&#xff1f; NetBeans IDE允许人们以很少的代码就为一组数据库表开发JSF应用程序前端。 现在&#xff0c;本教程是一个老歌&#xff0c;但是一个好东西……对于那些不了解它的人来说&#xff0c;值得再次提及。 首先&#xff0c…

cloud foundry_介绍“又一个” Cloud Foundry Gradle插件

cloud foundry在与两个同事&#xff08;感谢Mark Alston和Dave Malone &#xff01;&#xff09;一起使用自动Jenkins管道部署Cloud Foundry应用程序的过程中&#xff0c;我决定尝试编写Gradle插件来执行一些通常需要完成的任务使用命令行Cloud Foundry Client完成 。 引入一个…