这个新的http包是否是common.http包的替代品
看起来是的,是的.如果你看着尼玛·马文的艺术品
<groupId>io.helidon.nima.webserver</groupId>
<artifactId>helidon-nima-webserver</artifactId>
<version>4.0.0-M1</version>
然后您会发现helidon-Common-http-4.0.0-M1.jar中有io.helidon.common.http
个包,几乎(原文如此!)是helidon-http-4.0.4.jar中io.helidon.http
的完整副本.
但不是临时替代的!看起来Helidon的作者根本不在乎可移植性这样的琐碎小事.虽然像Forwarded
这样的班级很少从io.helidon.common.http
级"按原样"转移到io.helidon.http
级,但其他一些班级也进行了重新洗牌:例如,Http.Status
级被转移到单独的Status
级.
这个新包是Helidon使用虚拟线程(即Níma)的结果吗
只是间接地这么做.如果像Helidon manual所说的那样,从3到4的主要 skip 是用阻塞调用取代异步("react 性")调用:
赫利登3号
request.content().as(JsonObject.class)
.thenAccept(jo -> doSomething(jo, response));
Helidon 4号
doSomething(request.content().as(JsonObject.class), response);
这确实是一个巨大的 skip ,但据我所知,这并不能保证将相当无辜的、类似于公用事业的一揽子计划重新洗牌为io.helidon.common.http
.相反,这是对可移植性和版本兼容性的牛仔方法的结果.
一句警告:如果您要迁移到生产环境中的虚拟线程,请注意一些与虚拟线程相关的死锁/挂起问题,在堆栈溢出中讨论了这些问题,其中大多数可重现为Java Virtual threads and ConcurrentHashMap,特别是this answer中讨论的情况.