CUBA平台–新的Java企业应用程序框架

所以..你好,世界! 我们的英语网站终于可以正常使用了,现在每个人都可以下载该平台,并可以以前所未有的速度更快地创建业务应用程序。 在我们决定与国际Java社区共享足够好之前,我们花了六年的永久发展和偶尔的革命,才使CUBA达到成熟水平,其中包括几年的时间来创建广泛的文档,视频教程和实时应用程序。代码样本。 自2009年以来,该平台已经在Haulmont和其他俄罗斯IT公司的众多项目中经过了实战验证,从简单的网站后端到运行24×7或可服务数千个并发用户的端到端企业自动化解决方案。

如上所述, CUBA是针对业务应用程序的。 我们假设此类应用程序通常将需要复杂的数据模型,数百个屏幕,对运行各种业务流程的支持,强大的安全性要求以及多种集成。 除此之外,它们还应具有可伸缩性,并准备随着业务发展而进行永久更改。

image02

那么, CUBA是什么?与现有的工具和框架有何不同? 简而言之,它是一个基于多种Java技术的完整堆栈框架:Spring,Vaadin,OpenJPA,Lucene,jBPM,Gradle等。但是,单独使用这些(或类似技术)技术仍然需要太多的精力来开发复杂的应用程序,因此CUBA引入了两者之间的紧密集成。

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

用户界面是声明性的:您可以使用XML或视觉编辑器定义屏幕布局,从70多种视觉组件中进行选择,从各种按钮到Google Maps和动态图表。 然后,在Java控制器中添加初始化和事件处理逻辑。 考虑到数据感知组件,您可以非常快速地创建复杂的UI,并且由于代码和布局之间清晰的分隔,它仍将易于维护。 默认情况下,使用富Web客户端–显然,这意味着您无需担心在最终用户PC上安装任何软件。 此外,可以在桌面Java客户端中显示相同的UI,甚至可以在应用程序中同时使用这两个UI。

image01

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

image00

所有用户动作均由安全子系统控制。 基于角色的模型控制CRUD访问实体属性,甚至可以在代码中使用的某些屏幕组件或自定义令牌。 行级安全性有助于控制对不同数据段的访问-例如,部门A的用户只能看到部门A的文档。当然,所有内容都在运行时在UI中配置。 最后,所有对数据的更改都会被记录下来,因此您将看到谁更改了内容以及更改的时间,并具有还原功能–在出现问题时方便进行汇报。

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

  • 使用集成的可视设计器进行业务流程管理
  • 报告生成
  • 全文搜索
  • 通用REST API与外部系统集成
  • 信用卡付款支持
  • 可靠的异步电子邮件发送
  • 计划任务执行支持
  • 软删除
  • …等等,涵盖了典型企业应用程序的大多数需求。

关于部署和环境选项,您在这里有很多自由。 CUBA应用程序可以部署为各种配置,从运行所有内容的单个服务器开始,到具有单独的中间件和Web群集的高可用性配置。 CUBA开箱即用地支持PostgreSQL,Oracle数据库,Microsoft SQL Server和HSQL(通常用于原型设计),并且随着项目的发展,您可以从一种切换到另一种。 如果您要使用另一个DBMS(这不是问题),则可以稍作添加对它的支持。 同样重要的是, CUBA应用程序可以部署到任何Java EE Web Profile服务器,例如Tomcat,Glassfish等。

最后,谈谈如何在CUBA上实际开发应用程序。 您需要的只是Java SE,XML和JPQL,这使您的应用程序代码更加统一且易于维护。 这也减少了对开发团队的需求-您实际上并不需要Web开发人员或Java EE专家团队。

image03

您可以在IntelliJ IDEA或Eclipse等标准IDE中创建业务逻辑,但是CUBA还具有Studio –一种辅助工具,该工具可以进行可视屏幕布局设计,帮助创建数据模型并为其生成标准屏幕,生成,运行和保存最新的数据库更新脚本,创建和配置您的项目,构建文件,以及自动化其他各种日常工作(很少有人喜欢手动完成)。 Studio和IDE之间的所有更改都是同步的,因此您可以选择在何处进行更改。

为了进一步提高开发人员的性能, CUBA支持对除数据模型之外的所有代码进行热部署。 因此,例如,如果您更改了屏幕或方法,则不再需要重新启动服务器。 想象一下,您花了几个小时等待停止编译部署开始过程(尽管这是再喝一杯咖啡的好借口!)。 使用CUBA ,您只需重新打开屏幕或再次调用该方法,即可看到所做的更改。 可以通过Gradle任务调用热部署,但是让CUBA Studio在检测到任何更改后立即在后台自动进行此操作会更容易。

我仍然想谈论很多事情,但是希望这能给CUBA带来足够的尝试机会。 并且,如果有任何问题不起作用,请随时通过我们的支持论坛寻求帮助!

翻译自: https://www.javacodegeeks.com/2015/06/cuba-platform-the-new-java-enterprise-applications-framework.html

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

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

相关文章

Abiword页面布局

Abiword页面布局 AP_Win32FrameImpl::_DocumentWndProc 文档窗口过程函数在WM_SIZE消息中设置FV_View对象的整体尺寸,跟窗体的:设备单位 转换成:布局单位。m_iWindowWidth 19695,m_iWindowHeight 8520 设备单位和布局单位的比例是…

php 文件内容对比,php 比较两个文件是否相同

-### php比较两个文件是否相同小一点的文件直接实用内置函数就可以了function md5_files($filename,$filename1){$file1 md5_file($filename);$file md5_file($filename1);if($file $file1){return "文件相同";}else{return "文件不同";}}md5_file()…

今日心得:给自己写信

