写点什么

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

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

关注

评论 1 条评论

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

在线医疗 | 眩晕智能语音问诊技术解决方案

擎声科技

RTC 实时音视频 语音通话 在线医疗 擎声Qtt

数字化时代CRM新的发展方向

力软低代码开发平台

有个大神把牛客网的Java面试笔记在GitHub开源了

收到请回复

大数据 架构 语言 & 开发 开发技术

defi质押dapp智能合约系统开发代码逻辑

开发微hkkf5566

代码diff服务改进方案

转转技术团队

测试平台开发 codediff工具

OceanBase&ChunJun联合Meetup丨邀您齐聚杭州,共享开源盛会

袋鼠云数栈

案例 | 拯救Larrakia

澳鹏Appen

人工智能 数据库 nlp 语音识别 数据标注

北京前端培训学习怎么选择

小谷哥

CSDN 报告:阿里云容器服务成为中国开发者首选

阿里巴巴中间件

阿里云 云原生 云原生容器

直播预告|FeatureStore Meetup V4携手第四范式 & 腾讯 & 微软大咖讲师,共探特征平台实践

星策开源社区

微软 腾讯 Feature Store 特征平台 MLOps

Python自学教程5-字符串有哪些常用操作

和牛

Python 测试 8月月更

活动预告(29日)|诚邀您参与AWS & 观测云「可观测性体验日」

观测云

开源交流丨批流一体数据集成框架ChunJun数据传输模块详解分享

袋鼠云数栈

袋鼠云思枢:数栈DTinsight,创新升级,全新出发,驶入数智转型新赛道

袋鼠云数栈

EPPlus - 用于 .NET 的 Excel 电子表格

辣么大

Excel net 8月月更

Python自学教程4-数据类型学什么

和牛

Python 测试 8月月更

解析 RocketMQ 业务消息--“顺序消息”

阿里巴巴中间件

阿里云 RocketMQ 云原生 消息队列

A tour of gRPC:08 - gRPC 反射 与 Evans 客户端

BUG侦探

gRPC RPC protocolBuffer

运营小能手看过来,龙蜥社区招募 5 名校园大使!(另兑换功能上线啦)

OpenAnolis小助手

龙蜥社区 礼品 开发者激励 校园大使 贡献兑换

web前端程序员学习靠谱吗?

小谷哥

一加和OPPO是什么关系?我来揭秘

Geek_8a195c

java程序员培训学习靠谱吗

小谷哥

大数据学习好还是自学的效果好?

小谷哥

OceanBase 4.0:当我们谈单机分布式一体化架构时,我们在说什么?

OceanBase 数据库

尹博学:OceanBase Cloud正式开服,助力全球中小企业数智化升级

OceanBase 数据库

推荐这几款好用的IDEA插件,一定不要错过

(-0 , +0)

IDEA 插件 8月月更

社区疫情防控小程序源码

清风

源码 计算机毕业设计

IoT设备消息洪峰怎么扛? 阿里云AIoT消息队列深度解读——实践类

阿里云AIoT

nosql 算法 物联网 存储 消息中间件

零基础参加web前端培训薪资怎么样

小谷哥

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