10种流行的Java框架

2023-11-11

任何框架都是有助于更快更好地开发软件解决方案的工具之一。

框架的基本原理不必重新发明轮子。 框架使开发人员的工作变得更轻松,并帮助他们专注于业务逻辑,而不必担心通用的代码段。

而且由于Java并不是最简单的编程语言之一,因此框架在这里绝对是有用的工具。

在本文中,我收集了一些最流行,最有价值的框架,这些框架可以帮助您进行Java应用程序开发。

10种流行的Java框架

 

1.Spring

这是其他Java框架中的绝对领导者。 掌握Spring是Java开发人员职位最普遍的要求之一。 造成这种情况的原因很多,但主要的原因是普遍性。

Spring是一个功能强大,轻量级且最受欢迎的Java EE框架。 正如开发人员自己所说:Spring使Java变得简单,现代,高效,可响应,可用于云。 它以依赖注入和面向方面的编程功能而闻名。 实际上,它是框架的容器,使您可以执行任何复杂的任务-从使用数据库到测试过程。

开发人员更有可能选择Spring MVC和Spring Boot。 这些框架的最大优点是能够分离其他模块并由于控制反转(IoC)而专注于一个模块。

优点:

· 使用POJO(普通Java对象)可导致更简单,更灵活的代码库;

· 支持模块化(具有许多软件包和类);

· 向后兼容和易于测试;

· 庞大的生态系统(Spring Boot,Spring Cloud)和社区;

· 广泛的文档和多个Spring教程。

缺点:

· 不太容易配置

· 陡峭的学习曲线

为了检查每个框架的流行程度,使用了Google趋势。

以下是最近5年Spring受欢迎程度的统计数据:

10种流行的Java框架

 

Spring受欢迎程度有所下降,但总体情况表明,它正在逐年增长。

如前所述,Spring在Github上拥有非常活跃的社区和37K星。

2.Play

Play是大多数开发人员喜欢的另一个轻量级框架。 它允许您使用Java和Scala构建Web应用程序。 它是为满足现代移动和Web应用程序的需求而设计的。

Play基于无状态,网络友好且轻量级的体系结构。 主要区别特征包括高速,高质量和良好的可伸缩性。 它建立在Akka之上,并提供了以更高级的方式思考的敏捷性-不是与Data元素做什么,而是如何处理事物流。

该框架具有异步API,可让您扩展应用程序而无需引入其他资源。 该框架为各种微服务模式提供了出色的支持。

优点:

· 由于热代码重载而提高了效率;

· Play是可插入的,可配置的,可自定义的,因此很灵活;

· 易于调试:Play可以在开发人员模式下处理运行时错误和编译错误;

· 建立在Netty上,并支持非阻塞I / O;

· 开源,一切都在幕后运作良好;

· 易于上手。

缺点:

· Play2基本上是对Play1的重写;

· 围绕异步I / O构建,这意味着编写"稍后执行"的代码。

10种流行的Java框架

 

Github星星:11.6万。 该框架已被LinkedIn,三星,The Guardian,Verizon等主要公司使用,这证实了其可靠性。

3.Spark

Spark Framework是Java和Kotlin编程语言的一种微框架和特定于领域的语言。 Kotlin也可以在JVM上运行,并且可以与Java 100%互操作。 使用Spark,您可以轻松开发Web应用程序,微服务和REST API。

实际上,您可以在几分钟内启动并运行Spark框架。 默认情况下,它在嵌入框架的Jetty Web服务器上运行。 但是,您也可以将其与其他Java Web服务器一起使用。

优点:

· 专为提高生产力而设计;

· 让您充分利用JVM;

· 易于启动和运行;

· 可扩展,您可以插入任何模板引擎。

缺点:

· 仅适用于创建小型Web应用程序或API后端。

在2016年至2018年之间,Spark的受欢迎程度逐渐提高。现在,对该框架的兴趣有所降低:

10种流行的Java框架

 

Github星星:8,8K。 Spark被Arquillian,Apache,Asana,Playlife等公司使用。

4. JHipster

