java开发平台普元_java开发平台的两种实现模式

从目前国内主流的java开发平台看,主要有两种实现模式:引擎模式及生成源代码模式。引擎模式比较有代表性的是华丹平台(https://www.huadaninfo.com),生成源代码模式比较有名是的普元平台(http://www.primeton.com)

首先说一下引擎模式,大家可能对报表工具都比较熟悉,目前见到的所有报表工具都是属于引擎模式的。也就是说,通过报表设计器设计出报表模板,发布到报表引擎中,在运行时,你向报表引擎里传递相关的参数,如报表条件,报表引擎负责查询数据库,加工数据,然后以各种方式展现出来。在这个过程中是不需要开发人员编写代码的,这就是引擎模式。

开发平台也是类似,也就是说,利用开发平台开发业务系统时,不需要编码,只需通过WEB页面进行参数定制即可,这些参数存放在系统数据库或XML文件中。系统运行时,由引擎调用这些参数进行页面展现及业务处理。

引擎模式是一种先进的模式,被广泛用于组件的编写中。

基于引擎模式的开发平台,目前见到的并不多,主要原因是这类平发平台本身实现要求的技术难度较大。华丹平台是这类平台比较具代表性的一个成功的产品。

说引擎模式开发平台本身实现难度较大,主要是因为,开发平台不同于报表工具那样功能单一,作为一个开发平台,除了报表引擎,还需要有自定义表单引擎,WEB组件引擎,流程引擎,业务逻辑引擎等等,要能方便客户利用它定义出一个复杂业务系统。所以就需要充分考虑实现一个复杂业务系统可能需要的开发功能,进行高度抽象,并且对编程算法要求也相当高。

再说生成源代码方式。这种方式主要通过一个桌面式设计器来定义业务模块,附助生成源代码框架,然后用户可以在生成的源代码的基础上编写、修改自己的源代码,实现业务逻辑,包括生成、修改JSP页面。

所以生成源代码模式也可认为是一种代码生成器。

相对于生成源代码模式,引擎模式具有很大的优势:

由于不生成源代码,所以对开发人员的技术水平要求比较低,开发人员即使不懂JAVA,也可以方便快速开发,基本上懂sql就可以开发。

由于开发时,开发人员完全基于浏览器访问服务器进行参数定制,所以对于团队开发特别适合,特别是远程协作开发。

系统上线后,可以在线维护,也可以在线定制新的模块(如查询,编辑模块),不需重新编码,编译,发布。

相对于生成源代码类的开发平台,最大优势是方便升级,基于引擎的开发平台,由于参数是存在数据库中的,开发平台升级时,只需通过升级程序将这些数据升级处理一下即可,用户不需要做任何修改,即可以享有新版的所有功能。而基于生成源代码的,实现方式是:设计->定制业务模块->生成源代码框架->用户手工添加自己的代码。比如生成JSP后,用户需要在JSP基础上进行更改,这样就造成以后很难升级,因为新版的开发平台,生成JSP模板一般是要变的,比如增加很多功能,用户除非重新修改JSP文件,才能享有新增的功能。

当然引擎模式,也有它的不足,即处理一些引擎没有提供模板的特殊界面及复杂业务逻辑时不如生成源代码方式平台方便,因为对于生成源代码的,开发人员可以随意对生在的源代码任意修改,实现复杂业务。因为基于引擎的开发平台,还要有良好的可扩展接口,可以让开发人员通过编程方式实现一些复杂的界面及业务逻辑。这一点,华丹平台就做的不错。

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

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

相关文章

sde用户下使用sqlplus登录错误ORA-12547: TNS:lost contact

环境:linux oracle arcsde 解决:root用户下增加$ORACLE_HOME/bin/oracle文件的s权限[oraclelocalhost bin]$ chmod s oracle查看权限[oraclelocalhost bin]$ ls -al oracles权限参考 chmod s 可以给文件/目录 设置 suid和sgid转载于:https://www.cnblo…

java版本streamgobbler_java调用本地命令 Runtime class's exec() method

一个简单的定时调用dos命令的例子2,ExecJavac.java 带有异常处理的命令调用例子3,GoodWindowsExec.java 执行windows下的命令,命令作为参数输入StreamGobbler.java4,GoodWinRedirect.java 一个调用命令相对复杂的例子,复合命令StreamRedirectGobbler.jav…

Linux定时任务

最近在做一个SHELL脚本,要求每月1号执行一次。 不管是SHELL脚本,还是定时任务,都是刚接触。今天先记录下定时任务的解决过程,shell脚本的总结等测试无误后写出来。 root以及其他用户可以使用 crontab -e 命令添加定时任务 crontab…

java长连接转短连接_java原生程序redis连接(连接池/长连接和短连接)选择问题...

原标题:java原生程序redis连接(连接池/长连接和短连接)选择问题最近遇到的连接问题我准备从重构的几个程序(redis和mysql)长连接和短连接,以及连接池和单连接等问题用几篇博客来总结下。这个问题的具体发生在java原生程序和redis的交互中。这个问题对我最…

CCTF部分赛题分析

这次算是跟着师傅们全程打完了CCTF的线上赛,一些强队的WriteUp也放了出来。这篇文章主要是想跟着大牛的思路把那些题重新再过一遍。 PWN3 这个是格式化字符串漏洞的题。printf的格式化串直接来自用户输入。 操作流程 用格式化字符串"%7$x"泄漏libc的地址。…

mediawiki mysql_MediaWiki

MediaWiki 最初是由科隆大学的学生及Magnus Manske这位程式开发员设计来编写维基百科的。50而当时是使用以Perl基础的UseModWiki(被维基社群加上外号为”Phase I”),但後来於2002年1月25日转换至以PHP编写的新版本(”Phase Ⅱ”)。这个维基社群中是十分有名的&#…

20159206 《网络攻防实践》第九周学习总结

20159206《网络攻防实践》第九周学习总结 教材学习内容总结 本周我们学习了教材的第九章和第十章。 第九章介绍了恶意代码安全攻防。首先教材介绍了恶意代码的基础知识,恶意代码指的是使计算机按照攻击者的意图执行以达到恶意目的的指令集。恶意代码包括计算机病毒、…

mysql 操作xm_mysql基本命令使用

启动mysql>net start mysql连接mysql>mysql -u root -h 127.0.0.1 -p password断开mysql连接>qult;查看mysql服务器所有数据库列表>show databases;选择mysql数据库>use database_name;创建数据库>create database database_name;删除数据库>drop databas…

Android深度探索(卷一)第四章读书笔记

通过对git使用方法的学习, 第四章就介绍了源代码的下载和编译。 4.1 下载、编译和测试Android源代码 4.1.1 配置Android源代码下载环境:1创建一个用于存放下载脚本文件的目录。2下载repo脚本文件。3创建用于存放Android源代码的目录。4初始化。5开始下载…

mysql集群重启报错lock_CentOS7.2 下 MySQL 之 PXC 集群部署【Docker+单机多节点】

背景【注意】: 鄙人认为本篇适合做入门测试/学习之用,选择的 "单机多节点配置",后面再整理 "多机配置"文章.近期正突击学习数据库知识想着对 PXC 集群部署实际操作一番,提高技能点,为后续的升职加薪做充足的准…

十二:内存简单介绍和OC的内存管理

一、内存简单介绍 内存结构 1、运行时分配 (1)栈:用户存放程序临时创建的局部变量(先进后出)。 (2)堆:动态分配内存段。 2、编译器分配 (1)BSS段:…

java上传组件_java上传组件FileUpload

如果表单中有文件要上传,也就是有就需要在form标签中添加enctype"multipart/form-data"属性 如果添加此属性,在操作页面servlet中,用request.getParameter("name")获取普通表单数据就会出错java.lang.NullPointerExcepti…

第九周学习进度

第九周所花时间(包括上课)上课4小时,课后4小时代码量(行)      300博客量1了解到的知识点安卓开发环境的应用、服务器的连接转载于:https://www.cnblogs.com/wangzongze/p/5449535.html

百度推送java_关于百度推送,请教一下大家

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼2015-10-23 14:38:01,734 ERROR [main] - Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name org.springframework.web.servlet.mvc.method.annotation.Requ…

java一般做什么_java开发一般做什么

4java怎么样学习编程的时候,一定要独立思考现在网络很发达,我见很多程序员总爱百度,包括我带的许多人都是这样,一个jdbc这么初级的东东,他们编程几年了,每次用还总是百度查。这个东西应该是熟记于心的&…

echarts饼状图mysql_echarts饼状图位置设置

ReactNative环境配置参考链接 Windows系统安装React Native环境 windows下React Native Android 环境搭建 在Windows下搭建React Native Android开发环境 ...(转载)PHP获取客户端、PHP获取服务器相关信息(转载)http://www.php100.com/html/webkaifa/PHP/PHP/2009/1027/3446.htm…

Fragment销毁时replace和add两个方法的区别

这个首先从一个bug说起,如图: 我们都知道fragment切换有两种方式: 1. replace方式 transaction.replace(R.id.content, IndexFragment); 2. add-hide-show方式 transaction.add(R.id.content, IndexFragment); transaction.hide(…

java setlocation_Java Point.setLocation方法代碼示例

本文整理匯總了Java中java.awt.Point.setLocation方法的典型用法代碼示例。如果您正苦於以下問題:Java Point.setLocation方法的具體用法?Java Point.setLocation怎麽用?Java Point.setLocation使用的例子?那麽恭喜您, 這裏精選的…

hdu_2089 不要62

数位动态规划 数位动态规划是求解一个大区间[L, R]中间满足条件Q的所有数字的个数(或者和,或其他)的一种方法。它通过分析每一位上的数字,一般用 dp[len][digit][...] 来表示状态“len位长的数字,最高位数字为digi…

java 当天唯一ids_java-为不同的时间字符串接收相同的ZonedDat...

当您调用LocalDate.parse时,您只获得日期部分(日,月和年),而丢弃其余部分. LocalDate没有时间字段(小时,分钟,秒和秒的一部分),因此它们只是被丢弃并丢失.然后,调用atStartOfDay(ZoneId.systemDefault()),它将时间设置为JVM默认时区的午夜.如果要保留所有内容(日期和时间),请将…