任何框架都是有助于更快更好地开发软件解决方案的工具之一。
框架的基本原理不必重新发明轮子。 框架使开发人员的工作变得更轻松,并帮助他们专注于业务逻辑,而不必担心通用的代码段。
而且由于Java并不是最简单的编程语言之一,因此框架在这里绝对是有用的工具。
在本文中,我收集了一些流行,最有价值的框架,这些框架可以帮助您进行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受欢迎程度的统计数据:
Spring受欢迎程度有所下降,但总体情况表明,它正在逐年增长。
如前所述,Spring在Github上拥有非常活跃的社区和37K星。
2. Play
Play是大多数开发人员喜欢的另一个轻量级框架。 它允许您使用Java和Scala构建Web应用程序。 它是为满足现代移动和Web应用程序的需求而设计的。
Play基于无状态,网络友好且轻量级的体系结构。 主要区别特征包括高速,高质量和良好的可伸缩性。 它建立在Akka之上,并提供了以更高级的方式思考的敏捷性-不是与Data元素做什么,而是如何处理事物流。
该框架具有异步API,可让您扩展应用程序而无需引入其他资源。 该框架为各种微服务模式提供了出色的支持。
优点:
- 由于热代码重载而提高了效率;
- Play是可插入的,可配置的,可自定义的,因此很灵活;
- 易于调试:Play可以在开发人员模式下处理运行时错误和编译错误;
- 建立在Netty上,并支持非阻塞I / O;
- 开源,一切都在幕后运作良好;
- 易于上手。
缺点:
- Play2基本上是对Play1的重写;
- 围绕异步I / O构建,这意味着编写"稍后执行"的代码。
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的受欢迎程度逐渐提高。现在,对该框架的兴趣有所降低:
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年,并且开始缓慢下降:
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的受欢迎程度正在逐步提高:
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的普及率一直在下降:
GitHub星级:4,3K。
7. MyBatis
MyBatis是用于Java编程的映射框架。 它简化了将Java应用程序与SQL数据库链接的过程:它充当它们之间的中间件。
通常,您将需要Java数据库连接API才能将应用程序连接到关系数据库。 MyBatis简化了过程。 它使开发人员仅使用几行代码即可执行基本的SQL操作。
MyBatis可以与Hibernate框架进行比较。 它们都代表了应用程序和数据库之间的一种桥梁。 唯一的区别是MyBatis不会将Java对象映射到关系数据库。
优点:
- 简便快捷的发展;
- XML标记,支持动态SQL语句编写;
- 非常适合编写纯SQL。
缺点:
- SQL可能绑定到特定的数据库供应商。
- 数据库可移植性差。
根据Google的说法,对该框架的兴趣正逐渐增加:
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年达到顶峰,现在开始缓慢下降:
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技术相比,提供了许多组件,布局和不同的侦听器;
- 自动化客户端-服务器通信和路由;
- 拥有良好的文档资料和活跃的社区。
缺点:
- 与其他可用技术相比,可伸缩性较差;
- 大型应用程序的初始加载可能很慢。
至于受欢迎程度,它正在缓慢下降:
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逐渐失去了知名度:
如前所述,JSF并不是最好的技术,但对IDE软件却很有用。
结论
Java框架被认为是当今对开发人员最重要的支持,因此仍然存在。 我试图列出其中最有前途和有用的。 最主要的是为特定项目选择最合适的框架。