Java Web应用程序的演变

Java编程语言构建Web应用程序的发展历史,以及从出现Servlet规范到今天的使用示例。



本文并不声称其整体性和准确性是学术性的。 对所有陈述的事实的解释和给出的示例仅反映了文章作者的知识,观点和错误。 编写本文的目的是试图全面了解Java Web应用程序的当前状况。 此外,读者可以将呈现的信息用作进一步独立研究的起点。

示例代码位于GitHub上的存储库中: 本文最后部分的 每个库和框架以及应用程序演示 。 在撰写本文时, 第一个存储库中有37个示例,随着时间的流逝,它们的列表将被更新。

技术,库,框架及其受欢迎程度出现的时间表


为了更容易理解,将数据制成表格并通过图表进一步说明。 如果可能,表元素将有条件地分组。 库和框架按流行程度降序排列。

有关受欢迎程度的信息来自两个来源。 第一个来源是ZeroTurnaround RebelLabs Web框架 受欢迎程度指数 。 它的最新更新是在2017年底,并且之前有两个博客文章: 第一第二 。 第二篇博文的作者Simon Maple加入了Snyk ,继续收集和分析这些有用的统计数据。 第二个来源是他的研究 ,该研究发表于2018年11月/ 12月的Java Magazine (问题17)。

在表的顶部已添加了一组规范,在流行度索引中未包括但我仍要提及的框架已添加到表的末尾。
不行技术,图书馆,框架初版日期最后稳定版本日期人气,%
型式亚型RebelLabs,2017年Java杂志,2018年
1个规格书Servlet12/19962019/09/10
2Jsp1999年9月27日2019/09/10
3J2EE
Java EE
雅加达
1999/12/122019/09/10
4杰克斯2003年10月28日2019/09/10
5s2004/03/112019/09/10
6杰克斯2008/09/082019/09/10
7春天春季MVC2005年12月2019年8月2日28.8236
8春季靴2014年4月2019年8月2日13.3540
9春季webflux09.20172019年8月2日
10JavaServer FacesEclipse Mojarra2004年3月3日2018年11月30日15,219
11阿帕奇MyFaces11.20052019/05/23
12Google Web工具包2006年5月16日2017年10月19日7.746
13ils子2005年10月2019/7/116.353
14支柱05.200001/09/20195,49
15Dropwizard2011年12月21日2019年8月7日4.93
16玩游戏2008/05/052019/06/193.263
17Jipster2013年10月21日2019年9月20日2.493
18岁杰克斯阿帕奇cxf2008年4月4日2019年8月13日2.44
19重做2008年9月9日2019年8月30日
20泽西岛05.20102019/09/10
21Restlet2013年1月1日01.2018
22瓦丹2006年2019年9月16日2.155
23接缝2007年2013年7月25日1.94
24小门2005/062019/09/091.912
25挂毯20002019年9月6日1.9
26Spark Java2011年2019年5月22日0.77
27Vert.x2011年2019年8月22日0.76
28Rapidoid2014年8月2018/05/270.25
29日拉各姆03.201609/04/20190.24
30拉特帕克2013年2019年08月18日0.13
31Javalin2017/05/242019年8月11日
32微航海10/23/20182019年9月13日
33微轮廓汤美2012年4月27日2019/06/21
34吊床2014年2月27日03/05/2018
35棘尾01.20162019/07/17
36库穆鲁兹2016/04/042019/06/29
37Payara微2017/07/072019年8月28日
38开放自由2017/09/192019年9月6日
39海利顿2018/9/192019年9月13日

在第一个时间轴上,表中的数据以与表中相同的顺序显示。 现有组按受欢迎程度排名。 在组中(规范, SpringJSFJAX-RSMicroProfile )元素按其出现的时间顺序排列。 您可以单击任何图片将其放大。



