AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

J2CL:一款将 Java 编译成 JavaScript 的工具

  • 2019-05-27
  • 本文字数:916 字

    阅读完需:约 3 分钟

J2CL:一款将Java编译成JavaScript的工具

J2CL是一个开源的编译器,可以将 Java 编译成 JavaScript,由谷歌设计、开发和开源。J2CL 开发者称这款编译器”可以在 JavaScript 应用程序中无缝地使用 Java“。它想要解决的问题与其他 Java-JavaScript 框架(如 GWT)想要解决的问题不一样,也不想与其他框架展开竞争或者取代其他框架,它旨在提升跨平台代码重用性和互操作性。J2CL 开发者说”借助 J2CL,你可以在 JavaScript 中访问 Java 代码,或者直接用它创建整个应用程序,具体取决于你的实际需求“。


这个工具具备很强的灵活性,可以通过多种方式来使用它。其中一个使用场景是让运行在多个平台上的复杂逻辑可以被跨平台共享。例如,J2CL 前贡献者之一 Thomas Deegan 说,”Google Docs 的前端代码使用 Java 编写,然后使用 J2CL 将所有文档操作和渲染逻辑从 Java 编译成 JavaScript“。还有一种使用场景是在 Node.js 应用程序中重用 Java 库。


J2CL 可以编译大多数已有的 Java 代码,但并非支持所有的 Java API(比如 Java 反射 API)。默认情况下,编译后的代码不是公开的,JsInterop提供的一些 Java 注解可用来标注哪些类、方法、实例变量等可以被暴露出来。这个项目提供了一些简单的”hello world“示例来演示如何使用它。下面对这个示例进行了细微的修改,演示了如何在 JavaScript 中被注解的 Java 类。


下面是 Java 类:


package com.acme
import jsinterop.annotations.JsType;
@JsTypepublic class HelloWorld { public static String getHelloWorld() { return "Hello from Java!"; }
复制代码


}


在 JavaScript 中使用这个类:


const HelloWorld = goog.require('com.acme');console.log(HelloWorld.getHelloWorld());
复制代码


这个项目的开发者表示,这个工具已经可以用在生产环境中,并且已经是”谷歌多个 GSuite 应用程序的底层技术,包括 GMail、Inbox、Docs、Slides 和 Calendar“。


这个项目在去年开源,但项目可以追溯到 2014 年。J2CL 最初与 GWT 项目有关,2015 年初,开发者认为它不应该是 GWT 项目的一部分,并把它剥离出来成为一个独立的项目。这个项目目前还不能与其他工具集成,对 Windows 的支持也很有限。


更多信息可以访问项目的GitHub主页或者入门指南


查看英文原文J2CL: A Java to JavaScript Transpiler


2019-05-27 00:0015009
用户头像

发布了 731 篇内容, 共 468.7 次阅读, 收获喜欢 2007 次。

关注

评论 1 条评论

发布
用户头像
看别的文章说也不支持网络API,感觉实用性瞬间下去一大半
2019-05-27 00:55
回复
没有更多了
发现更多内容

关于低代码这件事儿

互联网工科生

低代码 应用开发 可视化开发

优雅编码!Java与MongoDB的创新数据库架构

树上有只程序猿

Java mongodb 优雅编码

汇聚开源力量,赋能软件发展,开放原子开源基金会携开源展区亮相软博会,开源展区现场引关注!

开放原子开源基金会

开源

OpenAI公司说它是“实现通用人工智能最有前途方法之一”

博文视点Broadview

龙蜥携手平头哥完成算能 SG2042 平台支持,推动 RISC-V 持续向高性能应用演进

OpenAnolis小助手

芯片 risc-v 龙蜥社区 平头哥 2023 RISC-V 中国峰会

Apache Doris 2.0.1 & 1.2.7 版本正式发布!

SelectDB

数据库 大数据 优化 apache 社区

安全攻防丨反序列化漏洞的实操演练

华为云开发者联盟

安全 开发 华为云 华为云开发者联盟 企业号9月PK榜

row_number函数的不稳定性

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号9月PK榜

总投入超5000万元的开源大赛火热报名中

开放原子开源基金会

开源

软件测试/测试开发丨Selenium Web自动化测试 高级控件交互方法

测试人

Python 程序员 软件测试 自动化测试 selenium

网线,是选圆线还是扁线?什么材质优选?

小齐写代码

什么样的家庭条件,现在还招人?

赵新龙

TGO鲲鹏会 招聘

孙文龙理事长参加第二十五届中国国际软件博览会开幕式并发表主题演讲

开放原子开源基金会

墨迹天气黄耀海:深耕气象技术并与服务场景深度融合,AI全面激活气象服务的跃迁

极客天地

RabbitMQ 如何实现延迟队列?

王磊

Java Java面试题

2023最新大数据传输慢的真正原因与对应解决方案

镭速

大文件传输 大数据传输

点对点传输技术在智能交通中的应用:实现车辆间的实时通信

镭速

大文件传输 点对点文件传输

Wasm软件生态系统安全分析

OpenHarmony开发者

OpenHarmony

打造次世代分析型数据库(一):CDW PG全面升级

腾讯云大数据

数据库

校源行丨2023开放原子校源行开源大使名单

开放原子开源基金会

Databend 开源周报第 109 期

Databend

一文读懂GPU的十个重要参数

Finovy Cloud

gpu GPU服务器 GPU渲染

软件测试/测试开发丨Python 数据结构与算法

测试人

Python 程序员 软件测试 测试开发

小灯塔系列-中小企业数字化转型系列研究——固定资产管理测评报告

向量智库

愿意折腾、相信未来的年青人,都在2050

赵新龙

TGO鲲鹏会 2050

J2CL:一款将Java编译成JavaScript的工具_语言 & 开发_Dustin Schultz_InfoQ精选文章