Jhipster是最新的Java框架之一。 它于2013年发布。Jhipster将Spring Boot,Angular和React集成到一个大型框架中。 它使您可以轻松构建基于Java的现代Web应用程序。

框架中内置了Spring Boot,可让您基于Spring开发应用程序。 除了Angular和React,JHipster还包含Bootstrap。 该框架允许开发人员在两种类型的体系结构之间进行选择:整体式和微服务。 在第一种情况下,前端和后端集成到一个应用程序中,在第二种情况下-它们是分开的。

顺便说一下,诸如Adobe,西门子,博世,HBO和Google等品牌都在使用JHipster。

优点:

· 轻松引导具有许多预配置技术的新项目;

· 遵循后端和前端开发的最佳实践和最新趋势;

· 拥抱Docker和Kubernetes的云原生原则;

· 开箱即用的登录,登录,用户管理和监视功能;

· 项目中仅包含您选择的那些技术。

缺点:

· 要与JHipster一起使用,最好先熟悉一堆技术;

· 从端点返回的REST响应并不总是符合业务需求;

· 并非同一级别上可用的所有选项。

根据Google的说法,JHipster的流行高峰是在2018年,并且开始缓慢下降:

10种流行的Java框架

 

Github明星离Play比赛很近:16.2万。 使用JHipster的公司:Adobe,CGI,BOSCH,HBO,Siemens等。

5.Blade

Blade是一个轻量级的Java 8+ MVC框架。 当我们谈论Blade的轻巧性时,是指其源代码的大小,该大小不超过500KB。

要使用Blade,您需要创建一个常规的Maven项目。 Blade提供了Java 9具有的模块化支持。 它还支持许多Java Web组件。

优点:

· 轻巧;

· 模块化:可以选择要使用的组件;

· 支持插件扩展和Web jar资源;

· 嵌入式码头服务器和模板引擎支持;

· RESTful样式路由;

· 支持JDK 1.6及更高版本。

缺点:

· 仅有助于创建小型MVC应用程序;

· 主站点上的文档为中文(但确实有英文文档)。

Google的总体统计数据表明Blade的受欢迎程度正在逐步提高:

10种流行的Java框架

 

Github星星:5,3K。

6.Hibernate

在谈论最佳的Java Web框架时,不能忽视Hibernate。

Hibernate是一个ORM(对象/关系映射)框架。 它允许您不使用SQL而是使用Java将查询写到数据库服务器,这通常会改变数据库的常规外观。

尽管Hibernate并不是一个成熟的框架,但它使您可以轻松地转换各种数据库的信息。 无论应用程序大小和用户数量如何,此功能还可以简化扩展。 通常,此框架可以描述为快速,强大,易于扩展和可定制的。

它是在GNU Lesser General的公共2.1许可下分发的免费软件。

优点:

· Hibernate使您可以通过在代码中进行微小的更改来与任何数据库进行通信。

· MySQL,Db2或Oracle,Hibernate与数据库无关;

· 缓存工具以查询相同的错误目录;

· N + 1或缓慢的加载支持;

· 数据丢失风险低,并且需要的功率更少。

缺点:

· 如果电源关闭,您可能会丢失所有数据。

· 重新启动可能非常慢。

查看下面的图表,我们发现在这5年中,Hibernate的普及率一直在下降:

10种流行的Java框架

 

GitHub星级:4,3K。

7. MyBatis

MyBatis是用于Java编程的映射框架。 它简化了将Java应用程序与SQL数据库链接的过程:它充当它们之间的中间件。

通常,您将需要Java数据库连接API才能将应用程序连接到关系数据库。 MyBatis简化了过程。 它使开发人员仅使用几行代码即可执行基本的SQL操作。

MyBatis可以与Hibernate框架进行比较。 它们都代表了应用程序和数据库之间的一种桥梁。 唯一的区别是MyBatis不会将Java对象映射到关系数据库。

优点:

· 简便快捷的发展;

· XML标记,支持动态SQL语句编写;

· 非常适合编写纯SQL。

缺点:

· SQL可能绑定到特定的数据库供应商。

