原文出自
Dailyrazor
翻译
QiQi
年已经过去五分之一,不知道大家有没有朝定好小目标更加前进一点呢?在今天的文章中,我将分享一些值得了解的JavaWeb框架,以提升你Web开发方面的知识。
老话说的好,工欲善其事,必先利其器。选择一个好的Web应用框架就像一把称手的兵器,可以助你披荆斩棘。我们今天就为大家整理了十佳JavaWeb应用框架,并简单讨论一下它们的优缺点。(备注:排名不分先后)
第一,大名鼎鼎的SpringMVC框架。SpringMVC框架堪称是一个教科书式的MVC(模型Model、视图View和控制器Controller)框架,严格组照MVC模式要求进行分层设计。经过多年的发展,SpringMVC已经发展成了一个Web应用程序的全能架构。
易用性方面,SpringMVC为Web应用程序的开发和配置提供了有用的工具箱。扩展性方面,SpringMVC也以插件多而出名,大量优秀插件可供选择,如SOAP服务、RESTAPI和安全认证。
优点:
强大的模块化功能,代码可读性高;
可以通过POJO(PlainOrdinaryJavaObject,简单的Java对象)对测试数据进行简单的注入;
可以灵活使用DI(DependencyInjection,依赖注入,或者叫控制反转);
不同模块间是低耦合的(上面四点优点归根结底还是耦合度低)。
缺点:
对于新手来说,实现的难度比较大;
学习曲线比较陡峭,即入门比较难。
第二,JSF。它可以说是所有Java框架中的与Java关系最近的,因为它和Java都是Oracle的嫡系部队。JSF也许并算不上最好的Java框架,但是由于Oracle的加持,JSF的文档是最全也最容易找到的。
此外,由于JSF已通过JCP格式化为JavaEE的一部分,所以你只要安装了J2EE,就可以无障碍使用JSF了。复杂的功能也能用JSF提供的大量工具和库来实现。借助JSP(JavaServerPages),JSF还可以支持不同的Facelets和XUL技术。
优点:
由于JSF集成在JavaEE中,对于使用IDE的开发人员来说非常方便。
缺点:
入门门槛比较高,如果没有JavaWeb的开发经历很难完整理解JSF。
第三,Struts。Struts是Apache软件基金会(ASF)赞助的一个开源项目,也是基于MVC模式进行设计的,但是不像SpringMVC那么严格遵守MVC模式,经常被视作一种变种。
Struts是通过一系列接口和类来实现某些特定的功能,为Java应用提供了网络框架。与传统的互联网功能不同,它可以创建动态响应。众人拾柴火焰高,在各个开源社区的共同努力下,Struts才有了今天的影响。当然,Struts常常被诟病为“万年漏洞王”,去年国内还因为新漏洞闹的沸沸扬扬,但仍然不能否定其是一个强大易用的框架。
优点:
原生支持I-18-N(即国际化,其来源是英文单词internationalization的首末字符i和n,18为中间的字符数);
便捷的数据有效性验证和身份验证;
支持模块化开发和集成插件。
缺点:
灵活性不足;
安全性有待提高。
第四,HibernateORM也是一个不能被忽略的优秀框架,属于使用GNU通用公共许可证发行的自由开源软件。Hibernate是一套对象关系映射解决方案,能够建立面向对象模型与关系数据模型的映射。Hibernate对JDBC进行了非常轻量级的对象封装,使Java开发人员可以随心所欲的使用对象编程思维来操纵数据库。
优点:
移植性好,只需要修改极少量的代码修改实现与其他数据库通信;
数据库不敏感,通吃MySQL,DB2和Oracle等主流数据库;
优秀的缓存机制(session缓存,二级缓存,查询缓存),对于那些改动不大且经常使用的数据,可以将它们放到缓存中,不必在每次使用时都去查询数据库,缓存机制对提升性能大有裨益;
延迟加载(只有等系统需要使用集合属性时才从数据库装载关联的数据)。
缺点:
一旦断电,所有未存储就会丢失;
重启非常慢。
第五,GWT(GoogleWebToolki)是一个前端使用JavaScript,后端使用Java的AJAX框架,以Apache许可证2.0版本开放源码。GWT通过编译器将Java代码编译成JavaScript,可以让开发人员只使用Java就可以快速开发维护复杂但高性能的JavaScript,借此减轻开发人员负担。
除了一些本地库之外,都可以用集成的GWTAnt将Java源码构建成JavaScript。GWT已经实现了大量代码跨平台复用,包括跨浏览器移植性、国际化、UI抽象化、书签、历史管理、远程程序调用和异步的代码。
优点:
入门容易;
特别适合应用;在想要通过增加客户端负载从而减少服务器端负载,进而提升响应速度的web应用程序;
借助各种各样的JavaScript库,开发人员可以充分利用GWT的能力;
内置IDE能够直接重构Java密文/代码;
由Google负责开发,前景光明。
缺点:
GWT是一个快速迭代的项目,版本太多,可能没法知道所有接口和方法;
编译器执行效率比较慢;
定义结构的时候必须使用专用的方法来执行。
第六,Play框架是一种基于无状态(stateless)、Web友好和轻量级的架构,支持Scala和Java两种语言。它构建在Akka(一个用Scala编写的分布式应用框架)上并利用了Akka顶部设计的完全异步模型,为可高度伸缩的应用程序分配最小和可预测的资源(比如线程数、内存和CPU)。
Play比较友好,开发人员可以通过文本编辑器和浏览器直接进行修改。此外,尽管它是无状态的,但它的规模是可以预见的。可以说,Play是为了因应现代移动和网络应用的需要而诞生的。
优点:
极大地提高了开发人员的生产率;
配置、模板和java代码的更改可以快速完成重载;
Play是在Netty基础上设计的,支持异步I/O;
它是开源的;
由Zenexity公司和Lightbend公司提供商业支持;
Play可以在运行时处理错误。
缺点:
Play2基本上是对Play1的重写,比Python3.X和Python2.X的差距大多了,想想Python就知道了;
它是围绕异步I/O构建的,你可能会得到一个不知名的内部类;
无论是Play框架还是Akka的中文资料少之又少。
第七,Vaadin是一个Apache许可的开源Javaweb应用程序项目,并拥有一个活跃的社区(治疗白癜风的方法北京治白癜风比较好的医院