CheerpJ 3:HTML5和WebAssembly新技术实现浏览器Java虚拟机

2023-05-28 0 842

CheerpJ 3:HTML5和WebAssembly新技术实现浏览器Java虚拟机

现今随著HTML5和WebAssembly的兴起,在插件端同时实现富应用程序的各式各样机能成了一类可能将,用BS替代现代的CS将会显得极难和高效率,那时他们就如是说一类在插件中同时实现高效率运转原生植物Java的控制技术架构CheerpJ。

CheerpJ可同时实现在插件中点对点运转大批原生植物Java插件和小程序。运转全然在应用程序展开,除国际标准 HTTP 伺服器以外不须要任何人服务端模块。他们那时就深入细致自学呵呵相关CheerpJ或其第三代版CheerpJ 3的机能展望未来。

简述

CheerpJ是Leaning Technologies明确提出的一类控制技术计划,CheerpJ同时实现了以最轻的不懈努力高效率地运转虚拟世界的Java插件,其主要就主要就包括如下表所示机能:

无须源码: CheerpJ不须要出访源码,因此在.class 和.jar 文档中的 Java二进制码等级运转。对服务器端库、倚赖项和标识符混为一谈都不能有负面影响。

同时实现Java高阶机能: 任何人Java制造插件和OpenJDK 运转时这类,都全力支持采用散射、多处理器和运转时聚合的类,比如说同时实现lambdas/invokedynamic和全权等。

全然容抗OpenJDK:CheerpJ如前所述一般不能的OpenJDK自然环境,与YakJVM较之,确保在插件上具备完全相同的犯罪行为。它主要就包括很多模拟层以确保磁盘、互联网、列印、配置文档和很多其它模块点对点组织工作。

构架升级

CheerpJ 3:HTML5和WebAssembly新技术实现浏览器Java虚拟机

CheerpJ 2已经取得非常好的效果,但是存在一些问题:

执行模型:为了同时实现其性能,CheerpJ主要就包括一个AOT编译器,该编译器为原始插件的每个.jar文档聚合一个优化的.jar.js。这些文档由CheerpJ在运转时连同对应的.jar一起加载,并用于加速执行。事实证明,该模型难以理解、部署和集成。在CI设置中添 CheerpJ须要作为后处理步骤,很难在他们受控自然环境中运转实际的AOT编译器二进制文档。

对ClassLoaders的有限全力支持:将Jav 类名解析为二进制码可以在运转时通过ClassLoaders控制。AOT 编译模型并不真正兼容这种等级的灵活性。AOT编译模型在处理多个jar包中重复的类时也很脆弱,对于日志库(log4j、slf4j)来说很常见。

启动时间和下载大小:Java插件在添加倚赖项方面往往非常自由,有时会在运转时仅采用几个类时发送整个.jar。在当前的CheerpJ模型中,这会导致很多jar和jar.js文档在运转时被下载、解析和执行,这会减慢插件的启动速度。

运转时全力支持仅限于Java 8:在CheerpJ中添加对Java 9 和更高版运转时版的全力支持的主要就障碍是 Java“Yak”方法的同时实现(通过 JNI),这将须要为每个附加版展开相当大的重复组织工作/颠覆运转时。

为了整体方法来解决所有这些问题,通过从头开始重新设计CheerpJ构架,同时利用从如前所述插件的x86软件包CheerpX中吸取的经验教训。

新的CheerpJ构架的主要就特点是:

放弃AOT,采用JIT编译:CheerpJ 3.0 具备全然透明的多层执行模型,它从一个用于很少采用的标识符的快速解释器开始,并结合一个用于频繁采用的标识符的 JIT 编译器。 有了这个新模型,就不能为未采用的类执行或聚合任何人标识符,从而提高了启动性能。因为没有AOT编译器,也没有.jar.js文档,现在集成部署CheerpJ 3.0就是在已有的HTML页面上加几行。

完整的类加载器全力支持:新的JIT方法模仿了JVM 的正常运转方式,现在可以全然控制适当的类加载器以展开类解析,主要就包括插件提供的类加载器。这也全然消除由重复类引起的不兼容抗。

一类新的可扩展JNI构架:新架构将100%的OpenJDKYak标识符编译为 WebAssembly,为全力支持现代版的Java和可能将的特定点版(如果用户须要)提供了可行的途径。这也意味着 CheerpJ 现在采用全然一般不能的OpenJDK版,进一步扩展了其兼容抗等级。

由于这些构架上的进步,CheerpJ 3.0 可以被认为是 JVM 的全然如前所述 WebAssembly 的替代品,具备完整的 OpenJDK 运转时。

在线测试

CheerpJ 3.0 目前仍在开发中,但它已经足够稳定,目前可以通过JavaFiddle:一个全然应用程序的自然环境,可以在插件中编译、运转和共享Java标识符。在线演示利用java编译器这类是用Java编写,因此也可以在CheerpJ中运转。

演示地址:javafiddle.leaningtech.c0m(请将0修改为o)

虫虫执行了一个Hello,Chongchong的 SwingSwing应用,结果如下表所示。

CheerpJ 3:HTML5和WebAssembly新技术实现浏览器Java虚拟机
举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务