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

java cuba

所以..你好,世界! 我们的英语网站终于可以正常使用了,现在每个人都可以下载该平台,并可以以前所未有的速度更快地创建业务应用程序。 在我们决定与国际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

java cuba

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

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

相关文章

linux设备驱动开发详解源码,linux设备驱动开发详解光盘源码.rar

压缩包 : linux设备驱动开发详解光盘源码.rar 列表19/busybox源代码/busybox-1.2.1.tar.bz219/MTD工具/mtd-utils-1.0.0.tar.gz19/nand驱动范例/s3c2410.c19/nor驱动范例/s3c2410nor.c19/yaffs&yaffs2源代码/yaffs.tar.gz19/yaffs&yaffs2源代码/yaffs2.tar.gz20/USB串口…

进程、线程、协程三个概念傻傻分不清

点击蓝字关注我们进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空…

随机数发生器怎么用_用随机数发生器射击自己的脚

随机数发生器怎么用这将不是解释随机数生成器毕竟不是那么随机的文章之一。 因此,您中的那些人希望获得有关如何破解老虎机,继续前进的指南,在这里什么也看不到。 相反,它是有关一个不太常见的锁争用问题的帖子,该问题…

linux 4.14.2编译,vmware中linux内核2.6.14.4编译全过程_linux教程

很久就开始尝试编译Linux内核,但是总是遇到不少的问题,经过几十次的编译,直到现在才解决,人都要崩溃了。所以干脆把这个过程写出来,希望在你遇到同样问题的时候少走点弯路。我用的是Red Hat Linux 9. 内核版本是2.6.14…

C++ STL deque 容器底层实现原理(深度剖析)

点击蓝字关注我们什么是多态,多态有什么用途?定义:“一个接口,多种方法”,程序在运行时才决定调用的函数。实现:C多态性主要是通过虚函数实现的,虚函数允许子类重写override(注意和overload的区…

lambda ::_Lambdas中的例外:有点混乱的优雅解决方案

lambda ::考虑以下用于写入文件的功能: 该方法背后的想法是,以允许用户在不同的实施方式中通过InputStream的方法,以便writeToFile可以被称为例如用GZIPOuputStream , SnappyOuputStream (快速压缩)或简单…

​常问的16个C语言问题,你能答上来几个?

点击蓝字关注我们最近不少小伙伴在找工作,这里我给大家分享一下面试中经常会遇到的一些嵌入式C语言问题,你看看能答上来几个呢?1用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#de…

centos linux 内核升级,Centos系统的升级及Linux 内核升级

系统及内核版本:[rootnode5 ~]# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core)[rootnode5 ~]# uname -aLinux node6 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux更新仓库:[rootnode5 yu…

spring javaee_JavaEE还是Spring? 都不行! 我们呼吁新的竞争者!

spring javaee如果您一直在Twitter上关注一些Java的重要人物,或者在Reddit上阅读了“新闻”,那么您一定不会错过Spring和JavaEE宣传人员之间热闹的“贱人之战”(请原谅我的法语)。 首先,于尔根霍勒(JrgenH…

C语言代码优化的方法

点击蓝字关注我们在本篇文章中,我(指原作者)收集了很多经验和方法。应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码。简介在最近的一个项目中,我们需要开发一个运行在移动设备上但不保证图像高质量的轻量级JPEG库…

linux源码安装apache2,CentOS7编译安装Apache2

在LAMP环境下对于服务的安装是必不可少的,在linux环境下安装软件也有两种不同的方式,一种是yum安装当然了不同的linux发行版本使用略有不同,另一种是通过编译安装,编译安装要比yum安装要可控此,但是要比yum安装略微麻烦…

finally块_如何从finally块访问方法的结果值

finally块尽管JVM是基于堆栈的计算机 ,但Java语言实际上并没有为您提供任何访问该堆栈的方法。 即使有时在极少数情况下,它也将非常有用。 一个例子 方法结果值放在堆栈中。 如果查看以下示例: public int method() {if (something)return …

C/C++ 命中率比较高的面试知识点,你都答得上来吗

点击蓝字关注我们第一部分:计算机基础1. C/C内存有哪几种类型?C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量&…

linux 提示符 异常,linux终端提示符异常 bash-4.1$

/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.~/.bash_profile: 每个用户都可使用该文件…

svn: 没有演进历程信息_使用默认方法的接口演进–第二部分:接口

svn: 没有演进历程信息引入了默认方法以启用接口演进。 如果向后兼容性是不可替代的,则仅限于向接口添加新方法(这是它们在JDK中的唯一用法)。 但是,如果希望客户端更新其代码,则可以使用默认方法逐步演化接口而不会引…

蓝桥杯7届c语言 c组答案,第七届蓝桥杯C语言C组-(自己懂的题目)

第七届蓝桥杯C语言C组-(自己懂的题目)表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结,先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级。。。第一题报纸页数X星球日报和我们地…

关于多线程的几道面试题

点击蓝字关注我们第一题:线程的基本概念、线程的基本状态及状态之间的关系?线程,有时称为轻量级进程,是CPU使用的基本单元;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数…

c语言 想输入非数字是报错误,C语言上机练习5C言上机练习5.doc

C语言上机练习5C言上机练习5C语言上机报告5 数组2上机内容找出下列程序中的错误并改正1) /*有一个34的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。*/#include "stdio.h"#define M 3//无分号#define N 4void main( ){ int max,i,j,r,c;int a[M][N]{{323…

大牛谈嵌入式C语言的高级用法

点击蓝字关注我们内存管理我们需要知道——变量,其实是内存地址的一个抽像名字罢了。在静态编译的程序中,所有的变量名都会在编译时被转成内存地址。机器是不知道我们取的名字的,只知道地址。 内存的使用时程序设计中需要考虑的重要因素之一&…

java转换为c#_C#vs Java哪一个更快? 将25k C#转换为Java(2)

java转换为c#在上一篇文章中,我描述了如何将25k行C#转换为Java以及从该练习中学到的教训。 我收到以下问题: 顺便说一句很棒的文章。 移植代码后,性能与C#版本相比如何? 改写系统的动机之一是使系统运行更…