category
进入 2022 年,Java 仍然是世界上第三大最受欢迎的编程语言。它包含一个庞大的生态系统和全球超过 900 万的 Java 开发人员。 Java有很多优点;最重要的是,它是一种独立于平台的语言(一次编写,随处运行),遵循面向对象的编程范式,易于理解、编写和调试。
由于该语言的成熟和流行,您不必从头开始编写 Java 程序。有许多优秀的 Java 框架可以编写在 Java 虚拟机上运行的 Web 和移动应用程序、微服务和 REST API。
在本深入指南中,我们将研究 17 个主要用于 Web 开发的流行 Java 框架。
什么是 Java 框架?
Java 框架是为使构建 Java 应用程序更容易和更快而创建的软件库。它们由预先编写的代码、类、模板、组件和其他结构组成,您可以将它们用作 Java 应用程序的基础。
最好的 Java 框架经过充分测试,并强制使用编码最佳实践。它们让您专注于应用程序的业务逻辑,而不是编写基本功能,例如建立数据库连接或处理异常。
但是,并非所有 Java 框架都具有相同的目的,因此在它们之间进行选择不仅仅是偏好问题。有些允许您创建全栈 Java Web 应用程序,而另一些则专注于前端或后端,还有一些框架用于处理数据库操作等额外任务。在某些情况下,您可能希望同时使用多个框架,因此了解这些 Java 框架如何相互比较和集成非常重要。
前 17 个 Java 框架
我们选择按字母顺序列出我们排名前 17 的 Java 框架,而不是按“质量”排名,因为它们的结构和用途不同。
我们包含了允许您创建视图层的 Java 前端框架、允许您与数据库交互的 ORM 和持久性框架、有助于创建微服务和 REST API 的 Java 后端框架、构建在其他 Java 框架之上的 Java 框架,和更多。
本文重点介绍 Web 开发,因此需要注意的是,这并不是一个详尽的列表,还有其他类型的 Java 框架,例如日志框架。
让我们从 B for Blade 开始。
Blade:占用空间最小的简单应用程序框架
Blade:占用空间最小的简单应用程序框架
Blade 是一个轻量级的高性能 Java 框架,它允许您以高效的方式构建快速的 Web 应用程序。创建者的目标是让用户在一天内了解整个框架。为了实现这一点,Blade 专注于简单和优雅。
Blade 框架遵循 MVC(模型-视图-控制器)软件设计模式。它具有易于理解的设计,不依赖任何第三方库或引入太多层。 Blade基于Java 8,框架内置Netty Web服务器和模板引擎。它占地面积小;源代码总共不到 500kb。
使用 Blade,您可以访问 RESTful 样式的路由接口,并且可以将您的应用程序部署为基本的 Maven 或 Gradle 项目。 Blade 也有内置的安全功能;例如,它带有 CSRF(Cross-Site Request Forgery)和 XSS(Cross-Site Scripting)防御。它是一个多功能框架,支持插件扩展和 webjar 资源。
优点: - 无依赖关系 - 易于部署 - 小型轻量级框架
- 嵌入式网络服务器 - 模板引擎支持 - 平坦的学习曲线
缺点: - 教程和示例项目不多 - 现在开发活动不太活跃
Dropwizard:生产就绪的 RESTful Web 服务
Dropwizard:生产就绪的 RESTful Web 服务
Dropwizard 是一个高性能但简单的 Java 框架,用于快速开发 RESTful Web 服务。它特别适合创建 Java 微服务。
Dropwizard 框架汇集了几个完善的 Java 库,为您提供快速且无干扰的开发平台。它带有嵌入式 Jetty 服务器、Google Guava、Logback、Hibernate Validator、Joda Time 和许多其他流行的 Java 库。 Dropwizard 还包含可用于构建 RESTful Web 服务的 Jersey 和用于处理 JSON 的 Jackson。您可以将 Dropwizard 视为一个单独的生态系统,其中包含捆绑到单个包中的所有上述依赖项。
如果您选择 Dropwizard,则不必在辅助功能上花费太多时间,例如必须为配置、指标或日志记录编写代码。相反,您可以专注于应用程序的主要业务逻辑并实现最大生产力。这就是为什么 Dropwizard 通常被称为操作友好的 Java 框架的原因。
优点: - 易于设置和开始 - 轻量级 - 由成熟的 Java 库组成 - 良好的约定 - 可扩展 - 大量文档
缺点: - 你可能会觉得它有点太自以为是了
Grails:基于 Groovy 的 Web 应用程序框架
Grails 是一个使用 Groovy 编程语言的 Web 应用程序框架。 Groovy 是一种面向对象的 Java 平台语言,旨在提高开发人员的工作效率。它的语法与 Java 兼容,并编译为 JVM(Java 虚拟机)字节码。
尽管您必须在 Groovy 中编写代码,但 Grails 可以很好地与其他 Java 相关技术(例如 Java Development Kit、Java EE 容器、Hibernate 或 Spring)配合使用。在底层,Grails 构建在 Spring Boot 之上,以利用其生产力友好的特性,例如 Spring 的依赖注入。 Grails 最好的一点是,您可以用更少的代码实现相同的结果——这要归功于 Groovy 语言的强大功能。
Grails 遵循一些现代软件开发原则,例如约定优于配置、固执己见的 API 以强制执行最佳实践以及合理的默认值。它也对开发人员非常友好,因为它带有详细且易于阅读的文档、分步指南和广泛的插件库。您还可以构建自己的插件并利用 Grails 对 Eclipse、Sublime、Textmate、IntelliJ IDEA 和其他平台的 IDE 支持。
优点: - 建立在 Spring Boot 之上(见下文,作为 Spring 框架的一部分) - 与 Java 库和工具的无缝集成 - 约定优于配置(具有合理的默认值) - 异步功能 - 用于 React 和 Angular 的应用程序配置文件 - 高质量文档和大量的学习资料
缺点: - 你需要了解 Groovy 才能编写 Grails 应用程序
GWT:Google Web Toolkit:部署为 JavaScript 的客户端 Java 应用程序
GWT 或 Google Web Toolkit 是由 Google 创建的 Web 框架。您可以使用它为 Web 快速构建 Java 应用程序,因为它允许您编写客户端 Java 代码并将其部署为浏览器的 JavaScript。
GWT(读作“gwit”)是一个稳定且维护良好的 Java 框架。没有什么比它出现在 AdWords、AdSense、Blogger 和 Google Wallet 等多种 Google 产品中更能说明这一点了。 Google Web Toolkit 还有一个信息量很大的网站,其中包含教程、开发人员指南和入门应用程序。
使用 GWT,您无需成为 JavaScript 优化或响应式设计等前端技术专家即可构建基于浏览器的应用程序。 GWT 提供了许多高级功能,例如国际化、跨浏览器可移植性、UI 抽象、书签和历史管理。
优点: - 处理浏览器兼容性(包括移动浏览器) - 集成调试功能 - 代码优化功能 - 允许您对前端代码进行单元测试 - 平坦的学习曲线(适用于 Java 开发人员)
缺点: - 无法控制您的 JavaScript 或前端代码 - 生成非语义 HTML 代码
Hibernate:用于更好的数据库通信的对象关系映射框架
Hibernate:用于更好的数据库通信的对象关系映射框架
Hibernate 是一个稳定的对象-关系映射框架,它可以在 Java 编程语言和关系数据库管理系统 (RDBMS) 之间实现更好的通信。
当您使用 Java 等面向对象 (OO) 语言时,您会遇到一个称为 Object-Relational Impedance Mismatch(有时也称为 Paradigm Mismatch)的问题。 OO 语言和 RDBMS 处理数据的方式不同,这可能导致不匹配问题。 OO 语言将数据构造为对象的层次结构,而关系数据库则以表格格式表示数据。这些不匹配问题之一是当对象模型的类多于关系数据库中可用表的数量时。
Hibernate 为您提供了一个克服 Java 不匹配问题的框架。它旨在实现持久性,这意味着应用程序创建/使用的数据应该比生成它的过程更长。虽然 Hibernate 是为关系数据库构建的,但其较新版本也提供对 NoSQL 数据存储的支持。它还拥有出色的开发人员工具,例如映射编辑器、Hibernate 控制台和数据库逆向工程工具。
优点: - 面向对象的接口(不需要 SQL 接口) - 使任何类或数据结构都可以持久化 - 支持多种获取策略 - 自动版本控制和时间戳 - 可扩展性良好 - 高度可扩展和可配置
缺点: - 复杂查询的性能较低 - 学习曲线陡峭
Jakarta Server Faces (JSF):基于组件的 UI 框架
Jakarta Server Faces (JSF),以前称为 JavaServer Faces,由 Oracle 开发,作为为基于 Java 的 Web 应用程序构建用户界面的规范。它也是 Java Community Process (JCP) 倡议的官方标准。
Jakarta Server Faces 的第一个版本于 2004 年发布,因此它是一个稳定的框架。它遵循 MVC 软件设计模式,并具有基于组件的架构。使用 Jakarta Server Faces,您可以构建由可重用组件组成的用户界面,管理组件的状态,将它们连接到数据源,并将用户生成的事件绑定到服务器端的事件处理程序。
JSF 的默认模板系统是为项目显式创建的 Facelets。使用 Facelets,您可以使用 XML 而不是 Java 来处理视图。但是,您也可以使用 XUL(XML 用户界面语言)和纯 Java 等其他技术创建视图。使用 Jakarta Server Faces 创建的 Web 应用程序可以跨不同的 Jakarta (Java) EE 应用程序服务器移植。
优点: - 可靠性(由 Oracle 开发和维护的代码) - 建立在 Servlet API 之上 - 跨浏览器兼容性 - 自动状态管理 - 支持优雅降级和多种输出格式 - 相对较低的学习曲线(适用于 Java 开发人员)
缺点: - 难以调试 - 教程或学习材料不多
JHipster:使用 Spring Boot 和 Angular/React 的 Web 应用程序和微服务
JHipster 将 Spring Boot 和流行的前端框架(Vue、Angular、React 等)结合在一个方便的 Web 应用程序生成器中。它被 Adobe、西门子、博世、HBO 和谷歌等领先品牌使用。使用 JHipster,您可以快速创建基于 Java 的现代 Web 应用程序和微服务。
Spring Boot 允许您创建以最少配置工作的生产级基于 Spring 的应用程序(请参阅下面有关 Spring 框架的更多信息)。 JHipster 将其与客户端的 Angular、React、Vue 和 Bootstrap 相结合,为您提供全栈架构。如果您想了解 JHipster 应用程序在现实生活中的样子,请查看由 JHipster 团队创建的 Angular、React 和 Vue 示例应用程序。
JHipster 允许您在两种架构风格之间进行选择。您可以选择将前端和后端组合成一个应用程序的单体架构。或者,您可以使用分离前端和后端的微服务架构。 JHipster 还集成了多种工具,并为客户端和服务器端编码、捆绑和不同的 DevOps 任务提供了大量选项。
优点: - 显着加快开发速度 - 支持许多前端框架和技术 - 支持移动应用程序开发(Ionic 和 React Native) - 构建在 Spring Boot 之上(因此您可以使用依赖注入和 Spring Boot 的其他功能) - 多个部署选项 - 活跃的社区和包含示例项目的大量文档
缺点: - 大量自动生成的代码可能会让初学者感到困惑
MyBatis:用于更轻松 SQL 管理的持久性框架
MyBatis 是一个用于 Java 应用程序的持久性框架,它使使用关系 (SQL) 数据库变得更加容易和快捷。该框架充当应用程序和数据库之间的中间件,并解决了源自其不同架构的问题。
您可以将 MyBatis 视为应用程序的 Java 代码和底层 SQL 数据库之间的抽象层。默认情况下,您需要使用 JDBC(Java 数据库连接)API 从您的 Java 代码访问数据源,例如关系数据库或电子表格。 MyBatis 简化了这个过程,让你用更少的代码与关系数据库进行交互。例如,您可以只用一行代码执行 SQL 语句。
MyBatis 类似于 Hibernate 框架,都旨在改善应用层和数据库之间的通信。然而,MyBatis 并不像 Hibernate 那样将 Java 对象映射到数据库表,而是将 Java 方法链接到 SQL 语句。因此,当您使用 MyBatis 框架时,SQL 是可见的,并且您仍然可以控制 SQL 的执行(另一方面,您需要自己编写 SQL 语句并设置映射) .
优点: - 易于使用和学习(适用于 Java 开发人员) - 轻量级 - 快速开发 - 与 Spring 框架兼容 - 简单获取的出色解决方案 - 可移植性 - 数据库独立接口 - 能够构建动态 SQL 查询
缺点: - 高度依赖 SQL - 难以调试 - 不如 Hibernate 灵活
Play:用于高度可扩展的 Java 应用程序的响应式 Web 和移动框架
Play 框架使构建用于桌面和移动设备的轻量级和网络友好的 Java 和 Scala 应用程序成为可能。 Play 是一个非常流行的框架,被 LinkedIn、三星、沃尔玛、卫报、Verizon 等公司使用。
Play 经常被比作其他编程语言的强大 Web 框架,例如 Ruby on Rails 的 Ruby 或 Django 的 Python。与大多数 Java 框架不同,它不依赖于 Jakarta EE 标准。它旨在消除传统 Java Web 开发的不便,例如开发周期慢和配置过多。因此它更类似于脚本语言(PHP、Python、Ruby 等)的 Web 框架。
在底层,Play 构建在 Akka 工具包之上,该工具包简化了在 Java 虚拟机上创建并发和分布式应用程序。因此,Play 使用了完全异步的模型,可以带来更好的可扩展性,特别是因为它还遵循无状态原则。
Play 框架通过热代码重新加载、约定优于配置和浏览器中的错误消息等功能将开发人员的生产力放在首位。此外,它是一个响应式系统,遵循现代系统架构(响应式、弹性、弹性和消息驱动),以实现更灵活和容错的结果。
优点: - 轻量级 - 高可扩展性 - 异步核心 - 支持 Web 技术(REST、JSON、Web 套接字等) - 强大的开发人员工具 - 许多云部署选项 - 广泛的文档和活跃的社区
缺点:
向后兼容性问题(Play 1.x 与 Play 2.x 不兼容,而且 Play 2.x 的次要版本之间可能存在较小的兼容性问题)
PrimeFaces:Jakarta EE 和 Jakarta Server Faces 的 UI 框架
PrimeFaces 是一个流行的 Web 框架,用于为 Jakarta EE 和 Jakarta Server Faces(见上文)应用程序创建轻量级用户界面。许多财富 500 强公司、政府实体和教育机构都在使用它。
PrimeFaces 库是真正轻量级的。它被打包为单个 JAR 文件,需要零配置,并且没有任何依赖项。它允许您使用一组丰富的组件、内置的皮肤框架以及预先设计的主题和布局为 Java 应用程序创建用户界面。由于 PrimeFaces 建立在 Jakarta Server Faces 之上,因此它继承了其特性,例如快速应用程序开发。您还可以将框架添加到任何 Java 项目中。
在 PrimeFaces 网站上,您可以找到所有 PrimeFaces 组件、模板和主题的精彩展示。这些组件带有相关的代码片段,您可以快速复制/粘贴到您的应用程序中 - 或在必要时对其进行调整。例如,这是一个水平的巨型菜单,可让您一起显示根项目的子菜单。
PrimeFaces 还有一个主题设计器,它是一个基于 Sass 的主题引擎,具有 500 多个变量、一个示例主题和字体图标。如果您不想自己构建主题,您还可以下载社区主题或从 PrimeFaces 主题库购买高级主题。
优点: - 易于上手 - 稳定性(建立在 JSF 之上) - 支持移动功能(例如触摸优化组件) - 流行前端库的现成 UI 组件(例如,用于 Angular 的 PrimeNG、用于 React 的 PrimeReact 和 PrimeVue Vue)——预先设计的前端布局和模板(但是,不是免费的——价格从 39 美元起)
- 活跃的社区
缺点: - 掌握它需要时间(您需要了解 Jakarta Server Faces 才能正确使用 PrimeFaces)
Spark 框架:Web 应用程序和 REST API 的微框架
Spark 框架是用于 Java 和 Kotlin 编程语言的微框架和特定领域的语言。 Kotlin 在 Java 虚拟机上运行,并且与 Java 100% 可互操作。 Spark 可帮助您开发基于 Java 的 Web 应用程序、微服务和 REST API。
微框架首先出现在 Ruby 和 PHP 等脚本语言中,并由于其专注于开发速度和简单性而迅速获得关注。 Spark 的灵感来自 Ruby 的 Sinatra Web 应用程序框架,并于 2011 年首次发布。它不是 MVC 框架,但可以让您按照自己的方式构建应用程序。与大多数微框架一样,它的代码库很小,需要最少的配置,并且不需要您编写太多的样板代码。
您可以在几分钟内启动并运行 Spark 框架。默认情况下,它在嵌入到框架中的 Jetty Web 服务器上运行。但是,您也可以将它与其他 Java Web 服务器一起使用。根据 Spark 自己的调查,超过 50% 的用户使用该框架创建 REST API,这是其最受欢迎的用例。 Spark 还为每天为超过 10,000 名用户提供服务的高流量 Web 应用程序提供支持。
请注意,Spark 框架与 Apache Spark 不同,后者是用于大数据处理的分析引擎。
优点: - 轻量级 - 允许快速开发 - 需要很少的样板代码 - 声明性和表达性语法 - 无主见(您可以根据需要构建应用程序)
缺点: - 这些天开发不太活跃 - 教程和学习材料不多
Spring Framework:企业级Java应用框架
Spring 框架可能是最知名和最流行的 Java 框架,拥有庞大的生态系统和活跃的社区。它允许您构建企业级 Java 应用程序、Web 服务和微服务。
Spring 框架最初是一个依赖注入工具,但多年来它已经发展成为一个完整的应用程序框架。它为您提供了一个包罗万象的编程和配置模型,支持建立数据库连接和处理异常等通用任务。除了 Java,您还可以将框架与运行在 Java 虚拟机上的 Kotlin 和 Groovy 一起使用。
Spring 框架利用控制反转 (IoC) 软件设计原则,框架根据该原则控制自定义编写的代码(与传统编程相反,传统编程中自定义代码调用处理通用任务的其他库)。因此,您可以为 Spring 应用程序创建松散耦合的模块。
虽然 Spring 框架非常适合构建企业级 Java 应用程序,但它确实有一个陡峭的学习曲线。这是因为它是一个广泛的框架,旨在为可能出现企业级应用程序的每项任务提供解决方案,并且还支持许多不同的平台。因此,配置、设置、构建和部署过程都需要您可能不想处理的多个步骤,尤其是在您处理较小的项目时。 Spring Boot(Spring 框架的一个扩展)是解决这个问题的一个解决方案,因为它允许您更快地设置您的 Spring 应用程序,并且配置少得多。
优点: - 非常流行且非常稳定的框架 - 灵活的配置 - 松散耦合(由于依赖注入) - 易于测试应用程序(由于依赖注入) - 使用 POJO(普通旧 Java 对象) - 广泛的文档 - 活跃的社区
缺点: - 复杂性(高学习曲线) - 需要编写大量样板代码(除非您使用 Spring Boot)
Struts:用于企业级 Java 应用程序的 MVC 框架
Struts 是一个较旧的框架,仍然被许多开发人员使用。它是由 Apache Software Foundation 维护和开发的全功能 Java Web 应用程序框架。它是一个拥有庞大社区的可靠平台,通常与 Spring 框架相比。 Struts 允许您创建随着时间的推移易于维护的企业级 Java 应用程序。
它遵循 MVC 软件设计模式,并具有基于插件的架构。插件可以扩展框架以适应不同的项目需求。 Struts 插件是基本的 JAR 包,因此它们是可移植的,您也可以将它们添加到应用程序的类路径中。一些插件与框架捆绑在一起(JSON 插件、REST 插件、配置浏览器插件等),而您可以从第三方来源添加其他插件。
您可以将 Struts 与其他 Java 框架集成以执行未内置于平台中的任务。例如,您可以使用 Spring 插件进行依赖注入或使用 Hibernate 插件进行对象关系映射。 Struts 还允许您使用不同的客户端技术(例如 Jakarta Server Pages)来构建应用程序的前端。
但是,如果您想创建可以在前端渲染的服务器端组件,Struts 可能不是最好的选择。相反,您应该研究具有不同架构的框架,例如 Tapestry 或 Wicket(见下文)。
优点: - 稳定和成熟的框架 - 约定优于配置 - 可扩展(通过插件) - 易于与其他 Java 框架和工具集成 - 支持 Web 技术(REST、AJAX、JSON)
缺点: - 不提供任何安全机制(请参阅您需要自己申请的安全提示)
Tapestry:面向组件的高度可扩展应用程序框架
Tapestry 是一个基于组件的 Java 框架,您可以使用它创建可扩展的 Web 应用程序。它对可重用组件的关注使其在架构上类似于 Jakarta Server Faces 和 Wicket 框架。与 Struts 一样,Tapestry 也是 Apache 软件基金会的一个项目。
您可以将 Tapestry 页面和组件编写为普通的旧 Java 对象 (POJO),因此您可以从框架访问整个 Java 生态系统。除了 Java,Tapestry 还支持 Groovy 和 Scala,并与 Hibernate 和 Spring 等其他 Java 框架集成。 Tapestry 的构建考虑了性能;因此,它为您提供了诸如实时类重新加载、异常报告、Ajax 支持以及内置组件和模板等功能。
Tapestry 也是一个对开发人员友好的框架。它具有促进测试驱动开发 (TDD) 的内置实用程序,并支持 Selenium 测试框架。 Tapestry 在单个服务器和服务器集群上都可以很好地扩展。使用 Tapestry 构建的应用程序可以在浏览器中快速运行,因为它遵循客户端缓存、支持并发线程、JavaScript 聚合和压缩、集成 GZip 内容压缩等最佳实践。
优点: - 可扩展 - 易于测试 - 约定优于配置 - 组件是纯 Java 对象 - 带有预制组件 - 出色的异常报告
缺点: - 很难找到教程和学习材料
Vaadin:专注于 UX、可访问性和移动的 Web 应用程序框架
Vaadin 为简化的 Java 开发提供了一个平台。它允许您构建专注于性能、用户体验和可访问性的可定制组件的 Web 应用程序。
Vaadin 10+ 以全新的方式处理 Web 应用程序开发:它让开发人员可以直接从 Java 虚拟机访问 DOM(文档对象模型)。在新版本中,Vaadin 团队将以前的单一框架分成了两部分。它有一个名为 Vaadin Flow 的轻量级 Java 框架,用于处理路由和服务器-客户端通信,以及一组在用户浏览器中运行的 UI 组件。
这些组件是移动优先的,并遵循最新的网络和可访问性标准;它们是基于 Web Components 标准构建的。您可以将 Vaadin 组件与任何前端框架(例如 React、Angular 或 Vue)一起使用。创建者还推荐它们作为渐进式 Web 应用程序的构建块。您可以基于 Vaadin 组件构建自己的主题,也可以使用 Vaadin 的两个预制主题:Lumo(默认)和 Material。
Vaadin Flow 提供高级 Java API 来管理应用程序的所有技术方面,从服务器-客户端自动通信到 WebSocket 再到数据绑定。由于 Flow 在 JVM 上运行,您可以访问整个 Java 生态系统,例如,您可以使用 Spring Boot 运行您的应用程序。 Flow 还允许您使用 Kotlin 或 Scala 编写应用程序。
优点: - 使用独特的编程模型 - 遵循 Web 标准 - 适合移动设备的组件 - 可扩展(参见 Vaadin 目录) - 与 Spring 框架无缝集成 - Java 应用程序的预制主题(免费提供)
缺点: - Vaadin 是一家营利性公司,因此您需要为专业组件、工具和支持付费(参见定价)。
Vert.x:用于 Java 虚拟机的多语言事件驱动应用程序框架
Vert.x 是一个运行在 Java 虚拟机上的多语言框架。它允许您使用 Java、JavaScript、Groovy、Ruby、Scala 和 Kotlin 等编程语言编写应用程序。它的事件驱动架构使应用程序即使在硬件资源最少的情况下也能很好地扩展。
Vert.x 由 Eclipse 基金会开发和维护,其最著名的项目是 Eclipse IDE。 Vert.x 中的“x”指的是它的多语言特性,这意味着您可以用几种不同的语言编写有效的代码。它为每种受支持的编程语言提供惯用的 API。
由于 Vert.x 是一个事件驱动的非阻塞框架,它可以只使用最少数量的线程来处理大量并发。 Vert.x 也非常轻量级,核心框架仅重约 650 KB。它具有模块化架构,允许您仅使用所需的模块,以便您的应用程序尽可能保持流畅。如果您想构建轻量级、高度可扩展的微服务,Vert.x 是一个理想的选择。
优点: - 加载速度快 - 模块化架构 - 可扩展 - 不拘一格(您可以根据需要构建应用程序) - 易于使用的应用程序生成器 - 大量文档
缺点: - 高学习曲线(更多的是高级工具包而不是框架,因此您需要自己做出很多决定)
Wicket:面向纯粹主义者的基于组件的 Web 应用程序框架
Wicket 是一个基于组件的 Web 应用程序框架,类似于 Jakarta Server Faces 和 Tapestry。它允许您使用纯 Java 和 HTML 代码编写优雅、用户友好的应用程序。该框架由 Apache Software Foundation 维护,类似于 Struts 和 Tapestry。
由于 Wicket 是一个基于组件的框架,因此应用程序由可重用的页面和组件组成,例如图像、按钮、链接、表单等。它使用 POJO 数据模型,因此 Wicket 组件是普通的 Java 对象。组件被捆绑为可重用的包,因此您可以向它们添加自定义 CSS 和 JavaScript。
Wicket 通过为超过 25 种语言提供开箱即用的支持,让您的应用程序、页面和组件国际化。内置的 Ajax 功能允许您实时更新页面的某些部分,而无需编写任何 JavaScript 代码。 Wicket 也关注安全的 URL 处理。组件路径是会话相关的,并且 URL 不会泄露任何敏感信息。如果您想了解 Wicket 在现实生活中的工作原理,请查看使用 Apache Wicket 构建的博客,您可以在其中看到一些不错的示例。
优点: - 分离标记和逻辑 - 不需要 JavaScript 或 XML 配置文件 - 与标准 HTML 无缝集成 - 简单的状态管理(组件是 Java 对象维护它们的状态) - 您可以对前端代码进行单元测试
缺点: - 相对较小的社区;教程或学习资料不多
下一步
这是我们对 Java 框架比较的总结。由于这些框架中的每一个都有不同的用途,因此在为您的特定 Java 项目选择一个或多个框架之前,了解它们的优缺点和功能至关重要。
要选择正确的框架,您需要考虑您的目标(您想要构建什么?)、您的预算和团队的知识,以及其他因素。
Tags
最新内容
- 1 day 8 hours ago
- 1 day 8 hours ago
- 1 day 8 hours ago
- 1 day 8 hours ago
- 2 days 9 hours ago
- 2 days 9 hours ago
- 2 days 9 hours ago
- 2 days 9 hours ago
- 2 days 9 hours ago
- 2 days 9 hours ago