Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   компиляция javascript в исполняемый exe-файл (https://javascript.ru/forum/misc/8825-kompilyaciya-javascript-v-ispolnyaemyjj-exe-fajjl.html)

nik1985 15.04.2010 00:29

компиляция javascript в исполняемый exe-файл
 
я знаю, что javascript создавался как интерпретируемый язык, но может есть возможность скомпилировать код яваскрипта в исполняемый exe-файл?

Gvozd 15.04.2010 00:36

зачем?

nik1985 15.04.2010 00:53

просто интересно, в интернете на этот вопрос неоднозначное мнение, но если рассуждать логически, то получается вот такой ответ - синтаксис javascript похож на C++ и значит существует возможность компиляции на машинный язык...

Aetae 15.04.2010 01:56

Вариантов дофига:
1.Переименовать .html с js в .hta
2.Запускать .js файлы как есть.(для вывода юзать доп синтаксис JScript)
3.Всякое движки javascript, тот же ff на нём написан.
4. ...
5. ...
6. profit!

nik1985 15.04.2010 02:11

нужен вариант, в котором файл js.js компилировался бы в исполняемый файл js.exe, возможно ли такое?И это без всяких дополнений различными махинациями в исходном коде программы

Gvozd 15.04.2010 02:11

Цитата:

Сообщение от nik1985
синтаксис javascript похож на C++

синтаксис это далеко не единственно И очень далеко не самая главная характеристика языка
например PHP гораздо ближе к C++, нежели чем JS
но при этом они(PHP и C++) все равно очень далеки от друг друга
но, все три языка имеют схожий(не идентичный)синтаксис
Цитата:

Сообщение от nik1985
и значит существует возможность компиляции на машинный язык...

ну, вообще по сути любой интерпретируемый язык можно собрать в машинный код.
собираем его интерпретатор в машинный код, а в качестве входных данных указываем интерпретируемый файл
ВСЕ!

Итак вернемся к вопросу:
зачем вам понадобился именно исполняемый файл exe?
just 4 fun?
или с практической точки зрения

nik1985 15.04.2010 02:22

пока чисто теоретический интерес. Очень часто я встречал сообщения в интернете, что это невозможно, но ведь любой язык можно перевести в другой. Данные сообщения равносильны тому, например, что английский нельзя перевести на русский, но это как то глупо звучало бы, да? И данные сообщения исходят от считающих себя продвинутыми программистов!!!!!.....

Gvozd 15.04.2010 03:09

Цитата:

Сообщение от nik1985
ведь любой язык можно перевести в другой

да
1)либо вручную на это понадобится куча денег
2)автоматически
не все языки одианаково хорошо переовдятся друг в друга автоматически
полноценны перевдчик из одного языка в другой начинает свою стоимость от 1000$
сделать просто так(без денег) такой переводчик мало кто возьмется и доведет до конца
не уверен, что есть такой переводчик для JS->компилируемый язык
скорее всего нету
а значит пока что невохможно

nik1985 15.04.2010 03:18

для меня это пока чисто теоретический вопрос, я люблю решать такие практически нерешаемые задачи, но сейчас на это у меня нет времени, так что пока интересуюсь поверхностно, но возможно в скором будущем я займусь этим вопросом.

Riim 15.04.2010 03:23

Цитата:

Сообщение от Gvozd
JS->компилируемый язык

получится JS->компилируемый язык->машинный код

не проще сразу JS->машинный код ?

А вообще есть очень похожий на js язык (прототипирование, замыкания и т. д.) и он, кажется, имеет компилятор, сейчас поищу.

Riim 15.04.2010 03:31

Вот, кажется подходит:
Цитата:

Для задач, критичных по времени, имеется JIT компилятор Lua LuaJIT. Также разработан компилятор llvm-lua, генерирующий код для виртуальной машины LLVM, позволяющей последующую компиляцию в очень эффективный машинный код для процессоров различной архитектуры.
ссылка

nik1985 15.04.2010 03:33

Цитата:

Сообщение от Riim (Сообщение 51670)
не проще сразу JS->машинный код ?

вот это я и хочу реализовать

Kolyaj 15.04.2010 12:09

Берёте любой интерпретатор JavaScript, пакуете его в самораспаковывающийся архив вместе с нужным скриптом, указываете в свойствах архива команду, которую необходимо выполнить после распаковки -- получаем типа exe-файл. Какая задача -- такое решение.

Вариант 2, для истинных ценителей exe-файлов. Расковырять гугловский движок V8, он делает JIT-компиляцию скриптов, и переделать его на нужный лад :)

DooMer 15.04.2010 12:15