在第二个时间轴上,按照所有元素的第一个版本出现的日期对相同信息进行排序。 不难看出,例如在2001年,用于编写Web应用程序,您只能从两个现有的主要框架TapestryStruts中进行选择 。 在2014年初,不可能使用Spring Boot (它的第一个正式版本随后发布),并且使用Seam (它已经不存在)毫无意义。



饼图显示了根据RebelLabs在2017年底的框架受欢迎程度指数。 索引中的每个框架都参与一次,即兴趣总数为100。第二张图显示了Java Magazine,2018的一项研究结果 。 这项研究询问使用了什么Web框架,答案中可以选择多个。 因此,每个百分比都彼此独立,因此无法汇总。



技术指标


所有库的存在的基础是它们所基于的标准和规范。 规范以Java规范请求JSR )的形式存在,该规范是通过称为Java社区过程JCP )的正式过程开发的。

Java Enterprise Edition相关的JSR列表在此处 。 下表仅显示了从中选择的两个最重要的规范-ServletJava EE (后者是一组其他规范)。 规范的第一个版本未被接受为JCP的一部分,因此它们没有JSR编号。

自2017年9月12日以来, Java EE已转移到Eclipse Foundation的管理部门,现在称为Jakarta EEJCP已被 Jakarta EE规范流程取代,作为制定和采用规范的流程。
JSR编号名称简要地发布日期
--Servlet 1.012/1996
--Servlet 2.012/1997
--Java Servlet API规范2.1aServlet 2.111/1998
--Java Servlet API规范2.2Servlet 2.212/1999
--J2EE 1.2文档J2EE 1.212/1999
902Java Servlet API规范,版本2.2,勘误表,2000年4月1日Servlet 2.205.2000
903Java Servlet API规范,版本2.2,勘误表,2000年4月27日Servlet 2.22000年6月
53Java Servlet 2.3和JavaServer Pages 1.2规范Servlet 2.3,JSP 1.22002年6月
58Java 2平台企业版1.3规范J2EE 1.309.2001
151Java 2平台企业版1.4(J2EE 1.4)规范J2EE 1.42004-04
154Java Servlet 2.4规范Servlet 2.4、2.509.2007
244Java平台企业版5(Java EE 5)规范Java EE 52006年5月5日
315Java Servlet 3.0规范Servlet 3.003.2011
316Java平台企业版6(Java EE 6)规范Java EE 62009-12
340Java Servlet 3.1规范Servlet 3.12013年5月5日
342Java平台企业版7(Java EE 7)规范Java EE 72015年7月
366Java平台企业版8(Java EE 8)规范Java EE 809.2017
369Java Servlet 4.0规范Servlet 4.009.2017
--Jakarta EE Platform 8规范雅加达EE 809.2019
--Jakarta Servlet 4.0规范Servlet 4.009.2019

使用HTTP Servlet


以下是一些在没有任何库或框架的情况下创建Web应用程序的示例。 带有简短注释的代码位置链接将按顺序给出。 还有更多类似的方法,其中最明显的方法已得到证明。

部署描述符 web.xml的第一个示例( helloworld-web-servlet-xml模块)指定了从抽象类HttpServlet继承的类以及其自己的doGet()方法的实现。 Servlet 2.2规范(1999)首次提到了部署描述符web.xml文件。

在第二个示例( helloworld-web-servlet-annotation模块)中,缺少web.xml部署描述符web.xml 。 从抽象类HttpServlet继承的同一类之上有一个WebServlet批注出现在Servlet 3.0 (2011)中。

