针对微服务架构优化企业Java

Eclipse MicroProfile计划是在JavaOne 2016上发起的,JavaOne是服务器供应商和Java用户组的创意,目的是解决企业Java微服务领域的缺点。 Java EE的发布速度减慢到无法应对Swift发展的微服务趋势的挑战的程度。 MicroProfile通过将个人,供应商和社区组织进行开放式协作来解决此问题,从而为EE生态系统提供微服务。

什么是Eclipse MicroProfile?

MicroProfile指定了Java EE API和技术的集合,它们共同构成了核心基准微服务,旨在提供跨多个运行时的应用程序可移植性。

MicroProfile 1.0规范包括30多个Java Enterprise规范的子集,它们是:用于RESTful端点的JAX-RS 2.0,用于扩展和依赖项注入的CDI 1.1,以及用于处理JSON消息的JSON-P 1.0。 为什么只是这三个? 这是因为这表示构建微服务所需的API最少。

预计2.0版将更加广泛,并计划包含积压的部分功能,这些功能包括:配置,通过JSON Web令牌 (JWT)进行的安全性,运行状况检查, JSON绑定 ,监视,OpenTracing和容错功能。 另外,它将使所有API与Jav​​a EE 8保持一致。

许多受人尊敬的服务器供应商都提供运行时。 支持MicroProfile架构的是:IBM的WebSphere Liberty , Tomitribe的TomEE, Payara ,RedHat的WildFly Swarm和KumuluzEE 。

社区支持来自伦敦的Java社区和SOUJava以及许多个人谁给他们的时间和精力。

Eclipse MicroProfile的动机

Java EE的成熟已导致发行节奏减慢,这对于微服务社区来说太慢了。 但是,这并没有阻止Java Enterprise技术用于开发微服务,实际上,Java EE中的微服务已经做了很多努力。

每个供应商都在就正确的微服务方式实施自己的见解,这个空间变得越来越分散。 显然,如果不寻求凝聚力,那么供应商分散是不可避免的结果。 因此,在更好地进行微服务的指导下,厂商和用户组之间进行了协作。

随着Java EE的完整配置文件变得如此庞大,最后有30多个API,在构建被称为“ micro”的东西时,尤其是当您不打算使用这些API中的绝大多数。 必须找到一种更苗条,更好的解决方案。

目标

在这些动力中,有四个压倒一切的目标,所有参与开源项目的人都力求追求。 这些目标可以概述如下:

避免在供应商和实现者之间分散,以解决对微服务空间采用统一方法的需求。 通过微服务的通用策略,这导致服务器供应商之间的微服务互操作性。

通过懒惰的共识快速构建,以允许快速开发和迭代。 这导致了高频发布节奏,满足了社区快速周转的需求。

通过Eclipse组织的框架在Java EE空间中创建更多开源技术。 当这些技术转移到JSR格式时,这允许组织充当规范领导者。

最终目标是为Java社区流程 (JCP)提供规范请求 (JSR),该规范请求由开发人员和企业可以依赖并实际需要的明智方法和实现来支持。

MicroProfile尝试从Java EE技术的角度理解微服务,而不是与Oracle竞争,而是在边缘进行创新并向JSR反馈。

1.沙盒开放贡献方法

Eclipse MicroProfile具有一种独特的开放贡献方法,该方法允许通过MicroProfile沙箱存储库立即启动。 您只需派生沙盒存储库 ,创建一个不同的子目录,编写您的想法,并提交所需的任意数量的拉取请求,以探究提案背后的概念。

即使尚未活跃在社区中,任何人都可以通过这种方式做出贡献。 这种方法提供了零进入门槛,并允许任何有志于做出贡献的人捕捉想法。

不断发展您的想法是毫不费力的。 在社区论坛上启动一个新线程以宣布您的想法,并等待几天(72小时)以收集反馈。 考虑并响应反馈,进行适当更新,并在不适用反馈时提供理由。 一旦您的想法被接受,就可以通过懒惰的共识,将您的贡献迁移到其自己的存储库,在该存储库中开始进行规范,API和测试套件的工作。

如果您不想一个人工作,可以在Google网上论坛中公开表达您的想法,以寻求社区的支持。 这是所有讨论发生的地方。 您可以找到其他有相同兴趣并愿意在您的想法上与您合作的人。

2.挑战人们对Java EE的重要性的看法

传统上对Java企业版的看法是,它笨重,笨重且部署缓慢,这在它的早期生命中都是如此,但是由于Eclipse MicroProfile的努力,这种看法正在成功地受到挑战。

在MicroProfile Eclipse开发人员资源页面上,可以找到体系结构会议应用程序键代码示例,您可以使用该示例代码来自行测试MicroProfile Java EE应用程序的轻量级特性。 如果您没有时间,请观看此精彩的演讲 。

