Oracle推出轻量级Java微服务框架Helidon
ccwgpt 2024-09-29 09:48 23 浏览 0 评论
近日,Oracle推出了一个新的开源框架Helidon,该项目是一个用于创建基于微服务的应用程序的Java库集合。和Payara Micro、Thorntail(之前的WildFly Swarm)、OpenLiberty、TomEE等项目一样,该项目也加入了MicroProfile家族。
Helidon最初被命名为J4C(Java for Cloud),其设计以简单、快速为目标,它包括两个版本:Helidon SE和Helidon MP。Helidon SE提供了创建微服务的三个核心API:Web服务器、配置和安全,用于构建基于微服务的应用程序,不需要应用服务器。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.yaml server: 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.yaml http-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的关系。
下图说明了Helidon SE和Helidon MP所属的微服务框架类别。
入门指南
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:是什么给了甲骨文开发这个新微服务框架的启发?
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应用,并不断改进我们的示例和文档。
相关资源
- Helidon起飞(Dmitry Kornilov,2018年9月7日)
- Oracle发布新的Java微服务框架(John Waters,2018年9月10日)
- 微服务从入门到部署 第一部分:Helidon入门(Todd Sharp,2018年10月3日)
查看英文原文:Oracle Introduces Helidon - A Lightweight Java Microservices Framework
相关推荐
- 想快速上手Python网络爬虫?这份实战指南你不能错过!
-
以下是关于Python网络爬虫实战的详细指南,涵盖基础知识、常用工具、实战案例及注意事项:一、爬虫基础概念1.什么是网络爬虫?o通过自动化程序从网页上抓取并提取数据的工具。o核心步骤:请求网...
- python爬虫怎么副业接单
-
其实这个问题也挺重要的,花了时间花了经历去学了python爬虫,本想靠着这个技能去补贴家用或者挣点零花钱,但是发现有时候的单子是自己力所不能及的,有的东西真的是不会,又或者不知从何下手。那么这篇文章主...
- 用Python写了一个图像文字识别OCR工具
-
人生苦短,快学Python!在之前的文章里,我们多次尝试用Python实现文本OCR识别!今天我们要搞一个升级版:直接写一个图像文字识别OCR工具!引言最近在技术交流群里聊到一个关于图像文字识别的...
- taskPyro:为 Python 任务与爬虫插上自动化翅膀的开源利器
-
在数据驱动的时代,无论是数据采集、ETL流程,还是定期的系统维护脚本,高效、可靠的任务调度成为了许多开发者和运维人员的刚需。特别是对于Python开发者而言,如何优雅地管理和调度日益增多的爬虫任...
- 网络爬虫:Python动态网页爬虫2种技术方式及示例
-
作者:糖甜甜甜https://mp.weixin.qq.com/s/5Dwh5cbfjpDfm_FRcpw1Ug这一讲,我将会为大家讲解稍微复杂一点的爬虫,即动态网页的爬虫。动态网页技术介绍动态网页爬...
- 30个小时搞定Python网络爬虫(全套详细版)
-
【课程介绍】适用人群1、零基础对Python网络爬虫感兴趣的学员2、想从事Python网络爬虫工程师相关工作的学员3、想学习Python网络爬虫作为技术储备的学员课程目标1、本课程的目标是将大家培养成...
- python爬虫常用工具库总结
-
说起爬虫,大家可能第一时间想到的是python,今天就简单为大家介绍下pyhton常用的一些库。请求库:实现基础Http操作urllib:python内置基本库,实现了一系列用于操作url的功能。...
- 玛森:Python爬虫书籍推荐
-
Python爬虫书籍推荐什么?玛森科技徐老师介绍,网络爬虫现在很火,不管业内人士或业外人士,大家对爬虫或多或少都有一些了解,网络爬虫通俗的讲,就是通过程序去互联网上面爬取想要的内容,并且爬取的过程...
- 如何入门python爬虫?
-
1.很多人一上来就要爬虫,其实没有弄明白要用爬虫做什么,最后学完了却用不上。大多数人其实是不需要去学习爬虫的,因为工作所在的公司里有自己的数据库,里面就有数据来帮助你完成业务分析。什么时候要用到爬虫呢...
- 爬虫修炼手册,Python爬虫学习入门Scrapy
-
爬虫就如同江湖中的神秘侠客,应运而生,成为了我们获取数据的得力助手。爬虫,正式名称是网络爬虫(WebCrawler),也被叫做网页蜘蛛、网络机器人,它是一段神奇的计算机代码,能够自动在互联网的信息...
- 如何入门 Python 爬虫?
-
1.很多人一上来就要爬虫,其实没有弄明白要用爬虫做什么,最后学完了却用不上。大多数人其实是不需要去学习爬虫的,因为工作所在的公司里有自己的数据库,里面就有数据来帮助你完成业务分析。什么时候要用到爬虫呢...
- 有了这4张思维导图,带你Python(爬虫)轻松入门
-
刚接触Python爬虫,该怎么学更有效?指南君给大家带来了这四张思维导图。非常适合刚开始学Python爬虫的同学用于回顾知识点、巩固学习情况等。话不多说,快来学习Python爬虫入门的最强干货吧!P...
- python爬虫教程之爬取当当网 Top 500 本五星好评书籍
-
我们使用requests和re来写一个爬虫作为一个爱看书的你(说的跟真的似的)怎么能发现好书呢?所以我们爬取当当网的前500本好五星评书籍怎么样?ok接下来就是学习python的正确姿...
- 超实用!Python 在爬虫和自动化领域的 8 类工具与技术大盘点
-
Python在爬虫和自动化领域拥有丰富的工具库和框架,以下是一些常用工具和技术的分类整理,帮助你高效实现数据抓取和自动化任务:1.基础HTTP请求库oRequestso简洁的HTTP库...
- 学习Python的第四天之网络爬虫
-
30岁程序员学习Python的第四天之网络爬虫的Scrapy库Scrapy库的基本信息Scrapy库的安装在windows系统中通过管理员权限打开cmd。运行pipinstallscrapy即可安...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)