写点什么

用 Java 开发 Web 应用,替代方案研究

  • 2019-06-06
  • 本文字数:1701 字

    阅读完需:约 6 分钟

用Java开发Web应用,替代方案研究

随着编译到 JavaScript 语言的日益普及,对于熟悉 Java 虚拟机(JVM)语言并希望开发 Web 应用程序但不想掌握复杂的 JavaScript 开发技术栈的开发人员来说,他们有了越来越多的 JavaScript 替代方案可选择。最近发布的对使用 GWT、TeaVM、JSweet、CheerpJ、Vaadin Flow 框架搭建的应用程序性能和有效负载特性的分析表明,与原生 JavaScript Web 应用程序相比,它们的性能差距正在缩小。


Java 开发人员Renato Athaydes最近对JVM替代方案和JavaScript进行了比较。作为比较参照物的目标应用程序是一个简单的计数器,它使用React JavaScript 前端库实现:



这个计数器应用程序分别使用GWTTeaVMJSweetCheerpJVaadin Flow五种 Java 框架实现。这五种 Java 替代方案和原生 JavaScript 应用程序之间的比较遵循了一种简单的方法论:使用 Java 或框架提供的最基本的工具创建计数器应用程序,然后测量应用程序的大小和性能。应用程序大小通过浏览器的网络(Network)选项卡获取(计算所有类型的资源,避免偏向依赖大量非 JavaScript 资源的框架)。利用谷歌 Chrome 内置的Lighthouse审计工具来衡量性能。 LightHouse 的性能分数根据六个加权指标进行评估,这六个指标按照重要程度排序为:可交互时间速度指标首次内容绘制首次CPU空闲首次有效绘制预计输入延迟时间


根据 Lighthouse 的报告,JSweet 和 TeaVM 在首次内容绘制(First Contentful Paint,FCP)测量上击败了原生 JavaScript React 应用程序。谷歌报告表明,首次内容绘制是“测量从请求页面到浏览器渲染 DOM 第一个比特位的时间。这对用户来说是一个重要的里程碑,因为它提供了页面实际加载的反馈”。虽然大多数框架都获得了 LightHouse 评定为良好的全局性能分数(> 90,最高为 100),但是与其他框架相比,CheerPJ 性能表现不佳。



在很大程度上,我们可以通过生成的 JavaScript 大小来解释 Java 框架排名结果:



Java 框架按照生成 JavaScript 大小从小到大的顺序排列,和上述按照性能排列顺序相同。能得出这样的结果是意料之中的,因为浏览器解析生成 JavaScript 的时间与大小成正比,与性能成反比。


该项研究不包括J2CL,J2CL 是谷歌最近推出的Java到JavaScript转换器。此外,该研究依托于一个简单的 Web 应用程序。虽然测评结果不能推广到大型 Web 应用程序,但它仍然可以用于分析该项研究中涉及的 Java 框架之间的差异。


例如,CheerPJ 的大尺寸和糟糕的性能可以用这样一个事实来解释:它不是一个真正的 Java 到 JavaScript 的转换器,因为它将完整的 Java 运行时发送给了浏览器。从好的方面来说,CheerPJ 允许开发人员使用已编译且包含 Swing 应用程序的 jar,无需插件直接在浏览器中运行。


GWT(2006 年发布)是一种成熟的开源技术,谷歌广告就使用了 GWT。 GWT 附带了一系列用于界面构建的小部件和面板。


TeaVM 声称是 Java 字节码的前置编译器,它可以在浏览器中运行 JavaScript 和WebAssembly。 TeaVM 不需要源代码,只需要编译后的类文件,而且不要求源代码是 Java 编写的,因此 TeaVM 可以编译KotlinScala


Jsweet 自称是 Java 到 TypeScript/JavaScript 的转换器,具有 1000 多个 Java 可用的 JavaScript 库。 Jsweet 声称允许开发人员使用 JavaScript 访问使用 Java 生成的 API/对象,而无需额外的工具或运行时。然而,Jsweet 并不能完全模拟 Java。在某种程度上,可能需要修改现有的 Java 应用程序,特别是那些使用 Java 特定 API 编写的应用程序,如用于用户界面的 Swing。