第三个示例( helloworld-web-servlet-interface-jarhelloworld-web-servlet-interface-war模块)要复杂一些。 它显示了如何使用ServletContainerInitializer接口的实现,该接口也出现在Servlet 3.0中 。 在第一个模块helloworld-web-servlet-interface-jar中 ,仍然没有web.xml部署描述符web.xml ,有一个从抽象类HttpServlet派生的类。 Servlet 3.0允许ServletContainerInitializer接口的实现以编程方式添加Servlet组件,包括 执行servlet注册。 通过在META-INF/services/javax.servlet.ServletContainerInitializer文件中指定其名称,可以配置使用服务提供者接口SPI )概念的ServletContainerInitializer接口的实现类。 第一个模块创建一个JAR文件。 WAR文件创建第二个模块helloworld-web-servlet-interface-war ,第一个模块在依赖项列表中指定。 JSFSpring框架分别在其FacesInitializerSpringServletContainerInitializer类中使用类似的方法来实现ServletContainerInitializer接口。

Servlet 3.0Servlet 3.1 (2013)-非阻塞I / O, Servlet 4.0 (2017) -HTTP / 2支持也引入了异步Servlet。

春天之前的时代


挂毯 Apache Tapestry是真正的长期Web应用程序框架。 它的第一个版本于2000年发布;现在继续发布新版本。 在设计Tapestry时 ,借鉴了几年前出现的WebObjects WebObjects的想法。 使用Tapestry的应用程序(例如helloworld-web-tapestry模块)使用模块化体系结构,并将网页用户界面的组件与相应的Java类绑定在一起。

支柱 Apache Struts在2000年5月与以前的框架几乎同时出现,并且一直持续到今天。 在基于它的示例( helloworld-web-struts模块 )中,您可以在部署描述符文件web.xml看到StrutsPrepareAndExecuteFilter类作为过滤器的指示。 此类用作请求管理器,选择与请求相对应的操作。 与Tapestry一样, Apache Struts也基于MVC设计模式

jsf 2004年3月,发布了JavaServer Faces规范及其两个连续的实现:现在称为Eclipse Mojarra (以前称为Sun JSF参考实现JSF RIMojarraOracle Mojarra )和Apache MyFaces 。 规范支持的主要方法是组件的使用。 这两个示例( helloworld-web-jsf-mojarrahelloworld-web-jsf-myfaces模块 )都完全相同,但依赖库除外。 应用程序定义并在Web页面上显示JSF规范的实现版本,实现的名称( MojarraMyFaces )以及实现的版本。

检票口 2005年6月发布了Wicket框架的第一个版本,该版本在思想上类似于TapestryJavaServer Faces 。 面向组件的方法,并使用Java类链接Web页面的HTML模板。 自2007年6月以来,该框架属于Apache Software Foundation ,并将其名称更改为Apache Wicket 。 该框架的受欢迎程度大约在2008-2009年达到顶峰,随后人们对该框架的兴趣逐渐下降。 新版本将继续发布;可以在helloworld-web-wicket模块中看到一个示例应用程序。

伊尔斯 2005年10月,发布了第一个版本的Grails ,这是一个用于构建用Groovy JVM 语言编写的Web应用程序的框架。 顾名思义,用Ruby编写的框架Ruby on Rails对它的创建产生了很大的影响。 还基于MVC模式 。 一个独特的功能是使用GSPGroovy服务器页面 )视图文件作为模板。 一个示例( helloworld-web-grails模块)已创建,构建并可以使用Grails Maven插件 (用于Maven的插件)运行。

Spring MVC,Spring Boot和Spring WebFlux


春天 Spring框架的第一个版本(包括Spring MVC )于2005年12月发布。 HTTP Servlet中的类是DispatcherServlet 。 以下是按时间顺序排列的一些功能出现的示例(新版本的Servlet规范,于2014年4月首次发布Spring Boot ,然后于2017年9月发布Spring WebFlux ),这些示例已在其中使用。

在第一个示例( helloworld-web-spring-mvc-xml模块)中,将web.xml部署描述符web.xml指定为DispatcherServlet servlet。 在具有处理GET请求的唯一方法的控制器中,有相应的注释( ControllerRequestMapping )。 该视图是一个JSP文件。

