现场实操破解开发瓶颈,「2023 百度云智大会·智算大会 开发者沙龙」不容错过! 了解详情
写点什么

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

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

关注

评论 1 条评论

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

工赋开发者社区 | MES与ERP/APS/PLM等的系统集成技术

工赋开发者社区

WebKit三件套(3):WebKit之Port篇

zhoulujun

从java到JavaScript(2):对比Java/Go/Swift/Rust看Dart

zhoulujun

Java JavaScript dart

性能最快的代码分析工具,Ruff 正在席卷 Python 圈!

Python猫

Python

LeetCode 精粹

Joseph295

WebKit三件套(1):WebKit之WebCore篇

zhoulujun

Webkit JavascriptCore WebCore

藏在VPU里的玲珑棋局

脑极体

AI VPU

GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并

zhoulujun

GIS GeoJSON

Hex Tech,一个带编程协同能力的 BI 平台的“危”与“机”

CnosDB

数据库 时序数据库 开源社区 CnosDB

gis经纬度坐标转换多格式兼容:支持字符串/数组/GeoJSON

zhoulujun

GIS GeoJSON 经纬度坐标转换

差的自动化测试的问题是没有人注意

测吧(北京)科技有限公司

测试

JS引擎(2):Java平台上JavaScript引擎—Rhino/Nashorn概述

zhoulujun

JavaScript引擎 Nashorn Rhino

云计算的三种模式IaaS/PaaS/SaaS/BaaS对比:SaaS架构设计分析

zhoulujun

Taro架构构析(2):Taro 设计思想及架构

zhoulujun

从java到JavaScript(1),看Dart:对比Java/Go/Swift/Rust

zhoulujun

Java JavaScript swift rust dart

ZBC 荣登OKX涨幅榜前列,生态持续发力是关键

西柚子

JS引擎(1):JS引擎擂台赛,JavaScript引擎的特征比较及术语科普

zhoulujun

JavaScript JavaScript引擎 引擎擂台赛

软件测试 | 可测试性是可视性和控制

测吧(北京)科技有限公司

测试

WebKit三件套(2):WebKit之JavaScriptCore/V8

zhoulujun

Webkit JavascriptCore

Django笔记五之字段类型

Hunter熊

Python django field 字段类型

百度高德地图行政区域边界GeoJSON数据获取并绘制行政区域

zhoulujun

百度地图 高德地图

Taro架构构析(1):多端框架分析,Taro WePY uni-app对比

zhoulujun

wepy taro uni-app

百度高德地图JS-API学习手记:地图基本设置与省市区数据加载

zhoulujun

百度地图 高德地图

软件测试捕获回放失败

测吧(北京)科技有限公司

测试

WebKit网页布局实现(0):基本概念及标准篇

zhoulujun

Webkit

协同编辑:Google Wave架构分析

zhoulujun

Google Wave 协同编辑 Google Wave Federation

性能测量工具-DevTools/PageSpeed/LightHouse

zhoulujun

DevTools PageSpeed LightHouse 性能测量工具

React Native UI界面还原,组件布局与动画效果

zhoulujun

Weex原理及架构剖析

zhoulujun

Weex ReactNative weex-vue-framework

GitHub Pulse 是什么?它是否能衡量 OpenTiny 开源项目的健康程度?

Kagol

开源 Vue 前端 UI组件库

GIS拓扑讲解点线面几何体的拓扑关系判断及运算分析_turf案例

zhoulujun

GIS Turf.js

  • 扫码添加小助手
    领取最新资料包
J2CL:一款将Java编译成JavaScript的工具_语言 & 开发_Dustin Schultz_InfoQ精选文章