Другой взгляд на javascript
Здравствуйте Илья!
Хочу поделиться с вами своим Долго выбирал на каком форуме написать, решил написать на форуме javascript.ru - он, на мой взгляд самый демократичный, а автор не предвзятый. Меня зовут Олег, я занимаюсь интеграцией системных функций и javascript. Мы с вами виделись (я вас видел) на прошлогодней конференции PHPConf, и я смотрю сайт ваш стал заметно лучше с тех пор! По сути я предлагаю посмотреть на программирование на javascript немного в другом ракурсе - в качестве языка для более общего прикладного программирования. В качестве интерпретатора для создания многооконных приложений, возможно не связанных с интернетом вовсе. Допустим вы программист хорошо знающий javascript и хотите написать свой winamp? Я говорю - нет проблем. Перечислим, какие мы можем видеть преимущества javascript, перед другими интерпретируемыми языками: * javascript исполнится на любой windows платформе, не требуя дополнительной закрузки каких-либо компонентов. * javascript активно развивается и программирование на javascript просто преобразилось благодаря библиотекам-помошникам, таким как jquery * разработка пользовательского интерфейса на javascript в связке с HTML+CSS превращается в приятную детскую забаву. А ведь именно эта часть разработки зачастую отнимает большую часть времени "не веб-программиста". Хотелось бы иметь обсуждения этой темы. Моя реализация идеи системного javascripta находится здесь - http://samosat.ru/muml/agentshell.exe.zip. Я попытался сразу предложить писать на javascript программу-агент, живущую в трее. Но есть и опции по отключению этого режима. Не вижу смысла не ставить этот режим по-умолчанию. При запуске приложения можно выбрать демонстрацию возможностей. Базовыми функциями я считаю возможность создавать дочерние окна, дополнять системное меню и меню ярлыка в трее, запись-чтение из файлов конфигурации (сейчас реализованно в виде ini-файлов). Создавать "специальные" окна - окна всплывающих сообщений (навеяно всплывающими окнами qip и mail.ru агент). Интерпретатор всего этого вышел довольно легкий, около 150кб, что есть мелочь, но приятная :) Если кого-либо заинтересует, могу рассказать подробнее о схеме работы приложения, назначении каталогов программы, кроссдоменных запросах и политики безопасности, которой мы планируем придерживаться. Спасибо за внимание, жду критики от вас |
Зачем ограничиваться Windows?
http://gluescript.sourceforge.net/ -- порт wxWidget на JavaScript https://developer.mozilla.org/en/Get...with_XULRunner -- движок от Mozilla для создания кроссплатформенных приложений, на котором, в частности, написаны Firefox, Thunderbird, KomodoIDE. |
Да, тут вы правы, ограничиваться не стоит.
Я долго ходил вокруг XULRunner и облизывался - уж очень мне полюбился XUL. Именно мои эксперименты с ним меня сподвигли сделать то, что сделал. В перспективе поддержка XUL. Но на данный момент ограничивает внушительный размер библиотеки. В настоящее время довольно внункциональное приложение может занимать 500кб вместе(!) с интерпретатором. А в случае с xul-runnero-ом оно бы весило около 6 мб. Впрочем как и мозилла, и зендербёрд. Ведутся работы по поиску решений для linux-подобных ОС |
Цитата:
Кстати, если в системе установлен Firefox 3, то xulrunner не нужен. |
Цитата:
И интересней всё же исходники, а не exe'шник. |
Цитата:
И, также, набором системных функций самой связующей системы (через специальный JavaScript объект "exe"). Последний не велик, только самое необходимое - работа с фалами, окнами, треем, меню. Пока только то, что понадобилось. В планах драг-энд-дроп. Еще раз повторю, исполнением javascript и обработкой HTML+CSS занимается компонент IE - он установлен на большем числе компьютеров, именно поэтому был сделан выбор в его пользу. |
С интерпретатором IE замучаешься ошибки отлаживать.
Вот если бы движок Gecko, да JavaScript'овый какой-нибудь нормальный, вроде TraceMonkey или V8, да асинхронный ввод/вывод, цены бы не было :) |
А зачем этот exe-шник запрашивает исходящее соединение и пытается прослушивать порт?
|
Цитата:
|
Да, я услышал, Вас, отвечу чуть позже.
Насколько мне известно, подобных реализаций существует несколько: 1. HTA и WSH — HTML Applications и Windows Script Host — это, вероятно, самые известные технологии. HTA фактически представляет собой HTML страницу с расширенными правами в системе — возможностью лазить в сеть, гадить в реестр, файловую систему и подключать к этим делам ActiveX. С использованием HTA сделаны многие компоненты самой Windows. 2. .NET Framework — этому вообще по барабану, на чем вы пишете, лишь бы итогом был MSIL. Возможно, JScript.NET вместе с Windows.Forms могут вызвать у кого-то ощущение родного виндового интерфейса. Лично меня они совсем не радуют — ни визуально, ни скоростью. 3. XULRunner — framework от Mozilla предлагает Gecko вместо IE, XpCOM вместо COM/ActiveX. Это всего за 20 мегабайт оверхеда. 4. wxJavascript — известная кросс-платформенная библиотека wxWidgets теперь и для JavaScript. Все это благодаря JS-движку SpiderMonkey от Mozilla и стараниям одного бельгийца. Кстати, этот же уважаемый — автор mod_js для Apache. 5. WindowSystemObject (WSO) — это универсальный программный комплекс для обеспечения доступа к оконной подсистеме Windows на базе архитектуры COM, для создания оконных интерфейсов в программах, написанных на сценарных (скриптовых) языках, а также в программах, написанных на других языках и в других системах программирования. С помощью WSO можно легко создавать оконные интерфейсы на JScript, VBScript, Perl, Python. Российский автор. Источник: http://habrahabr.ru/blogs/javascript/52027/ Интересно было бы услышать реальных пользователей этих систем. Обсудить недостатки и достоинства. И, в последствии, выяснить, чем может быть действительно полезна 7-ая реализация. По поводу порта - программа слушает порт, это используется внутренним компонентом для обработки данных, полученных через интернет или с локального диска. Это позволяет добавить в HTML специальные команды перепроцессора. Например <#include http://yandex.ru#> - загрузит и включит страницу яндекса в вашу Еще стоит отметить, что файлы могут находится как в интернете, так и на локальном диске в папке local. Если файл не найден в этой папке, только тогда он будет загружен из интернета. В папке local находятся папки доменов. Какждое имя папки - это виртуальный домен. допустим если вам нужно подключить файл c:\program files\samosat\local\example.com\ooo.html то он будет доступен по адресу http://example.com/ooo.html Естественно, только для программы samosat будет работать такая подмена домена (но вы можете и в браузере прописать прокси-сервер localhost:1520, тогда и обычный баузере пойдет через обработчик samosat и в нем тоже будут работать команды перепроцессора) При запуске приложения впервые, открывается "Галерея приложений". Это страничка расположенная на samosat.ru/muml/. На данный момент туда может добавить свое приложение любой желающий, пройдя предварительно регистрацию. |
Часовой пояс GMT +3, время: 12:25. |