写点什么

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

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

关注

评论 1 条评论

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

Prometheus 内置函数(二)

耳东@Erdong

Prometheus PromQL 10月月更

k8s replicaset controller源码分析(2)-核心处理逻辑分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

拆分电商系统微服务

毛先生

从华为推出仓颉编程语言引发的对编程语言的思考

轻口味

编程语言 10月月更

架构实战训练营|课后作业|模块 6

Frode

「架构实战营」

前端应用部署k8s的平滑发布问题

小江

k8s 大前端 发布流程

又真香了!到底是怎样的JAVA面试文档,拿到这么多offer

Java 编程 程序员 面试

在 Vue3中使用Fabric.js实现渐变(Gradient)效果,包括径向渐变radial

德育处主任

JavaScript 大前端 vite Vue3 FabricJS

架构实战营 - 模块六作业

en

#架构实战营

Spring 5系统架构

Tom弹架构

Java spring 架构

linux防止文件和目录被意外删除或修改

入门小站

Linux

在线文本去重统计工具

入门小站

工具

架构实战营模块6课后作业 拆分电商系统为微服务

apple

weblogic 报 java.lang.OutOfMemoryError:PermGen space

看山

Java 10月月更

k8s replicaset controller源码分析(3)-expectations机制分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

Spring版本命名规则

Tom弹架构

Java spring 架构

Vue进阶(幺肆捌):Vuex 辅助函数详解

No Silver Bullet

Vue 辅助函数 10月月更

带你认识世界上第一个以商业为中心的元宇宙 Highstreet

devpoint

区块链 元宇宙 10月月更

Generic Type Variance in Dart

Think

flutter dart 泛型

面试官:如何回答消息队列的丢失、重复与积压问题

Java 程序员 架构 面试

京东架构师珍藏版:redis深度笔记(全彩版)全篇精华,细节满满

Java 程序员 架构 面试 rediis

架构训练营第一模块作业

最后的风之子

「架构实战营」

设计原则学习笔记

风翱

设计原则 10月月更

普通本科毕业一年,刷完这1000道JAVA面试题,成功逆袭上岸

Java 编程 程序员 面试 大厂面试

官方线索|Bilibili1024程序员节

搬砖人

1024我在现场

Go 中如何使用 Interfaces

baiyutang

golang 10月月更

ARouter 拦截器之多 module 独立运行

逆锋起笔

android 组件化 arouter

分布式事务开山之作——《深入理解分布式事务:原理与实战》草图曝光!!

冰河

数据库 分布式 分布式事务 微服务 数据一致性

架构实战营模块一作业

spark99

架构实战营

架构实战营 - 模块六作业

Alex.Wu

不是吧?阿里“百万级”性能优化小册居然能让系统运行得这么快

Java 编程 程序员 性能优化

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