JSweet: transpiler Java ke JavaScript
JSweet memanfaatkan TypeScript untuk menulis aplikasi Web yang kaya dan responsif di Java melalui penggunaan pustaka dan kerangka kerja JavaScript. Dengan JSweet, program Java ditranspilasi (dikompilasi dari sumber ke sumber) ke TypeScript dan JavaScript untuk dijalankan di browser, tampilan Web seluler, atau di Node.js.
- JSweet aman dan dapat diandalkan. Ini menyediakan pemeriksaan tipe pada aplikasi web dan menghasilkan program JavaScript yang sepenuhnya diperiksa tipenya. Itu berdiri di atas Java Compiler Oracle (javac) dan TypeScript (tsc) Microsoft.
- JSweet memungkinkan Anda menggunakan perpustakaan JS favorit Anda (JSweet+Angular2, JSweet+threejs, IONIC/Cordova, ...).
- JSweet memungkinkan berbagi kode antara Java sisi server dan JavaScript sisi klien. JSweet menyediakan implementasi untuk perpustakaan inti Java untuk berbagi kode dan tujuan migrasi Java lama.
- JSweet cepat, ringan, dan sepenuhnya dapat dioperasikan dengan JavaScript. Kode yang dihasilkan adalah kode JavaScript biasa, yang berarti tidak ada overhead dibandingkan dengan JavaScript, dan dapat langsung berinteraksi dengan program dan perpustakaan JavaScript yang ada.
Bagaimana cara kerjanya? JSweet bergantung pada deskripsi API JavaScript yang diketik dengan baik, yang disebut "permen", sebagian besar dibuat secara otomatis dari file definisi TypeScript. Deskripsi API ini di Java dapat dilihat sebagai header (mirip dengan file header *.h di C) untuk menjembatani pustaka JavaSript dari Java. Ada beberapa sumber permen untuk perpustakaan yang ada dan Anda dapat dengan mudah membuat permen untuk perpustakaan mana pun di luar sana (lihat lebih detail).
Dengan JSweet, Anda memanfaatkan semua perkakas Java (IDE, Maven, ...) untuk memprogram aplikasi JavaScript nyata menggunakan pustaka JavaScript terbaru.
Java -> Skrip Ketik -> JavaScript
Inilah gambaran pertama dari apa yang Anda dapatkan dengan menggunakan JSweet. Pertimbangkan program Java sederhana ini:
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!" );
}
}
Transpiling dengan JSweet menghasilkan program TypeScript berikut:
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 ) ;
Yang pada gilirannya menghasilkan keluaran JavaScript berikut:
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 ) ;
Lebih banyak lagi dengan kotak pasir langsung.
Fitur
- Pemetaan sintaksis lengkap antara Java dan TypeScript, termasuk kelas, antarmuka, tipe fungsional, tipe gabungan, tipe tupel, tipe objek, tipe string, dan sebagainya.
- Dukungan ekstensif untuk konstruksi dan semantik Java ditambahkan sejak versi 1.1.0 (kelas dalam, kelas anonim, bidang akhir, kelebihan metode, operator instanceof, penginisialisasi statis, ...).
- Lebih dari 1000 pustaka JavaScript , kerangka kerja, dan plugin untuk menulis aplikasi Web dan Seluler HTML5 (JQuery, Garis Bawah, Angular, Backbone, Cordova, Node.js, dan banyak lagi).
- Repositori Maven yang berisi semua perpustakaan yang tersedia di artefak Maven (alias permen).
- Dukungan untuk API dasar Java sebagai permen J4TS (bercabang dari emulasi JRE GWT).
- Plugin Eclipse untuk kemudahan instalasi dan penggunaan.
- Plugin Maven untuk menggunakan JSweet dari IDE lain atau dari baris perintah.
- Plugin Gradle untuk mengintegrasikan JSweet dengan proyek berbasis Gradle.
- Mode debug untuk mengaktifkan debugging kode Java dalam browser favorit Anda.
- Serangkaian contoh WEB/Mobile HTML5 yang bagus untuk memulai dan membiasakan diri dengan JSweet dan API JavaScript yang paling umum (bahkan lebih banyak contoh di bagian Contoh).
- Dukungan bundel untuk menjalankan program yang dihasilkan dengan cara paling sederhana.
- Dukungan untuk modul JavaScript (commonjs, amd, umd). Program JSweet dapat dijalankan di browser atau di Node.js.
- Dukungan untuk berbagai versi target EcmaScript (ES3 hingga ES6).
- Dukungan untuk idiom async/menunggu
- ...
Untuk lebih jelasnya, buka spesifikasi bahasa (PDF).
Memulai
- Langkah 1: Instal (atau periksa apakah Anda telah menginstal) Git, Node.js dan Maven (perintah
git
, node
, npm
dan mvn
harus ada di jalur Anda). - Langkah 2: Kloning proyek jsweet-quickstart dari Github:
$ git clone https://github.com/cincheo/jsweet-quickstart.git
- Langkah 3: Jalankan transpiler untuk menghasilkan kode JavaScript:
$ cd jsweet-quickstart
$ mvn generate-sources
- Langkah 4: Periksa hasilnya di browser Anda:
$ firefox webapp/index.html
- Langkah 5: Edit proyek dan mulai pemrograman:
- Lihat contoh untuk melihat berbagai kasus penggunaan
- Dapatkan akses ke ratusan lib (permen)
- Lihat spesifikasi bahasa untuk mengetahui lebih banyak tentang pemrograman dengan JSweet
- Pengguna Eclipse: instal plugin Eclipse untuk mendapatkan pelaporan kesalahan inline, build-on-save, dan konfigurasi UI yang mudah
Info lebih lanjut di http://www.jsweet.org.
Contoh
- Contoh sederhana yang menggambarkan penggunaan berbagai kerangka kerja di Java (jQuery, Underscore, Backbone, AngularJS, Knockout): https://github.com/cincheo/jsweet-examples
- Contoh sederhana yang menggambarkan penggunaan kerangka Threejs di Java: https://github.com/cincheo/jsweet-examples-threejs)
- Node.js + Socket.IO + AngularJS: https://github.com/lgrignon/jsweet-node-example
- Beberapa contoh sederhana untuk memulai React.js: https://github.com/cincheo/jsweet-examples-react
- Contoh server JSweet JAX-RS (cara berbagi model Java antara klien dan server): https://github.com/lgrignon/jsweet-jaxrs-server-example
- Contoh JSweet Cordova / Polimer: https://github.com/lgrignon/jsweet-cordova-polymer-example
- Contoh JSweet Cordova / Ionic: https://github.com/lgrignon/jsweet-cordova-ionic-example
- Contoh JSweet Angular 2: https://github.com/cincheo/jsweet-angular2-quickstart
- JSweet Angular 2 + PrimeNG: https://github.com/cincheo/jsweet-primeng-quickstart
Sub-proyek
Repositori ini diatur dalam sub-proyek. Setiap subproyek memiliki proses pembangunannya sendiri.
- Transpiler JSweet: kompiler Java ke TypeScript/JavaScript.
- Permen inti JSweet: API inti (bahasa JavaScript, DOM JavaScript, dan utilitas bahasa JSweet).
- Runtime JDK: cabang dari emulasi JRE GWT untuk mengimplementasikan API JDK utama di JSweet/TypeScript/JavaScript.
- Generator permen JSweet: alat untuk menghasilkan API Java dari file definisi TypeScript, dan mengemasnya sebagai permen JSweet.
- Dokumentasi JSweet: Dokumentasi JSweet.
Selain itu, beberapa alat untuk JSweet tersedia di repositori eksternal.
- Plugin Maven
- Plugin Gradle
- Plugin gerhana
Bagaimana cara membangun
Silakan periksa setiap file README sub-proyek.
Berkontribusi
JSweet menggunakan Git Flow. Anda dapat membagi repositori ini. Cabang default adalah pengembangan. Silakan gunakan git flow feature start myAwesomeFeature
untuk mulai mengerjakan sesuatu yang hebat :) Setelah selesai, Anda dapat mengirimkan Permintaan Tarik GitHub biasa.
Lisensi
Silakan baca file LISENSI.