2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

用 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:0017254
用户头像

发布了 553 篇内容, 共 400.0 次阅读, 收获喜欢 726 次。

关注

评论 1 条评论

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

从Swatch“辱华”风波看品牌危机应对:舆情监测为何是出海品牌的必修课?

沃观Wovision

舆情监测系统 海外舆情监测 Swatch

YashanDB安全策略及权限管理全面解析

数据库砖家

Playwright教程基础篇(2)元素定位策略大全

测吧(北京)科技有限公司

软件测试 #人工智能

全链路灰度之 RocketMQ 灰度

Apache RocketMQ

阿里云 云原生 消息队列

局域网视频软件BeeWorks,内网顺畅沟通

BeeWorks

即时通讯 IM 私有化部署

耶稣蓝队访问控制与监控脚本:Bash自动化安全实践

qife122

网络安全 蓝队

信创技术架构:自主可控体系的构建与实践路径

Byte_Me

印度软件外包业的AI大逃杀

脑极体

AI

稳中求进 以进促稳 | 光大永明资产召开2025年年中工作会议

北京中暄互动广告传媒有限公司

MySQL 自增主键满了咋办?

秃头小帅oi

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

Apache RocketMQ

阿里云 RocketMQ 云原生 消息队列

医科+AI 人才培养丨首都医科大学AI通识教育新路径探索与实践分享

ModelWhale

人工智能 AI通识教育 首都医科大学

轻量化赋能,小程序容器激活 SuperApp 生态潜能

Byte_Me

小程序 App 小程序容器 轻量化 superapp

平安保险基于 SPI 机制的 RocketMQ 定制化应用

Apache RocketMQ

阿里云 RocketMQ 云原生 中间件 消息队列

YashanDB安装部署环境要求及最佳实践

数据库砖家

【8月Meetup提前剧透】奇虎360数据专家亲授:DolphinScheduler on K8s 生产级部署避坑指南!

白鲸开源

开源 大数据任务调度 Apache DolphinScheduler Meetup 奇虎360

BeeWorks 私有化会议系统:筑牢企业会议安全防线,赋能高效协同

BeeWorks

即时通讯 IM 私有化部署

2023年YashanDB数据库流行趋势与未来展望

数据库砖家

Apache RocketMQ + Hudi 快速构建 Lakehouse

Apache RocketMQ

阿里云 RocketMQ 云原生 消息队列

在AI技术快速落地的时代,挖掘用户真实需求成为关键——某知名Windows优化工具需求洞察

qife122

需求分析 产品优化

让云主机“漂洋过海”更稳、更快、更省

天翼云开发者社区

云主机 出海 天翼云

JPA与YashanDB数据库的无缝集成及实用指南

数据库砖家

技术盘点:消息中间件的过去、现在和未来

Apache RocketMQ

阿里云 云原生 消息队列 EventBridge

烟草行政处罚案卷制作与评查平台被中国信通院认定为2025年商业产品及企业典型案例

中烟创新

新闻速递丨Altair 重磅发布:全球100 个 AI 应用案例,助力企业加速 AI 技术应用

Altair RapidMiner

人工智能 AI 仿真 CAE RapidMiner

一篇讲全当下能源行业数字化转型痛点、解决方案

袋鼠云数栈

数据治理 解决方案 AI应用 能源行业 指标建设

YashanDB安全管理指南:保障企业数据资产安全

数据库砖家

互联网 + 共享农业小程序系统:智慧农业

微擎应用市场

RocketMQ-Streams 首个版本发布,轻量级计算的新选择

Apache RocketMQ

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