在Ruby中,一切皆是对象。下面举一个例子来更直观地说明Ruby语言的这一特点。
在Java中,求一个数的绝对值的代码如下。
int c = Mathabs(-20);
而在Ruby语言中,一切皆是对象,也就是说“-20”这个数也是一个对象,因此,求一个数绝对值的Ruby代码形式如下。
c = -20abs 这样的代码编写方式是不是更形象一些呢?
Rails 框架是一个更符合实际需要而且更高效的Web开发框架,Rails结合了PHP体系的优点(快速开发)和Java体系的优点(程序规整)。
Rails是一个全栈式的MVC框架,换句话说,通过Rails可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。
在实际开发一个MVC模式的Web应用项目时,如果使用Java开发,需要用到Struts、Hibernate和Spring等框架,而且需要额外整合3个框架开发出的内容。而使用Ruby语言开发相同的项目时,只需要用到Rails框架就可以完成。
RoR的效率肯定要比Java高一个数量级,这确实是事实,比PHP至少也要高好几倍,这也是事实,这一点在这篇文章中不展开了,但是为什么开发效率这么高,我也想谈谈我的看法,当然还很不成熟的看法:
一、主要原因是ruby语言的语法非常强大我记得庄表伟说过一个观点:“框架是强化的语法”,意思就是说语法比较弱,所以才需要n多框架,如果语法很强,框架就很少。这一点在Java和ruby身上得到了验证。
1、ruby的open class VS Java的AOP,反射、动态代理,字节码增强等技术JDK13开始引入反射,就已经打开了Java这种静态类型语言通往动态类型语法的潘多拉魔盒。随后的动态代理技术,字节码增强技术,静态和动态的AOP技术开始层出不穷,为什么呢?就是需要在程序运行期动态改变对象的行为。但是对于ruby来说是open class的,语法级别上就支持程序运行期修改对象行为,所以Java需要很复杂技术才能实现的功能对于ruby来说就是非常简单的搞定了。
2、ruby的duck typing VS Java的IoC,泛型Java的IoC不用说了,泛型在库级别也开始广泛使用。IoC就是根据对象行为来进行对象组装,泛型就是在不确定对象行为的情况下确定对象的交互。但是ruby的对象行为是在运行期才确定的,天然就是泛型的,行为不是静态的,所以不需要IoC。
3、ruby的block,closure VS Java的匿名内部类大家对spring的Template肯定印象很深刻,但是这是ruby标准的用法,所以各种资源释放,异常处理在语法级别上就支持的很好,做起来很简单。
4、ruby的Meta programming VS Java缺乏method_missing机制大家耳熟能详了,Java没有这么强的Meta programming,很多ruby magic耍不出来。
5、脚本语言 VS 编译语言这也是一个很大的优势,脚本编程速度确实快。
二、rails框架确实做的很棒
1、full-stackrails是一个概念一致的fullstack框架,不知道为什么,在Java世界目前只有Rife这一个可以和RoR相提并论的fullstack框架,但是Rife的实现并不好(作者从PHP转过来的,和DHH爆发过口水战)。不过因为底层语法支持的不同,用Java是做不出来RoR框架的。因此也有人用Groovy做Grails,不过这帮人不太争气。
2、CoC这个不用说了,现在很多Java框架开始吸收这一点。
3、为web开发良身打造web开发需要用到各种技术全部提供,绝对的贴心,如果用Java,这些东西都需要自己集成或者自己实现,省了一大堆麻烦事。
4、开发测试部署快速这个不说了,Java劣势太明显了
关于“效率提高的来源”问题,我的理解就是次要复杂性被ROR降低到了极致。说的难听一点,不是ROR太聪明,而是我们以前做得蠢事太多了。各种各样的xml, taglib,单元测试困难
做过项目的人都知道这些次要复杂性很多情况下真的是要命的。ROR没有降低软件的内在复杂性,也就是业务问题。但是它把复杂性降低到无限趋近于业务复杂性,也有人称ROR是Web开发的DSL。而解决业务问题正是人发挥聪明才智的地方,ROR不能代替人,但是它把人从次要复杂性的泥潭之中解救了出来。
参考资料:
看table那部分,是这样的结果么
<%@ page import="contactRegistration" %>
<html>
<head>
<meta >
1、ES2007介绍
方正飞鸿智能信息平台(Fix ES2007)是方正集团推出的国内领先企业基础架构中间件平台。Fix ES2007平台基于SOA架构体系,结合数据建模、业务建模、可视化流程引擎、动态表单设计等多种实现工具,其柔性的特点,保障了基于ES2007平台开发的系统可在net平台与j2ee平台上无缝的切换运行,是企业应用开发的一个高效、强大、开放的开发工具。
2、ES2007技术特点
•高效的平台业务逻辑扩展
•组织机构设置和权限机制
•强大的工作流引擎和任务监控,协同机制
•应用部署以及模块运行,升级,管理机制
•强大的工作流引擎
•图形化工作流程设计
•所见即所得表单设计
•完善安全的权限分配体系
3、产品特性
•大并发海量数据的支撑
•即时通讯工具的外网通讯
•即时通讯工具的平台开发性
•全面的SOA 支持
•流程引擎标准化、性能更优
•全面的数据库支持(Oracle,Sqlserver,DB2,Sybase,Mysql)
•全面的WEB 服务器支持(iis,tomcat,websphere,weblogic,jboss,glassfish,apusic)
•全面的AJAX 技术的运用
•全面的浏览器支持(IE,FireFox,Chrome)
•富客户端技术的支持(Flex,silverlight)
•平台接口更标准,更易用
4、产品组件
•业务逻辑 建模工具 Studio
•流程引擎 Workflow
•表单设计 Formdesign
•数据库工具 DTS
•即时通讯 MSQ
•统一界面管理 Portal
•多种主题管理 Theme
•快速高效的代码开发框架 SDK
•企业应用集成EAI
•业务流程管理BPM
•面向服务架构 SOA
5、特色创新
• 快速开发性
开发效率提升高达70%、10 分钟可以完成一个流程全过程开发、1 天可以完成一个小型应用(如OA 办公系统)。
• 企业信息管理特征组件
封装了大量的企业信息管理不同行业的特征组件和业务模型,让使用者更关注于业务,从而使其从技术中解放出来,能迅速的构架用户的业务系统。
• 跨语言
可以无缝的在C#和JAVA 语言中切换,可以顺利的在Net 和J2EE 平台上切换,是全球唯一款支持跨语言的中间件平台。大多数软件公司在为用户服务时往往会被用户左右,而用户很多情况会对需求发生变更,而对语言的变更也不在少数,而一旦发生,对与开发商来说将是致命的,因为语言是不互通的,换一门系统的开发语言,将会把系统的工作量放大两倍,而使用本平台,这些问题将不复存在。
• 多数据库
支持主流关系型数据库,如Oracle,Sqlserver,DB2,Sybase,Mysql。
• 跨平台
支持多 *** 作系统,如WINDOWS,LINUX,UNIX,使用户部署时不用再关心终端服务器,只需要关注用户系统的业务开发即可。
6、案例
支持的平台技术和产品
FIX ES2007业务基础平台支持广泛的平台、系统和应用技术,构建在ES2007业务平台上的业务系统,具有最广泛的技术兼容性和可扩展性:
• *** 作系统支持
支持如下网络 *** 作系统:NT,UNIX,Linux等。
支持如下客户端:WindowsXP及更高版本,浏览器IE60及更高版本。
•数据库支持
支持如下数据库接口:ODBC,JDBC,BADO。
支持Oracle 9i 及更高版本、SQL Server 2000及更高版本等数据库。
•组件和总线支持
支持如下组件和总线标准:COM,ActiveX,OLE,Net。
•分布计算和服务支持
支持如下分布计算和服务技术:DCOM,EJB(J2EE)。
支持如下分布计算支撑环境:Net、BEA WebLogic、IBM WebSphere等。
•Web服务支持
支持如下Web服务支持技术:Serverlet,ISAPI/NSAPI。
支持如下主流Web服务器产品:MS IIS、BEA WebLogic、IBM WebSphere等。
•网络和应用协议
支持多种应用协议,包括:
通讯协议:>
spring 是是一个开源框架,是为了解决企业应用程序开发,功能如下
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
◆框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
Spring的两大核心AOP与IOC,可以单独用于任何应用,包括与Struts等MVC框架与Hibernate等ORM框架的集成,目前很多公司所谓的轻量级开发就是用 Spring + Struts(2)+Hibernate。
Spring MVC就是一个MVC框架,个人觉得Spring MVC annotation式的开发比Struts2方便,可以直接代替上面的Struts(当然Struts的做为一个非常成熟的MVC,功能上感觉还是比Spring强一点,不过Spring MVC已经足够用了)。当然spring mvc的执行效率比struts高,是因为struts的值栈影响效率
spring mvc类似于struts的一个MVC开框架,其实都是属于spring,spring mvc需要有spring的架包作为支撑才能跑起来
比 MyBatis 效率快 100 倍的条件检索引擎,天生支持联表,使一行代码实现复杂列表检索成为可能!
使用Apache-20开源协议
你的产品给你画了以上一张图,还附带了一些要求:
这时候,后台接口该怎么写???使用 Mybatis 或 Hibernate 写 100 行代码是不是还打不住?而使用 Bean Searcher,只需 一行代码 便可实现上述要求!!!
使用 Bean Searcher 可以极大节省后端的复杂列表检索接口的开发时间
可以和任意 Java Web 框架集成,如:SpringBoot、Grails、Jfinal 等
面向接口设计,用户可自定义扩展 Bean Searcher 中的任何组件
约定优于配置,可省略注解,可复用原有域类,同时支持自定义注解
分库分表?在这里特别简单,告别分库分表带来的代码熵值增高问题
同一个实体类,可指定只 Select 其中的某些字段,或排除某些字段
支持添加多个参数过滤器,可自定义参数过滤规则
支持添加多个字段转换器,可自定义数据库字段到实体类字段的转换规则
支持添加多个 SQL 拦截器,可自定义 SQL 生成规则
虽然 增删改 是 hibernate 和 mybatis、data-jdbc 等等 ORM 的强项,但查询,特别是有 多条件 、 联表 、 分页 、 排序 的复杂的列表查询,却一直是它们的弱项。
传统的 ORM 很难用较少的代码实现一个复杂的列表检索,但 Bean Searcher 却在这方面下足了功夫,这些复杂的查询,几乎只用一行代码便可以解决。
后端需要写一个检索接口,而如果用传统的 ORM 来写,代码之复杂是可以想象的。
而 Bean Searcher 却可以:
首先,你有一个实体类:
然后你就可以用一行代码实现这个用户检索接口:
这一行代码实现了以下功能:
例如,该接口支持如下请求:
快速开发
使用 Bean Searcher 可以极大地节省后端的复杂列表检索接口的开发时间!
可以和任意 Java Web 框架集成,如:SpringBoot、Spring MVC、Grails、Jfinal 等等。
接着便可在 Controller 或 Service 里注入检索器:
然后可以使用 SearcherBuilder 构建一个检索器:
面向接口设计,用户可自定义扩展 Bean Searcher 中的任何组件!
比如你可以:
访问一飞开源:>
以上就是关于关于struts dataBean泛型get报错!全部的内容,包括:关于struts dataBean泛型get报错!、Grails的问题1,请您解答、有比较好用的java快速开发平台么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)