JSweet:Java 到 JavaScript 的转译器
JSweet 利用 TypeScript 通过 JavaScript 库和框架用 Java 编写丰富且响应迅速的 Web 应用程序。借助 JSweet,Java 程序可以转换(源到源编译)为 TypeScript 和 JavaScript,以便在浏览器、移动 Web 视图或 Node.js 中运行。
- JSweet安全可靠。它为 Web 应用程序提供类型检查并生成经过完全类型检查的 JavaScript 程序。它基于 Oracle 的 Java 编译器 (javac) 和 Microsoft 的 TypeScript (tsc)。
- JSweet 允许您使用您最喜欢的 JS 库(JSweet+Angular2、JSweet+thirdjs、IONIC/Cordova...)。
- JSweet 支持服务器端 Java 和客户端 JavaScript 之间的代码共享。 JSweet 提供了核心 Java 库的实现,以实现代码共享和遗留 Java 迁移目的。
- JSweet 快速、轻量级且完全可与 JavaScript 互操作。生成的代码是常规的 JavaScript 代码,这意味着与 JavaScript 相比没有任何开销,并且可以直接与现有的 JavaScript 程序和库进行互操作。
它是如何运作的? JSweet 依赖于 JavaScript API 的类型良好的描述,即所谓的“糖果”,其中大多数是从 TypeScript 定义文件自动生成的。 Java 中的这些 API 描述可以看作是头文件(类似于 C 中的 *.h 头文件),用于将 JavaSript 库与 Java 桥接起来。现有图书馆有多种糖果来源,您可以轻松地为任何图书馆构建糖果(查看更多详细信息)。
借助 JSweet,您可以利用所有 Java 工具(IDE、Maven 等)使用最新的 JavaScript 库来编写真正的 JavaScript 应用程序。
Java -> TypeScript -> JavaScript
这是使用 JSweet 的初体验。考虑这个简单的 Java 程序:
package org . jsweet ;
import static jsweet . dom . Globals .*;
/**
* This is a very simple example that just shows an alert.
*/
public class HelloWorld {
public static void main ( String [] args ) {
alert ( "Hi there!" );
}
}
使用 JSweet 进行转译会得到以下 TypeScript 程序:
namespace org . jsweet {
/**
* This is a very simple example that just shows an alert.
*/
export class HelloWorld {
public static main ( args : string [ ] ) {
alert ( "Hi there!" ) ;
}
}
}
org . jsweet . HelloWorld . main ( null ) ;
这又会产生以下 JavaScript 输出:
var org ;
( function ( org ) {
var jsweet ;
( function ( jsweet ) {
/**
* This is a very simple example that just shows an alert.
*/
var HelloWorld = ( function ( ) {
function HelloWorld ( ) {
}
HelloWorld . main = function ( args ) {
alert ( "Hi there!" ) ;
} ;
return HelloWorld ;
} ( ) ) ;
jsweet . HelloWorld = HelloWorld ;
} ) ( jsweet = org . jsweet || ( org . jsweet = { } ) ) ;
} ) ( org || ( org = { } ) ) ;
org . jsweet . HelloWorld . main ( null ) ;
更多关于实时沙箱的内容。
特征
- Java 和 TypeScript 之间的完整语法映射,包括类、接口、函数类型、联合类型、元组类型、对象类型、字符串类型等。
- 自版本 1.1.0 以来添加了对 Java 构造和语义的广泛支持(内部类、匿名类、final 字段、方法重载、instanceof 运算符、静态初始化器等)。
- 超过 1000 个 JavaScript 库、框架和插件,用于编写 Web 和移动 HTML5 应用程序(JQuery、Underscore、Angular、Backbone、Cordova、Node.js 等)。
- 一个 Maven 存储库,包含 Maven 工件(又名糖果)中的所有可用库。
- 支持 Java 基本 API,如 J4TS candy(从 GWT 的 JRE 模拟派生)。
- 一个 Eclipse 插件,方便安装和使用。
- 一个 Maven 插件,可从任何其他 IDE 或命令行使用 JSweet。
- 一个 Gradle 插件,用于将 JSweet 与基于 Gradle 的项目集成。
- 调试模式可在您喜爱的浏览器中启用 Java 代码调试。
- 一组不错的 WEB/移动 HTML5 示例,可帮助您入门并习惯 JSweet 和最常见的 JavaScript API(示例部分中还有更多示例)。
- 支持捆绑包以最简单的方式运行生成的程序。
- 支持 JavaScript 模块(commonjs、amd、umd)。 JSweet 程序可以在浏览器或 Node.js 中运行。
- 支持各种 EcmaScript 目标版本(ES3 到 ES6)。
- 支持 async/await 习惯用法
- ...
有关更多详细信息,请参阅语言规范 (PDF)。
入门
- 第 1 步:安装(或检查您是否已安装)Git、Node.js 和 Maven(命令
git
、 node
、 npm
和mvn
应位于您的路径中)。 - 步骤 2:从 Github 克隆 jsweet-quickstart 项目:
$ git clone https://github.com/cincheo/jsweet-quickstart.git
- 第 3 步:运行转译器生成 JavaScript 代码:
$ cd jsweet-quickstart
$ mvn generate-sources
$ firefox webapp/index.html
- 步骤5:编辑项目并开始编程:
- 查看示例以了解各种用例
- 访问数百个库(糖果)
- 请参阅语言规范以了解有关使用 JSweet 编程的更多信息
- Eclipse 用户:安装 Eclipse 插件以获得内联错误报告、保存时构建和简单的配置 UI
更多信息请访问 http://www.jsweet.org。
示例
- 说明 Java 中各种框架(jQuery、Underscore、Backbone、AngularJS、Knockout)的使用的简单示例:https://github.com/cincheo/jsweet-examples
- 说明在 Java 中使用 Threejs 框架的简单示例:https://github.com/cincheo/jsweet-examples- Threejs)
- Node.js + Socket.IO + AngularJS:https://github.com/lgrignon/jsweet-node-example
- React.js 入门的一些简单示例:https://github.com/cincheo/jsweet-examples-react
- JSweet JAX-RS 服务器示例(如何在客户端和服务器之间共享 Java 模型):https://github.com/lgrignon/jsweet-jaxrs-server-example
- JSweet Cordova / 聚合物示例:https://github.com/lgrignon/jsweet-cordova-polymer-example
- JSweet Cordova / Ionic 示例:https://github.com/lgrignon/jsweet-cordova-ionic-example
- JSweet Angular 2 示例:https://github.com/cincheo/jsweet-angular2-quickstart
- JSweet Angular 2 + PrimeNG:https://github.com/cincheo/jsweet-primeng-quickstart
子项目
该存储库按子项目组织。每个子项目都有自己的构建过程。
- JSweet 转换器:Java 到 TypeScript/JavaScript 的编译器。
- JSweet core candy:核心 API(JavaScript 语言、JavaScript DOM 和 JSweet 语言实用程序)。
- JDK 运行时:GWT 的 JRE 模拟的一个分支,用于在 JSweet/TypeScript/JavaScript 中实现主要 JDK API。
- JSweet 糖果生成器:从 TypeScript 定义文件生成 Java API 并将其打包为 JSweet 糖果的工具。
- JSweet 文档:JSweet 文档。
此外,外部存储库中提供了一些 JSweet 工具。
如何建造
请检查每个子项目的 README 文件。
贡献
JSweet 使用 Git Flow。您可以分叉此存储库。默认分支是develop。请使用git flow feature start myAwesomeFeature
来开始做一些伟大的事情:) 完成后,您可以提交常规的 GitHub Pull 请求。
执照
请阅读许可证文件。