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 請求。
執照
請閱讀許可證文件。