`
zhang8mss
  • 浏览: 4697 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

框架系列之 2 技术选型

阅读更多
IOC Container: Spring, Guice

我们需要IOC Container的依赖注入作为胶水,把其他工具包粘在一起。还需要它的AOP,进行事务配置,权限管理。

这么多人都在使用Spring,实际使用中可以获得巨大的便利,如果选择了其他平台就要面临在关键时刻自己造轮子的窘境。使用Spring的实际经验更长,方便与其他组件整合。

Guice是由Google出品的,又使用了JDK5中的注解功能,问题是以后是否能得到很好的支持。

MVC: struts2, struts, JSF, RESTful Framework, SpringMVC

struts2比struts好用,在了解了OGNL的用法后,还是比较方便的。

struts毕竟还是老掉牙了。

JSF好复杂,没有IDE的支持基本没法用,看不清方向。

RESTfull Framework感觉太草率,有前途吗。

springmvc现在默认不包含在spring包中了,它的功能太简陋,有些新功能华而不实。

ORM: Hibernate, JPA, iBatis, JDBC

作为ORM方案,使用hibernate3对JPA的支持,使用annotation简化配置。

Hibernate用起来比较熟,支持多数据库,简化了数据库的操作,目前把所有调优的希望都放在二级缓存上了。

JPA对于规范不太了解。

iBatis据称是对JDBC的最简封装,但是与hibernate有太多的区别。

JDBC根本没进行封装,用起来风险太高。使用封装的框架更容易统一开发。

View: JSP-2.0, Freemarker, Velocity

严重偏向Freemarker,易用性,扩展性,自定义宏,还可以用在不支持JSP-2.0的服务器上,而且还可以与struts2配合。可是Freemarker并没有合适IDE配合,而且能够熟练使用的程序员也不多。

JSP-2.0功能明显不足,限制太多,不容易扩展,必须和taglib配合才能对付实际中的工作,taglib又太难写。

Velocity功能不如Freemarker。

Security: Spring Security, jsecurity, struts menu

Spring Security作为acegi的升级版本,更易用了,与spring整合在一起,控制权限。

jsecurity作为apache孵化器里的项目,有人对它进行了强烈推荐。

是否还考虑基于struts menu写一套自定义的菜单?

Ajax Widgets: ExtJS, Dojo, YUI, JQuery-UI

ExtJS轻便,好用,漂亮,功能强大。只是协议有问题。

Dojo笨重,难看,都不知道怎么用。

YUI是ExtJS的原型,但是封装没有ExtJS好。

JQuery-UI还很青涩。

如果不使用上述这类统一组件库,还可以选择jsCalendar这个日期选择组件,FckEditor和Tiny_mce都是富文本编辑器。据说专业人士喜欢用FckEditor,喜欢漂亮的都喜欢用Tiny_mce。JavaScriptTemplate可以批量生成HTML。和DWR结合实现上传进度条等功能。

JS Function Lib: Prototypejs, JQuery, Mootools

Prototypejs最老。对应的扩展主要有Script.Aculo.us。

JQuery有强力的查询能力。对应的扩展容易找到。

Mootools被fin强烈推荐,说OO封装做得很好,但感觉扩展组件不丰富。

JSON: DWR, json-lib

使用dwr和 commmons-fileupload制作上传文件的进度条。

考虑使用dwr-2的服务器推,制作在线聊天。

与服务器之间交互采用json格式传递数据,目前采用的json-lib在处理循环引用的时候需要特别设置,否则在处理hibernate双向关联的时候100%出错。
2.2. 扩展架构

在基础架构上进行的扩展,实现特定功能的工具:

WebService: CXF, XFire, Axis-2

Axis-2总感觉很笨重,而且不容易和Spring结合。

XFire已经停止开发,后来与Celtix合并为apache中的新项目CXF。

CXF是由Objectweb Celtix和Codehaus XFire合并成立的。与Axis1~2比较,更易于整合到Spring中。而且据说支持JAX-WS。不过不知道JAX-WS是干啥的。

工作流: Jbpm-3, Jbpm-4, Osworkflow

Jbpm-3是开源中比较火的框架了。但是spring-module-jbpm31封装的有问题,单元测试会报异常。

Jbpm-4太新,还是alpha版,而且改动太大了。

Osworkflow,号称最灵活的工作流引擎,据说所有实现都要自己写代码。

两者都支持Hibernate。

规则引擎: drools

据说是很轻量级的,拥有平民语法的规则引擎。

Search Engine: Hibernate-search, Compass, Lucence

Compass同另外一个Hibernate-search都是基于Lucence,对数据库的全文搜索引擎。

Compass开发的时间更长一些。Hibernate-search出现的时间还比较短,会用的人少,不知道前途如何。如果两者都不符合,还要考虑自己直接操作Lucence。

之前使用过Compass,在单元测试的时候会出现内存溢出的问题。

报表: JasperReport, BIRT, 自定义

JasperReport负责文本报表,JFreeChat图形报表。

虽然没使用过JasperReport,但已经听到过太多其他人对它的怨言了。

BIRT没有想像中那样好用,依赖那些eclipse中的包,显得太大了。

因为东西方习惯差异,自定义属于自己的一套报表应该可以解决国内很多问题。首选答案竟然是手写PDF和JFreeChat结合生成图表。

JMS: ActiveMQ, Jencks, Lingo

ActiveMQ是很多人推荐使用的JMS框架。

Jencks是一个JCA平台,可以提供J2EE里的资源容器。

Lingo据说可以把JMS封装成POJO。

定时调度: Quartz, java.util.Timer

据说Quartz是唯一免费的解决方式。这个组件放到web.xml里,可能造成内存泄露。robbin认为这种定时任务不应该和项目绑定在一起,而是应该建立一个单独的任务服务器。

如果是简单功能,也可以用JDK自带的Timer。

Cluster Cache: Open Terracotta

被许多公司使用,据说是很强大的分布集群策略。

JMX: Spring封装,MX4j

Java管理扩展,给人的感觉像是RMI一类的远程调用。

OSGI: equinox, felix

有点儿反感equinox的笨重,而且equinox是否能和eclipse分离呢?能否独立使用呢?能否能嵌入自己的项目呢?

felix是apache的项目,而且有maven插件,但是看了源代码之后,感觉太不成熟了。

动态语言: bsh, groovy, jruby, jython, rhino

bsh最简单,而且都是java语法,功能也不多。

rhino只是解析js,也没什么特别功能。

groovy被期许了很大的希望,受到多方支持,有为数不少的组件,值得考虑一下。

jruby和jython的话,语法和java相差太大了,基本等于再学一门语言。
2.3. 开发环境

JDK: 5.0, 1.4, 6.0

5.0的那些特性还是很好用的,而且可以使用Retrotranslator把5.0编译的class转换成可以在1.4下运行的class。

推荐使用JRockit-27.2,据说可以解决sun jdk的perm gen内存不足问题。

6.0有点儿新了,怕出问题。

Servlet Container: Tomcat-5.5, Weblogic-9/10, Jboss, Geromino, Tomcat-6.0, Glassfish, Jetty, Resin

一般人还是用Tomcat-5.5,据说Tomcat-6.0支持OSGI了而且运行方式跟之前都不同了。

Jetty还是用在集成测试中。

之后的迭代里,应该兼容Weblogic, Jboss, Geromino, Glassfish。

数据库: Hsqldb, Mysql, H2database, Derby, Oracle, SQLServer

采用hsqldb作为嵌入式数据库,可与工程绑定发布,用户下载体验版后不需要额外安装数据库,减少了配置出错的机会。

考虑H2database和Derby,似乎H2功能更强力,Derby出身名门但是不支持commit是个问题。

Mysql是必须要支持的,因为是免费中使用特别广的。

SQLServer也是国内很多地方使用的中型数据库。

Oracle有很多人迷信,的确也是非常常用的大型数据库。

Hibernate本身支持多数据库,包括Mysql, SQLServer, Oracle等,未来替换成企业数据库也不是问题。
2.4. 测试工具

单元测试: JUnit-3, JUnit-4, TestNG

JUnit-3。经典单元测试工具,应用很广,基本所有工具都支持。

JUnit-4有点儿新,新功能不太清楚。

TestNG据说很厉害,但不太熟悉。

js的单元测试工具 jsunit不知如何应用。

Mock: EasyMock, JMock, Spring-test

EasyMock是老牌了,不需要继承特定的超类。

JMock需要继承特定超类,属于新框架。

Spring-test里提供了很多对付servlet里接口的测试类。它还提供了许多常用的测试基类,可以缓存xml配置并支持事务。

测试覆盖率: Cobertura, Clover

Cobertura发展至今,界面和功能已经接近Clover了,开源并且没有古怪的协议约束,Maven2上的配置也比Clover更简便。

Web集成测试: Selenium

Selenium是一款被众口称赞的集成测试工具,使用Firefox的插件录制测试,然后可以翻译成多种平台语言进行自动化测试。

同类产品还有httpunit和jwebunit。DBUnit可以帮助维护数据库中测试数据的完整,但是无法处理表间双向外键的情况。

可以使用Maven2插件进行测试,但是问题是一直没有发布1.0,一直只能使用1.0-SNAPSHOT。

WebService测试: SOAPUI

据说是唯一的WebService测试工具。

压力测试: JMeter

JMeter听过但是没用过。
2.5. 项目管理

UML: Enterprise Architecture, Rose 2003, Visio, StarUML

EA不是免费的。

Rose是名门。

Visio是画图挺方便。

StarUML是免费开源方案。

项目部署工具: Maven2, Ant

Ant更灵活,但是对于大规模项目,自己写build.xml再配置所有的插件和各种流程太麻烦了。而且要借助ivy才好管理依赖。

Maven2拥有规范的目录结构和流程体系,拥有更易用的插件,还可以统一管理jar依赖,它支持多种插件,进行自动打包,测试,代码分析,生成报表。。问题是从外网下载依赖的时候受网速影响太大,一旦遇到外网缺失的依赖更是无可奈何,必须搭建内部repo。Maven2的一个问题,在于不知道如何把这么巨大的一个xml文件拆分成多个可以复用的模块。所以也只好采用这种parent的继承关系对所有的依赖和插件进行管理。

持续集成: CruiseControl, Hudson

cc是老牌劲旅,但是界面也太难看了。

Hudson是日本人写的,界面漂亮,所有配置都可以直接通过界面配置。

代码规范: Jalopy, checkstyle

Jalopy用来美化代码,sf.net上的开源项目已经好多年没有更新了,最新的jalopy已经变成了收费的商业项目。不过我们使用几年前的免费项目就足够了。

把Checkstyle的规范与Jalopy的美化规范调节一致,就可以放心编写代码了。

代码检测: PMD, Findbugs, JavaNCSS, Taglist, Jdepend

PMD, CPD帮助我们检测无用的代码和重复的代码。

Findbugs检测代码中的缺陷。

JavaNCSS计算有效代码行数。

Taglist统计代码中的特定标记。

Jdepend用于统计包之间的依赖性。

版本控制,缺陷跟踪和WIKI: SVN, JIRA, Confluence

Subversion作为版本控制工具,JIRA作为缺陷管理,Confluence提供资源库平台。

数据库版本控制: DBDeploy

DBDeploy让数据库脚本也可以实现版本控制。咱们基于dbdeploy扩展的dbside,可以提供db:migrate, db:rollback, db:view等功能。

使用Hibernate-tools从数据库反向生成领域模型。

Web服务器控制: Cargo

据说可以统一控制各种Web服务器,比如Tomcat, Jboss, Weblogic
2.6. 杂项

JDK-5.0

公共Utils工具类。

日志。

缓存。

JavaMail。

UTF-8与国际化。

异常处理。
分享到:
评论

相关推荐

    大数据平台技术框架选型资料.pdf

    大数据平台技术框架选型是一项关键任务,涉及到一系列的技术决策,以构建高效、稳定且具有扩展性的数据管理系统。本文主要分析了大数据平台的核心需求、业务流程、选型思路、要求、评估标准以及各种方案的优缺点。 ...

    技术选型-技术委员会必要的思考-沈剑.pdf

    他们还需要统一核心技术选型,比如框架组件、基础服务和技术平台,并对前瞻性技术如区块链、TiDB等进行研究与探索。这里的关键问题是缺乏标准、不统一的技术体系,以及新技术研究的各自为战,需要有人负责技术战略...

    微服务治理框架的技术选型.docx

    务治理方面还有待加强,比如熔断和降级机制不完善。l 社区活跃度不高,遇到问题时可能得不到及时的技术支持。...在实际选型时,应根据自身业务需求和技术背景,综合评估各框架的优缺点,选择最适合的方案。

    大数据平台技术框架选型资料 (2).docx

    标题中的“大数据平台技术框架选型资料”表明讨论的核心是关于选择合适的大数据处理平台的技术框架,这涉及到一系列技术和组件的选择,以及评估标准和注意事项。描述中提到的内容可能包括平台的功能需求、业务流程、...

    .Net Core微服务分布式开发框架源码

    一个轻量级的完全可以落地的微服务/分布式开发框架,同时也适用于单体架构系统的...支持经典三层与DDD架构开发模式、集成了一系列主流稳定的微服务配套技术栈。一个前后端分离的框架,前端基于Vue、后端基于.Net6构建。

    公共技术框架搭建方案参考

    通过以上分析可以看出,《公共技术框架搭建方案》旨在为中小型企业提供一套完整的技术选型指南,以支持高效、灵活且具有前瞻性的软件开发工作。该方案不仅关注技术的先进性和开放性,还特别强调了技术的通用性和可...

    云平台技术选型之九:微服务

    微服务架构是一种推崇将大型复杂的应用程序分解为一系列小的、相互独立的服务的技术。这种架构模式主张使用轻量级的通信机制,通常是基于HTTP的RESTful API,来实现服务间通信。在微服务架构中,每个服务围绕具体的...

    基于Apache基于Apache-大数据平台技术框架选型分析

    Apache大数据平台技术框架选型分析主要集中在如何利用开源技术构建一个稳定、易用、安全且高性能的数据处理系统,尤其以Apache Hadoop为基础的CDH(Cloudera Distribution Including Apache Hadoop)发行版为核心。...

    ABB断路器选型手册.pdf

    NewEmax系列提供了一系列的框架电流选项,如E1B、E1N、E1S、E2B、E2N、E2S、E2L、E3V和E4V等,其中带有#标记的框架电流被推荐使用。分断能力则反映了断路器在出现短路故障时的断开能力,NewEmax系列的分断能力最高可...

    sweet框架开发手册

    综上所述,Sweet框架通过遵循一系列设计原则和技术选型,有效地解决了公司面临的多种技术挑战,为开发团队提供了一个统一、先进、稳定的开发平台。这不仅有助于提升开发效率,还能确保代码质量和项目的长期可持续...

    富士 S系列自动断路器选型样本.rar

    在《新建 Microsoft Word 文档 (2).doc》中,可能详细介绍了富士S系列自动断路器的规格参数、技术特性、选型指南以及使用注意事项等内容。通过阅读这份文档,用户可以更深入地了解断路器的选型依据和实际应用,从而...

    从零搭建Spring Boot脚手架,开篇以及技术选型.docx

    ### 从零搭建Spring Boot脚手架:开篇与技术选型 #### 一、引言 当前,Spring Boot已成为主流的Java Web开发框架之一,它简化了开发流程,提升了开发效率,尤其受到广大Java开发者的青睐。对于已经具备一定Spring ...

    JSite 快速开发框架.rar

    1、本框架是在 jeesite1.x 项目基础上,...软件架构·技术选型 环境要求 1、JDK 8 2、Tomcat 8 3、Apache Maven 3.x 基础框架 1、Spring Boot 2.2.2 2、Apache Shiro 1.4.2 3、Spring Framework 5.2.2.RELEASE

    高并发系统解决方案与分布式技术选型探讨.pdf

    分布式技术选型不仅仅包含选择合适的服务框架,还应考虑网络通信机制、数据一致性保障、故障转移机制和分布式事务管理等关键问题。 例如,分布式服务框架中的Spring Cloud不仅能够帮助我们快速构建分布式系统,还能...

    智能交互设备框架设计

    ##### 2.2 技术选型 - **Spring框架**:作为整个系统的核心技术栈之一,Spring提供了强大的依赖注入、AOP等功能,方便进行模块化开发和服务间的解耦。 - **接口设计**:通过定义清晰的API接口,实现不同层次间的...

    Vue框架入门及进阶

    例如,在上述内容中提到的大觅项目,需要进行业务分析、管理和技术选型,这些都是项目前期准备的重要工作。 知识点三:环境搭建 环境搭建是开发的第一步,主要涉及Node.js、NPM、cnpm和Vue CLI(Vue脚手架)的安装...

    微能WIN-V60系列通用变频器选型手册.rar

    通过以上分析,我们可以看出微能WIN-V60系列通用变频器选型手册为用户提供了一个全面的参考框架,帮助用户在众多变频器产品中做出明智的选择。手册中的详细信息,如具体技术参数、应用案例和操作指南,将为工程师在...

    淘宝技术框架分析方案报告.doc

    而XX银行在技术选型上可能更侧重于传统的稳定性和安全性,这反映了不同行业和应用场景下的技术决策差异。在未来,随着金融互联网的发展,借鉴淘宝等电商巨头的技术经验,可能会成为提升XX银行技术栈的关键。

    《SSM企业级框架实战(大数据开发工程师系列)》.pdf

    - **设计阶段**:设计系统架构,确定技术选型。 - **编码实现**:根据设计文档进行编码。 - **测试阶段**:进行单元测试、集成测试、系统测试等。 - **部署上线**:将应用部署到生产环境,进行监控和维护。 #### ...

    电商项目_SSM框架完成

    - **技术选型**:本项目采用SSM框架,即Spring作为核心容器负责依赖注入和AOP;Spring MVC作为Web层框架处理HTTP请求;MyBatis作为持久层框架负责数据库操作。 ##### 3. 搭建taotao-portal-web工程 - **创建Maven...

Global site tag (gtag.js) - Google Analytics