JSweet: Java에서 JavaScript로의 변환기
JSweet은 TypeScript를 활용하여 JavaScript 라이브러리 및 프레임워크를 사용하여 Java로 풍부하고 응답성이 뛰어난 웹 애플리케이션을 작성합니다. JSweet을 사용하면 Java 프로그램이 브라우저, 모바일 웹 보기 또는 Node.js에서 실행되도록 TypeScript 및 JavaScript로 트랜스파일(소스 간 컴파일)됩니다.
- JSweet은 안전하고 신뢰할 수 있습니다. 웹 애플리케이션에 유형 검사 기능을 제공하고 완전히 유형 검사된 JavaScript 프로그램을 생성합니다. 이는 Oracle의 Java Compiler(javac)와 Microsoft의 TypeScript(tsc)를 기반으로 합니다.
- JSweet을 사용하면 즐겨 사용하는 JS 라이브러리(JSweet+Angular2, JSweet+3js, IONIC/Cordova 등)를 사용할 수 있습니다.
- JSweet은 서버 측 Java와 클라이언트 측 JavaScript 간의 코드 공유를 가능하게 합니다. JSweet은 코드 공유 및 레거시 Java 마이그레이션 목적을 위한 핵심 Java 라이브러리 구현을 제공합니다.
- JSweet은 빠르고 가벼우며 JavaScript와 완벽하게 상호 운용됩니다. 생성된 코드는 일반 JavaScript 코드이므로 JavaScript에 비해 오버헤드가 없으며 기존 JavaScript 프로그램 및 라이브러리와 직접 상호 운용할 수 있습니다.
어떻게 작동하나요? JSweet은 소위 "캔디"라고 불리는 잘 입력된 JavaScript API 설명에 의존하며, 대부분은 TypeScript 정의 파일에서 자동으로 생성됩니다. Java의 이러한 API 설명은 Java에서 JavaSript 라이브러리를 연결하는 헤더(C의 *.h 헤더 파일과 유사)로 볼 수 있습니다. 기존 도서관에는 여러 가지 사탕 소스가 있으며 어떤 도서관에든 쉽게 사탕을 만들 수 있습니다(자세한 내용 참조).
JSweet을 사용하면 모든 Java 도구(IDE, Maven 등)를 활용하여 최신 JavaScript 라이브러리를 사용하여 실제 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 구성 및 의미 체계에 대한 광범위한 지원(내부 클래스, 익명 클래스, 최종 필드, 메소드 오버로딩, 인스턴스 연산자, 정적 초기화 프로그램 등).
- 웹 및 모바일 HTML5 애플리케이션(JQuery, Underscore, Angular, Backbone, Cordova, Node.js 등)을 작성하기 위한 1000개 이상의 JavaScript 라이브러리 , 프레임워크 및 플러그인.
- Maven 아티팩트(캔디라고도 함)에서 사용 가능한 모든 라이브러리를 포함하는 Maven 저장소입니다.
- J4TS 캔디(GWT의 JRE 에뮬레이션에서 분기됨)로 Java 기본 API를 지원합니다.
- 간편한 설치 및 사용을 위한 Eclipse 플러그인입니다.
- 다른 IDE나 명령줄에서 JSweet을 사용하기 위한 Maven 플러그인입니다.
- JSweet을 Gradle 기반 프로젝트와 통합하는 Gradle 플러그인입니다.
- 즐겨 사용하는 브라우저 내에서 Java 코드 디버깅을 활성화하는 디버그 모드입니다.
- JSweet과 가장 일반적인 JavaScript API를 시작하고 익숙해지는 데 도움이 되는 멋진 웹/모바일 HTML5 예제 세트입니다(예제 섹션에 더 많은 예제가 있습니다).
- 생성된 프로그램을 가장 간단한 방법으로 실행하기 위한 번들 지원.
- JavaScript 모듈(commonjs, amd, umd)을 지원합니다. JSweet 프로그램은 브라우저나 Node.js에서 실행될 수 있습니다 .
- 다양한 EcmaScript 대상 버전(ES3~ES6)을 지원합니다.
- 비동기/대기 관용구 지원
- ...
자세한 내용은 언어 사양(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 사용자: 인라인 오류 보고, 저장 시 빌드 및 간편한 구성 UI를 얻으려면 Eclipse 플러그인을 설치하세요.
자세한 내용은 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 transpiler: Java에서 TypeScript/JavaScript로의 컴파일러.
- JSweet 핵심 캔디: 핵심 API(JavaScript 언어, JavaScript DOM 및 JSweet 언어 유틸리티).
- JDK 런타임: JSweet/TypeScript/JavaScript에서 주요 JDK API를 구현하기 위한 GWT JRE 에뮬레이션의 포크입니다.
- JSweet 캔디 생성기: TypeScript 정의 파일에서 Java API를 생성하고 이를 JSweet 캔디로 패키징하는 도구입니다.
- JSweet 문서: JSweet 문서.
또한 JSweet용 일부 도구는 외부 저장소에서 사용할 수 있습니다.
- 메이븐 플러그인
- Gradle 플러그인
- 이클립스 플러그인
구축 방법
각 하위 프로젝트의 README 파일을 확인해주세요.
기여
JSweet은 Git Flow를 사용합니다. 이 저장소를 포크할 수 있습니다. 기본 분기는 개발입니다. 훌륭한 작업을 시작하려면 git flow feature start myAwesomeFeature
사용하세요. 작업이 완료되면 일반 GitHub Pull Request를 제출할 수 있습니다.
특허
LICENSE 파일을 읽어보세요.