返回顶部
首页 > 资讯 > 精选 >Oracle推出轻量级Java微服务框架Helidon的示例分析
  • 600
分享到

Oracle推出轻量级Java微服务框架Helidon的示例分析

2023-06-19 10:06:16 600人浏览 泡泡鱼
摘要

oracle推出轻量级Java微服务框架Helidon的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。近日,Oracle 推出 了一个新的开源框架&

oracle推出轻量级Java微服务框架Helidon的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

近日,Oracle 推出 了一个新的开源框架 Helidon ,该项目是一个用于创建基于微服务的应用程序的Java库集合。和 Payara Micro 、 Thorntail (之前的 WildFly Swarm )、 OpenLiberty 、TomEE 等项目一样,该项目也加入了MicroProfile家族。

Helidon最初被命名为J4C(Java for Cloud),其设计以简单、快速为目标,它包括两个版本:Helidon SE 和 Helidon MP 。Helidon SE提供了创建微服务的三个核心apiWEB服务器、配置和安全,用于构建基于微服务的应用程序,不需要应用服务器。Helidon MP支持用于构建基于微服务的应用程序的MicroProfile 1.1规范。

Web服务器

nodejs和其他Java框架的启发,Helidon的Web服务器是一个异步、反应性API,运行在 Netty 之上。 WebServer 接口包括对配置、路由、错误处理以及构建 度量和健康 端点的支持。

下面的示例代码演示了如何启动一个简单的Helidon Web服务器,在一个随机可用的端口上显示“ It works! ”:  

// 在一个随机可用的端口上启动服务器public void startWebServerUsingRandomPort() throws Exception {    WebServer webServer = WebServer           .create(Routing.builder()                   .any((req,res) -> res.send("It works!" + "\n"))                   .build())           .start()           .toCompletableFuture()           .get(10,TimeUnit.SECONDS);    System.out.println("Server started at: Http://localhost:" + webServer.port() + "\n");    webServer.shutdown().toCompletableFuture();    }

配置

配置组件 Config 加载和处理键/值格式的配置属性。在默认情况下,配置属性将从定义好的 application.properties 或 application.yaml 文件中读取,它们位于 /src/main/resources 目录下。

下面的示例代码基于前面的例子构建,它演示了如何使用 Config ,通过读取 applications.yaml 文件获得指定的端口启动Web服务器。  

// application.yamlserver: port: 8080 host: 0.0.0.0 // 在application.yaml预定义的端口上启动服务器public void startWebServerUsingDefinedPort() throws Exception {    Config config = Config.create();    ServerConfiguration serverConfig = ServerConfiguration.fromConfig(config.get("server"));    WebServer webServer = WebServer           .create(serverConfig,Routing.builder()                   .any((req,res) -> res.send("It works!" + "\n"))                   .build())           .start()           .toCompletableFuture()           .get(10,TimeUnit.SECONDS);    System.out.println("Server started at: http://localhost:" + webServer.port() + "\n");    webServer.shutdown().toCompletableFuture();    }

安全

类 Security 为身份验证、授权和审计提供支持。已经有许多用于Helidon应用程序的 安全提供程序 实现。有三种方法可以将安全性内置到Helidon应用程序中:从构建器、通过配置或者是前两者的结合。

下面的示例代码演示了如何构建 Security 实例、使用 Config 获取用户身份验证(使用加密密码)并显示服务器时间。

// application.yamlhttp-basic-auth: users:   login: "mpredli"   passWord: "${CLEAR=somePassword}"   roles: ["user","admin"] Config config = Config.create();Security security = Security.builder()       .config(config)       .addProvider(...)       .build();String user = config.get("http-basic-auth.users.login").asString();String password = config.get("http-basic-auth.users.password").asString();System.out.println("\n");System.out.println("INFO: user = " + user);System.out.println("INFO: password = " + password);SecurityTime time = SecurityTime.builder().build();time = security.getServerTime();System.out.println("INFO: server time = " + time.toString());System.out.println("\n");

GitHub

提供了更详尽的安全示例。

Helidon的架构

下面的架构图显示了Helidon SE和Helidon MP的关系。

Oracle推出轻量级Java微服务框架Helidon的示例分析

下图说明了Helidon SE和Helidon MP所属的微服务框架类别。

Oracle推出轻量级Java微服务框架Helidon的示例分析

入门指南

Helidon提供了 快速入门示例 来演示Helidon SE和Helidon MP之间的区别。

下面的Maven和Java命令将生成并打包Helidon SE示例,使用Helidon的Web服务器创建一个REST服务。

$ mvn archetype:generate -DinteractiveMode=false \    -DarchetypeGroupId=io.helidon.archetypes \    -DarchetypeArtifactId=helidon-quickstart-se \    -DarchetypeVersion=0.10.1 \    -DgroupId=io.helidon.examples \    -dartifactId=quickstart-se \    -Dpackage=io.helidon.examples.quickstart.se $ cd quickstart-se$ mvn package$ java -jar target/quickstart-se.jar

下面的Maven和Java命令将生成并打包Helidon MP示例,使用MicroProfile的JAX-RS API创建一个REST服务。

$ mvn archetype:generate -DinteractiveMode=false \    -DarchetypeGroupId=io.helidon.archetypes \    -DarchetypeArtifactId=helidon-quickstart-mp \    -DarchetypeVersion=0.10.1 \    -DgroupId=io.helidon.examples \    -DartifactId=quickstart-mp \    -Dpackage=io.helidon.examples.quickstart.mp $ cd quickstart-mp$ mvn package$ java -jar target/quickstart-mp.jar

