开发大型项目必备 98%公司都在用的十佳 Java Web 应用框架

众所周知,工欲善其事,必先利其器。选择一个好的 Web 应用框架就像一把称手的兵器,可以助大家披荆斩棘。

今天就为大家整理了十佳 Java Web 应用框架,并简单讨论一下它们的优缺点。

第一,大名鼎鼎的Spring MVC框架。Spring MVC 框架堪称是一个教科书式的 MVC (模型Model、视图View和控制器Controller)框架,严格组照 MVC 模式要求进行分层设计。经过多年的发展,Spring MVC 已经发展成了一个 Web 应用程序的全能架构。

易用性方面, Spring MVC 为 Web 应用程序的开发和配置提供了有用的工具箱。扩展性方面, Spring MVC 也以插件多而出名,大量优秀插件可供选择,如SOAP 服务、REST API 和安全认证。

优点:

  1. 强大的模块化功能,代码可读性高;
  2. 可以通过 POJO (Plain Ordinary Java Object,简单的Java对象)对测试数据进行简单的注入;
  3. 可以灵活使用DI(DependencyInjection,依赖注入,或者叫控制反转);
  4. 不同模块间是低耦合的(上面四点优点归根结底还是耦合度低)。

缺点:

  1. 对于新手来说,实现的难度比较大;
  2. 学习曲线比较陡峭,即入门比较难。

第二,JSF。它可以说是所有 Java 框架中的与 Java 关系最近的,因为它和Java 都是 Oracle 的嫡系部队。JSF 也许并算不上最好的 Java 框架,但是由于 Oracle 的加持,JSF 的文档是最全也最容易找到的。

此外,由于 JSF 已通过 JCP 格式化为 JavaEE 的一部分,所以你只要安装了 J2EE,就可以无障碍使用 JSF 了。复杂的功能也能用JSF 提供的大量工具和库来实现。借助 JSP(Java Server Pages),JSF 还可以支持不同的 Facelets 和 XUL 技术。

优点:

  1. 由于 JSF 集成在 JavaEE 中,对于使用 IDE 的开发人员来说非常方便。

缺点:

  1. 入门门槛比较高,如果没有 Java Web 的开发经历很难完整理解 JSF。

第三,Struts。Struts 是 Apache 软件基金会(ASF)赞助的一个开源项目,也是基于 MVC 模式进行设计的,但是不像 Spring MVC 那么严格遵守 MVC 模式,经常被视作一种变种。

Struts是通过一系列接口和类来实现某些特定的功能,为 Java 应用提供了网络框架。与传统的互联网功能不同,它可以创建动态响应。众人拾柴火焰高,在各个开源社区的共同努力下,Struts 才有了今天的影响。当然,Struts 常常被诟病为“万年漏洞王”,去年国内还因为新漏洞闹的沸沸扬扬,但仍然不能否定其是一个强大易用的框架。

优点:

  1. 原生支持I-18-N(即国际化,其来源是英文单词 internationalization 的首末字符i和n,18为中间的字符数);
  2. 便捷的数据有效性验证和身份验证;
  3. 支持模块化开发和集成插件。

缺点:

  1. 灵活性不足;
  2. 安全性有待提高。

第四,Hibernate ORM 也是一个不能被忽略的优秀框架, 属于使用 GNU 通用公共许可证发行的自由开源软件。Hibernate 是一套对象关系映射解决方案,能够建立面向对象模型与关系数据模型的映射。Hibernate 对 JDBC 进行了非常轻量级的对象封装,使 Java 开发人员可以随心所欲的使用对象编程思维来操纵数据库。

优点:

  1. 移植性好,只需要修改极少量的代码修改实现与其他数据库通信;
  2. 数据库不敏感,通吃MySQL, DB2 和 Oracle等主流数据库;
  3. 优秀的缓存机制(session缓存,二级缓存,查询缓存),对于那些改动不大且经常使用的数据,可以将它们放到缓存中,不必在每次使用时都去查询数据库,缓存机制对提升性能大有裨益;
  4. 延迟加载(只有等系统需要使用集合属性时才从数据库装载关联的数据)。

缺点:

  1. 一旦断电,所有未存储就会丢失;
  2. 重启非常慢。

第五,GWT(Google Web Toolki) 是一个前端使用 JavaScript,后端使用 Java 的 AJAX 框架,以 Apache 许可证2.0版本开放源码。GWT 通过编译器将 Java 代码编译成JavaScript,可以让开发人员只使用 Java 就可以快速开发维护复杂但高性能的 JavaScript ,借此减轻开发人员负担。

除了一些本地库之外,都可以用集成的 GWT Ant 将 Java 源码构建成 JavaScript。 GWT已经实现了大量代码跨平台复用,包括跨浏览器移植性、国际化、UI抽象化、书签、历史管理、远程程序调用和异步的代码。