· 数据库可移植性差。

根据Google的说法,对该框架的兴趣正逐渐增加:

10种流行的Java框架

 

Github星级:13.6K。

8.Struts

Struts是用于创建企业级Java Web应用程序的开源MVC(模型-视图-控制器)框架。 最初的Struts框架(Struts 1.x)在2007年与WebWork框架合并时进行了重建。 Struts 1.x和Struts 2.x不可互换,因为它们之间存在重要区别。 您可以从Struts的Releases页面下载。

该框架的主要优点是其可移植插件,即JAR软件包。 在这种情况下,Hibernate和Spring插件可分别用于对象关系映射和依赖项注入。 通过成功组织Java,JSP和Action类,该框架还有助于减少总体开发时间。

优点:

· 使用简单,基于MVC设计模式;

· 与REST,JSON和AJAX配合使用;

· 通过插件与其他Java技术集成;

· 支持主题和模板;

· 使用基于POJO的简单操作。

缺点:

· 难以浏览的文档;

· 不适合较小的应用程序。

谷歌显示Struts的知名度在2016-2018年达到顶峰,现在开始缓慢下降:

10种流行的Java框架

 

Github评分不高:1k星。 Synopsys,ExpertIO,Nsys Design Systems和其他公司使用Struts。

9.Vaadin

Vaadin是一个开放源代码客户端服务器框架,可让您使用预先设计的UI组件创建Web应用程序。 它是专门针对业务应用程序而构建的,重点是可访问,美观且直观的用户界面。

Vaadin允许您使用纯Java编写UI,而不会陷入JS,HTML和CSS的困境。 此外,您可以使用HTML或视觉设计器创建布局。 Vaadin可直接从Java虚拟机提供对DOM的访问。 此外,它还带有可以通过样式API自定义的现成主题。

在Vaadin 8之前,客户端是基于GWT的。 Vaadin 10是该框架的重大改进:完全重写了客户端,删除了GWT,并且Vaadin切换到Web组件标准和客户端上的Google Polymer。 新的Vaadin组件是一组Web组件,可以与其他前端JavaScript技术(例如React和Vue甚至纯JavaScript)结合使用。

优点:

· 高开发人员生产力和快速开发;

· 建立在Web组件标准上;

· 与任何常规Web技术相比,提供了许多组件,布局和不同的侦听器;

· 自动化客户端-服务器通信和路由;

· 拥有良好的文档资料和活跃的社区。

缺点:

· 与其他可用技术相比,可伸缩性较差;

· 大型应用程序的初始加载可能很慢。

至于受欢迎程度,它正在缓慢下降:

10种流行的Java框架

 

Github评分:1,6K星。 Vaadin由Docucom,AXPM,CGI,HPD LendScape等使用。

10. JavaServer Faces(JSF)

JSF是一种JCP标准技术,用于在Java EE平台上创作基于组件的用户界面。 该框架可能不是最好的框架,但是最大的好处是Oracle支持,许多其他工具,出色的文档以及友好的社区。

JSF可用于创建企业应用程序,本机程序和Web开发。 开发人员可以通过在页面中组装可重用的UI组件,将这些组件连接到应用程序数据源,并将客户端生成的事件连接到服务器端事件处理程序,来构建Web应用程序。

优点:

· JSF是Java EE的重要组成部分,对于使用IDE软件的开发人员来说非常方便。

缺点:

· 要与JavaServer Faces一起使用,最好具有丰富的Java知识,一般地了解网络技术,并在没有任何框架的情况下具有在网络上工作的经验。

根据下图,JSF逐渐失去了知名度:

10种流行的Java框架

 

如前所述,JSF并不是最好的技术,但对IDE软件却很有用。

结论

Java框架被认为是当今对开发人员最重要的支持,因此仍然存在。 我试图列出其中最有前途和有用的。 最主要的是为特定项目选择最合适的框架。

