Является ли подход OpenLaszlo с двумя средами исполнения (HTML5 и Flash/SWF) все еще действительным?
Насколько мне известно, OpenLaszlo - единственная многофункциональная платформа для интернет-приложений со следующими функциями:
- Декларативный язык пользовательского интерфейса на основе XML (похожий на XUL в Mozilla), называемый LZX.
- Кросс-компиляция LZX для JavaScript или ActionScript 3 (поэтому поддерживается две среды выполнения).
- Возможность разработки компонентов с использованием только XML и JavaScript или JavaScript; Все компоненты отображаются OpenLaszlo, поэтому они будут выглядеть одинаково для всех браузеров и устройств.
- Просмотр управления системой, клавиатурой и мышью во время выполнения.
- Компонент может быть написан на LZX (XML + JavaScript) или только на JavaScript
- Наборы данных XML, поддерживающие сопоставление компонентов на основе XPath, с элементами набора данных.
- Механизм компоновки, поддерживающий ряд предопределенных макетов; разработчики могут легко реализовать пользовательские макеты.
- Мощная поддержка ограничений с использованием простого синтаксиса в атрибутах XML: $ Once{JavaScript expression} или $always{JavaScript expression}.
- Встроенный отладчик (консоль разработчика), работающий в обеих средах выполнения.
Я не видел более современной JavaScript-инфраструктуры, которая бы позволяла создавать приложения HTML5 так же легко, как OpenLaszlo, - с той единственной недостаткой, что текущий набор компонентов, поставляемый с OpenLaszlo, немного напоминает Mac OS еще в 90-х годах.
Но насколько обоснован подход к развертыванию приложения как приложения HTML5/JavaScript, так и приложения Adobe Flash (с возможностью создания мобильного приложения на основе Adobe AIR, хотя эта функциональность не встроена непосредственно в сервер OpenLaszlo)? Я слышал, что Adobe пыталась сделать нечто подобное с прототипом компилятора FalconJS (см. Это видео Adobe "Открытое обсуждение о Falcon и FalconJS" для получения дополнительной информации), но они остановили эту работу. Код доказательства концепции FalconJS будет внесен в Apache Foundation в рамках проекта Apache Flex, но
Удивительно видеть, что нет ни одного приложения, использующего обе среды выполнения в разделе демонстрации OpenLaszlo: http://www.openlaszlo.org/showcase
В старой статье на Ajaxian от 2007 года я читал, что "последний выпуск Laszlo Webtop будет поддерживать OpenLaszlo 4, что будет означать поддержку как Ajax, так и Flash-приложений". Но на демонстрационном сайте Laszlo Webtop http://gowebtop.com/webtop/ есть только версия Webtop на основе Flash. В этом обсуждении Stackru я читал, что Gliffy - одно из самых впечатляющих приложений OpenLaszlo, которое я знаю, - был перестроен с использованием JavaScript, а не с использованием возможности OpenLaszlo с двумя средами выполнения.
Существуют ли другие большие приложения OpenLaszlo, развернутые как HTML5/DHTML и Flash, которые, возможно, не перечислены на веб-сайте OpenLaszlo.org? Даже если Flash уже не так популярен, он по-прежнему актуален для ряда случаев (аудиоконференции, 3D в браузере, ускоренное воспроизведение видео с GPU и т. Д.).
4 ответа
Я начал использовать OpenLaszlo в 2004 году после того, как пришел к выводу, что в то время не было лучшего бесплатного RIA-инструмента с открытым исходным кодом для моих нужд.
Мои приложения в настоящее время используют среды выполнения SWF и JavaScript. То, что они не представлены в уже мертвой витрине Laszlo, не означает, что не существует больших приложений, использующих обе среды выполнения. Я работаю над своими приложениями в течение 7 лет. Глиффи, по сравнению с ним, - игрушка-повозка. ИМХО... Мне еще предстоит найти какие-либо более сложные OL-приложения, чем мои. Это не значит, что их там нет, но если они есть, я их не видел.
Мои приложения не были бы возможны только с одной или другой средой выполнения. Поэтому для меня важно иметь обе среды выполнения. HTML5 слишком медленный для определенных вещей, в то время как SWF10 предлагает наиболее согласованный кросс-браузерный интерфейс.
HAXE - это не замена OL, это точно. Ценность OL для меня - повышение производительности, полученное от ограничений, программирование на основе экземпляров и простота привязки данных к представлениям. Я не мог бы построить свои продукты самостоятельно, используя любой другой инструмент. Я посмотрел далеко и широко. С OL в упадке и теперь почти мертвым, я тоже продолжаю искать. HTML5 во время выполнения OL не работает в последних версиях IE, что воняет... но его можно запустить в режиме эмуляции IE7 или в плагине Chrome frame (что на самом деле необходимо из-за дрянного движка JavaScript в IE).
Нужны ли вам обе среды выполнения, зависит от вашего проекта. Хотя производителям компиляторов, вероятно, не имеет смысла думать, что возможность испускать среды выполнения SWF и HTML5 желательна, поскольку OL может делать это уже много лет, есть некоторые системы, например моя, использующая это в своих интересах. возможность.
Например, моя система используется в военных секретных сетях, которые не поддерживают плагин Flash... поэтому для этих установок я должен полагаться на HTML5. Когда система не работает в секретных сетях, моя система использует производительность среды выполнения и другие возможности среды SWF, когда это выгодно. Гибридный подход важен для меня. Если бы у меня было приложение, предназначенное только для SWF, оно не было бы разрешено в секретных сетях, но если бы это были только части HTML5, приложение было бы менее звездным из-за ограничений браузера.
Даже в 2012 году веб-разработчики все еще сталкиваются с проблемами, которые Ласло пытался решить, когда компания первоначально создала OpenLaszlo. 10 лет назад Flash была единственной кросс-браузерной технологией, обеспечивающей идеальный рендеринг для 97% браузеров, где установлен плагин.
Движки JavaScript, HTML и CSS могут предложить гораздо больше: воспроизведение аудио и видео, встраивание шрифтов, анимация на основе CSS, аппаратное ускорение рендеринга контента, API-интерфейсы рисования, поддержка видеоконференций в некоторых браузерах (Chrome, Firefox и Opera). основанный на WebRTC). Современные браузеры предлагают почти те же функции, что и Flash, но все еще есть определенный процент пользователей, просматривающих Интернет с более ранней версией Internet Explorer, чем IE9.
Требования к потребительским или бизнес-приложениям по-прежнему различны: многие предприятия
Кросс-браузерная разработка приложений
Если вы знаете API и различия между браузерами, вы можете легко достичь 80-90% от того, что вы можете с помощью Flash на основе открытых стандартов. Но вы по-прежнему зависите от опыта ваших разработчиков: во Flash у вас есть один API-интерфейс ActionScript, который вы используете во всех браузерах (по крайней мере, для Windows и OS X, Linux имеет некоторые ограничения и плохо поддерживается).
Язык LZX против чистого JavaScript
LZX по-прежнему является фантастическим языком для создания великолепных интерфейсов с использованием устоявшегося подхода к разработке. LZX развился во многом: поддержка CSS, миксины, поддержка кодирования классов в JavaScript вместо XML, возможность встраивания кода ActionScript 3 в язык - некоторые из новых функций.
6 лет назад - много лет спустя после создания LZX - многие разработчики не знали, как написать хороший код JavaScript. Модель разработки на основе прототипа не была хорошо документирована, и разработчики, как правило, использовали JavaScript, такой как Java/OOP, что приводило к ужасному коду. И даже в 2012 году, когда на рынке появилось много хороших книг по JavaScript и миллионы увлеченных разработчиков JavaScript, создание сложных интерфейсов с использованием чистого JavaScript - задача не из легких. Есть причина популярности языков кросс-компиляции для JavaScript, таких как CoffeeScript.
Многие разработчики, которые использовали язык LZX OpenLaszlo и перешли на использование JavaScript-фреймворков, таких как jQuery или Prototype, жалуются на то, сколько кода требуется для достижения того, что можно сделать с помощью нескольких строк кода LZX, используя наборы данных, привязку данных, репликацию и система макетов. Многие разработчики Flex, переходящие на разработку HTML5/JavaScript, жалуются на одно и то же. Таким образом, обладание мощью LZX и возможность кросс-компиляции как в SWF, так и в JavaScript - все еще что-то чрезвычайно ценное.
OpenLaszlo и Adobe AIR SDK
Благодаря среде выполнения SWF10/11 на основе ActionScript 3 любое приложение OpenLaszlo можно легко скомпилировать в приложение Adobe AIR для Android или iOS. Посмотрите это видео, которое я создал еще в 2010 году, где показан скрипт Apache Ant, который компилирует приложение OpenLaszlo в приложение AIR for Android и развертывает приложение на телефоне. Этот рабочий процесс работает с последней (неизданной) версией OpenLaszlo 5.0. Чего не хватает, так это того, что на данный момент нет набора компонентов, оптимизированного для мобильных устройств и сенсорного ввода для OpenLaszlo. Но было бы не слишком много работы по созданию такого набора компонентов, если бы активные члены сообщества были бы готовы внести свой вклад в такой проект. Это означает, что вы можете использовать LZX для разработки мобильных приложений с хорошей производительностью на современных смартфонах и планшетах без необходимости изучать Objective C или Java для разработки под Android. Haxe - это еще один проект с открытым исходным кодом, в котором интенсивно используется кросс-компиляция для нацеливания на еще большее количество сред выполнения: JavaScript, Flash, NekoVM, PHP, C++, C# и Java.
Двойная среда выполнения и кросс-компиляция для лучшего взаимодействия с пользователем
В последние годы было разработано несколько технологий, позволяющих разработчикам мобильных приложений кодировать приложение на одном языке и кросс-компилировать код других мобильных платформ. Вы можете сделать то же самое с OpenLaszlo, и вы можете легко добавить другие среды выполнения благодаря модульной архитектуре (компоненты, написанные на LZX, LFC, написанные на LaszloScript/JavaScript, ядро, написанное на языке, специфичном для среды выполнения, например, ActionScript3). Но на мой взгляд, есть еще более важная причина для использования такого языка, как LZX, и кросс-компиляции для JavaScript, ActionScript 3 или других языков или виртуальных машин. Это связано со способностью создавать потрясающие визуальные эффекты и уникальный пользовательский опыт, который поддерживается LZX, и которого трудно достичь с помощью разработки на чистом JavaScript.
Laszlo Systems и Дэвид Темкин (бывший генеральный директор и технический директор Laszlo) установили термин " опыт кинематографического пользователя":
Опыт кинематографического пользователя прежде всего говорит о том, что вы не просто наблюдаете за тем, как вы взаимодействуете, - это часть "взаимодействия с пользователем". Мы подумали, что кинематограф - это интригующий термин, в котором нет нетехнических идей. Это было то, что когда нетехнологи увидели это, они сразу поняли, что это совершенно другой тип товарной категории, и все же инсайдеры индустрии посмотрят на это и скажут, что на экране что-то движется, возможно, у вас другая техническая архитектура…
Одной из целей OpenLaszlo и LZX было создание такого кинематографического пользовательского опыта, предоставляя инженерам пользовательского интерфейса API и инструменты на языке программирования (LZX) для точного воспроизведения опыта, созданного дизайнерами UX с использованием таких инструментов, как разработка Flash. инструмент.
Вот цитата из книги по разработке приложений для iOS, показывающая, что другие компании видят ценность такого подхода:
Одна из концепций, о которых инженеры Apple любят говорить, когда речь идет о красивых пользовательских интерфейсах, - это концепция "кинематографический пользовательский опыт". Кинематографический пользовательский опыт - это, по сути, пользовательский интерфейс, похожий на голливудский фильм. Он выглядит футуристично и плавно, а также использует анимацию для улучшения ощущения работы с физическими объектами.
Разработчики пользовательских интерфейсов Apple специально предоставили вам набор инструментов, позволяющих создавать кинематографические пользовательские интерфейсы этих типов. Такие инструменты, как Core Animation, дают вам возможность создавать интерфейсы разработчиков, которые включают элементы, которые перемещаются из-за пределов экрана, а не просто появляются, и элементы, которые прокручиваются с почти физическим весом.
LZX и кросс-компилятор дают нам инструменты для создания этого особого пользовательского опыта. Вы можете сделать то же самое с JavaScript, но это будет больше кода, и, вероятно, гораздо сложнее. Хорошим примером является первое приложение OpenLaszlo, работающее на DHTML, демо-версия LzPix: созданная в 2006 году, она по-прежнему удивительный пользовательский интерфейс - и я не видел ничего подобного, построенного на JavaScript-фреймворках.
Двойное время выполнения все еще действует
Да, подход с двойным временем выполнения все еще действует. В витрине должно быть больше приложений, использующих среду выполнения DHTML, и я не знаю, почему это не так. Тот факт, что OpenLaszlo не был оптимизирован для iPad или планшетов, определенно является недостатком, но среда выполнения DHTML может быть оптимизирована для iOS и Android. Если удалить причуды браузера на рабочем столе, будет создан новый набор компонентов, оптимизированный для мобильных браузеров (использующий холст HTML и CSS2/3 для визуализации компонентов), у вас будет устойчивая мобильная среда выполнения для OpenLaszlo.
Сначала я скажу, что это не будет полным ответом; Однако, надеюсь, некоторая информация будет полезна для вас.
Недавно я посмотрел на OpenLaszlo в связи с другим вопросом о Stackru, и мне показалось, что в нем есть все отличительные признаки умирающего проекта (в обзоре приводятся доказательства, предоставленные Раджу в комментариях).
Что касается Gliffy, эта статья дает некоторое представление об их обосновании отказа от OpenLaszlo. В частности, они упоминают проблему времени компиляции и влияние, которое это имело на время их разработки.
Это определенно не отмечает все ваши рамки (в частности, я не верю, что есть поддержка декларативного языка пользовательского интерфейса на основе XML), но HAXE/ NME, по- видимому, отвечает вашим основным требованиям - иметь возможность компилировать как в Flash, так и в HTML5,
Справедливое раскрытие, я фактически не использовал это, но я продолжаю слышать хорошие вещи об этом (я только что был на конференции по творческому развитию, где я услышал по крайней мере 2 спикера, бредящих об этом). По сути, это ActionScript 3.0 за вычетом основных неприятностей и плюс основные упущения (например, абстрактные классы). Таким образом, это должно быть легко подобрать, если вы уже знаете ActionScript 3.0, и приятно работать с любым из них.
Мы выбрали OpenLaszlo еще в 2006 году для реализации нашего приложения для онлайн-редактирования видео (http://www.sarolta.tv/web/sarolta-tools/template-editor.html) после двух попыток создать его на разных платформах.
Первой неудачной попыткой было использование DHTML, но сложность выполнения этого в чистом JavaScript+HTML и причудах браузера, которые заставляли код работать по-разному в разных браузерах, препятствовала успешному завершению этой попытки.
Вторая попытка заключалась в использовании чистого Adobe Flash, но ориентированный на временную шкалу характер Flash был для разработчиков чужим, что мешало им создавать то, что нужно.
Наконец, был выбран OpenLaszlo, представлявший собой интуитивно понятную смесь XML и JavaScript, которую каждый, кто имел небольшой опыт в области OO-программирования и веб-дизайна, мог легко освоить для создания сложных приложений во Flash. В то время OpenLaszlo поддерживал только Flash, но каждый браузер в каждой ОС поддерживал Flash. Нам понравилось, что Flash был кроссплатформенным в том смысле, что код работал бы одинаково во всех браузерах, чего не было в случае приложений DHTML на основе JavaScript. В то время 97%+ систем поддерживали Flash, поэтому пользователю также не нужно было устанавливать какое-либо программное обеспечение, чтобы наше приложение работало на их системе.
Поскольку начинающая компания с ограниченным числом сотрудников не располагала ресурсами для создания и поддержки нескольких версий приложения для разных браузеров и операционных систем, OpenLaszlo решила эту проблему в то время.
Мы были счастливы, когда OpenLaszlo добавил среду выполнения DHTML и когда мы услышали, что IBM работает над (сейчас заброшенной) средой исполнения Java для OpenLaszlo, поскольку это будет означать, что наш код будет совместим с развивающимся рынком мобильной связи и другими устройствами. К сожалению, с октября 2010 года ни один официальный разработчик OpenLaszlo, работающий в системах Laszlo, не проделал особой работы, поэтому во время выполнения DHTML/HTML5 улучшений с тех пор не наблюдалось.
Я действительно думаю, что подход "однажды запустить где угодно" - это то, что все еще очень желательно даже сегодня. Быть вынужденным иметь дело с особенностями браузера и ОС, которые заставляют ваше приложение работать по-разному в разных системах, является неприятностью и требует много времени на обслуживание. Я думаю, что причина, по которой JQuery и особенно JQuery mobile так популярны сегодня, заключается в том, что он разработан для кроссплатформенности и незаметно связан с особенностями браузера / ОС, поэтому вам не нужно об этом беспокоиться. JQuery Mobile поддерживает практически все платформы:
Так что, я думаю, двойная среда выполнения OpenLaszlo все еще действует, но, возможно, вопрос в том, действительно ли OpenLaszlo остается действительным спустя почти два года без какого-либо официального выпуска, в то время как другие платформы JavaScript постоянно совершенствуются и развиваются, чтобы заменить потребность в этом.