This page is only available in Korean for now.

NeonJS란

NeonJS는 StarLight 개발자가 Kotlin으로 만든 JVM용 자바스크립트 엔진이에요. StarLight에서는 프로젝트를 만들 때 고르는 언어 중 하나인 JS(NeonJS) 로 쓸 수 있어요.

main.js
import { greet } from "./greet.js";

export function onMessage(event) {
    if (event.message === "/안녕")
        event.room.send(greet(event.sender.name));
}

중요

NeonJS는 StarLight 1.0.0부터 들어 있어요. Google Play 판, 베타 채널, 스냅샷 채널에서 쓸 수 있고, 정식 채널(0.3.2a)에서는 쓸 수 없어요. 이 문서는 NeonJS 0.1.6을 기준으로 해요.

Rhino와 무엇이 다른가요

StarLight에는 오래전부터 쓰던 JS(RhinoJS) 언어도 있어요. 두 언어 모두 자바스크립트지만 실행 방식이 꽤 달라요.

JS(RhinoJS)JS(NeonJS)
문법ES5와 일부 ES6ECMAScript 2025 전체 (클래스, async/await, 구조 분해, 옵셔널 체이닝 등)
파일 형식스크립트ES 모듈 — 이벤트 함수를 export 해야 해요
다른 파일 불러오기require()import / export
HTTP 요청Utils.getWebText() (응답이 올 때까지 멈춰요)fetch, WebSocket (기다리는 동안 다른 이벤트를 처리해요)
비동기타이머타이머, Promise, async/await
동시 실행이벤트를 세 개까지 동시에한 번에 하나씩 차례로
Java 접근Packages.java.util.ArrayList, importClass()Java.type("java.util.ArrayList")
실행인터프리터 또는 최적화 컴파일인터프리터, 또는 자주 쓰는 함수만 골라 컴파일하는 Adaptive 모드

NeonJS는 Test262(자바스크립트 표준 적합성 테스트)의 본 테스트를 모두 통과해요. Android 에뮬레이터에서 잰 성능은 기본(Adaptive) 모드가 컴파일된 Rhino 1.7보다 1.8배쯤 빨라요.

언제 NeonJS를 고르나요

  • 새 프로젝트라면 NeonJS를 추천해요. 최신 문법과 fetch, 모듈 덕분에 코드가 짧고 읽기 쉬워져요.
  • 이미 Rhino로 잘 돌아가는 프로젝트는 그대로 둬도 괜찮아요. 옮기고 싶다면 Rhino 프로젝트 옮기기를 보세요.
  • 인터넷에서 찾은 예전 봇 예제 코드는 대부분 Rhino 기준이라 NeonJS에서는 손봐야 해요.

문서 읽는 순서

  1. 첫 NeonJS 스크립트 — 프로젝트를 만들고 메시지에 답장해 봐요.
  2. 가이드 — 모듈, Java와 Android API, 비동기와 네트워크를 차례로 익혀요.
  3. 레퍼런스 — 전역 객체와 언어 설정을 찾아볼 때 써요.

앱을 처음 쓴다면 앱 사용법에서 설치와 프로젝트 만들기부터 보세요.