写点什么

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

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

    阅读完需:约 3 分钟

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

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

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

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

关注

评论 1 条评论

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

SAP UI5 数据绑定中的工厂函数

汪子熙

SAP Fiori SAP UI5 ui5 11月月更

探知数字化研发1-前言篇

薛飞

数字化 软件研发

Python进阶(二十六)多线程实现同步的四种方式

No Silver Bullet

Python 多线程 11月月更

Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击

西柚子

就这一次!带你彻底搞清MySQL行级锁的加锁规则

Java永远的神

MySQL 数据库 索引 Java 面试题

MySQL事务底层原理和MVCC机制

盐咔咔

MySQL 数据库 MVCC 11月月更

聚焦银行APP用户体验,易观千帆GX指数即将独家首发

易观分析

易观

Java实现List中集合的元素进行排序

共饮一杯无

Java List 11月月更

玩转MySQL表之间的各种连接查询

盐咔咔

MySQL 数据库 11月月更

玩转子网划分和超网汇聚

盐咔咔

网络 子网划分 11月月更 超网汇聚

CSS学习笔记(六)

lxmoe

CSS 前端 学习笔记 11月月更

Python进阶(二十五)Python读写文件

No Silver Bullet

Python 文件读写 11月月更

Python进阶(二十九)Python时间&日期&时间戳处理

No Silver Bullet

Python 日期处理 11月月更

Redis Cluster 数据分片

月明风清

redis redis cluster 数据切片

部署和体验Helm(2.16.1版本)

程序员欣宸

Kubernetes Helm 11月月更

湖仓一体电商项目(七):业务需求和分层设计及流程图

Lansonli

湖仓一体电商项目 11月月更

湖仓一体电商项目(八):业务实现之编写写入ODS层业务代码

Lansonli

湖仓一体电商项目 11月月更

汽车产业“芯事”何解?

易观分析

汽车芯片

计算机网络:随机访问介质访问控制之令牌传递协议

timerring

令牌桶 11月月更

运维进阶训练营 -W03H

赤色闪电

运维

JVM 引用数据类型分析

Andy

湖仓一体电商项目(六):大屏可视化工具腾讯云图

Lansonli

湖仓一体电商项目 11月月更

定了,2022双11 技术进化开启新未来

阿里技术

双11

Vue基础学习(四)

Studying_swz

Vue 11月月更

Vue基础学习(五)

Studying_swz

Vue 11月月更

opensd开源啦 !这套自动化部署OpenStack工具你值得拥有

openEuler

开源 操作系统 openEuler OpenStack

Java Web(五)Web

浅辄

tomcat javaWeb 11月月更

涨姿势了,这 4 个场景可用 CSS 完全取代 JS ~

掘金安东尼

前端 11月月更

【LeetCode】分割数组Java题解

Albert

算法 LeetCode 11月月更

麒麟信安携手 openEuler 支撑国家电网首批数字换流站试点项目安全高效运行

openEuler

设计模式之美-面向对象对比面向过程有哪些优势?面向过程过时了吗?

GalaxyCreater

设计模式

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