在第二个示例( helloworld-web-spring-mvc-java模块)中,缺少web.xml部署描述符web.xml并且Servlet 3.0中引入的功能用于执行软件配置。 该类继承自AbstractAnnotationConfigDispatcherServletInitializer (最终使用SPI实现ServletContainerInitializer接口的实现)和JavaConfig (使用带有配置注释的程序代码进行配置 )。

第三个示例( helloworld-web-spring-boot-mvc模块)展示了该项目的显着简化,同时由于Spring Boot的出现,在保持相同功能的情况下。 除了控制器类,还只有一个类继承自SpringBootServletInitializer ,并由SpringBootApplication注释。

第四个示例( helloworld-web-spring-boot-webflux模块 )显示了与Spring Boot一起使用Spring WebFlux的情况Spring WebFlux是最近才添加到Spring框架中的Spring WebFlux使用反应原理和Project Reactor 。 在两种主要方法( 基于 功能样式基于注释的方法 )中,第一种涉及示例。

春天来临之后,2000年代


瓦丹 Vaadin的开发始于2002年,是对另一个框架Millstone 3的补充。 在2006年,创作的作品被定为最终的商业产品。 直到2009年5月,它的名称才改为 IT Mill Toolkit ,此后才成为Vaadin 。 在2007年底,其先前独立实现的客户端部分被Google Web ToolkitGWT )取代。 该示例( helloworld-web-vaadin模块)显示,只有一个Java类文件可通过编程方式在其中创建所有用户界面组件,同时隐藏了低级技术细节。

毛重 2006年5月出现了一个非常有趣的产品Google Web ToolkitGWT ),最新版本发布于两年前。 要编写服务器和客户端部分,您将有机会使用相同的Java语言 。 特殊的编译器将Java中的客户端代码转换为JavaScript 。 该示例包含三个模块-helloworld-web-gwt-client (客户端部分), helloworld-web-gwt-server (服务器部分)和helloworld-web-gwt-shared (客户端和服务器部分的通用代码)。 在开发过程中,您可以使用便捷的Maven插件Super Dev Mode启动客户端部分,在该模式下 ,所谓的代码服务器使重新编译更改后的Java代码变得容易。

接缝 Seam于2007年5月开始其生命,到2012年不再存在。 它基于Enterprise JavaBeansEJB3 )和JavaServer FacesJSF )。 由JBoss开发,然后是Red Hat的一部分。 他提出了各种有趣的概念(例如bijection ,对此有相应的注释 )。 框架的站点仍然存在,但是在其某些部分中,某些链接不再相关。 helloworld-web-seam模块中有一个示例应用程序。

杰克斯 RESTful Web服务Java API规范( JAX-RS )的第一版于2008年发布( JSR 311 ),后来更新了该规范( JSR 339JSR 370 )。 最受欢迎的JAX-RS实现是Apache CXF框架(第一个版本是2008年4月), RESTEasy (2008年9月), Jersey (2010年5月)和Restlet (2013年1月)。 在模块helloworld-web-jaxrs-apache-cxfhelloworld-web-jaxrs-resteasyhelloworld-web-jaxrs-jerseyhelloworld-web-jaxrs-restlet模块中分别找到了它们的使用示例。

玩 Play Framework于2008年5月问世。 用Scala JVM编程语言编写。 允许您在ScalaJava中基于它创建Web应用程序。 Play开发人员的一个独特功能是他们对sbt构建工具的承诺。 出于这个原因,为了编写示例( helloworld-web-play模块),我不得不付出一些努力来使用合适的插件Maven下进行构建。

2010年代,最新时间


火花java 2011年,发布了用Ruby编写的在Sinatra的影响下发行的精美Spark微型框架的第一个版本。 简洁主义,语法的轻巧和简约是其固有的特征。 一个示例( helloworld-web-sparkjava模块 )演示了如何仅用几行就可以编写完整的应用程序。 如果您的应用程序不需要太复杂的内容,那么框架的功能可能就足够了。

