精华内容
下载资源
问答
  • 由于这个原因,Java生态系统可能正处于其转型之中,以便更好地适应。 Oracle的GraalVm允许将字节代码编译为Linux可执行文件(ELF)和Rad Heat的Quarkus以及其他框架,以使其像引导一个反应应用程序一样容易。 ...

    Java曾经著名的座右铭:"一次编写并在任何地方运行"如今已经过时了,我们想要运行代码的唯一地方是在容器内。 "及时"编译器没有任何意义。

    由于这个原因,Java生态系统可能正处于其转型之中,以便更好地适应云。 Oracle的GraalVm允许将字节代码编译为Linux可执行文件(ELF)和Rad Heat的Quarkus以及其他框架,以使其像引导一个反应应用程序一样容易。 Quarkus还以Netty和Vertx.x为核心来构建非常有效的响应式Web服务。

    bbcd67bcf549d7155561518efc3a22fb.png

    > quarkus official performance stats

    Java编译为可执行的二进制文件,可在毫秒内启动,并且占用的内存很小。 这可以利用Java生态系统,甚至可以用其他JVM语言(例如Scala和Kotlin)编写!

    听起来好得令人难以置信……

    如果您不相信,可以使用在线项目生成器或通过使用maven插件在本地生成项目来玩Quarkus。

    另一方面,Golang诞生于云中,当在容器中运行时,没有留下任何负担。 它被认为是云的编程语言。 从第一天开始,小型二进制文件,快速启动程序,较小的内存占用量就可以了。 并且被广泛采用。 对Java世界的严峻挑战。

    Java有机会吗? 只有时间证明一切。 但是,出于好奇,我想将Java云原生服务与golang同类服务在性能和开发经验方面进行比较。

    在这篇文章中,我将强调两项服务。 比较他们的CPU,RAM,延迟和正常运行时间。 这些服务将在具有相同资源分配的容器中启动,并且Apache基准测试将使他们汗流sweat背。

    对于我的案例研究来说,这是一个"足够好"的基准,因为我不认为找到最佳/最差的基准结果,而是比较在相同环境下执行的两个基准。

    场景

    两种服务都将连接到在另一个容器中运行的MySQL数据库,该容器具有一个表和三行。

    976a24d84e69dfe13a90538a72f27f70.png

    > the database

    每个服务将获取所有三行,将其转换为域对象,然后编写JSON数组响应。

    Apache基准测试将运行10K请求,并发级别为100,这是quarkus JVM版本的两倍(还用于测试"冷" /"热" JVM))

    c019b3905e8fb8d51a25ad2a59d9193d.png

    > the apache benchmark command

    Golang服务

    使用称为gin的流行的反应式Web框架,该框架具有出色的基准。

    在寻找golang非阻塞MySQL驱动程序时,我一无所获,互联网上建议同时使用go-sql-driver,这就是我要使用的。

    golang样式非常明确。 一个在你脸上的态度。 主要功能启动服务器,配置请求处理程序,并打开数据库连接。

    构建本机go可执行文件

    55309c625d18cce78f5be2d6b901a500.png

    > Easy and fast build process. The only tool I had to use was the go compiler. No hustle at all.

    Kotlin Cloud本机服务— Quarkus

    这是一个Kotlin示例,大致遵循quarkus反应式MySql扩展指南。

    a69315cccabed4ea57b9a4385f79065a.png

    > datasource configuration

    与go版本相比,存在一些隐式东西,CDI依赖注入,使用javax注释的声明性路由,自动配置解析以及数据源/连接创建/服务器引导程序。 但这是使用框架的代价,它为您带来繁重的工作,并决定了它的工作方式。 但是,它比go版本要短得多,只要我不介意黑魔法就行!

    底层有一个Netty反应式Web服务器,由Vert.x多事件循环包装,而Vert.x反应式MySQL驱动程序可以通过一个线程处理多个数据库连接。

    另外,我可以使用Kotlin令人惊叹的收藏库来折叠一个列表,其中go版本还没有泛型(但即将推出),也没有丰富的标准收藏库,我不得不手动编写或生成它。

    构建Java本机可执行文件

    03155831f0eeacef576a16432e84104d.png

    > It took 4 minutes, partly because Gradle executes the native image compilation inside a Linux Graa

    基本上,我能够弄清楚构建本机可执行文件的容器中发生的事情是SubstrateVM。 设计为可提前编译的可嵌入虚拟机链接到我们的代码,并作为一个单元进行编译。 甲骨文表示,这是惊人的,但并非没有代价,SubstrateVM的优化次数少于HotSpot Vm,并且垃圾回收器更简单。

    执行此操作的编译器称为" Graal",它与语言无关,在使用Java字节码之前,需要先将其翻译为中间表示形式,即Truffle语言。 这非常有趣,可以在这篇文章中找到有关Graal和Truffle的详尽解释。

    构建Java本机图像看起来更加复杂,速度较慢,并且生成的二进制文件几乎是文件的两倍。 但这有效! 与一个Java Uber(胖)Jar相比,35M可执行二进制文件实际上是什么,它可以轻松地大十倍。 35MB甚至可以放在aws lambda中。

    强调服务

    我正在使用以下设置在本地计算机上运行所有测试:

    4a43d4a6d5452ef1413848747b958f3f.png

    不适使用:

    MacBook Pro(15英寸,2017年)

    2.9 GHz Intel Core i7(8核)

    16 GB 2133 MHz LPDDR3

    不适使用名为cAdvisor的工具来监视我的容器的状态。

    场景

    quarkus jvm热点容器

    quarkus java本机容器

    golang容器

    每个都分配了以下资源

    100MB / 0.5 CPU | 200MB / 1个CPU | 300MB / 2个CPU

    我对……感兴趣

    cpu / ram利用率(多核的利用率)

    cpu / ram峰值

    cpu / ram空闲

    引导时间

    响应潜伏时间平均值/最大值

    吞吐量(每秒请求数)

    现在,我将运行许多基准测试,并为每个基准收集许多数据点。 如果有太多信息,请随时跳至摘要结尾

    github repo以及该实验的所有代码都可以在这里找到

    quarkus jvm热点— 100MB / 0.5 CPU

    闲置CPU使用率0.25%

    空闲ram使用情况66MB

    自举时间6s

    9d8be63f7caeefc0125a856b7a4f77f9.png

    > CPU usage during bootstrap. ( a spike , probably jit + launching JVM )

    第一轮压力测试(Cold JVM)

    令人惊讶的是,没有失败的请求。

    7b59389cf2780bacafedce71aafcb24e.png

    > CPU usage during stress. d323e6714a95cd34b78fd30e2e980c55.png

    > RAM launched from 60 to almost 100 MB (limit) and stayed there.

    第2轮压力测试(温暖的JVM)

    quarkus jvm热点— 200MB / 1个CPU

    闲置CPU使用率0.13%

    空闲ram使用情况66MB

    引导时间3s

    6c2b1859782dfe9cbd242599b96cc9bb.png

    > CPU usage during bootstrap. ( a spike again )

    第一轮压力测试(Cold JVM)

    9edbd699f4f8541819296a4c4e40ec95.png

    > CPU / RAM usage under stress 212133e27f25c55540b16f97eb7b6ea8.png

    > Surprisingly the JVM did not eat all the allocated 200MB and 140MB was sufficient

    第2轮压力测试(温暖的JVM)

    quarkus jvm热点— 300MB / 2 CPU

    空闲cpu / ram与以前的方案相同

    引导时间1.1s(NICE)

    5fd71990725b05b3ccd1a4c3dbbca0ce.png

    > CPU usage during bootstrap, a spike again.

    第一轮压力测试(Cold JVM)

    04943a4f482f6c31c9dc00e4e87d67d4.png

    > Good CPU utilzation 86ef42cf7419b09492c2a5c24da4cbaf.png

    > 142 mb ram was sufficient

    第2轮压力测试(温暖的JVM)

    现在,让我们看看本地图像将如何执行。

    quarkus Java Native — 100MB / 0.5 CPU

    引导时间:0.125s。 (!!!)

    启动时没有CPU高峰

    4f75313817938e5656638fbf1d6b90a7.png

    > cpu / ram during bootstrap

    压力测试结果

    1d5e64bb7c28b2d9e6ed66898cfe72cc.png

    > CPU reached 0.5 limit as expected e91e6e89798b6de3adf7579a4d4ff61f.png

    > Good ram usage, 19MB active memory. WOW

    quarkus Java Native — 200MB / 1个CPU

    即时引导(0.0125s)

    4空闲ram用法

    在压力下使用19种内存

    100%的CPU使用率

    启动时没有CPU高峰

    检测结果

    quarkus Java Native — 300MB / 2 CPU

    没提升。

    golang — 100MB / 0.5 CPU

    空闲CPU 0

    闲置内存2.3MB(不错)

    引导时间:几分之一秒

    启动时没有CPU高峰

    结果有点歪斜。 由于某种原因,一小部分请求需要大约7秒钟才能完成。

    当再次尝试运行测试以查看偏斜结果是否能够再现测试时,实际上是否已将其压碎!

    运行时错误:无效的内存地址或nil指针取消引用。 嗯…可能是我做错了什么? 似乎go-sql库中存在错误。 如文档所述,从表中读取的代码是100%,并且99%的时间都可以工作。 这不应该发生。

    golang — 200MB / 1个CPU

    我不断收到运行时错误。 可疑总是在测试结束时。 但是,go-mysql驱动程序的校正不是主要问题,因此在完成90%的请求后手动终止测试。

    压力下的CPU / RAM使用率

    a589e74d3891cc40ad2f3f3b0a9a653b.png

    > cpu utilization during stress 207898694e0332ecca516e70368ac02b.png

    > RAM usage during stress. 12.27MB, very nice.

    golang — 300MB / 2个CPU

    没有明显的改善,所有统计数据几乎相同。 CPU利用率低于1.0。 我不知道为什么go不能充分利用更多的内核,有趣的是……可能是因为该过程受IO约束,或者可能是杜松子酒需要手动配置才能更好地利用多个内核。

    摘要

    c4f7ca4cff0b5cbadbf58c397b0b88ff.png

    > aggregated stats ( warm jvm/native image | golang )

    似乎Quarkus已准备好投入生产,它允许简单的JVM /本机发行版/开发模式,并允许在本地运行本机测试。 而且,只要您不使用反射或JNI,就可以安全地配置GraalVM。 否则,您将必须自己配置graal编译器,并且也有针对此的现有解决方案。

    延迟和吞吐量

    golang和云原生Java均产生了相似的结果,尽管平均而言稍微偏爱golang服务。 但是,java本机结果更加稳定。 Golang服务有时会在1.25µs内做出响应,而很少在7s内做出响应。

    "预热"后的JVM产生了良好的结果,但比本机或go版本差。

    CPU利用率

    当给定的内核少于单核时,go和native-java在负载下均表现不佳,而在使用2个内核启动时,它们并没有表现出明显的改进。 可能是因为工作负载受IO限制。 或者因为gin / Netty的默认配置没有考虑多个内核。

    另一方面,JVM利用了赋予它的所有内核,并在各个方面提高了性能。

    RAM使用

    压力很大,java本机为40MB,golang服务为24MB。 两种情况都不错,尽管golang版本使用的ram几乎少了两倍。

    JVM在压力下使用了140MB。 完全是官方的quarkus统计信息。 对于JVM来说一点都不差,但是几乎是golang版本的6倍。

    引导时间

    golang和云原生Java均会立即启动,而JVM版本则需要几秒钟(取决于分配的CPU),并在启动时产生CPU峰值。

    开发经验

    这更是一个宗教问题,而不是一个实际问题。如此病态,请谨慎回答。 Quarkus创建Java世界中非常熟悉的抽象(例如基于注释的DI)。它为您启动服务并创建连接池。可以使用丰富的收藏标准库和泛型。但是,这种感觉有点像黑魔法,一旦停止工作,您会感到无助。此外,将Java代码编译为本地二进制文件并不是那么简单,您必须意识到其中的局限性和注意事项,尽管Red Hat在扩展方面取得了很大的进步,但并非每个Java库都将与本地编译兼容。 。 (预先配置为本地编译的Java库)。使用与本机编译不兼容的库(例如Guice)将需要您手动配置Graal VM。这是可能的,但并非像使用广口瓶那样直接。 Quarkus和Graal VM也"相对"新。因此,有许多冒险等待着。但由于是双模式(JVM或本机)。万一本机版本停止工作,总会有一个退路,这是解决任何新出现问题的好方法。

    另一方面,Golang仅在现在(存在10年后)才承认需要泛型。 当然,它不喜欢隐性事件的继续。 从很多方面来说,这都是好事。 另外,尽管go社区在追赶方面确实做得很好,但是可用的工具和库却更少(例如,只有一个流行的阻塞MySQL驱动程序)。 另一方面,它的编译和构建过程非常快速/简单。 每个golang软件包都将为您工作,而不受Java本地平台引入的限制。

    结论

    Java成为云原生,Golang并没有像JVM那样过度地执行它,这是非常好的。 我相信它将来会被广泛使用。 但是golang绝对可以打架。

    因此,请谨慎选择!

    而且不要忘了给仙人掌浇水

    【编辑推荐】

    【责任编辑:未丽燕 TEL:(010)68476606】

    点赞 0

    展开全文
  • Eclipse基金会上个月对全球1,800多名Java开发人员进行了一项调查,以确定社区对于Jakarta EE未来的首要任务。 根据结果 ,社区希望: 支持云原生开发的平台 ... Jakarta EE是云原生Java的未来。 Jakar...

    Eclipse基金会上个月对全球1,800多名Java开发人员进行了一项调查,以确定社区在Jakarta EE的未来方面的首要任务。

    根据结果 ,社区希望:

    • 支持云原生开发的平台
    • 平台上的创新步伐更快。

    Eclipse基金会执行董事Mike Milinkovich在报告摘要中总结了Jakarta EE的未来:

    Jakarta EE是云原生Java的未来。 Jakarta EE的任务是发布更频繁,降低参与障碍并使社区重新回到平台中。 它将允许并鼓励每个人参与一个开放过程,该过程可以更准确地反映整个社区的需求。 随着它的发展,我们期望来自Eclipse MicroProfile之类的开源社区的Java创新(扩展了Jakarta EE平台)将很快被该平台的新版本采用,以帮助开发人员创建可移植的云本机应用程序。 Jakarta EE代表了驱动本地云,关键任务应用程序并在数十年的实际部署和开发人员经验基础上发展的最佳方法。

    仅供参考:

    雅加达EE社区调查结果简述

    社区调查的结果表明, Java仍然是 (在业务环境中) 使用最多的编程语言 ,并且大多数企业应用程序通常主要使用基于Java之类的框架来构建。 此外,有43.27%的受访者表示,他们生产中运行的应用程序中有80%基于Java。

    其中最有趣的(但不奇怪!)的亮点受访者几乎87%是运行Java 8和使用Java 7中我们已经谈到的Java 8的普及刚刚超过45%的事实, 这个帖子

    资料来源:《雅加达EE社区调查2018-结果》

    Java EE而言,似乎最常使用稳定性的原因稳定性 ,其次是规范,开发人员的可用性以及具有兼容实现的多家供应商。 同时,使用Java EE 最具挑战性的方面似乎是内存需求大 ,其次是缺少技术和规范。

    超过60%的受访者希望为微服务提供更好的支持,以获取Jakarta EE平台。 与Kubernetes集成以及加快创新步伐也非常重要。

    资料来源:《雅加达EE社区调查2018-结果》

    Jakarta EE,云原生Java的未来

    大约有一半的调查对象表示,只有不到20%的应用程序在可能的情况下运行,这表明将Java应用程序迁移到云上还有很长的路要走 但是,当被问及两年内将有多少百分比的Java系统将在云中运行时,超过23%的人希望将其80%以上的应用程序存储在云中。

    也就是说,我们几乎没有涉足Java的云原生未来。

    Java是否适合微服务开发? 我们之前曾问过这个问题 ,但是根据Jakarta EE的调查结果, 构建微服务的组织确实更喜欢Java ,其次是Docker和JavaScript / Node.js。 既然我们在谈论微服务,那么值得注意的是,在构建微服务时,Spring和Spring Boot框架在受访者中名列前茅,而Eclipse MicroProfile令人垂涎三尺。

    资料来源:《雅加达EE社区调查2018-结果》

    云原生Java对Jakarta EE意味着什么?

    Jakarta EE的技术未来愿景包括以下内容:

    • 增强了对微服务架构的支持
    • 迁移到Cloud Native Java,其中包括与Docker和Kubernetes等技术的更好集成
    • 加快创新步伐
    • 建立一个充满活力的开发者社区
    • 提供生产质量参考实施

    Eclipse基金会希望社区能够更好地与Kubernetes和Docker等云原生技术集成,而某些集成必须在JVM级别进行。 此外,他们希望社区能够与OpenJDK和Eclipse OpenJ9团队合作,以在这些JVM增强功能可用时在框架级别提供支持。

    在其新的治理模型下,Jakarta EE平台应快速发展,将来自Eclipse MicroProfile等开源社区的Java创新融入该平台的新版本中,以帮助开发人员创建可移植的云原生应用程序。

    最后但并非最不重要的一点是,Jakarta EE承诺更快的发布和创新周期。

    雅加达EE工作组

    在Eclipse基金会的领导下,雅加达EE 工作组将以自治权为基础,确定所有技术议程和计划。 雅加达EE工作组的创始成员是Fujitsu,IBM,Oracle,Lightbend,Payara Systems,Pivotal,Red Hat,Tomitribe和Webtide。

    雅加达EE治理结构由四个委员会组成-指导委员会,规格委员会,市场和品牌委员会以及企业需求委员会。

    有关Jakarta EE以及加入Jakarta EE工作组的更多信息,请访问www.jakarta.ee


    翻译自: https://jaxenter.com/jakarta-ee-cloud-native-java-143738.html

    展开全文
  • 云原生Java-Spring Boot、Spring Cloud与Cloud Foundry弹性系统设计.pdf
  • Jakarta EE是云原生Java的未来。 Jakarta EE开源软件推动了云原生创新,使企业应用程序现代化,并保护了对Java EE的投资。 入门 安装依赖项,构建资产并启动Web服务器: npm install hugo server 规格部分(可选...
  • 云原生java的那些事儿

    2018-05-29 03:57:03
    内容来源:2017年12月16日,京东金融数据研发负责人张亮在“数人云Meetup | 下一代微服务:ServiceMesh Is Coming”进行《云原生java的那些事儿》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经...


    内容来源:2017年12月16日,京东金融数据研发负责人张亮在“数人云Meetup | 下一代微服务:ServiceMesh Is Coming”进行《云原生java的那些事儿》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

    阅读字数:2512 | 7分钟阅读

    嘉宾演讲视频及PPT回顾:suo.im/4NIdmt

    摘要

    在微服务概念大行其道的今天,Java无疑是相关生态体系最为完善开发语言。但云原生概念的出现,更加强调异构语言的无差异化开发。那么Java的强大生态体系该如何与云原生对接,又应该做哪些取舍,最终的发展趋势如何?本次将分享一些我的看法。

    技术的演化原因

    规模的增长是带来技术演化的最主要原因,由此也带来了各方面的变化。原来适应小规模的架构设计、开发框架、运维模式,在规模逐渐增大的现状下都需要进行重新的规划。

    技术的演化方向

    在架构设计上我们一开始关注的是分层,思考的是如何在开发中将业务系统进行分层,使得业务能够解耦,易于维护。再进一步就是SOA,将原先的系统变为服务化的系统,由系统内部的访问变成跨系统的服务访问。而现在更多使用的是微服务,将服务拆分的更加复杂,通过微服务去提供系统之间的交互和架构设计。

    开发框架则由原来的单体式过度为分布式,到现在的云时代,大部分互联网公司都在使用混合云或者公有云,云原生的开发框架也就应运而生。

    运维模式从最开始的脚本化,只是在Linux上去写shell,然后上线部署基础原件。之后发展到了工具化,通过一些工具进行更加自动化的处理。到现在完全自动化已被实现。

    单体式架构 -> 分布式架构

    上图表示是由阿里开源出来的Dubbo,是一个SOA的服务化框架,它可以完成从单体式框架到垂直扩展的框架再到完全的分布式服务的拆分。

    Dubbo是点对点的服务框架,所有的服务都会注册到一个注册中心,由注册中心负责服务发现,然后由服务的消费者去做负载均衡。其实Dubbo的服务者和消费者只要互相发现了对方就会直接的去建立一个点对点的连接,所以有很高的性能。

    Dubbo的另一个优势就是完全透明化的调用,在本地调用方法和在Dubbo中调用时完全看不出区别的,因此无需去关注本地化还是透明化。

    云原生首映——Spring Cloud

    Spring Cloud提供了整套的服务化技术栈,它和Dubbo的关注点不一样,作为一个服务治理框架所包含范围比Dubbo更广。而Dubbo是有着服务治理功能的RPC框架,关注的重点是RPC和通信这块。

    由于Spring Cloud的关注点并没有在点对点的连接上,而是使用Rest API这样的APP形式调用,因此在性能上会稍微低一些,但在服务治理方面的性能就要强很多。

    运维模式改变 – 容器+编排(K8S)

    K8S被分为master和node节点,实际干活的是node,master则是用来控制执行。Spring Cloud所涉及的部分,Kubernetes都会包含。这其中进程的隔离Kubernetes能通过容器去完成,而Spring Cloud对这方面就无能为力,另外环境和资源的管理Spring Cloud也无法处理。

    可以看出Kubernetes更多的是偏向于运维,它将运维的模式集成的更自动化。

    云原生是一种模式

    云原生其实是一种模式,它要求更高的可用性和伸缩性,也就是要求应用永远不会挂掉,并且能够自动的针对流量进行扩容。另外还需要实现自动化的部署和管理,比如定时的代码上线之类的,无需运维手动的去执行脚本。最后要求达到效率提升和随处运行的目标。

    云原生十二要素

    由于不是所有的程序都能够无缝的在云平台运行,所以做云原生的程序就要满足云原生的十二要素。这些要素不会对程序进行本质上的修改,而是从另一方面进行提升,使得程序能够更容易的解除无状态的应用,同时方便随处部署和扩容。

    云原生全景图

    编排领域

    这一层所做的首先是调度,就是决定资源和应用的组合,当应用获得资源后才会真正的去运行。另一方面是编排,也就是将调度按照自己的期望去运行。

    服务治理领域

    上图中linkerd是最先提出来的Service Mesh概念的产品。而GRPC是一个跨语言并且是完全基于HTTP2协议RPC的框架,它通过双向不受干扰的长连接进行交互。

    Service Mesh – Linkerd

    Linkerd的所有服务不再是由中心节点去控制,并且它也不和服务部署在一起。从上图我们可以看出所有的服务都是通过代理方式访问,比如要通过A去访问B时,不会像Dubbo一样去直连,而是由A访问本机的Linkerd,再由这个Linkerd去连接B上的Linkerd,最后由B上的Linkerd去转发给B。这个过程中所有的代理都是由Linkerd控制,它能够将所有的流量都控制住,并且它还是完全跨语言的。

    Service Mesh – Istio

    Istio将服务治理分为了两部分,一部分是数据面板,另一部分是控制面板。数据面板主要是处理服务治理、服务发现以及网络之间的调用,也就是真正用来干活的。而控制面板又被分为3大块,pilot是用来进行任务调度用的,Mixer能够通过简单的编程接口去实现一些功能,比如黑白名单之类的,Istio-Auth则是一个权限的控制,能够将网络流量完全控制在控制面板内。

    开发和运维模式的改变

    运维模式向自动化和可视化发展,无需再手动进行操作并且能通过控制面板直接查看到流量的大致情况。开发模式则会更关注业务本身胜于功能性需求,调试模式也发生了改变,开发人员无法再直接的登录到线上环境查看应用状态,而只能通过遥感的方式操作。

    未来的趋势

    单机的操作系统将会被抛弃,取而代之的是容器调度加编排的云操作系统。裸机或者虚拟机的运行时也将会被容器取代。通信方面将会使用Service Mesh。


    展开全文
  • jakarta ee Eclipse基金会上个月对全球1,800多名Java开发人员进行了一项调查,以确定社区对于Jakarta EE未来的首要任务。 根据结果 ,社区希望: 支持云原生开发的平台 ... Jakarta EE是云原生Java...

    jakarta ee

    Eclipse基金会上个月对全球1,800多名Java开发人员进行了一项调查,以确定社区对于Jakarta EE未来的首要任务。

    根据结果 ,社区希望:

    • 支持云原生开发的平台
    • 平台上的创新步伐更快。

    Eclipse基金会执行董事Mike Milinkovich在报告摘要中总结了Jakarta EE的未来:

    Jakarta EE是云原生Java的未来。 Jakarta EE的任务是更频繁地发布,降低参与障碍并使社区重新回到平台中。 它将允许并鼓励每个人参与一个更准确地反映更广泛社区需求的开放过程。 随着它的发展,我们期望来自Eclipse MicroProfile之类的开源社区的Java创新(扩展了Jakarta EE平台)将很快被该平台的新版本采用,以帮助开发人员创建可移植的云本机应用程序。 Jakarta EE代表了驱动本地云,关键任务应用程序并在数十年的实际部署和开发人员经验基础上发展的最佳方法。

    仅供参考:

    雅加达EE社区调查结果简述

    社区调查的结果表明, Java仍然是最常用的编程语言 (在业务环境中),并且大多数企业应用程序通常主要使用基于Java等语言的框架来构建。 此外,有43.27%的受访者表示,其生产中运行的应用程序中有80%基于Java。

    其中最有趣的(但不奇怪!)的亮点受访者几乎87%是运行Java 8和使用Java 7中我们已经谈到的Java 8的普及刚刚超过45%的事实, 这个帖子

    资料来源:《雅加达EE社区调查2018-结果》

    Java EE而言,似乎是使用稳定性最常被提及的原因 ,其次是规范,开发人员的可用性以及具有兼容实现的多家供应商。 同时,使用Java EE 最具挑战性的方面似乎是内存需求大 ,其次是缺少技术和规范。

    超过60%的受访者希望为微服务提供更好的支持,以获取Jakarta EE平台。 与Kubernetes集成以及加快创新步伐也非常重要。

    资料来源:《雅加达EE社区调查2018-结果》

    Jakarta EE,云原生Java的未来

    大约有一半的调查对象表示,只有不到20%的应用程序运行在该容器中,这表明将Java应用程序迁移到云上还有很长的路要走 但是,当被问及两年内将有多少百分比的Java系统将在云中运行时,超过23%的人希望将其80%以上的应用程序存储在云中。

    也就是说,我们几乎没有涉足Java的云原生未来。

    Java是否适合微服务开发? 我们之前曾问过这个问题 ,但是根据Jakarta EE的调查结果, 构建微服务的组织确实更喜欢Java ,其次是Docker和JavaScript / Node.js。 既然我们在谈论微服务,那么值得注意的是,在构建微服务时,Spring和Spring Boot框架在受访者中名列前茅,而Eclipse MicroProfile令人垂涎三尺。

    资料来源:《雅加达EE社区调查2018-结果》

    云原生Java对Jakarta EE意味着什么?

    Jakarta EE的技术未来愿景包括以下内容:

    • 增强了对微服务架构的支持
    • 迁移到Cloud Native Java,其中包括与Docker和Kubernetes等技术的更好集成
    • 加快创新步伐
    • 建立一个充满活力的开发者社区
    • 提供生产质量参考实施

    Eclipse基金会希望社区看到与Kubernetes和Docker等云原生技术更好地集成的努力-一些集成必须在JVM级别进行。 此外,他们希望社区与OpenJDK和Eclipse OpenJ9团队合作,以在这些JVM增强功能可用时在框架级别提供支持。

    在其新的治理模型下,Jakarta EE平台应快速发展,将来自Eclipse MicroProfile等开源社区的Java创新纳入该平台的新版本中,以帮助开发人员创建可移植的云原生应用程序。

    最后但并非最不重要的一点是,Jakarta EE承诺更快的发布和创新周期。

    雅加达EE工作组

    在Eclipse基金会的领导下,雅加达EE 工作组将以自治政府的精英制为基础,该精英制将制定所有技术议程和计划。 雅加达EE工作组的创始成员是Fujitsu,IBM,Oracle,Lightbend,Payara Systems,Pivotal,Red Hat,Tomitribe和Webtide。

    有四个组成雅加达EE治理结构的委员会-指导委员会,规格委员会,市场和品牌委员会以及企业需求委员会。

    有关Jakarta EE以及加入Jakarta EE工作组的更多信息,请访问www.jakarta.ee


    翻译自: https://jaxenter.com/jakarta-ee-cloud-native-java-143738.html

    jakarta ee

    展开全文
  • 分享版 云计算与移动架构 王刚 云原生Java框架-Quarkus 【学习高人思想,提升自身能力】下载地址:点我下载 关键字:云计算 移动架构 架构师 软件架构 云原生 Java 框架 Quarkus 说 明:本资源收集于网络,如侵犯了...
  • Java EE是创建传统企业应用的重要因素,因此也需要与时俱进。Quarkus的问世为企业Java带来了光明的未来。二十年来,Java在行业编程语言排名中一直保持强势地位。这在很大程度上是我们在企业Java中,看到其不断重塑的...
  • 云原生Java应用

    2019-02-01 17:19:26
    1、路由: ... 当微服务很多,每个微服务都要修改路由规则,所以将配置配置在config server,通过zuul被触发响应实现重新加载配置 2、OATH2 授权访问Rest资源 了解SpringbootSecurity认证机制,以及Oath token获取...
  • 云原生”是我们一直听到的流行语之一,但是背后的概念似乎很模糊。 有人认为,这完全是关于虚拟化现有架构范例,以便... 云原生的真正色彩是什么,Java开发人员必须学习(或不学习)什么,为什么我们要关心云原生...
  • GitHub的Octoverse表示 ,尽管Java不是开发人员首选的云原生运行时,但它仍然是企业开发人员中普遍使用的开发语言,并且落后于其他语言。 有关Java的更多信息 什么是企业Java编程? OpenJDK的Red Hat构建 ...
  • Eclipse Codewind 是一个开源项目,可帮助开发者在他们喜欢的 IDE 中创建云原生应用程序。目前,Codewind 支持 Visual Studio Code、Eclipse IDE 和 Eclipse Che。Codewind 使您能够通过模板创建应用程序,并支持在...
  • Java Apache Apache Java Cloud Native Pivotal CNCF /cncf/toc/blob/master/DEFINITION.md 12 API https://12/ https://content.pivotal.io/ebooks/migrating-to-cloud-native-application-architectures
  • Java曾经著名的座右铭:“一次编写并在任何地方运行”如今已经过时了,我们要运行代码的唯一位置是在容器内。“即时”编译器没有任何意义。(banq注:即时启动运行变成主流目标)因此,Java生态系统可能正处于其转型之...
  • \看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上...新的治理模型基于近期对全球1800多名Java开发人员的调查情况,并将聚焦于提供对微服务、云原生应用开发和加快版本发布周期等特性的支持。\\在“Jav...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,054
精华内容 421
关键字:

云原生java

java 订阅