发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

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

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

关注

评论 1 条评论

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

Nebula Graph 在众安金融的图实践

NebulaGraph

图数据库 知识图谱 保险业

在线MarkDown转HTML工具

入门小站

工具

在线Javascript压缩工具

入门小站

工具

HAVE FUN|Layotto 源码解析

SOFAStack

GitHub 开发者 活动 源码解析 源码剖析

模块一作业

Kevin

架构实战营

AI工具-标注工具labelme

AIWeker

人工智能 标注工具

Linux之fgrep命令

入门小站

Linux

java高级用法之:JNA类型映射应该注意的问题

程序那些事

Java Netty 程序那些事 3月月更

轨物范世:华为手机的影像哲学

脑极体

Linux下搭建简易的HTTP服务器完成图片显示

DS小龙哥

3月月更

从一起Linux云主机无法远程ssh登录故障说起

天翼云开发者社区

【技术干货分享】一文了解Nginx反向代理与conf原理

Linux服务器开发

nginx 负载均衡 反向代理 后端开发 Linux服务器开发

如何实现Spring Gateway 路由的动态加载和刷新?

领创集团Advance Intelligence Group

微服务 Spring Cloud API api 网关

5 款阿里常用代码检测工具,免费用!

阿里云云效

云计算 阿里云 代码审查 研发 代码检测

将 AWS S3 数据迁移至 TiDB Cloud 集群

TiDB 社区干货传送门

玩转天翼云安全组

天翼云开发者社区

钉钉宜搭受邀参加第三届中国计算机教育大会,发布低代码产学合作计划

一只大光圈

低代码 数字化 钉钉宜搭 计算机教育 CECC

《Mybatis 手撸专栏》第2章:创建简单的映射器代理工厂

小傅哥

源码分析 小傅哥 mybatis

模块一:微信业务架构图&学生管理系统架构设计

jiaoxn

「架构实战营」

Q1过去了,Gartner战略技术趋势在不动产领域落了几项?

大数据 技术 低代码 AIOT 分布式,

windowsXP用户无法远程桌面连接天翼云2008云主机

天翼云开发者社区

轻轻松松实现本地和云主机之间的文件上传下载

天翼云开发者社区

AI目标检测概要

AIWeker

人工智能 目标检测

天翼云云主机上搭建FTP服务最佳实践

天翼云开发者社区

什么是需求管理,产品如何进行需求管理

阿里云云效

云计算 阿里云 需求管理 持续交付 产品研发

Flutter 路由参数处理

岛上码农

flutter ios开发 Android开发 移动端开发 3月月更

[Day4]-[二分查找] 查找数组元素位置

方勇(gopher)

LeetCode 数据结构与算法

企业怎么制作帮助文档

小炮

企业 帮助文档

编辑一天编辑多少篇文章合适?

源字节1号

SEO 网站开发

Kubernetes官方java客户端之一:准备

程序员欣宸

Kubernetes java client

适合 Kubernetes 初学者的一些实战练习 (四)

Jerry Wang

Kubernetes 云原生 Kubernetes 集群 Serverless Kubernetes 3月月更

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