Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Другой взгляд на javascript (https://javascript.ru/forum/css-html/8257-drugojj-vzglyad-na-javascript.html)

Дубров Олег 17.03.2010 11:06

Другой взгляд на javascript
 
Здравствуйте Илья!
Хочу поделиться с вами своим дерзким другим взглядом на 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кб, что есть мелочь, но приятная :)

Если кого-либо заинтересует, могу рассказать подробнее о схеме работы приложения, назначении каталогов программы, кроссдоменных запросах и политики безопасности, которой мы планируем придерживаться.

Спасибо за внимание, жду критики от вас

Kolyaj 17.03.2010 11:15

Зачем ограничиваться Windows?
http://gluescript.sourceforge.net/ -- порт wxWidget на JavaScript
https://developer.mozilla.org/en/Get...with_XULRunner -- движок от Mozilla для создания кроссплатформенных приложений, на котором, в частности, написаны Firefox, Thunderbird, KomodoIDE.

Дубров Олег 17.03.2010 11:44

Да, тут вы правы, ограничиваться не стоит.
Я долго ходил вокруг XULRunner и облизывался - уж очень мне полюбился XUL. Именно мои эксперименты с ним меня сподвигли сделать то, что сделал.
В перспективе поддержка XUL. Но на данный момент ограничивает внушительный размер библиотеки.
В настоящее время довольно внункциональное приложение может занимать 500кб вместе(!) с интерпретатором. А в случае с xul-runnero-ом оно бы весило около 6 мб. Впрочем как и мозилла, и зендербёрд.

Ведутся работы по поиску решений для linux-подобных ОС

Kolyaj 17.03.2010 11:54

Цитата:

Сообщение от Дубров Олег
В настоящее время довольно внункциональное приложение может занимать 500кб вместе(!) с интерпретатором.

А функциональность интерпретатора?

Кстати, если в системе установлен Firefox 3, то xulrunner не нужен.

Kolyaj 17.03.2010 11:59

Цитата:

Сообщение от Дубров Олег
кроссдоменных запросах

Что такое кроссдоменный запрос в терминах локального приложения?

И интересней всё же исходники, а не exe'шник.

Дубров Олег 17.03.2010 12:07

Цитата:

Сообщение от Kolyaj (Сообщение 47978)
А функциональность интерпретатора?

Функциональность интерпретатора ограничивается функциональностью Internet Explorer-a, установленного в системе, т.к. используется ole-компонент от создателей windows.
И, также, набором системных функций самой связующей системы (через специальный JavaScript объект "exe"). Последний не велик, только самое необходимое - работа с фалами, окнами, треем, меню. Пока только то, что понадобилось.
В планах драг-энд-дроп.

Еще раз повторю, исполнением javascript и обработкой HTML+CSS занимается компонент IE - он установлен на большем числе компьютеров, именно поэтому был сделан выбор в его пользу.

Kolyaj 17.03.2010 12:15

С интерпретатором IE замучаешься ошибки отлаживать.

Вот если бы движок Gecko, да JavaScript'овый какой-нибудь нормальный, вроде TraceMonkey или V8, да асинхронный ввод/вывод, цены бы не было :)

Riim 17.03.2010 12:53

А зачем этот exe-шник запрашивает исходящее соединение и пытается прослушивать порт?

subzey 17.03.2010 14:12

Цитата:

Сообщение от Дубров Олег
исполнением javascript и обработкой HTML+CSS занимается компонент IE

Тогда чем все это разительно отличается от HTA?

Дубров Олег 17.03.2010 14:28

Да, я услышал, Вас, отвечу чуть позже.

Насколько мне известно, подобных реализаций существует несколько:

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.