надо было для работы написать браузер на ВБ(без доп кнопок), просто переделать, что б вместо страницы он выполнял JS

nik1985 15.04.2010 13:38

Цитата:

Сообщение от Kolyaj (Сообщение 51697)
Вариант 2, для истинных ценителей exe-файлов. Расковырять гугловский движок V8, он делает JIT-компиляцию скриптов, и переделать его на нужный лад :)



этот вариант наиболее близок к решению поставленной задачи, а идеальным решением было бы прямой перевод на машинный язык текста программы

Gozar 15.04.2010 14:52

Цитата:

Сообщение от nik1985 (Сообщение 51669)
я люблю решать такие практически нерешаемые задачи, но сейчас на это у меня нет времени, так что пока интересуюсь поверхностно, но возможно в скором будущем я займусь этим вопросом.

В мире очень мало ненужных вещей, наверное потому что они никому не нужны, кроме их создателей, которые не могут толком ответить зачем они им и зачем их сделали. Именно поэтому для управления вертолетом есть штурвал и приборная панель, а не клавиатура для задницы. Я на 100% уверен что можно создать такую клавиатуру для задницы, но я также на 100% уверен что руками управлять штурвалом легче, чем задницей печатать.

Для того чтобы делать выполняемые exe файлы есть куда более простые решения. А вы пока ещё упрямый ребёнок, который пытается выяснить у всех "почему крокодил зелёный?". И даже не смотря на то, что вам будут пытаться помочь и расскажут почему же он зелёный, вам еще долго будет казаться это занимательным и чем то загадочным.

Riim 16.04.2010 10:32

Цитата:

Сообщение от Gozar
Для того чтобы делать выполняемые exe файлы есть куда более простые решения

например?

Woit 26.06.2010 15:17

Поставим вопрос немного по другому...
Если я умею писать только на js и ни на чем больше (пусть такое и маловероятно, но допустим), и мне вот вдруг захотелось написать отдельное приложение для win?
Как тогда готовый код js скомпилировать в отдельный exeшник?

Я думаю автор это имел в виду.

Ну и еще в вопросе проскальзывает подтекст, связанный с защитой кода от копирования.

Gvozd 27.06.2010 03:25

Woit,
не стоит строить домыслы о том, чего хочет другой человек на столь голых фактах

Woit 27.06.2010 14:13

Цитата:

Сообщение от Gvozd (Сообщение 61278)
Woit,
не стоит строить домыслы о том, чего хочет другой человек на столь голых фактах

договорились:)

j2j2j2 28.06.2010 11:06

Можно написать такое приложение, но exe-файл должен содержать небольшой код интерпретатора команд или объект webbrowser. Я сейчас делаю такие программы. Например:
1) IPreader http://dl.dropbox.com/u/3467322/RSS/IPReader/ipreader.zip(360kB). Интерфейс написан на HTML и Javascript.
2) Конфигуратор электросчетчиков Меркурий http://dl.dropbox.com/u/3467322/RSS/Konfigurator/konfigurator.zip(1.2MB). Полнофункциональный проект для фирмы Инкотекс.

Мне нравится сама идея использовать HTML и Javascript для создания интерфейса программы, она позволяет значительно улучшить красочность программ.

Kolyaj 28.06.2010 11:49

http://www.appcelerator.com/

j2j2j2 18.10.2010 08:28

Вижу что есть люди которым интересно ненормальное программирование, поэтому открыл новый блог по созданию приложений на основе браузера.
Приглашаю к обсуждению.

with-love-from-siberia 18.10.2010 11:31

Вы не поверите, но "скомпилировать" js -> exe можно:
раздел Standalone JSDB programs

j2j2j2 18.10.2010 13:28

Я же не против, причем обоими руками за. Дело в том что можно писать на любом языке программирования, а системный подход останется один и тот же. Получить исполняемый файл с Javascript можно, причем на любом языке программирования. Рядом со мной девочка пишет на Borland C++, я использую малоизвестный AutoHotKey, а вы JSDB.

Kolyaj 18.10.2010 13:33

Цитата:

Сообщение от j2j2j2
Получить исполняемый файл с Javascript можно, причем на любом языке программирования.

На этой фразе завис.

j2j2j2 18.10.2010 13:54

Цитата:

Сообщение от j2j2j2 (Сообщение 74783)
Получить исполняемый файл с Javascript можно, причем на любом языке программирования.

Цитата:

Сообщение от Kolyaj (Сообщение 74785)
На этой фразе завис.