顶端 2011年,出现了Vert.x ,这是一个在JVM上运行的面向事件的框架。 在Node.js的重大影响下编写的 ,最初称为Node.x。 它具有多语言性质,允许您在使用框架时使用JavaJavaScriptGroovyRubyCeylonScalaKotlin 。 基于Netty库,它具有许多独特的功能和优势。 helloworld-web-vertx模块中有一个示例。

Dropwizard 2011年12月是Dropwizard诞生的最初时间, Dropwizard的作者将其产品定位在库和框架之间。 它由三个主要部分组成: JettyHTTP ), JerseyJAX-RS )和JacksonJSON )库。 目前它仍在继续发展,甚至具有一定的知名度。 该示例( helloworld-web-dropwizard模块 )显示了基于Dropwizard的Web应用程序的典型结构。

包 Ratpack是另一个框架( Spark除外),其灵感来自Sinatra库,并且主要使用Groovy JVM 语言编写。 弗兰克·辛纳屈(Frank Sinatra)与所谓的 鼠包 (“鼠包”)。 该框架的第一个版本于2013年发布,新版本继续发布。 基于Netty库,快速,简约,易于使用,高度可扩展。 在helloworld-web-ratpack模块中可以看到一个示例。

吉普斯特 2013年10月,好奇的JHipster项目(一个Web应用程序框架生成器)的问世。 要构建客户端部分,需要支持JavaScript框架AngularReactVue (在实验模式下仍支持后者)。 后端基于Spring Boot 。 要构建项目,可以选择MavenGradleJHipster生成的应用程序的示例在helloworld-web-jhipster模块中

急流 2014年8月, Rapidoid框架的第一个版本发布 ,简单,快速且模块化。 建议开始使用该框架的推荐模块包括通过HTTP进行交互, HibernateHibernate ValidatorMySQL ConnectorLogback库 。 随着需求的增加,可以扩展使用的模块集。 一个示例( helloworld-web-rapidoid模块 )使您可以评估获得简单Web应用程序所需代码的简约性。

拉贡 2016年3月,发布了Lagom框架。 该软件产品的作者将其应用程序定位为将旧的单片应用程序分解为可在其运行期间很好扩展的反应性微服务。 该框架基于AkkaPlay框架JavaScala编程语言可用于开发其应用程序。 在helloworld-web-lagom-apihelloworld-web-lagom-impl模块中找到了一个基于Lagom的示例。

javalin 最近,在2017年5月,发布了轻量级且简单的Javalin库。 它的创建者自己通过已经提到的SinatraSpark框架的作者表示感谢。 该库专注于JavaKotlin语言。 它保证没有注释,并且需要继承任何库类,尽可能简洁的代码,支持WebSocketHTTP / 2和异步请求。 在helloworld-web-javalin模块中可以看到基于它的示例。

微型船 Web框架中的后起之秀是Micronaut ,它的第一版仅在一年前(2018年10月)出现。 支持JavaGroovyKotlin JVM编程语言 。 它的显着优势是基于它的应用程序快速启动和低内存消耗。 这是通过在编译阶段而不是在运行时实施依赖项来确保的。 另一个功能是对反应式编程的出色支持,可以使用RxJavaReactorAkka库。 一个示例( helloworld-web-micronaut模块 )演示了如何构建一个基于Micronaut的简单应用程序

微轮廓


微轮廓 由于Java EE当前的繁重,许多公司都需要微服务来开发一套轻量级的规范,这项工作已经完成了-2016年9月, MicroProfile 1.0发布了。 最初,该集合仅包含三个规范( CDIJAX-RSJSON-P )。 要求逐渐增加;到3.0版,规范列表已大大增加。

