Learn · concepts
Czym jest skryptowanie JavaScript w GraalVM?
GraalVM JavaScript to szybki silnik JS, który działa na JVM. Umożliwia aplikacjom Java osadzanie JavaScripta, dzięki czemu użytkownicy mogą skryptywać funkcje i natychmiast je przeładowywać.
Czym jest GraalVM JavaScript?
GraalVM JavaScript to szybki, zgodny ze standardami silnik JavaScript, który działa na JVM, będący częścią projektu GraalVM. Aplikacje Java go osadzają, aby użytkownicy mogli pisać skrypty JavaScript, które wywołują funkcje w programie hosta i przeładowują się na bieżąco. W aplikacji Java oznacza to dodawanie lub zmienianie zachowania w JavaScript bez rekompilacji kodu Java.
Wyobraź sobie to jako piaskownicę do dodawania funkcji. Aplikacja udostępnia pewne obiekty i metody skryptowi, a skrypt wywołuje te metody, aby wykonywać pracę wewnątrz aplikacji. Gdy zmienisz skrypt i zapiszesz go, silnik natychmiast go przeładuje, bez konieczności ponownego uruchamiania
Dlaczego aplikacje osadzają silniki skryptowe
Aplikacje takie jak klienty Minecrafta osadzają silniki JavaScript z kilku praktycznych powodów:
- Szybkie przeładowywanie: zmień skrypt i zobacz efekt bez konieczności ponownego uruchamiania lub przebudowy.
- Bezpieczna przestrzeń: host decyduje dokładnie, które obiekty i klasy Java skrypt może dotykać.
- Szybka iteracja: testuj nowe zachowania w kilka sekund zamiast minut czasu kompilacji.
- Personalizacja przez użytkownika: pozwól graczom pisać własne funkcje w znanym języku
Jak to się objawia u klienta
Klient integrujący GraalVM JavaScript zazwyczaj udostępnia skryptom punkt wejścia do rejestracji, a następnie niewielki zestaw obiektów proxy, które łączą JavaScript z wewnętrznymi mechanizmami programu. Użytkownicy piszą skrypt, umieszczają go w folderze skryptów, a silnik go ładuje. W ten sposób klient może pozwolić użytkownikom na dodawanie funkcji w JavaScript zamiast kompilowania moda.
GraalVM JavaScript vs Node.js
| Aspekt | GraalVM JavaScript | Node.js |
|---|---|---|
| Środowisko uruchomieniowe | Działa na JVM | Samodzielne środowisko oparte na V8 |
| Zastosowanie | Osadzone w aplikacjach Java | JavaScript po stronie serwera lub narzędzia CLI |
| Uruchomienie | Część procesu hosta | Oddzielny proces |
| Dostęp | Host udostępnia określone obiekty | Pełny dostęp do systemu operacyjnego |
| Wydajność | Kompilowane JIT, bardzo szybkie | Również bardzo szybkie, inne kompromisy |
Oba doskonale nadają się do uruchamiania JavaScriptu; po prostu zostały zaprojektowane do różnych zastosowań. GraalVM jest odpowiedni, gdy chcesz, aby aplikacja Java umożliwiała użytkownikom skryptowanie w JavaScript.
FAQ
Nie. Oba działają na JavaScript, ale silnik GraalVM ma być osadzony w aplikacji JVM, podczas gdy Node.js to autonomiczny środowisko uruchomieniowe zbudowany na V8.
Zazwyczaj nie. Piszesz JavaScript w oparciu o obiekty, które udostępnia aplikacja hostująca. Znajomość tego, do czego te obiekty odpowiadają, pomaga przy bardziej zaawansowanym użytkowaniu, ale podstawowe skrypty wymagają tylko JavaScriptu.
Prędkość iteracji. Skrypt przeładowuje się natychmiast, podczas gdy mod skompilowany musi zostać ponownie zbudowany i uruchomiony. Do szybkiego testowania funkcji lub automatyzacji osobistej, skryptowanie jest znacznie szybsze.
Tak, aplikacja hostująca decyduje dokładnie, które obiekty i klasy skrypt może dotykać. Klient może udostępniać stan gry, dane gracza oraz inne wewnętrzne elementy za pośrednictwem tych obiektów proxy.