JSweet: ทรานสไพเลอร์ Java เป็น JavaScript
JSweet ใช้ประโยชน์จาก TypeScript เพื่อเขียนเว็บแอปพลิเคชันที่สมบูรณ์และตอบสนองใน Java ผ่านการใช้ไลบรารีและเฟรมเวิร์ก JavaScript ด้วย JSweet โปรแกรม Java จะถูกแปลง (คอมไพล์จากแหล่งที่มาสู่แหล่งที่มา) เป็น TypeScript และ JavaScript เพื่อใช้งานในเบราว์เซอร์ มุมมองเว็บบนมือถือ หรือใน Node.js
- JSweet ปลอดภัยและเชื่อถือได้ ให้บริการเว็บแอปพลิเคชันที่มีการตรวจสอบประเภทและสร้างโปรแกรม JavaScript ที่ตรวจสอบประเภทอย่างสมบูรณ์ มันย่อมาจาก Java Compiler (javac) ของ Oracle และบน TypeScript ของ Microsoft (tsc)
- JSweet อนุญาตให้คุณใช้ไลบรารี JS ที่คุณชื่นชอบ (JSweet+Angular2, JSweet+threejs, IONIC/Cordova, ...)
- JSweet เปิดใช้งานการแบ่งปันโค้ดระหว่าง Java ฝั่งเซิร์ฟเวอร์และ JavaScript ฝั่งไคลเอ็นต์ JSweet จัดเตรียมการใช้งานสำหรับไลบรารี Java หลักเพื่อการแชร์โค้ดและวัตถุประสงค์ในการย้าย Java ดั้งเดิม
- JSweet ทำงานได้รวดเร็ว น้ำหนักเบา และใช้งานร่วมกันได้กับ JavaScript โดยสมบูรณ์ โค้ดที่สร้างขึ้นเป็นโค้ด JavaScript ปกติ ซึ่งหมายความว่าไม่มีค่าใช้จ่ายใดๆ เมื่อเทียบกับ JavaScript และสามารถทำงานร่วมกับโปรแกรมและไลบรารี JavaScript ที่มีอยู่ได้โดยตรง
มันทำงานอย่างไร? JSweet ขึ้นอยู่กับคำอธิบายที่พิมพ์ดีของ JavaScript API ที่เรียกว่า "candies" ซึ่งส่วนใหญ่ถูกสร้างขึ้นโดยอัตโนมัติจากไฟล์คำจำกัดความของ TypeScript คำอธิบาย API เหล่านี้ใน Java สามารถดูได้เป็นส่วนหัว (คล้ายกับไฟล์ส่วนหัว *.h ใน C) เพื่อเชื่อมโยงไลบรารี JavaSript จาก Java มีแหล่งลูกอมหลายแห่งสำหรับห้องสมุดที่มีอยู่ และคุณสามารถสร้างลูกอมสำหรับห้องสมุดใดก็ได้ที่นั่น (ดูรายละเอียดเพิ่มเติม)
ด้วย JSweet คุณจะใช้ประโยชน์จากเครื่องมือ Java ทั้งหมด (IDE's, Maven, ...) เพื่อตั้งโปรแกรมแอปพลิเคชัน JavaScript จริงโดยใช้ไลบรารี JavaScript ล่าสุด
ชวา -> TypeScript -> จาวาสคริปต์
นี่คือสัมผัสแรกของสิ่งที่คุณได้รับจากการใช้ 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!" );
}
}
การ Transpiling ด้วย 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 รวมถึงคลาส อินเทอร์เฟซ ประเภทการทำงาน ประเภทยูเนียน ประเภททูเปิล ประเภทอ็อบเจ็กต์ ประเภทสตริง และอื่นๆ
- การสนับสนุนอย่างกว้างขวางของโครงสร้าง Java และซีแมนทิกส์ที่เพิ่มเข้ามาตั้งแต่เวอร์ชัน 1.1.0 (คลาสภายใน, คลาสที่ไม่ระบุชื่อ, ฟิลด์สุดท้าย, การโอเวอร์โหลดเมธอด, ตัวดำเนินการ instanceof, ตัวเริ่มต้นแบบคงที่, ...)
- ไลบรารี JavaScript เฟรมเวิร์กและปลั๊กอินมากกว่า 1,000 รายการ สำหรับเขียนแอปพลิเคชัน HTML5 บนเว็บและมือถือ (JQuery, Underscore, Angular, Backbone, Cordova, Node.js และอีกมากมาย)
- พื้นที่เก็บข้อมูล Maven ที่มีไลบรารีทั้งหมดที่มีอยู่ในสิ่งประดิษฐ์ Maven (หรือที่รู้จักในชื่อแคนดี้)
- รองรับ API พื้นฐานของ Java เช่นลูกกวาด J4TS (แยกจากการจำลอง JRE ของ GWT)
- ปลั๊กอิน Eclipse สำหรับการติดตั้งและใช้งานที่ง่ายดาย
- ปลั๊กอิน Maven เพื่อใช้ JSweet จาก IDE อื่นหรือจากบรรทัดคำสั่ง
- ปลั๊กอิน Gradle เพื่อรวม JSweet เข้ากับโปรเจ็กต์ที่ใช้ Gradle
- โหมดแก้ไขข้อบกพร่องเพื่อเปิดใช้งานการดีบักโค้ด Java ภายในเบราว์เซอร์ที่คุณชื่นชอบ
- ชุดตัวอย่าง 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: โคลนโครงการ jsweet-quickstart จาก Github:
$ git clone https://github.com/cincheo/jsweet-quickstart.git
- ขั้นตอนที่ 3: เรียกใช้ transpiler เพื่อสร้างโค้ด JavaScript:
$ cd jsweet-quickstart
$ mvn generate-sources
- ขั้นตอนที่ 4: ตรวจสอบผลลัพธ์ในเบราว์เซอร์ของคุณ:
$ firefox webapp/index.html
- ขั้นตอนที่ 5: แก้ไขโครงการและเริ่มการเขียนโปรแกรม:
- ชำระเงินตัวอย่างเพื่อดูกรณีการใช้งานต่างๆ
- เข้าถึง libs (ลูกอม) นับร้อย
- โปรดดูข้อกำหนดภาษาเพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับการเขียนโปรแกรมด้วย JSweet
- ผู้ใช้ Eclipse: ติดตั้งปลั๊กอิน Eclipse เพื่อรับการรายงานข้อผิดพลาดแบบอินไลน์ การสร้างเมื่อบันทึก และ UI การกำหนดค่าที่ง่ายดาย
ข้อมูลเพิ่มเติมที่ http://www.jsweet.org
ตัวอย่าง
- ตัวอย่างง่ายๆ ที่แสดงให้เห็นการใช้เฟรมเวิร์กต่างๆ ใน Java (jQuery, Underscore, Backbone, AngularJS, Knockout): https://github.com/cincheo/jsweet-examples
- ตัวอย่างง่ายๆ ที่แสดงการใช้เฟรมเวิร์ก Threejs ใน Java: 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 / อิออน: https://github.com/lgrignon/jsweet-cordova-ionic-example
- ตัวอย่าง JSweet Angular 2: https://github.com/cincheo/jsweet-angular2-quickstart
- JSweet เชิงมุม 2 + PrimeNG: https://github.com/cincheo/jsweet-primeng-quickstart
โครงการย่อย
พื้นที่เก็บข้อมูลนี้จัดอยู่ในโครงการย่อย แต่ละโครงการย่อยมีกระบวนการสร้างของตัวเอง
- JSweet transpiler: คอมไพเลอร์ Java เป็น TypeScript/JavaScript
- JSweet core candy: API หลัก (ภาษา JavaScript, JavaScript DOM และยูทิลิตี้ภาษา JSweet)
- รันไทม์ JDK: ทางแยกจากการจำลอง JRE ของ GWT เพื่อใช้ JDK API หลักใน JSweet/TypeScript/JavaScript
- ตัวสร้างลูกกวาด JSweet: เครื่องมือในการสร้าง Java API จากไฟล์คำจำกัดความ TypeScript และจัดทำแพ็คเกจเป็นลูกกวาด JSweet
- เอกสาร JSweet: เอกสาร JSweet
นอกจากนี้ เครื่องมือบางอย่างสำหรับ JSweet ยังมีให้ใช้งานในพื้นที่เก็บข้อมูลภายนอก
- ปลั๊กอิน Maven
- ปลั๊กอิน Gradle
- ปลั๊กอินคราส
วิธีการสร้าง
โปรดตรวจสอบไฟล์ README ของโครงการย่อยแต่ละไฟล์
มีส่วนร่วม
JSweet ใช้ Git Flow คุณสามารถแยกที่เก็บนี้ได้ สาขาเริ่มต้นได้รับการพัฒนา โปรดใช้ git flow feature start myAwesomeFeature
เพื่อเริ่มทำงานกับสิ่งที่ยอดเยี่ยม :) เมื่อเสร็จแล้ว คุณสามารถส่งคำขอดึง GitHub ปกติได้
ใบอนุญาต
โปรดอ่านไฟล์ใบอนุญาต