如果您要添加任何内容,我们很乐意在下面的评论中阅读。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10种流行的Java框架 的相关文章

  • BigDecimal精度丢失,给前端返回String类型,ToStringSerializer。

    bigDecimal长度太长 返回给前端 精度会丢失 即后几位都会变成0 解决办法 给前端返回字符串类型 加注解 JsonSerialize using ToStringSerializer class JsonSerialize usin
  • 蓝桥杯历届-带分数

    蓝桥杯历届 带分数 标题 带分数 100 可以表示为带分数的形式 100 3 69258 714 还可以表示为 100 82 3546 197 注意特征 带分数中 数字1 9分别出现且只出现一次 不包含0 类似这样的带分数 100 有 11
  • 使用Chrome调试JavaScript的断点设置和调试技巧

    使用Chrome调试JavaScript的断点设置和调试技巧 投稿 hebedich 字体 增加 减小 类型 转载 时间 2014 12 16 这篇文章主要介绍了使用Chrome调试JavaScript的断点设置和调试技巧 需要的朋友可以参
  • centos7 开机启动流程

    开机启动流程 开机启动流程的意义 1 掌握让某个软件开机自动运行 2 开机不能正常启动 是什么原因 或者哪个环节出现了问题 3 防止黑客植入木马 去查询黑客会把木马放到哪些地方 POST 上电自检 gt 加载BIOS Basic Input
  • 处理点云数据 点云与生成前视图

    创建点云数据中的前视图 前视图投影 为了将激光雷达传感器的前视图平面化为二维图像 必须将三维空间中的点投影到可以展开的圆柱形表面上 以将其平面化 下面公式见论文Vehicle Detection from 3D Lidar Using Fu
  • 快捷指令_快捷指令怎么用?玩转快捷指令(捷径)全攻略 看完你就是老司机!...

    快捷指令大全下载 快捷指令 捷径 下载 https m zmtc com jiejing 下载安装快捷指令 请复制以上网址 在iOS设备自带的 Safari 浏览器中打开进行下载与安装即可 快捷指令果粉朋友一定不会陌生 不过一直以来 我们主
  • Spring框架概述 --- 常用注解

    Spring框架概述 常用注解 装配注解 SpringMVC注解 Spring配置注解 装配注解 Spring 提供了以下多个注解 这些注解可以直接标注在 Java 类上 将它们定义成 Spring Bean Component 该注解用于
  • tomcat端口被占用解决办法

    tomcat启动时出现Address already in use JVM Bind 的原因是因为端口被占用 有可能是因为多次启动tomcat或者启动了多个tomcat 或者是其他应用程序或者服务占用了 错误日志如下 严重 Standard
  • C++学习之用数组实现顺序表

    开始学习数据结构 路还长 加油 用C 的template实现顺序表SequenceList 第一次上传完整代码 比较菜 SequenceList h ifndef SEQ LIST H define SEQ LIST H include
  • 【100%通过率 】【华为OD机试 c++/java/python】最小调整顺序次数【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个队列 但是这个队列比较特殊 可以从头部添加数据 也可以从尾部添加数据 但是只能从头部删除数据 输入一个数字n 会依次添加数字1 n 也就
  • JavaScript中sort方法排序不正确解决办法

    假如你想对一个数组排序 在JS中你会想到sort函数 例如 var arr 1 100 20 200 40 50 120 10 arr sort console log arr 控制台中可以看到结果是 1 10 100 120 20 200
  • 气压计MS5611编程操作流程

    文章更新版本 时间 备注 修订人 V0 1 发布于 2019 09 21 11 03 46 初始版本 libo 文章目录 一 开发笔记 二 初始化与工作流程 1 从PROM读取出厂校准值 2 启动温度AD转换 读取AD值 3 启动气压AD转
  • TaskCompletionSource

    概括 TaskCompletionSource
  • 极速加密文件夹: 一个2秒加密文件夹的Windows文件夹加密软件

    大部分朋友的电脑上 经常会有一些重要文件 隐私照片和视频不想让别人轻易可以访问或者打开 尤其你的电脑可能会被别人偶尔使用的时候 加密保护就尤其重要了 不少Windows用户通常使用ZIP等压缩工具 将文件夹压缩成压缩包并加上密码进行文件保护
  • 图像语义分割综述(semantic segmentation) 上篇

    本文对图像语义分割近年来的主要发展做一个综述性的介绍 翻译了以下两篇博文 并进行了整合 https www jeremyjordan me semantic segmentation http blog qure ai notes sema
  • Linux 最全的添加开机启动方法

    添加开启启动的方式一般有如下几种 第一种 把开机命令 写入到os的启动文件之中 伴随着启动文件的读取 顺便帮你把要启动的任务 一起启动了 第二种 把启动任务 放到os的启动目录下 os启动过程之中 会执行所有放在此目录下的任务 第三种 os
  • 利用Arthas+APM监控进行Java性能深度定位

    大家可能都用过APM监控 包括开源的Skywalking 商用的卓豪 ZOHO ManageEngine APM应用性能监控 以及云监控产品如听云 Server监控 这些APM监控产品大大方便了我们实时监控应用性能 并实现性能深度透视监控
  • JavaScript 日期对象Date(声明/Date对象的方法/返回距离1970/01/01毫秒数)

    Date 1 日期对象声明 var date1 new Date 设定制定时间 兼容最强 var date2 new Date 2016 01 27 12 00 00 不常用 var date3 new Date Wed Jan 27 20
  • .NET当中的另一个V8 JS引擎 Wrapper

    前言 之前写过一篇文章 是关于在 NET中 使用v8sharp作为v8Engine的Wraper 从而在 NET中与Javascript互操作 不过v8Sharp有几个很大的问题 第一 在参数中传递中文字符串会产生乱码 第二 无法在 NET
  • 篡改检查是什么?.NET混淆器Dotfuscator如何实现应用程序的保护?

    Dotfuscator是一个 NET的Obfuscator 它提供企业级的应用程序保护 大大降低了盗版 知识产权盗窃和篡改的风险 Dotfuscator的分层混淆 加密 水印 自动失效 防调试 防篡改 报警和防御技术 为世界各地成千上万的应

