Представлен (http://ssj-gz.blogspot.ru/2013/01/emscripten-qt-progress-fas...) проект Emscripten-Qt (http://vps2.etotheipiplusone.com:30176/redmine/projects/emsc...), в рамках которого ведётся работа по созданию порта тулкита Qt, нацеленного на использование в web-браузере. В настоящее время для использования доступны компоненты QtCore и QtGui, преобразованные в JavaScript-представление. Изначальный С++ код данных компонентов был преобразован в биткод LLVM и затем транслирован в JavaScript при помощи компилятора Emscripten (https://www.opennet.ru/opennews/art.shtml?num=31155). Работа Emscripten-Qt возможна в любом браузере с поддержкой HTML5-элемента canvas и типизированных массивов, но тестирование проекта ведётся в Firefox и Chrome. Код проекта можно загрузить через Gitorious (https://qt.gitorious.org/~ssj/qt/emscripten-qt).
Кроме автоматизированного преобразования в JavaScript разработчиками ведётся работа по профилированию и выборочной оптимизации полученного кода (например, для некоторых классов была применено inline-развёртывание конструкция). По сравнению с первыми вариантами проекта уже удалось достигнуть неплохого повышения производительности. Например, демонстрация "сталкивающиеся мыши" раньше тратила на отрисовку кадра несколько секунд, после оптимизации производительность возросла до нескольких кадров в секунду. Кроме оптимизации проведена работа по улучшению поддержки клавиатуры, в том числе обработки в приложениях состояния таких клавиш как Shift и Ctrl.
Подготовленные проектом компоненты можно использовать для организации выполнения в браузере нативных Qt-приложений, также преобразованных при помощи Emscripten. В конечном счёте проект планирует обеспечить полный набор средств для упрощения сборки и адаптации таких приложений для работы в браузере. В настоящее время проектом уже подготовлено (http://vps2.etotheipiplusone.com:30176/redmine/projects/emsc...) и собрано для запуска в браузере несколько десятков демонстрационных приложений из состава Qt. Из не поддерживаемых в Emscripten-Qt приложений отмечаются многопоточные программы, программы с локальным циклом обработки событий, программы с интерфейсом drag and drop, программы, использующие расширенные модули (например, не планируется портировать QtScript и QtWebkit).
<center><a href="http://vps2.etotheipiplusone.com:30176/redmine/projects/emsc... src="https://www.opennet.ru/opennews/pics_base/0_1358253617.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0></a></center>URL: http://ssj-gz.blogspot.ru/2013/01/emscripten-qt-progress-fas...
Новость: https://www.opennet.ru/opennews/art.shtml?num=35838
интересно сколко будет весить?
ну, один javascript-файлик у них 15-16 мб. а их там не один...
Круто.
О нет...
Теперь браузерные эксплойты будут с настоящим графическим интерфейсом)
А какой есть в этом практический смысл? Что у GTK, что у QT
> А какой есть в этом практический смысл? Что у GTK, что у
> QTсамое простое приложения в туче для работы с мобильными девайсами. Т.е. теба все равно какой у тя телефон, через браузер запускаешь офис к примеру. Причем не тучную реализацию от МС и Гугла, а нормальный такой же как в нормальной оси.
Ну по-любому тот же офис в комплекте KDE нормально нельзя использовать на телефоне с ограниченным пространством, так что нужно переписывать интерфейс.. Ну в принципе понял идею использования
>Т.е. теба все равно какой у тя телефон, через браузер запускаешь офис к примеру.Тормоза видел?
А qt итак умеет android, meego, maemo, symbian, ios, winmobile и может еще что-то
С большей производительностью
> Тормоза видел?Тормоза не главное. Этим же пользоваться практически невозможно - у браузера своё обрамление. И у мало-мальски сложной QTшной программы вместе с браузером будет под 5 линеек с инструментами, пара менюшек, куча заголовков и т.д. Плюс клавиатурные сочетания браузера.
> А qt итак умеет android, meego, maemo, symbian, ios, winmobile и может
> еще что-то
> С большей производительностьюИ удобством. В любом же случае нужно иметь исходный код программы.
Поэтому решительно непонятно, на кой это сдалось.
Кто мешает на браузере все по отключать
Что же они кутевебкит не портировали? Как же мы теперь без запуска броузера через броузер, и всё равно где стоит этот броузер.
ехал браузер через браузер
видит браузер в реке браузер
сунул браузер браузер в браузер
браузер браузер браузер браузер
Паццталом!
IMHO, логичней как-то так:ехал браузер через браузер
видит браузер в браузере браузер
сунул браузер браузеру в браузер
браузер браузера браузера браузера
Yo dawg, I herd you like browser, so I put a browser in your browser so you can browse while you browse.
> самое простое приложения в туче для работы с мобильными девайсами.Месье знает толк в извращениях. Браузер в любом случае испоганит интерфейс QTшной программы своими сочетаниями клавиш, обрамлением окна, табами и т.д.
а кутэшный браузер испоганит своими кутэшными вкладками интерфейс кутэшной программы
> А какой есть в этом практический смысл? Что у GTK, что у
> QTЕдинственное предположение - мелкие расчётные утилиты на С++ с крошечным QTшным интерфейсом буквально в 2 поля - ввод и вывод. Такие действительно есть смысл портировать прямо в браузер, чтобы не переписывать расчёты на JavaScript.
Например, что-то типа такого - http://radgig.ru/kalkulyator-effektivnoj-dozyi.html или такого - http://www.calctool.org/CALC/phys/optics/reflec_refrac
Ждём портирования KDElibs, Plasma :)
> Ждём портирования KDElibs, Plasma :)с плазмой думаю проблем не будет они перешли на QML...
Интересно. Фрицев не хватает и Хитлера :( С experimnetal в Firefox идет шустрее. В Chromium летает и так, и этак.http://vps2.etotheipiplusone.com:30176/redmine/projects/emsc...
У wxWidgets есть такая реализация
сбрендили
вместо того, чтоб менее вырвиглазных тем наделать, в браузер лезут
Что не хватает, так это оптимизации браузерных движков под код, который генерит emscripten. Ещё недостаток - слабость браузерных API. Но обе проблемы, в принципе решаются. Из позитивных моментов можно отметить потребление памяти, оно в теории должно быть сравнимо с нативным кодом (в отличие от, например, джавы).
> Из позитивных моментов можно отметить потребление памяти,Позитивных для производителей памяти видимо
>оно в теории должно быть сравнимо с нативным кодом (в отличие от, например, джавы).должно раз в 5 больше чем джава требовать
Посмотрите как устроена работа с памятью в emscripten. В основе лежит бинарный массив, который один в один соответствует физической памяти. Небольшой оверхед, связанный с работой JavaScript-движка присутствует, но не он не очень большой, поскольку низкоуровненный транслятор работает как конечный автомат.
> Что не хватает, так это оптимизации браузерных движков под код, который генерит
> emscripten.нет. не хватает нормальных разумных людей, которые будут бить бамбуковой пяткой по палкам этих «прогрессивно мыслящих». сделал кучку? убери за собой, а не на люди тащи.
Есть предел JS-маразму?
Спокойно. Чтобы понять что js ни на что не годен, сначала нужно на него все портировать.
> Спокойно. Чтобы понять что js ни на что не годен, сначала нужно
> на него все портировать.Не бывает негодных языков, бывают негодные программисты.
> Не бывает негодных языковБывают. Например, http://ru.wikipedia.org/wiki/HQ9%2B
Т.е. если ты с похмелья создаешь какой-нить дерьмовый яп, то он не будет негодным, это будут негодным программисты?
Доведут до абсурда (портируют вебкит) и угомонятся.
> Есть предел JS-маразму?Не знаю, язык очень хороший. Да, его непросто освоить, но если это сделать вся мощь и внутренняя красота языка сразу явится вам, так что вы будете плеваться в сторону ваших некогда любимых си++/Java
Ну ладно глупости не говори, плеваться в сторону с++, гугенот ты и еретик
> что вы будете плеваться в сторону ваших некогда любимых си++/JavaХочу напомнить, что год уже 2013-й, и на C++/Java языки не заканчиваются. Как там насчёт F#/OCaml/Haskell?
>> Есть предел JS-маразму?
> Не знаю, язык очень хороший.…мог бы получиться. идеи-то в основе годные: схема, смолтолк. но увы — получился js.
Помоему на скрине хвастались не сабжем а панэээээлищей :)
Я, как пейсатель на Qt, очень рад такому проекту! Не знал что такое есть, погонял демки, производительность отрисовки низкая, но высокую практическую ценность для себя я уже отметил!Но я заметил баг - оно не видит клавишу Ctrl и прочие - думаю это решаемо ибо в принципе же браузер получает эти нажатия - разумеется.
Так что, очень полезный проект, пошел смотреть! Это ж web-интерфейс к оборудования можно делать - еще один способ.
> Это ж web-интерфейс к оборудования
> можно делать - еще один способ.Каким это образом?
Вот и превратился браузер в аналог X-сервера :)
Нет, здесь идея совсем другая. В данном случае программа только загружается с сервера приложений, а выполняется она как яваскрипт-код уже непосредственно внутри браузера и своё окно она рисует в этом же браузере. Т.е. браузер выступает в роли "толстого" клиента, навроде виртуальной машины.
Для "тонкого" клиента (как раз таки аналог X-сервера) есть отдельный проект - qthtml бекенд.
> Т.е. браузер
> выступает в роли "толстого" клиента, навроде виртуальной машины.Но тоже тут особо не повыпендриваешься - я нашёл лишь одно применение этому хозяйству - скудные на интерфейс расчётные утилиты, которые и устанавливать не хочется, и единократно нужно что-то на них просчитать.
> Для "тонкого" клиента (как раз таки аналог X-сервера) есть отдельный проект -
> qthtml бекенд.Вот это нафига - вообще непонятно. :-) Xming/Xorg прекрасно работают по сети, встраивая окно совершенно родным образом с сохранением всех горячих клавиш и без браузерного обрамления. :-)
Иксы обречены, это вопрос времени.
> Иксы обречены, это вопрос времени.а ты уверен, что они умрут раньше, чем ты от старости?
Сперва, дружище, я спляшу тарантеллу на твоих похоронах, а дальше видно будет.
> Сперва, дружище, я спляшу тарантеллу на твоих похоронахда на здоровье, коль скоро это доставит тебе радость. мне-то уже без разницы будет.
> Иксы обречены, это вопрос времени.Ок. Есть любимый вами RDP из Windows - калька X.
Я в любом случае не понимаю, зачем вырезать гланды автогеном через попу. То есть, встраивать окно в браузер, когда окно можно непосредственно встроить в оконную систему ОС. Это же многократно удобнее.
> Ок. Есть любимый вами RDP из Windows - калька X.Теоретически оно так, только на одном и том же медленном соединении RDP летает, а Иксы лагают и отваливаются.
Как идея, Иксы мне крайне импонируют, но реализовано с проблемами, а развивать никто не планирует. Была надежда на FreeNX, но и его не стали раскручивать.
> Теоретически оно так, только на одном и том же медленном соединении RDP
> летает, а Иксы лагают и отваливаются.Вы хотите, чтобы новое творение по тем же мотивам было хуже старого? :-) Какой был бы смысл тогда в RDP, если его сетевые свойства хуже Х? Можно же запустить Xming и на OS Windows.
Я было подумал первое апреля.
Товарищи! У меня вопрос - там в исходниках вижу network-модуль. Что, неужели можно писать QTcpSocket внутри такой штуки и связываться с сервером???Неужели это то о чем я даже боялся помечтать? Чтобы не париться над тонкостями web если надо нечто отобразить в браузере и чтобы это еще и было полноценным клиентским приложением?
Думаю, в отличие от GTK/HTML5, эта штука, подобна GWT. Это ее ближе к моим познаниям, ибо я кутэшник.
В общем, проясните что там с сетью, кто может?
> тестирование проекта ведётся в Firefox и Chromeа на скриншоте Chromium
Не вижу в этом особого смысла, разве что как пруф-концепт.
Есть же полноценный Qt HTML backend:
http://www.youtube.com/watch?v=qDyWjNju1yU
> Не вижу в этом особого смысла, разве что как пруф-концепт.
> Есть же полноценный Qt HTML backendЭто толстый клиент, в отличие от Qt HTML backend, который вообще неясно зачем нужен при наличии Х. :-)
Нет больше Иксов, лет через пять о них никто уже и не вспомнит.
Ага, размечтался! Их вот-вот в браузер портируют и будут они жить вечно.
> Нет больше Иксов, лет через пять о них никто уже и не
> вспомнит.и чем предлагается заменить? нет, вяленый не подходит.
Господа решили, что подходит. Против паровоза не попрешь.
> Господа решили, что подходит. Против паровоза не попрешь.дык иксы-то от этого магически не исчезнут. пусть вяленый сначала взлетит хоть как-то, драйверами обзаведётся. если для игрушек он будет лучше иксов — не проблема запустить, когда поиграть охота. я и сейчас для некоторых применений отдельные иксы стартую — будет ещё и вяленый.
Хорошо, есть RDP.
Из относительно перспективных проектов на замену Иксам есть развивающийся черепашьими темпами xrdp, затем протокол spice, который возможно когда-нибудь адаптируют под Wayland, а также активно развивающийся xpra (но это уже что-то вроде экстеншена к Иксам).
интересно, каким образом xrdp может заменить X Window System? я в смущении.
Кому-то надобно окна по сети кидать, а кому-то рабочие столы. На каждый чих не наздравствуешься.
это всё интересно, однако не имеет отношения к моему вопросу.хинт: X11 — это далеко не только «сетевой протокол».
Кабы вы были принцессой Турандот, а я грезил оказаться с вами в опочивальне, то разгадывать ваши шарады доставило бы мне несказанное удовольствие. Но не сложилось, уж не обессудьте.
не обессужу. действительно, какой смысл обсуждать преемника X Window System с тем, кто вообще не знает, что такое X Window System, упорно считая, что это только сетевой протокол?расходимся.
Может на Firefox OS лучше работать будет?
кто-нибудь, пожалуйста, вызовите уже санитаров. и доктора с бамбуковой палкой.
Хм. А возможно ли будет в теоретическом будущем написать программулину, чтобы она собиралась и для десктопа, и для андроида и для веба? Соответственно, для этого сей проджект мог бы иметь интерес.
> Хм. А возможно ли будет в теоретическом будущем написать программулину, чтобы она
> собиралась и для десктопа, и для андроида и для веба?и сейчас можно, если попыхтеть. только вот уродец получается: «мобильная» морда для десктопа неудобна. и наоборот. а для веба неудобны обе.
когда уже в емскриптен сделают порт браузера? :)
уже год как есть
Ничему не учатся некоторые. И учиться не хотят...
(Светлой памяти java-апплетов посвящается...)