2019-01-26

流行的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框架时,请保持开放的心态,并进行研究,找出最适合您的框架。有很多框架可以适合您的项目,所以使用这个指南来评估您的需求。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容