1.tomorrow is another day 2.有一种人一认识就觉得温馨 3.这个世界只在乎你是否达到了一定的高度,不在乎你是站在巨人的肩膀还是垃圾上上去的 4.花儿总要在风雨的洗礼下盛开 5.有一种“无能为力”叫宿命 6.幸福是什么?有很多幸福的瞬间,幸福…

Hibernate READ_WRITE CacheConcurrencyStrategy如何工作

介绍 在我以前的文章中,我介绍了NONSTRICT_READ_WRITE二级缓存并发机制。 在本文中,我将使用READ_WRITE策略继续本主题。 直写式缓存 NONSTRICT_READ_WRITE是一种通读缓存策略,可更新最终无效的缓存条目。 尽管这种策略可能很简单&#xff0…

java hashmap替换key,HashMap 用可变对象作为 key 踩坑

点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!作者:Icharlehttps://icharle.com/hashmapkebianobj.html前言在 Ja…

(转)Eclipse平台技术概述

转载:周金根 http://zhoujg.blog.51cto.com/1281471/516833Eclipse:Eclipse平台技术概述2010-10-19 13:35:00标签:Eclipse 休闲 职场原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明…

带有光纤的可扩展,健壮和标准的Java Web服务

这篇博客文章讨论了负载下的基准Web服务性能。 要了解有关Web服务性能理论的更多信息,请阅读利特尔定律,可伸缩性和容错 。 使用阻塞和异步IO对Web服务进行基准测试 Web应用程序(或Web服务)如何在负载下,面对各种故障…

php js 图片旋转,jQuery实现可以控制图片旋转角度效果

本文实例讲述了jQuery实现可以控制图片旋转角度效果。分享给大家供大家参考,具体如下:运行效果截图如下:具体代码如下:/p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">img { margin-top:100px; m…

【OAuth】快速入门

一、引言 1、什么是OAuth2.0? OAuth 2.0是一个关于授权的开放网络协议,允许用户授权第三方应用访问其在服务提供商上存储的资源(如照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。OAuth 2.0在第三方应…

jert oracle 统计说明,Oracle JET简单入门(一)Oracle JET介绍

Oracle JET (Oracle Javascript Extension Toolkit)是一款 Oracle 的 JavaScript 拓展工具包。简单来说 Oracle JET 是一个一堆好用的前端工具结合体。Oracle JET 文档链接 http://docs.oracle.com/middleware/jet310/jet/developer/toc.htmOracle JET支持 Model-View-ViewMod…

SELECT语句使用JDBC和Hibernate批量获取

介绍 现在,我已经介绍了Hibernate对INSERT , UPDATE和DELETE语句的批处理支持,是时候分析SELECT语句结果集的批量提取了。 JDBC ResultSet提供了一个客户端代理游标,用于获取当前语句的返回数据。 执行该语句后,必须将…

Spring环境的搭建与测试 (spring2.5.6)

这里是采用的视频里面的spring版本 下载spring2.5.6, 然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下 dist\spring.jar lib\jakarta-commons\commons-logging.jar 上边两个是基本的jar包。。 如果使用了切面编程(AOP),还需要下列…

如何使用Hibernate批处理INSERT和UPDATE语句

介绍 JDBC长期以来一直为DML语句批处理提供支持。 默认情况下,所有语句都一个接一个地发送,每个语句都在单独的网络往返中发送。 批处理使我们能够一次性发送多个语句,从而节省了不必要的套接字流刷新。 Hibernate将数据库语句隐藏在事务后写…

linux 查看系统组账号密码是什么,Linux 用户与组管理详解(system-config-users 命令行)...

用户与组管理用户相关文件组账号相关文件用户和组管理软件:基于命令行的用户和组管理创建用户查看用户信息删除用户修改用户信息为用户创建密码更改用户密码信息创建组删除组查看当前登录到系统的用户用户与组管理什么是用户,用户是人吗?用户…

linux没有root密码xshell,LINUX终端免密登陆(以Xshell为例)

1,工具-新建用户密钥生成向导linux2,密钥类型选择:RSA,而后下一步shell3,输入密钥名称和密码ssh4,公钥格式为SSH-OpenSSH,保存为文件(后缀为pub)(记录此文件目录)工具二,登陆在须要免密登陆的主…

ActionBar之style出现Cannot resolve symbol 'Theme' 错误

今天 2014/03/08 00:49 刚刚升级 android studio 到了 0.5.0 版本,修复了许多 bug,包含当前这个问题,之前一直困扰我很久,莫名奇妙的提示主题样式找不到,无法解析, 后来一直谷歌发现很多人都认为是 IDE 的b…

单片机上运行linux程序代码,在Linux下烧录51单片机

原标题:在Linux下烧录51单片机*本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载。背景我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux下给51单片机烧录程序那是非常必要的。之…

linux运行core控制台程序,VisualStudioCode创建的asp.net core控制台程序部署到linux

1、asp.net core控制台程序static void Main(string[] args){int times10;while(times>0){Console.WriteLine("Hello World!");times--;Thread.Sleep(1000);}}2、发布发布前,修改test2.csproj文件(项目名称为test2)Exenetcoreapp2.1centos.7-x64主要添…

wps linux版本支持vba,Wps vba安装包

wps vba是款专用于wps办公软件的宏插件,可以利用VBA制作Excel登录系统,实现一些VB无法实现的功能,操作界面人性化,方便用户的操作,还可以利用VBA来Excel内轻松开发出功能强大的自动化程序。软件简介:wps vb…

我的Dojo中有一个Mojo(如何编写Maven插件)

我一直忙于在工作中使用Maven的腋窝。 对于很多开发人员,我会听到:“那又怎样。” 不同之处在于,我通常在无法直接访问Internet的环境中工作。 因此,当我说我经常使用Maven时,这意味着某些事情。 依赖地狱 公平地说&a…