Czy istnieje natywny kompilator kodu maszynowego dla JavaScript? [zamknięte]

zamknięte. to pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the pytanie więc to on-topic {[3] } dla przepełnienia stosu.

Zamknięte 4 lata temu .

Popraw to pytanie

Czy istnieje natywny kompilator kodu maszynowego dla JavaScript? Nie mówię o maszynie wirtualnej. Jeśli nie istnieje, czy można to zrobić?
Zastanawiam się czy można go skompilować do binarnych ze względu na dynamiczny charakter języka.

Author: Deduplicator, 2009-07-13

8 answers

Z tego co wiem, nie ma statycznych kompilatorów dla JavaScript. Jest to z pewnością teoretycznie możliwe; jednak statyczna kompilacja JavaScript wymaga bardzo ciężkiego środowiska wykonawczego, aby obsługiwać wszystkie jego funkcje(takie jak dynamiczne pisanie i ewal). Na marginesie, kiedy przedstawiono potrzebę statycznej kompilacji Pythona (inny dynamiczny język), Programiści PyPy stworzyli język, który był bardzo ograniczonym podzbiorem Pythona (zwanym RPython), pustym z niektórych języków. z bardziej dynamicznych funkcji Pythona, które można było skompilować statycznie.

Jeśli pytasz o to w celu stworzenia samodzielnego pliku wykonywalnego z kodu JavaScript, jestem pewien, że muszą istnieć wrappery, które zasadniczo utworzyłyby plik wykonywalny zawierający Twój skrypt i osadzoną maszynę wirtualną JavaScript(niestety, nie znam żadnego offhand).

 31
Author: Falaina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-27 18:00:23

Jest to zdecydowanie wykonalne, chociaż jedyny sposób, w jaki wiem, jak to zrobić w tej chwili, to dwuetapowy proces...

  1. skompilować javascript do Javy za pomocą Mozilla Rhino JSC .
  2. Skompiluj wynikowy plik klasy java do pliku wykonywalnego, używając czegoś w rodzaju GNU gcj .

Dlaczego jednak chcesz? Jaką przewagę spodziewasz się znaleźć?

 27
Author: Stobor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-13 16:41:45

Silnik Google V8 kompiluje JavaScript do natywnego kodu maszynowego. Ta funkcja jest używana w kompilatorze EncloseJS , który napisałem dla for node.js i io.projekty js.

 10
Author: Igor Klopov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-02 17:19:19

Należy pamiętać, że wszystkie te rozwiązania są DOM mniej, więc nie ma bibliotek takich jak angular.js Czy jquery, tylko underscore.js/lodash

Po odpowiedzi do Falaina , PyPy posiada dist dla JavaScript

Również, Appcelerator Titanium ma js > JavaBit > android

Wreszcie, node.js można użyć nexe Wyjaśnione w tej drugiej odpowiedź

 4
Author: percebus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:19

Jest to teoretycznie możliwe, ale będzie to wymagało dużej ilości wsparcia dla środowiska (a nawet pełnego kompilatora lub interpretera Javascript do obsługi eval).

Szukasz natywnego kompilatora kodu, czy szukasz czegoś, co może wiązać kod Javascript wraz z uruchomieniem w jeden plik wykonywalny?

 3
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-13 07:46:38

Jestem pewien, że microsoft ma do pobrania kompilator Jscript ("Microsoft' s javascript")

Jeśli masz windows: Jeśli napiszesz plik tekstowy javascript możesz go skompilować przez: otwieranie wiersza polecenia korzystanie z płyty cd, aby dostać się do katalogu plików tekstowych (jeśli masz windows) wpisz: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\jsc.exe textfile.js

Inaczej: Pobierz kompilator jscript wpisz katalog kompilatora JScript, a następnie nazwę pliku tekstowego javascript

Ty może dodawać zmienne środowiskowe, jeśli nie chcesz wpisywać całej nazwy katalogu do kompilatora.

Ten facet wyjaśnia to lepiej: http://www.phpied.com/make-your-javascript-a-windows-exe/

Ja osobiście uważam, że to jest naprawdę fajne. Szkoda tylko, że nie ma na to więcej dokumentacji.

Jestem prawie pewien, że tego szukasz, ale jestem trochę nowy.

 2
Author: Daniel Ladner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-03 01:13:24

TraceMonkey w FF3.5 robi to z niektórymi częściami kodu javascript. Możesz być w stanie uzyskać kilka wskazówek stamtąd!

 1
Author: TheVillageIdiot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-13 07:49:04

Kompilator AOT Adobe AIR dla iOS statycznie kompiluje superset JavaScript o nazwie Actionscript 3.0 do ABC bytecode, a następnie kod maszynowy przez LLVM. Jeśli miałbyś napisać swój kod AS3 bez klas i bez adnotacji typu, byłby to zasadniczo JavaScript, a następnie kompilator z chęcią skompilowałby go do kodu maszynowego. Niestety nie jest to oprogramowanie open source i nie masz dostępu do żadnego DOM (o którym wiele osób myśli, gdy myśli o JavaScript), ponieważ jest uruchamianie wewnątrz instancji Flash Player.

 1
Author: Kevin Newman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-15 15:30:51