Да именно так оно и есть на самом деле.
Создаете окно программы с помощью любо языка программирования, который содержит компилятор и может получать экзешник.
Встраиваете в него например объект WebBrowser, с помощью переменной передаете в WebBrowser текст своего Javascript, компилируете проект и получаете исполняемый файл. Все.

Более подробно можно посмотреть как делаю это я http://j2-webdesignblog.blogspot.com.
Удачи.

Kolyaj 18.10.2010 14:03

А с чего вы взяли, что в любом языке есть объект WebBrowser?

j2j2j2 18.10.2010 14:13

Если его нет, то его можно встроить руками, я ведь именно так и поступаю. WebBrowser встраивается как COM-объект.

with-love-from-siberia 18.10.2010 15:03

Цитата:

Сообщение от j2j2j2
использую малоизвестный AutoHotKey, а вы JSDB

У AHK достаточно обширное сообщество. А jsdb - это всего лишь кросплатформенная реализация JavaScript, не лучше и не хуже чем JScript in WSH, Rhino и т.д.

dresden 27.10.2010 19:12

Цитата:

Сообщение от nik1985 (Сообщение 51655)
я знаю, что javascript создавался как интерпретируемый язык, но может есть возможность скомпилировать код яваскрипта в исполняемый exe-файл?

как-то странно это всё выглядит, я думал, что этот вопрос уже отпал навечно...
словом:
1. если это wintel машина -- доставить dotnet (от 2 и до...)
2. далее по инструкции Создание, компиляция и отладка кода JScript

monolithed 27.10.2010 22:09

а мне JScript.NET по душе, только вот синтаксис и кроссплатформенность привести в порядок и можно забыть про C# наверое.

j2j2j2 20.02.2011 21:18

Кому данная тема еще интересна.
Предлагаю посмотреть несколько примеров, каким способом можно упаковывать Javascript и HTML в EXE на основе Autohotkey+COM+HTML+Javascript+Jquery.

Грабли браузеров
Каскадные таблицы стилей
Повороты
Управляемая HTML-страница
Упаковка Javascript и HTML в exe-файл с помощью AutoHotKey
На перепутье
Internet Explorer и WebBrowser
Web-интерфейс

Может кому пригодится...

FINoM 23.02.2011 04:35

1. Appcelerator Titanium
2. W3С Widget (не совсем .exe и работает только при наличии Оперы, на сегодняшний день)

GuardCat 18.10.2011 10:34

Вот эта программа компилит HTA в exe. Не требует плясок с бубном.
Если не встречались с HTA (HTML Application), читаем тут. Компиляция только под win. Плюсы: используется объектная модель браузера, можно писать на VBS, JS. Минусы: hello, IE!; Размер экзешника больше листинга. Подозреваю, что скорость невелика, но не тестировал.

Приложение платное, но триал вечный и без ограничений.

j2j2j2 18.10.2011 12:23

Цитата:

Сообщение от GuardCat (Сообщение 131677)
Вот эта программа компилит HTA в exe. Не требует плясок с бубном.
Если не встречались с HTA (HTML Application), читаем тут. Компиляция только под win. Плюсы: используется объектная модель браузера, можно писать на VBS, JS. Минусы: hello, IE!; Размер экзешника больше листинга. Подозреваю, что скорость невелика, но не тестировал.

Приложение платное, но триал вечный и без ограничений.


Спасибо за ссылку. Я уже достаточно много приложений написал пользуясь технологией Autohotkey+COM+HTML+Javascript+Jquery. Последнее время стал смотреть в сторону QT, который позволяет работать на C++, делать многопоточные приложения, бесплатен, содержит большое количество классов и самое главное может использовать HTML интерфейсы (только они ввели некоторые изменения и назвали QML, но это не суть).

В применяемой мной технологией Autohotkey+COM+HTML+Javascript+Jquery мне не хватило многопоточности, остальное работает на ура.

Может кто знает какие приложения способны делать такой функционал с обязательной многопоточностью.

Joje_Cooper 02.03.2012 18:00

Кажется нашёлся способ....
 
В среде hiasm есть элемент js или vb код...:) Попробовал вроде бы получилось.

vvl 16.01.2016 17:20

jxcore компилит nodejs проекты как положено
 
http://jxcore.com/ - компилит всё что вам надо.

Safort 17.01.2016 15:59

vvl,
чувак, эта тема уже несколько лет как неактуальна)

FINoM 18.01.2016 12:29

Safort, почему? Очень даже актуальна.

С моей стороны озвучу давно известные и самые популярные, на сегодняшний день, инструменты:
http://electron.atom.io/
http://nwjs.io/


Часовой пояс GMT +3, время: 15:33.