在2018年,Java仍然是世界上最流行的编程语言。它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员。虽然Java不是最直接的语言,可是您不须要从头编写Java程序。有许多优秀的Java框架能够编写在Java虚拟机上运行的web和移动应用程序、微服务和REST api。javascript
Java框架容许您关注应用程序的业务逻辑,而不是编写数据库链接或处理异常等基本功能。此外,若是您有Java方面的经验,您能够快速入门。这些框架都使用相同的语法,使用类似的术语、范例和概念。前端
Play: Reactive Web and Mobile Framework for Highly Scalable Java Applicationsjava
Play框架能够为桌面和移动接口构建轻量级的、web友好的Java和Scala应用程序。Play是一个很是受欢迎的框架,被领英(LinkedIn)、三星(Samsung)、沃尔玛(Walmart)、卫报(Guardian)、威瑞森(Verizon)等公司使用。web
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 Facesapi
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框架时,请保持开放的心态,并进行研究,找出最适合您的框架。有不少框架能够适合您的项目,因此使用这个指南来评估您的需求。