活动邀约 | 5月24日来交流AGI时代数据资产如何价值最大化? 了解详情
写点什么

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

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

关注

评论 1 条评论

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

Spring+多线程+集合+MVC+数据结构算法 +MyBatis源码学习笔记分享

Java架构之路

Java 程序员 架构 面试 编程语言

8张图带你分析Redis与MySQL数据一致性问题

Java架构师迁哥

WSL还是不错的

孙苏勇

WSL2 工具链 wsl

查漏补缺:166个最常用的Linux命令,哪些你还不知道?

小Q

Java Linux 程序员 操作系统 开发

架构师训练营第 1 期 - 第七周作业

Todd-Lee

极客大学架构师训练营

目标检测之YOLOv2

Dreamer

架构师训练营 - 第 7 周课后作业(1 期)

阿甘

区块链将颠覆和改变传统金融业底层逻辑

CECBC

区块链 数字经济

一定要偷偷学,偷偷进步!腾讯内部首发Java多线程、高并发、设计模式“满级”笔记

Java架构追梦

Java 架构 面试 设计模式 多线程与高并发

架构师训练营 1 期第 7 周:性能优化(一)- 作业

piercebn

极客大学架构师训练营

Fedora32安装和卸载openjdk11

ilovealt

Linux Openjdk

Week 7 作业一

黄立

GitHub上最火的SpringCloud微服务商城系统项目,附全套教程

Java架构之路

Java 程序员 架构 面试 编程语言

https 握手失败问题排查全记录

程序员与厨子

nginx https 网络 HTTP 抓包

科学家联合提出基于区块链的追溯框架

CECBC

区块链 农业

LeetCode题解:231. 2的幂,位运算取二进制中最右边的1,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

爆火!阿里P9用500多页手册搞定双十一高并发秒杀系统,绝了

996小迁

Java 架构 面试 高并发 秒杀系统

week3 代码重构 学习总结

杨斌

架构师训练营第 1 期 - 第七周总结

Todd-Lee

极客大学架构师训练营

架构师训练营 - 第三周课后练习

joshuamai

穿越时空的回响:华为欧洲创新日的蝴蝶振翅

脑极体

三、设计模式

Geek_28b526

读完Java名著《Effective Java》: 我整理了这50条技巧

Java架构之路

Java 程序员 架构 面试 编程语言

架构师训练营 1 期第 7 周:性能优化(一)- 总结

piercebn

极客大学架构师训练营

极客大学 - 架构师训练营 第七周作业

9527

Week 7 性能优化总结

黄立

区块链追溯系统迎来新突破

CECBC

区块链 溯源 产品溯源

week3 代码重构 -作业一

杨斌

在Idea中使用JUnit单元测试

jiangling500

单元测试 IDEA JUnit

架構師訓練營第 1 期 - 第 07 周總結

Panda

架構師訓練營第 1 期

工作1-3年的程序员,应该具备怎么样的技术能力?该如何提升?

Java架构师迁哥

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