优点:

  1. 入门容易;
  2. 特别适合应用;在想要通过增加客户端负载从而减少服务器端负载,进而提升响应速度的web应用程序;
  3. 借助各种各样的JavaScript库,开发人员可以充分利用GWT的能力;
  4. 内置IDE能够直接重构Java密文/代码;
  5. 由Google负责开发,前景光明。

缺点:

  1. GWT是一个快速迭代的项目,版本太多,可能没法知道所有接口和方法;
  2. 编译器执行效率比较慢;
  3. 定义结构的时候必须使用专用的方法来执行。

第六,Play 框架是一种基于无状态(stateless)、Web 友好和轻量级的架构,支持 Scala 和Java两种语言。它构建在 Akka (一个用 Scala 编写的分布式应用框架)上并利用了 Akka 顶部设计的完全异步模型,为可高度伸缩的应用程序分配最小和可预测的资源(比如线程数、内存和CPU)。

Play比较友好,开发人员可以通过文本编辑器和浏览器直接进行修改。此外,尽管它是无状态的,但它的规模是可以预见的。可以说,Play 是为了因应现代移动和网络应用的需要而诞生的。

优点:

  1. 极大地提高了开发人员的生产率;
  2. 配置、模板和java代码的更改可以快速完成重载;
  3. Play是在Netty基础上设计的,支持异步I/O;
  4. 它是开源的;
  5. 由Zenexity公司和Lightbend公司提供商业支持;
  6. Play可以在运行时处理错误。

缺点:

  1. Play 2基本上是对Play 1的重写,比Python3.X和Python2.X的差距大多了,想想Python就知道了;
  2. 它是围绕异步I/O构建的,你可能会得到一个不知名的内部类;
  3. 无论是Play框架还是Akka的中文资料少之又少。

