50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论 1 条评论

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

程序员(媛)不懂汉服?岂能让别人小看,咱先靠肉眼大数据识别万张穿搭照

梦想橡皮擦

9月日更

ECS 选款利器!PTS助您快速上云!

阿里巴巴云原生

活动 ECS TPS

Spark 系列教程(1)Word Count

Se7en

跪了!阿里官方出品Spring Security王者手册,Github获赞70k+

spring 程序员 编程语言

学习心得 - 架构训练营 - 第四课

Fm

我写了一个脚本,可在“任意”服务器上执行命令!

冰河

Java 后台开发 运维 研发效能 系统架构

Morphling:云原生部署 AI , 如何把降本做到极致?

阿里巴巴云原生

阿里云 AI 云原生 Morphling

linux之mktemp命令

入门小站

Linux

DDD领域驱动设计在团队中推广和实施

AiDaddy

模块8

Geek_35a345

Dubbo3.0|阿里巴巴服务框架三位一体的选择与实践

阿里巴巴云原生

阿里云 云原生 Dubbo3

智能世界的罗马是怎样建成的?

脑极体

前端性能优化实战(二)

Augus

JavaScript 9月日更

在线Emoji符号大全

入门小站

工具

让项目顺利上线:做好转测试与上线准备

石云升

项目管理 管理 引航计划 内容合集 9月日更

谈谈几种数据库优化方法和依据的指标

Regan Yue

数据库优化 9月日更

报名领奖|云栖大会,10月19-22日杭州不见不散!

阿里巴巴云原生

阿里巴巴 阿里云 云原生 云栖大会

25. 自动驾驶:AI最大的应用场景

Databri_AI

人工智能

缓存的弊端,你了解吗

卢卡多多

缓存 9月日更

Prometheus 2.27.0 新特性

耳东@Erdong

release Prometheus 9月日更

有人出15万要买下这份384页JDK源码笔记的版权,但被我果断拒绝,为了大家,我要开源

Java 程序员 架构 面试 计算机

架构实战营 - 模块四作业

Alex.Wu

美团一面:为什么选用Hbase,Hbase和MySQL的区别是什么?

Java MySQL 架构 面试 后端

联机数据分析OLAP:Kylin入门

正向成长

kylin

基于OpenCV+QT开发超实用的视频编辑器

轻口味

OpenCV 音视频 引航计划 9月日更

网络攻防学习笔记 Day147

穿过生命散发芬芳

风险评估

☕【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了!

码界西柚

Java 注解 jpa 使用技巧 9月日更

Canvas制作转盘和钢琴

空城机

typescript 大前端 canvas 引航计划

一个Product Owner的假设引发的思考

Bruce Talk

敏捷 随笔 Agile Product Owner

学生管理系统架构设计文档

Rabbit

阿里第三版「SpringCloudAlibaba笔记」出世,全新技术限时开源

Java 编程 架构 面试 微服务

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