关键代码示例包括四个微服务和一个前端应用程序。 在演示中,每个微服务都是使用MicroProfile体系结构开发的,并部署在四个参与的供应商的服务器之一上。

一个maven插件将应用程序编译为WAR,并将其与服务器运行时一起打包为JAR。 它使用java -jar命令通过命令行启动。 查看下表,您会发现JAR大小很小,启动时间也很短。 这些数字使任何其他Java EE框架都可以赚钱。

供应商 微服务 JAR大小/ Mb 启动时间/秒
WebSphere自由 会议投票 35 7
苍蝇群 届会 65岁 6
帕亚拉 会议时间表 33 5
汤姆 扬声器 35 3

每个供应商的实现都利用服务器体系结构的优势来优化部署。 例如; IBM的WebSphere Liberty使用“功能”来选择所需的Java EE技术并打包应用程序所需的内容。 WildFly Swarm使用“分数”来“调整大小”服务,以确保部署中仅包括所需的API。

所有供应商的共同特点是优化了打包部署的方式。 仅包含足够的代码即可使其工作,从而可生成最小大小的超级JAR。

3.高节奏释放哲学

不同版本之间的Java EE发行周期通常需要数年,对于标准驱动的生态系统来说,这是完全正确的。 标准组织不是为了创新而是为了标准化而存在。 一旦将其充实并证明可以工作,他们就会收集经过验证的想法。

尝试在标准组织内部进行创新会挫败陷阱,事实证明这是灾难性的。 CMP(容器管理的持久性)是委员会猜测人们想要的东西并弄错了它时发生的事情的一个示例。

微服务的世界瞬息万变,对于社区来说,多年的发布周期太长了。 MicroProfile的目标是通过缩短周期并使其更具迭代性来对此进行改进。 这个想法是尝试建议,看看什么有效,什么无效,然后以“快速迭代,快速失败”的过程进行。 坏主意很快就会被淘汰,只留下好主意。 随着技术的成熟,可以将它们提交给JCP,以供将来的JSR考虑。

缩短发布周期的目的是经常交付某些东西,即使这只是一个主意。 比提出很多想法要晚两年,这被认为是更可取的。

MicroProfile当前计划的发行版在Eclipse MicroProfile网站上公开宣布。

4.在所有阶段都完全透明

事实证明,导致社区真正想要的解决方案的指导思想是完全透明。 这是Eclipse MicroProfile采取的方法。 所有讨论都是在Google网上论坛进行的,所有讨论都在这里开始并蓬勃发展,任何人都可以发表评论或提出新想法。

每两周进行一次Google Hangouts,这是整个过程不可或缺的一部分,欢迎所有人参加会议。 他们会在社区论坛上提前宣布, 会议记录会以Google文档的形式发布,以供所有人查看。

在Eclipse Project网站上认可了贡献者,在该站点上,谁是最大的个人和组织贡献者以及哪个公司成员最活跃,这一点是透明的。

5. CDI中心编程模型

上下文和依赖注入规范是Java EE生态系统中功能最强大,功能最丰富的规范之一,并且经常被其他API所利用。

它最强大的两个功能是拦截器和观察器。 拦截器执行与业务逻辑正交的跨领域任务,例如审计,日志记录和安全性。 开发人员需要的各种微服务属性的基本功能。

内置事件通知模型实现了观察者模式,以提供功能强大且轻量级的事件通知系统,可以在整个系统范围内利用该事件通知系统。

在这些功能之上,您可以获得服务器和客户端的预期分离(依赖注入的本质)以及整个CDI规范,包括定义bean的生命周期,类型安全注入,范围,生产者方法,限定符和完整服务提供者的能力。允许第三方集成的接口(SPI)。

显而易见,为什么选择此API作为基准Java EE微服务的核心依赖项。

如何参与?

参与其中再简单不过了。 跳至Google网上论坛 ,选择一个可以调整您的兴趣的话题,然后开始阅读和评论。 喜欢说话吗? 然后参加每两周一次的Google Hangouts并表达自己。 如果您有尚未讨论的功能想法,那么为什么不启动线程并获得一些反馈。 如果您想深入一探,则可以派生microprofile-sandbox存储库并进行编码。 您无法介入其中。

您要点击的链接

  • Eclipse MicroProfile演示
  • Eclipse MicroProfile文章
  • Eclipse MicroProfile 1.1版本

进一步阅读