一旦服务器开始运行,就可以执行下面的命令

在 gitHub 上可以找到整个Helidon项目。

Oracle的高级软件开发经理 Dmitry Kornilov 向infoQ介绍了这个新项目。

InfoQ:是什么给了甲骨文开发这个新微服务框架的启发?

在此我向大家推荐一个架构学习交流君羊。交流学习君羊:821169538  里面会分享一些资深架构师录制的视频录像:有springmybatis,Netty源码分析高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多。

Dmitry Kornilov:有关Helidon的工作已经开始一段时间了。当创建云服务的微服务体系结构开始变得非常流行时,开发体验也需要改变。Java EE是一种稳定的技术,但是它有很多遗留代码。我们没有在Java EE上构建微服务,我们意识到,我们需要一个从头开始设计的构建微服务的新框架。Helidon就是这样出现的。

InfoQ:与OpenLiberty、Thorntail、Payara Micro和TomEE等其他MicroProfile实现相比,Helidon有什么独特之处?

Kornilov:Helidon不仅仅是一个MicroProfile实现。它有两个版本:Helidon SE和Helidon MP。

Helidon SE构成了Helidon的核心。它是一组轻量级的库,其中的库可以单独使用,但如果一起使用,就可以满足开发人员创建微服务的基本需求:配置、安全和Web服务器。它带来了一种开发人员喜欢的更现代的反应性方法。我们总是尽力明确:不使用注入“魔法”,使Helidon SE应用程序易于调试。没有特殊的jar格式,没有特殊的类加载器。你的应用程序只是一个普通的Java SE应用程序。这也意味着,它与所有IDE兼容,不需要特殊的插件

Helidon MP是我们的MicroProfile实现,它以Helidon SE为基础构建——它不是派生自某个应用服务器。因此,没有部署模型,没有Java EE打包,没有你不需要的额外的东西。

InfoQ:为什么实现的是MicroProfile 1.1规范,而不是一个更新的版本?

Kornilov:Helidon的开发在一段时间之前就开始了,我们决定坚持使用当时最新的MicroProfile版本。我们正在不断地改进Helidon,对新的MicroProfile版本的支持很快就会到来。

InfoQ:接下来,尤其是在Jakarta EE支持和MicroProfile规范较新版本的支持方面,Helidon将开展哪些工作?

Kornilov:我已经提到过,我们正致力于对MicroProfile较新版本的支持。当新的Jakarta EE 规范出现时,我们将参与它们的开发并在Helidon中支持它们。此外,我们计划向Helidon添加Oracle Cloud集成特性、HTTP客户端支持、项目启动器Web应用,并不断改进我们的示例和文档。

看完上述内容,你们掌握Oracle推出轻量级Java微服务框架Helidon的示例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Oracle推出轻量级Java微服务框架Helidon的示例分析

本文链接: https://lsjlt.com/news/295305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle推出轻量级Java微服务框架Helidon的示例分析
    Oracle推出轻量级Java微服务框架Helidon的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。近日,Oracle 推出 了一个新的开源框架&...
    99+
    2023-06-19
  • node.js express mvc轻量级框架的示例分析
    这篇文章主要介绍了node.js express mvc轻量级框架的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。其实逻辑没什么可以...
    99+
    2024-04-02
  • 新浪开源轻量级分布式RPC框架motan简单示例解析
    目录前言概述功能简单调用示例在pom中添加依赖为调用方和服务方创建公共接口编写业务接口逻辑、创建并启动RPCServer创建并执行RPCClient集群调用示例使用CONSUL作为注...
    99+
    2024-04-02
  • java开发分布式服务框架Dubbo暴露服务的示例分析
    小编给大家分享一下java开发分布式服务框架Dubbo暴露服务的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Dubbo服务暴露机制前言在进行服务暴露机制的分析之前,必须谈谈什么是URL,在Dubbo服务暴露过程中...
    99+
    2023-06-25
  • Java微服务应用测试的示例分析
    小编给大家分享一下Java微服务应用测试的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! package com.jeanron.licensesservice.domain; public class Licen...
    99+
    2023-06-04
  • java开发分布式服务框架Dubbo原理机制的示例分析
    这篇文章给大家分享的是有关java开发分布式服务框架Dubbo原理机制的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言在介绍Dubbo之前先了解一下基本概念:Dubbo是一个RPC框架,RPC,即Re...
    99+
    2023-06-25
  • Java的任务调度框架cron4j 2.2.5发布的示例分析
    Java的任务调度框架cron4j 2.2.5发布的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。cron4j 2.2.5 发布了,主要改进有:Predictor ...
    99+
    2023-06-17
  • vue框架与koa框架通信及服务器跨域配置的示例分析
    这篇文章将为大家详细讲解有关vue框架与koa框架通信及服务器跨域配置的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前后端框架(本例中是vue和koa)如何发送...
    99+
    2024-04-02
  • 众OEM厂商助阵微软推Foundation版服务器系统的示例分析
    这期内容当中小编将会给大家带来有关众OEM厂商助阵微软推Foundation版服务器系统的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  中国北京 2009年4月27日—微软(中国)有限公司今天...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作