第七,Vaadin 是一个 Apache 许可的开源 Java web 应用程序项目,并拥有一个活跃的社区(https://vaadin.com/forum)。用 Vaadin 开发的浏览器应用界面可以达到和桌面应用类似的效果,但和 Flash 、Silverlight 不同的是,Vaddin 应用无需在浏览器上安装任何插件。它支持纯Java开发环境,开发人员无需深入了解 HTML,XML 或是JavaScipt。如果你曾经使用 Java 开发过 Swing,SWT 等应用,可以非常容易开始使用 Vaddin 开发 Web 应用。

优点:

  1. 只需要在服务器端编程;
  2. 支持布局、侦听器和组件类型;
  3. 支持各类插件;
  4. 可以很方便地和Spring框架集成。

缺点:

  1. 不支持多窗口;
  2. 自动创建的JS代码的不够精简。

第八,Grails基于 Groovy 编程语言,是一个坚持己见、提倡用约定的默认设置代替复杂配置的框架。它与 JVM 很好地融合,能够在提供强大功能的同时保持高效,包括异步编程、编译时元编程、运行时和领域专用语言(DSL,专注于某个应用程序领域的计算机语言)。Grails可以透明地、无缝地与 Java、Java EE 容器和 JVM 进行互操作和集成。

优点:

  1. 处理中小型项目的理想工具;
  2. 提供一个快速的开发周期;
  3. 提供丰富的插件;
  4. 文档简单易懂的;
  5. 安装过程很简单,新手也可以在短时间内构建应用程序;
  6. GORM(Grails ObjectRelational Mapping,Grails对象关系映射)的配置简单;
  7. 管理CSS简单;
  8. 动态配置特性,无需重新启动服务器即可更改配置。

缺点:

  1. 依赖JVM运行环境;
  2. 多线程时候有时可能会有问题。

第九,Wicket 又称 Apache Wicket,一看这个名字,又是一个 Apache 基金会旗下的开源框架了。Wicket 是一个基于组件的轻量级的 Java 应用程序框架。Wicket 使用遵循 XHTML 标准的命名空间来支持 HTML 模板。其特点在于对 Html 和 Java代码进行了有效的分离(有利于程序员和美工的合作),基于规则的配置(减少了 XML 等配置文件的使用)。

优点:

  1. 代码是用Java编写的;
  2. 没有XML配置文件;
  3. 没有返回键的问题;
  4. 是一种简单Java对象为中心的编程;
  5. 测试比较容易。

缺点:

  1. 发展前景比较不明确;
  2. 基于事件的设计可能增加代码混乱的几率。

第十,Vert.x框架是一个基于 JVM、轻量级、高性能的应用框架,基于事件驱动和异步,使用极少的核心线程里占用最小限度的硬件资源处理大量的高并发。Vert.x支持多种语言,例如Ceylon、Ruby、Groovy、JavaScript和Java,因此可以根据项目特性和团队技能灵活选择语言。

优点:

  1. 设置容易;
  2. Vert.x容器里强大的内核线程;
  3. 为异步提供简单的方法和对象。

缺点:

  1. 一些硬件可能无法执行;
  2. 支持语言太多,选择一门恰当的语言会让人头疼会。

本文简要介绍了当前 10 个最主流的 Java Web 框架的各自特性和优缺点。希望能对大家未来的学习和工作有所帮助。

来源:SEO

原文地址:https://www.cnblogs.com/1994july/p/12287868.html

时间: 2024-08-25 10:07:00

开发大型项目必备 98%公司都在用的十佳 Java Web 应用框架的相关文章

Vue全家桶+Egg从0开发大型项目(一)搭建项目

前言 因为要开发本科毕设,做一个校友交流平台,正好想记录下整个开发过程,同时也分享给各位.当然那些需求调研的,前期设计的就省略啦. 项目大概是一个全栈的项目,使用的IDE是vscode(期间涉及一些插件.配置推荐),大概的项目技术栈: vue + vue-router + vuex + vue-i18n + element-ui + egg + sequelize 前端就用vue-cli3来搭建,后端就用egg-init来搭建,比较简单,官方文档也比较详细. 项目技术栈 前端: 前端MVVM框架

大型Java Web项目的架构和部署问题

一位ID是jackson1225的网友在javaeye询问了一个大型Web系统的架构和部署选型问题,希望能提高现有的基于Java的Web应用的服务能力.由于架构模式和部署调优一直是Java社区的热门话题,这个问题引发了很多热心网友的讨论,其中一些意见对其它大型Web项目也有很好的指导意义.在讨论之初jackson1225这样描述了当前的应用的架构和部署方案: 目前系统架构如下: web层采用struts+tomcat实现,整个系统采用20多台web服务器,其负载均衡采用硬件F5来实现; 中间层采

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

Java web开发路线--Java学习资料汇总

Java web开发是什么? 先来说说java体系,包含:javaSE.javaEE.javaME,其实目前关注主要是javaEE,但学些javaEE必须先学习javaSE(因为这个是java基础).Java web开发其实是应用javaEE实现web应用的开发,是用Java技术来解决相关web互联网领域的技术总和. web开发主要包括前端开发和后端开发,前端主要是HTML.CSS.JS等相关技术,后端技术主要有JavaEE技术.数据库技术.文件存储技术等.java体系比较庞大,也是很多人比较迷

阿里云服务器部署Java Web项目全过程

最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购买一台服务器了,我选择的是阿里云的ECS,对于新用户有一定的优惠活动.服务器徐购好后可以在管理控制台下看到自己服务器的配置情况.我买的是centos7 1核2G的,详情如下: 本地主机连接服务器 购买了服务器之后,下一步当时是要远程操作服务器,所以需要和远程服务器建立连接.这里有两种方式:一种是使用

Java Web项目中连接Access数据库的配置方法

本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问题,所以今天改了一下又一次的公布了 老师决定期末考试採用access数据库实现增删改查.我觉得如今的我已经没有问题了.可是曾经都是在JSP页面中连接access数据库,不管是下面的那种方式都进行了连接的练习,可是如今我想让我的项目中的訪问access数据库的java代码,封装到DAO中,在DAO中连接数据库,

tomcat部署java web项目遇到的一些小挫折

背景:本人不是Java开发人员,经过四年多的历练,可以说是一枚BI攻城师了吧,最近粗糙的写了一个Portal来集成cognos报表,下面就入正题说一下发布过程中遇到的小问题吧. a:前提:Java web项目已经在MyEclipse里面开发好,发布,利用MyEclipse8.5自带的tomcat运行,通过IE访问项目主页,登录验证一切OK b:把Java web项目导出为.war格式的文件放到tomcat/webapp下面 或者 在MyEclipse8.5中添加自己安装的tomcat6.0然后运

经验之谈:循序渐进学习Java Web开发的五个阶段

Java web开发是Java开发中的主要方向,那什么是Java web开发呢,Java web开发就是基于J2SE的web应用程序开发,就是通过Java来解决互联网web应用的问题,互联网Web包含两个部分:web服务器和web客户端,Java语言在web服务器端的应用十分丰富,比如常用的Servlet.JSP等,总之,Java编程技术的到来给Web互联网的发展注入了一针强心剂,既然Java Web开发功能这么强大,那我们应如何循序渐进的学习Java Web开发呢?下面亦是美网络小编分为五个阶

Java Web项目与Java项目的区别

一.以下是我对Java Web项目和Java项目这两者的理解以及区别: 1.Java Web项目是基于Java EE类的:而Java项目是基于Java应用程序的. 2.Java Web项目是网页的编码,像jsp,servlet,struts这类的,而java项目是AWT,SWING这类的编码. 3.Java Web项目中的JAVA文件是tomcat服务器来触发的,而java项目是由Main()方法来开始的. 4.Java Web项目需要服务器:而Java项目不需要服务器. 5.在Eclipse中