我已经发表了更多有关Java EE的文章。   以下是您可能感兴趣的主题的简短列表:

  • Java EE:过去,现在和未来
  • 上下文和依赖注入 (CDI)
  • 企业Java Bean (EJB)
  • JSP,JSP和表达语言
  • RESTful Web服务
  • Java Persistence API简介 (JPA)
  • 什么是JAX-RS批注?
  • @Context注释用于什么?
  • JAX-RS @Consumes和@Produces批注
  • Bean验证失败管理

学到更多

如果您想了解有关Java EE的更多信息,请尝试我的Lynda.com视频培训课程。 它们涵盖了多种Java EE技术:

  • 使用JAX-RS 2.0的RESTful服务
  • 使用Java EE进行WebSocket编程
  • 使用Java EEJSON处理
  • 学习Java企业版

翻译自: https://www.javacodegeeks.com/2017/09/eclipse-microprofile-5-things-need-know.html

Eclipse MicroProfile:您需要了解的5件事相关推荐

  1. Oracle加入Eclipse MicroProfile项目

    Oracle在决定将Java EE技术的管理权移交给开源Eclipse基金会并创建EE4J项目之后,现在加入了Eclipse MicroProfile项目. \\ MicroProfile是企业级Ja ...

  2. 微软 azure_在Microsoft Azure上运行Eclipse MicroProfile

    微软 azure 在本文中,我将通过展示如何在Microsoft Azure Web Apps for Containers中执行操作来跟踪有关在Oracle Cloud中运行Eclipse Micr ...

  3. 在Microsoft Azure上运行Eclipse MicroProfile

    在本文中,我将通过展示如何在Microsoft Azure Web Apps for Containers中执行操作来跟踪有关在Oracle Cloud中运行Eclipse MicroProfile应 ...

  4. Eclipse MicroProfile简介

    Enterprise Java由两个角色定义:一方面是Spring,另一方面是Java Enterprise Edition. Java EE规范集是在Oracle的领导下由Java Communit ...

  5. MicroProfile变成了Eclipse MicroProfile

    MicroProfile致力于为企业级Java提供微服务的标准,最初是由社区倡导的,目前它加入了Eclipse基金会,成为了一个Eclipse项目.此举是为了保证MicroProfile依然是独立于厂 ...

  6. Java中有关Null的9件事

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

  7. 【杂谈】提升写代码效率不得不做的三件事

    想成为一个优秀的AI算法工程师必须要熟练使用Linux,这是学习AI的一个基础,如果你一直还在用Windows,那就很low了.本文我们聊聊提升写代码效率不得不做的三件事. 作者&编辑 | 汤 ...

  8. [转]Tomcat启动错误的几件事

    2019独角兽企业重金招聘Python工程师标准>>> 第一件事:新建项目时在Dynamic web module version栏里选了最新的3.0版本,部署时报错: Tomcat ...

  9. 零基础如何学习Java?你要注意的8件事

    随着社会信息的发展,Java技术已经无处不在,无论是手机软件.手机Java游戏还是电脑软件等,只要你使用到电子产品就会碰到和Java有关的东西,更多的企业正采用Java语言开发网站.那零基础如何学习J ...

最新文章

  1. CUBLAS_STATUS_ALLOC_FAILED CUDA_ERROR_OUT_OF_MEMORY
  2. 精通python要多久-小白到精通python要多久
  3. ORM框架之------Dapper,Net下无敌的ORM
  4. 基于SignalR的消息推送与二维码描登录实现
  5. MySQL配置文件my.cnf中文版(转载)
  6. String ,StringBuilder,StringBuffer
  7. webdynpro view navigation - the same as Webclient UI
  8. 设备 esp32_ESP32-S2 SoC、模组、开发板全面上市
  9. Android Resource介绍和使用
  10. strcpy_s、sptintf_s与strcat_s的使用
  11. Java多线程编程递增_java多线程编程之简介
  12. 整数数组按绝对值排序
  13. 麦步手表编程纪实(1)
  14. 正则表达式 re模块
  15. 【转】两个算法题,感觉挺有意思
  16. linux配置MYSQL慢查询的一些错误解决方案
  17. Android中ListActivity的使用和在ListView中添加图片文字
  18. 转载python3爬虫(2)下载有固定链接的视频
  19. 解决登录vCenter提示“当前网站安全证书不受信任“
  20. XJOI_3571_求十位数

热门文章

  1. 屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python
  2. JS 获取浏览器、显示器 窗体等宽度和高度
  3. Maven精选系列--三种仓库详解
  4. 第三章选择结构(一)
  5. 基于持久化的wordcount程序 foreachRDD
  6. 转:SparkConf 配置的用法
  7. jvm(2)-OutOfMemoryError 异常(内存溢出异常)
  8. java 栈 队列 接口_Java队列接口
  9. 文档 修订 非修订区别_修订和不变性
  10. jdk12源代码文件_在JDK 11中启动单文件源代码程序