流行的9个Java框架介绍:优点、缺点等等
程序你好 2018-07-09 11:00:05
在2018年,Java仍然是世界上最流行的编程语言。它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员。虽然Java不是最直接的语言,但是您不需要从头编写Java程序。有许多优秀的Java框架可以编写在Java虚拟机上运行的web和移动应用程序、微服务和REST api。
Java框架允许您关注应用程序的业务逻辑,而不是编写数据库连接或处理异常等基本功能。此外,如果您有Java方面的经验,您可以快速入门。这些框架都使用相同的语法,使用相似的术语、范例和概念。
Play: Reactive Web and Mobile Framework for Highly Scalable Java Applications
Play框架可以为桌面和移动接口构建轻量级的、web友好的Java和Scala应用程序。Play是一个非常受欢迎的框架,被领英(LinkedIn)、三星(Samsung)、沃尔玛(Walmart)、卫报(Guardian)、威瑞森(Verizon)等公司使用。
Play经常与其他编程语言的强大web框架相比较,比如Ruby的Ruby on Rails框架,Python的Django框架。实际上,Play是一个独特的Java框架,因为它不依赖于Java EE标准。相反,它打算消除传统Java web开发的所有不便,比如开发周期缓慢和配置过多。它尽可能地类似于脚本语言的web框架(PHP、Python、Ruby等)。
在底层,Play构建在Akka工具包之上,该工具包简化了在Java虚拟机上创建并发和分布式应用程序。因此,Play使用了一个完全异步的模型,可以带来更好的可扩展性,特别是因为它还遵循无状态原则。
Play框架通过提供热代码重载、约定优于配置以及浏览器中的错误消息等特性,将开发人员的工作效率放在首位。此外,它是一个反应系统,它遵循现代的系统架构(响应性、弹性、弹性和消息驱动)来实现更灵活和容错的结果。
PrimeFaces: UI Framework for Java EE and JavaServer Faces
PrimeFaces是一个流行的web框架,用于为Java EE和JavaServer Faces(见上面)应用程序创建轻量级用户界面。它被许多财富500强公司、政府机构和教育机构使用。
PrimeFaces库确实是轻量级的。它打包为一个JAR文件,需要零配置,并且没有任何依赖项。通过提供丰富的组件集(100+)、内置的皮肤框架和预先设计的主题和布局,它允许您为Java应用程序创建用户界面。由于PrimeFaces构建在JavaServer Faces之上,它继承了一些特性,比如快速应用程序开发。您还可以向任何Java项目添加框架。
在PrimeFaces网站上,你可以找到一个很好的展示所有的早期组件、模板和主题的展示。这些组件带有相关的代码片段,您可以快速地将它们复制/粘贴到应用程序中,或者在必要时对它们进行调整。例如,这里有一个水平的mega菜单,允许您一起显示根项的子菜单。
PrimeFaces也有一个很棒的主题设计器,这是一个基于sassbased的主题引擎,有超过500个变量、一个示例主题和字体图标。而且,如果你不想自己构建一个主题,你也可以下载一个社区主题或者购买一个高级的主题画廊。
Spark Framework: Micro Framework for Web Apps and REST APIs
Spark框架是Java和Kotlin编程语言的一个微型框架和领域专用语言。Kotlin也在JVM上运行,它与Java的互操作性是100%的。使用Spark,您可以轻松地开发web应用程序、微服务和REST api。
微框架最初出现在Ruby和PHP等脚本语言中,由于专注于开发速度和简单性,很快获得了广泛的关注。Spark受到Sinatra为Ruby开发的web应用框架的启发,并于2011年首次发布。它不是MVC框架,但它可以让你随心所欲地构建你的应用程序。与大多数微框架一样,它有一个小的代码库,需要最少的配置,并且不需要编写太多的样板代码。
事实上,您可以在几分钟内启动Spark框架并运行。默认情况下,它在嵌入框架的Jetty web服务器上运行。但是,您也可以在其他Java web服务器上使用它。根据Spark自己的调查,超过50%的用户使用该框架创建REST api,这可以被视为它最流行的用例。Spark还支持高通信量的web应用程序,每天服务超过10,000个用户。
Spring Framework: Enterprise-level Java Application Framework
Spring框架可能是最知名的Java框架,拥有巨大的生态系统和活跃的社区。它允许您构建企业级Java应用程序、web服务和微服务。
Spring框架最初是一个依赖注入工具,但是,多年来,它已经发展成为一个全面的应用程序框架。它为您提供了一个包含所有内容的编程和配置模型,该模型支持通用任务,如建立数据库连接或处理异常。除了Java之外,您还可以与Kotlin和Groovy一起使用这个框架,它们都在Java虚拟机上运行。
Spring框架利用了控制反转(IoC)软件设计原则,根据该原则,框架控制定制的代码(而不是传统的编程,将自定义代码调用到处理通用任务的其他库中)。因此,您可以为您的Spring应用程序创建松散耦合的模块。
尽管Spring框架非常适合构建企业级Java应用程序,但它确实有一条陡峭的学习曲线。这是因为它是一个广泛的框架,它打算为可能出现在企业级应用程序中的每个任务提供解决方案,并且还支持许多不同的平台。因此,配置、设置、构建和部署过程都需要多个您可能不希望处理的步骤,尤其是在处理较小的项目时。Spring Boot(与Spring框架不同)是这个问题的解决方案,因为它允许您更快地设置Spring应用程序,配置更少。
Struts: MVC Framework for Enterprise-level Java Applications
Struts是由Apache Software Foundation维护和开发的全功能Java web应用程序框架。与Spring框架相比,它是一个拥有庞大社区的坚实平台。Struts允许您创建企业级Java应用程序,随着时间的推移,这些应用程序很容易维护。
它遵循MVC软件设计模式,并且有一个基于插件的体系结构。插件使扩展框架以适应不同的项目需求成为可能。Struts插件是基本的JAR包。因此,它们是可移植的,您也可以将它们添加到应用程序的类路径中。一些插件与框架绑定(JSON插件、REST插件、配置浏览器插件等),而您可以从第三方源添加其他插件。
您可以将Struts与其他Java框架集成在一起,以执行不构建到平台中的任务。例如,可以使用Spring插件进行依赖注入,或者使用Hibernate插件进行对象关系映射。Struts还允许您使用不同的客户端技术来构建应用程序的前端,例如javascript页面或具有角度的HTML。
但是,如果您希望创建可以在前端呈现的服务器端组件,那么Struts可能不是最好的选择。相反,您应该查看具有不同架构的框架,如Tapestry或Wicket(请参阅下面的两个框架)。另外,请注意,由于您仍然需要注意一些关键的安全漏洞,Struts最近受到了负面影响。
Tapestry: Component-oriented Framework for Highly Scalable Apps
Tapestry是一个基于组件的Java框架,可以创建可伸缩的web应用程序。它对可重用组件的关注使它在架构上类似于JavaServer Faces和Wicket框架。与Struts一样,Tapestry也是Apache软件基金会的一个项目。
可以将Tapestry页面和组件编写为普通的旧Java对象(pojo)。因此,您可以从框架访问整个Java生态系统。除了Java, Tapestry还支持Groovy和Scala,并与其他Java框架(如Hibernate和Spring)集成。Tapestry已经在设计中考虑到了性能。因此,它为您提供了动态类重载、异常报告、Ajax支持以及内置组件和模板等特性。
Tapestry也是一个开发人员友好的框架。它内置了促进测试驱动开发(TDD)的实用工具,并支持Selenium测试框架。Tapestry在单个服务器和服务器集群上可以很好地伸缩。使用Tapestry构建的应用程序在浏览器中运行得很快,因为它遵循了许多最佳实践,比如客户端缓存、对并发线程的支持、JavaScript聚合和压缩、集成GZip内容压缩等等。
Vaadin: Web Application Framework With a Focus on UX, Accessibility, and Mobile
Vaadin为您提供了一个简化Java开发的平台。它允许您构建以性能、用户体验和可访问性为重点的可定制组件的web应用程序。
关于Vaadin最有趣的事情是它的最新版本(就在几天前,也就是2018年6月)是如此的重要以至于连主要的媒体都报道了它。Vaadin 10以一种全新的方式接近web应用程序开发:它使开发人员能够直接从Java虚拟机访问DOM。在新版本中,Vaadin团队将之前的单片框架分为两部分。它有一个名为Vaadin Flow的轻量级Java框架,用于处理路由和服务器-客户端通信,以及一组在用户浏览器中运行的UI组件。
这些组件是移动优先的,遵循最新的web和可访问性标准;它们是基于Web组件标准构建的。您可以将Vaadin组件与任何前端框架(如React、angle或Vue)一起使用。创建者们还推荐它们作为渐进式Web应用的构建模块。您可以基于Vaadin组件构建您自己的主题,或者使用Vaadin的两个预定义主题:Lumo(默认)和材料。
Vaadin流为您提供了一个高级Java API来管理应用程序的所有技术方面,从通过WebSockets进行的服务器-客户端自动通信到数据绑定。随着流在JVM上运行,您可以访问整个Java生态系统。例如,您可以使用Spring Boot运行应用程序。Flow还允许您在Kotlin或Scala中编写应用程序。
Vert.x: Polyglot Event-driven Application Framework for the Java Virtual Machine
Vert.x是在Java虚拟机上运行的一个多语言框架。它允许您用编程语言编写应用程序,如Java、JavaScript、Groovy、Ruby、Scala和Kotlin。它的事件驱动的体系结构导致应用程序能够很好地伸缩,即使使用最少的硬件资源。
Vert.x是由Eclipse Foundation开发和维护的,Eclipse Foundation最著名的项目是用于Java开发的Eclipse IDE。而且,谁会比Eclipse的创建者更了解Java呢?绿色的“x”。x是它的多语言性质,意思是您可以用几种不同的语言编写有效的代码。它为每一种受支持的编程语言提供惯用api。
Vert.x是一个事件驱动的、非阻塞的框架,它可以使用最少的线程来处理大量的concurrency。绿色。x也是相当轻量级的,核心框架仅重约650 kb。它有一个模块化的架构,允许你只使用你需要的模块,这样你的应用程序就可以尽可能的灵活。绿色。如果您想构建轻量级、高度可伸缩的微服务,那么x是一个理想的选择。
Wicket: Component-based Web Application Framework for Purists
Wicket是一个基于组件的web应用程序框架,类似于JavaServer Faces和Tapestry。它允许您使用纯Java和HTML代码编写优雅、用户友好的应用程序。该框架由Apache Software Foundation维护,就像Struts和Tapestry一样。
由于Wicket是一个基于组件的框架,所以Wicket应用程序由可重用的页面和组件(如图像、按钮、链接、表单等)组成。Wicket应用程序的编程以pojo为中心,因此组件也是具有封装和继承等面向对象特性的普通Java对象。组件被打包成可重用的包,因此您可以向它们添加自定义的CSS和JavaScript。
Wicket通过为超过25种语言提供开箱即用的支持,使应用程序、页面和组件国际化。它内置的Ajax功能允许您实时更新页面的某些部分,而不需要编写任何JavaScript代码。Wicket也注意安全的URL处理。组件路径是会话相关的,url不会显示任何敏感信息。
结论
当涉及到Java框架时,请保持开放的心态,并进行研究,找出最适合您的框架。有很多框架可以适合您的项目,所以使用这个指南来评估您的需求。