随机推荐

  • spring-security-oauth2 登录或者认证成功后 做一些操作, 比如登录日志。

    通过跟踪代码 发现放当我们访问 oauth token 这个请求的方法在TokenEndpoint 获取access token 的时候 身份认证成功后会在 ProviderManager的authenticate 方法 通过eventPu
  • Java学习(100)Java多线程——实现Callable接口创建线程

    Java多线程 实现Callable接口创建线程 步骤 案例 实现Callable接口创建线程 创建多线程还会有其他方式 我们再介绍一种 1 继承Thread类 重写run 方法 run 方法代表线程要执行的任务 2 实现Runnable接
  • Python随笔1(持续更新中)

    一 Python对于缩进有着极其严格的要求 Python的缩进规则等效于C语言中的 符号 Python中的tab或者空格的多少代表语句的等级 或者代表其中谁的子语句 例如以下Python与C语言的for循环语句 Python语言的for循环
  • 【docker】docker-compose安装带ui页面的kafka集群

    docker compose 安装带kafka ui 的kafka集群 在日常的工作当中 kafka集群作为常用的中间件 其搭建过程略显繁琐 需要配置的文件颇多 为了方便各位初学者快速体验kafka的魅力 本文采取一键式安装kafka 3
  • 华为机试(字符串消消乐---Java实现)

    package test import java util Scanner 消消乐 字符串 描述 给定一个只包含大小写字母的字符串 大小写敏感 若相邻两个元素相等则消除 直到最后字符串消除不了了 输出消消乐后字符串的长度 若遇到非大小写字母
  • layui实现左侧菜单点击右侧内容区显示

    layui这个前端框架对后端人员来说提供了极大的方便 很大一部分同学在刚接触到这个框架就迫不及待的要动手实践了 刚好最近需要开发一个后台管理项目 就拿layui来进行学习和实践 还没有接触到的同学可以先通读一遍文档 这样在遇到问题的时候才能
  • 用C语言打造 时间戳转换成北京时间格式

    本函数适用于SMT32F10x GD32F10x的RTC时间戳转换成有效年月日和时间 uint8 t const Year a 12 31 28 31 30 31 30 31 31 30 31 30 31 uint8 t const Yea
  • 银联支付开发、使用的一些总结

    现在的网页支付 PC和微信H5 和app支付 用的比较多的是微信支付 银联支付和支付宝支付 其余的是这些支付的第三方支付 我目前了解的只有这么多 我目前做了银联支付和微信支付 这里说一些银联支付的开发的一些介绍吧 根据我们公司的应用经验 银
  • uevent 事件上报demo

    1 驱动上报 diff git a kernel msm 3 18 drivers input touchscreen ft8006u focaltech core c b kernel msm 3 18 drivers input tou
  • HTML5根据浏览器获取经度和纬度(百度API)

    网页获取用户位置信息的办法1 调用百度地图的地图标注功能 通过百度地图API获取对应的经度和纬度进而获取地区信息 优点是比较准确 缺点是需要用户自己选择位置2 通过H5 geolocation属性获取经度和纬度 优点是用户只需要点击允许获取
  • 设计模式的七大原则

    七大原则 开闭原则 Open Close Principle OCP 一个软件实体如类 模块和函数应该对扩展开放 对修改关闭 目的就是保证程序的扩展性好 易于维护和升级 开闭原则被称为面向对象设计的基石 实际上 其他原则都可以看作是实现开闭
  • ICML 2012 推荐系统部分文章小结及下载

    ICML2012 paper下载地址 感谢丹柯提供 http icml cc 2012 papers 个人比较感兴趣的 跟推荐系统相关的几篇文章 1 在有query的场景下 向用户推荐item Latent Collaborative Re
  • 解决视频在钉钉播放出现转码或闪烁

    问题 用录屏软件 如傲软录屏 录制的视频通过钉钉发送给对方后 接收方直接点开视频播放时会提示转码或出现画面闪烁 原因 钉钉要求的视频的像素格式为yuv420p 而录屏软件的像素格式不符 例如 傲软录屏使用h264编码时视频的像素格式是yuv
  • 什么是spark机器学习

    Spark机器学习 Spark ML 是Apache Spark的一个模块 用于进行大规模数据处理和机器学习任务 它提供了一组丰富的工具和算法 用于构建和训练机器学习模型 以及进行数据预处理和特征工程 Spark ML的设计目标是高效处理大
  • Java把V3音频文件转化为wav文件的算法的代码

    将写内容过程经常用到的内容段做个备份 如下内容内容是关于Java把V3音频文件转化为wav文件的算法的内容 import java io BufferedInputStream import java io BufferedOutputSt
  • C语言解决猴子分桃问题的代码

    研发闲暇时间 把做工程过程中经常用的代码片段做个记录 如下的资料是关于C语言解决猴子分桃问题的代码 希望能对大家有较大帮助 main int i m j k count for i 4 i lt 10000 i 4 count 0 m i
  • Q_UNUSED ( name ) 的用法

    一 用法 Q UNUSED 没有实质性的作用 用来避免编译器警告 for example int transition getSTL int type Q UNUSED type return 123 二 相关问题处理 如果编译中出现以下警
  • MySQL之窗口函数

    目录 1 窗口函数基本概念 2 窗口函数和普通聚合函数的区别 3 常见的窗口函数 4 窗口函数的使用 5 示例代码 聚合函数也可以作为窗口函数 聚合函数VS窗口函数 常见窗口函数的使用 编辑给窗口指定别名 怎么样得到各部门工资排名前N名员工
  • C++的noexcept

    在C 中 noexcept是一个异常说明符 用于告知编译器一个函数是否会抛出异常 使用noexcept可以提供编译器有关函数异常处理的信息 从而优化代码 noexcept有两种形式 noexcept和noexcept expression
  • 10种流行的Java框架

    任何框架都是有助于更快更好地开发软件解决方案的工具之一 框架的基本原理不必重新发明轮子 框架使开发人员的工作变得更轻松 并帮助他们专注于业务逻辑 而不必担心通用的代码段 而且由于Java并不是最简单的编程语言之一 因此框架在这里绝对是有用的