不行规格书MicroProfile版本
1.01.11.21.31.42.02.12.23.0
1个CDI1.21.21.21.21.22.02.02.02.0
2设定档1.01.11.21.31.31.31.31.3
3容错能力1.01.01.11.11.12.02.0
4健康状况1.01.01.01.01.01.02.0
5杰克斯2.02.02.02.02.02.12.12.12.1
6杰森1.01.01.01.0
7杰森1.01.01.01.01.01.11.11.11.1
8JWT授权1.01.01.11.11.11.11.1
9指标1.01.11.11.11.11.12.0
10开放API1.01.01.01.01.11.1
11公开追踪1.01.11.11.21.31.3
12键入安全休息客户端1.01.11.11.11.21.3

当前,有些Web框架在不同程度上满足MicroProfile的要求。 选择了其中七个进行演示,以下是框架版本与MicroProfile版本的对应关系。 有关实现MicroProfile的所有现有框架的完整信息,请参见 此处
不行构架MicroProfile版本
1.01.11.21.31.42.02.12.23.0
1个汤美7.1.08.0.0-M18.0.0-平方米8.0.0-M3
2吊床2.0
3棘尾2.1.0
决赛
2.3.0
决赛
2.4.0
决赛
2.5.0
决赛
4库穆鲁兹2.1.02.5.23.0.03.2.03.2.03.2.03.2.03.5.0
5Payara微174181182183183191192
6开放自由17.0。
0.3
18.0。
0.1
18.0。
0.3
18.0。
0.3
18.0。
0.4
19.0。
0.3
19.0。
0.7
7海利顿0.9.41.01.2.01.2.01.2.01.2.01.2.0

微型档案1 第一组框架包括在MicroProfile 1.0发行时已经存在的框架: TomEE (第一个版本于2012年4月发布), Hammock (2014年2月), Thorntail (先前称为WildFly Swarm ,2016年1月)和KumuluzEE (2016年4月)。 大多数情况下,通过从现有产品中删除所有多余的信息,使他们符合新的一组规范。 使用示例在模块helloworld-web-microprofile-tomeehelloworld-web-microprofile-hammockhelloworld-web-microprofile-thorntailhelloworld-web-microprofile-kumuluzee中

微型档案2 第二组框架包括出现在MicroProfile 第一版之后的框架: Payara Micro (2017年7月), Open Liberty (2017年9月)和Helidon (2018年9月)。 对于这些框架,相反的情况成为可能-从实施之初,例如, Helidon专为符合MicroProfile 开发,因此它的组成没有多余。 在模块helloworld-web-microprofile-payarahelloworld-web-microprofile-openlibertyhelloworld-web-microprofile-helidon模块中可以看到构建应用程序的示例

Servlet容器和应用服务器


Web应用程序在实现相关规范的专用软件(例如Servlet API )中执行。 以下是目前最受欢迎的servlet容器和应用服务器。 受欢迎程度的百分比也来自研究结果(问题20)。
不行Servlet容器,应用程序服务器初版日期最后稳定版本日期人气,%
家庭名称
1个雄猫雄猫11/19982019年8月17日41
2汤美04.20122019/06/21
3博斯Jboss EAP1999年2019/01/2215
4野蝇1999年2019/07/03
5码头20002019年8月14日9
6Weblogic服务器11/19972017年8月30日6
7网络圈WebSphere应用服务器1998年2019年04月02日5
8开放自由09.20172019年8月14日
9玻璃鱼Glassfish服务器2005年6月6日2019/01/285
10Payara服务器2014年10月31日2019年8月29日

时间轴在表中显示每个软件产品的寿命。 您可以看到它们的出现顺序以及最新版本的发布时间。



现在,在部署和发布应用程序时使用越来越多的容器化,因此应用程序服务器的使用变得越来越不相关。

在应用程序中使用Java以外的语言


近来,存在创建混合应用程序的趋势,作为其中包含Java代码的组件之一。 根据以Java编程语言为主要主题的Java杂志的趋势,在20171月/ 2月发行的主编栏中,宣布了“ The Polyglot Future”,并将其包含在JavaScript语言关注的区域中。