Vaadin Flow 是一组用于使用 Java 构建 Web 应用程序的组件和工具。 Vaadin Flow 提供了内置的Spring支持,支持 WebSocket 的自动服务器端到客户端通信。 Web 应用程序可以用纯 Java 编写,也可以用 Java 和 HTML 混合编写。 Vaadin 的组件自称是移动优先的 Web 组件,可针对 UX、性能及可访问性进行微调。但是,Vaddin Flows 会向浏览器发送一个压缩后大小超过“300k(不管应用程序大小)”的客户端引擎。后者解释了 Vaadin Flow 性能曲线的表现。


该研究方法论的灵感来源于 InfoQ之前报道的博文“前端框架的实现比较“。


查看英文原文Writing Web Applications in Java - a Study of Alternatives


2019-06-06 08:0016823
用户头像

发布了 326 篇内容, 共 223.4 次阅读, 收获喜欢 616 次。

关注

评论 1 条评论

发布
用户头像
ZK都不参与对比吗,虽然它是半商业半开源的。https://blog.csdn.net/daquan198163/article/details/9304897
2019-06-06 08:53
回复
没有更多了
发现更多内容

VJ创作表演:Resolume Arena 6 for Mac中文版 含esolume arena 破解补丁

南屿

Excel复杂表头按组按行复制

alexgaoyh

Java POI 合并单元格 复杂表头 模板生成

NFTScan 与 OneID 达成合作伙伴,支持多类型 DID 搜索!

NFT Research

NFT NFTScan

2024谷歌SEO入门指南

九凌网络

软件测试学习笔记丨JMeter_实现分组并发

测试人

软件测试

区块链游戏解说:什么是 SecondLive

Footprint Analytics

区块链 加密货币 代币 NFT

iOS App审核状态和审核时间管理指南

大模型开发:从数据挖掘到智能应用

百度开发者中心

人工智能 大数据 大模型

新来的一个同事,把SpringBoot参数校验玩的那叫一个优雅

快乐非自愿限量之名

Java 前端 springboot

云API错误码的设计规则

EquatorCoco

Python 数据库 API

如何将照片组合在一起?图片照片拼接合成软件合集

南屿

照片编辑 图片拼接 照片合成

人工智能:测试开发的新宠儿

测试人

软件测试

鼠标自动点击工具 RapidClick for Mac激活最新版

南屿

Mac软件 RapidClick破解版

什么是DDOS流量攻击,DDoS防护安全方案

德迅云安全杨德俊

聚道云软件连接器:打通金蝶云星空与招商银行CBS,提升企业财务和银行业务效率

聚道云软件连接器

案例分享

秒级响应,显著增效:明日控股携手奇点云,打造大宗贸易的数据中台标杆

奇点云

数据中台 数据资产 奇点云 明日控股

基于大模型的低代码平台架构

百度开发者中心

人工智能 低代码 大模型

Mac好用的多窗格文件管理器QSpace Pro v4.0.4中文版

南屿

一个菜鸡前端的3年总结-「2023」

Immerse

【大模型】快速体验百度智能云千帆AppBuilder搭建知识库与小助手

阿Q说代码

知识库 千帆大模型平台 AppBuilder 小助手

Bartender 5 for mac自定义隐藏及显示菜单栏

南屿

一次编写,多次利用:提高 API 构建效率的技巧

Apifox

前端 后端 开发工具 Apifox API

Total Video Converter Pro超级转霸 Mac视频转换软件 v5.1.0下载

南屿

如何查看电脑性能跑分?Geekbench极客系统跑分工具

南屿

UML建模工具Astah Professional,实现逼真模型,让设计更加生动!

南屿

AE脚本-一键快速输出GIF动图格式插件 GifGun v2.0.15激活版

南屿

在 Windows 平台下安装与配置 MySQL 5.7.36

小魏写代码

用Java开发Web应用,替代方案研究_语言 & 开发_Bruno Couriol_InfoQ精选文章