在上面已经提到的问题16中的研究中,他们对JVM应用程序中使用了哪些非JVM语言感兴趣。 领导者(57%)是前端使用的JavaScript 。 鉴于某些Web应用程序根本没有GUI (服务,微服务,服务)的事实,我们可以放心地说Java应用程序中的图形界面使用JavaScript框架已很普遍。



今天的典型Java应用程序示例


为了演示带有图形界面的典型Java Web应用程序 ,编写一个程序其中模拟了Twitter的基本功能 :身份验证,帐户管理(创建,编辑,删除,按子字符串搜索),主页(帐户属性,消息提要),创建推文,订阅/取消订阅。

后端使用Spring Boot编写,前端使用流行的Angular JavaScript框架编写 。 在应用程序的Java部分中,最大程度地表示了Spring系列的组件: Spring MVCSpring BootSpring SecuritySpring TestSpring Boot Admin 。 后端REST API使用Swagger呈现。

JUnit , Spring Test , Mockito , TestContainers (unit- Java -) Jasmine Protractor (unit- end-to-end- JavaScript Angular ).

( Spring Boot Angular ) , TechTrain 2019 .

结论


Java , -, . , , , , .

, , GitHub : , .

JUG Ru Group
春季
  • 叶夫根尼·鲍里索夫(Evgeny Borisov)的“开膛手的春天”(JPoint 2014视频演示
  • «Spring Data? , !», ( Joker 2014 : , )
  • «Spring Puzzlers: Spring», ( Joker 2014 : )
  • «Spring Puzzlers — », ( JPoint 2015 : , )
  • «The Bootiful Application», Josh Long ( Joker 2015 : , )
  • « Spring Boot Starter», ( JPoint 2016 : , )
  • «Spring – », ( JPoint 2017 : , )
  • « Spring Test», ( JPoint 2017 : , )
  • «Boot yourself, Spring is coming», ( Joker 2017 : )
  • « Spring 5/Reactor», ( Joker 2017 : )
  • «Spring Framework 5.0 on JDK 8 & 9», Juergen Hoeller ( JPoint 2018 : , )
  • «Spring Framework 5: feature highlights and hidden gems», Juergen Hoeller ( JPoint 2018 : , )
  • «Camel microservices with Spring Boot and Kubernetes», Claus Ibsen ( JPoint 2018 : , )
  • «Spring Boot Xtend: c », ( JPoint 2018 : , )
  • «Boot yourself, Spring is coming», ( JPoint 2018 : 1 2 , )
  • «Spring Boot 2: release notes», ( Joker 2018 : , )
  • «The Proxy fairy and the magic of Spring», Victor Rentea ( JPoint 2019 : , )
  • « Spring Boot, : AOT- Spring-», ( JPoint 2019 : , )
  • «Reactive reactive, », ( JPoint 2019 : , )
  • « Spring Boot- Java 8 11: ?», ( JPoint 2019 : , )

Play :
  • «50 Play!», ( Joker 2015 : )

Vaadin :
  • « — web UI Java desktop-», ( JPoint 2018 : , )
  • « Vaadin Flow», ( JPoint 2019 : , )

Vert.x :
  • «Vert.x: », ( Joker 2015 : )
  • «Vert.x: », ( Joker 2016 : , )
  • « Vert.x », ( JPoint 2018 : , )

Micronaut :
  • «Micronaut vs Spring Boot, ?», ( Joker 2018 : , )

MicroProfile :
  • «Microprofile.io: », ( Joker 2018 : , )

Java JavaScript :
  • «JavaScript in the nterprise», Markus Eisele ( Joker 2014 : , )
  • «Java(Script) on JVM», ( Joker 2015 : )


UPD : Quarkus ( helloworld-web-quarkus ) ActFramework ( helloworld-web-actframework ), .. 39.

25-26 2019 - Java- Joker 2019 , 1 .

8-9 2019 JavaScript- HolyJS 2019 Moscow , 1 .

Source: https://habr.com/ru/post/zh-CN453468/


All Articles