7

OpenLaszlo 是 - 据我所知 - 唯一具有以下功能的富 Internet 应用程序平台:

  • 基于声明性 XML 的用户界面语言(类似于 Mozilla 的 XUL)称为 LZX。
  • 将 LZX 交叉编译为 JavaScript 或 ActionScript 3(因此支持两个运行时)。
  • 能够仅使用 XML 和 JavaScript 或 JavaScript 开发组件;所有组件都由 OpenLaszlo 呈现,因此它们在浏览器和设备上看起来都是一样的。
  • 查看跨运行时工作的系统、键盘和鼠标管理。
  • 组件可以用 LZX (XML + JavaScript) 编写,也可以仅用 JavaScript 编写
  • XML 数据集支持基于 XPath 的组件到数据集元素的映射。
  • 支持多种预定义布局的布局引擎;开发人员可以轻松实现自定义布局。
  • 在 XML 属性中使用简单语法对约束的强大支持:$once{JavaScript 表达式} 或 $always{JavaScript 表达式}。
  • 内置调试器(开发人员控制台)在两个运行时中工作。

我还没有见过任何更现代的 JavaScript 框架,它可以像 OpenLaszlo 一样简单地创建 HTML5 应用程序 - 唯一的缺点是当前随 OpenLaszlo 提供的组件集看起来有点像 90 年代的 Mac OS。

但是,将应用程序部署为 HTML5/JavaScript 应用程序和 Adob​​e Flash 应用程序(可以选择创建基于 Adob​​e AIR 的移动应用程序,尽管该功能并未直接内置到 OpenLaszlo 服务器中)的方法的有效性如何?我听说 Adob​​e 试图用 FalconJS 编译器原型做类似的事情(有关更多信息,请参阅此Adob​​e 视频 Open Discussion about Falcon and FalconJS),但他们停止了努力。FalconJS 概念验证的代码将作为 Apache Flex 项目的一部分贡献给 Apache 基金会,但是

令人惊讶的是,在 OpenLaszlo 展示部分中没有一个应用程序同时使用这两种运行时:http ://www.openlaszlo.org/showcase

一篇 2007 年的旧 Ajaxian 文章中,我读到 Laszlo Webtop 的“最终版本将支持 OpenLaszlo 4,这意味着同时支持 Ajax 和 Flash 应用程序”。但是 Laszlo Webtop 演示站点http://gowebtop.com/webtop/只有基于 Flash 的 Webtop 版本。我在Stackoverflow 讨论读到 Gliffy - 我所知道的最令人印象深刻的 OpenLaszlo 应用程序之一 - 已使用 JavaScript 重新构建,而不是利用 OpenLaszlo 的双运行时功能。

是否有任何其他同时部署为 HTML5/DHTML 和 Flash 的大型 OpenLaszlo 应用程序,这些应用程序可能未在 OpenLaszlo.org 网站上列出?即使 Flash 不再那么流行,它仍然是许多用例(音频会议、浏览器中的 3d、GPU 加速视频播放等)的相关技术。

4

4 回答 4

5

我在 2004 年开始使用 OpenLaszlo,当时我认为没有更好的免费开源 RIA 工具可以满足我的需求。

我的应用程序目前利用 SWF 和 JavaScript 运行时。因此,仅仅因为它们不在现已死去的 Laszlo 展示中并不意味着没有大型应用程序利用这两种运行时。我已经在我的应用程序上工作了 7 年。相比之下,Gliffy 是一个修补玩具,恕我直言……我还没有找到任何比我的更复杂的 OL 应用程序。并不意味着他们不在那里,但如果他们在,我还没有看到他们。

我的应用程序仅使用一个或另一个运行时是不可行的。所以对我来说,拥有两个运行时是必不可少的。HTML5 对于某些事情来说太慢了,而 SWF10 提供了最一致的跨浏览器体验。

Haxe 不是 OL 替代品,这是肯定的。对我来说,OL 的价值在于从约束、基于实例的编程以及将数据绑定到视图的简易性中获得的生产力提升。我无法使用任何其他工具自行构建我的产品。我看着远方。随着 OL 的衰落,现在几乎死了,我也在继续寻找。OL 的 HTML5 运行时在最新的 IE 版本中无法运行,这很糟糕……但可以通过 IE7 仿真模式或 Chrome 框架插件运行(由于 IE 糟糕的 JavaScript 引擎,这实际上是必不可少的)。

您是否需要这两个运行时取决于您的项目。虽然编译器制造商认为能够同时发出 SWF 和 HTML5 运行时是可取的可能没有意义,但由于 OL 多年来一直能够做到这一点,现在有一些像我这样的系统正在利用这一点能力。

例如,我的系统被用于不允许 Flash 插件的军事机密网络……所以对于那些安装,我必须依赖 HTML5。当不在机密网络上运行时,我的系统会在有利的情况下利用 SWF 运行时的运行时性能和其他功能。混合方法对我来说至关重要。如果我有一个仅限 SWF 的应用程序,则不允许在机密网络上使用它,但如果它是仅限 HTML5 的应用程序部分,由于浏览器的限制,它的表现将不那么出色。

于 2012-09-06T20:45:06.700 回答
2

我将首先警告这一点,这不会是一个完整的答案。但是,希望其中一些信息对您有用。

我最近查看了 OpenLaszlo 与 Stackoverflow 上的另一个问题有关,在我看来,它具有一个垂死项目的所有特征(审查时,Raju 在评论中提供了证据)

关于 Gliffy,这篇文章提供了一些关于他们放弃 OpenLaszlo 的理由的见解。他们特别提到了编译时间的问题以及这对他们的开发时间的影响。

它绝对不会勾选你所有的框(具体来说,我不相信有对基于 XML 的声明性 UI 语言的支持),但Haxe / NME似乎满足了你能够编译为 Flash 和 HTML5 的核心要求.

公平披露,我实际上并没有使用它,但我一直听到关于它的好消息(我刚刚参加了一个创意发展会议,在那里我听到至少有 2 位演讲者对此赞不绝口)。它本质上是 ActionScript 3.0 减去主要的烦恼和主要的遗漏(例如抽象类)。因此,如果您已经了解 ActionScript 3.0,那么它应该很容易上手,并且使用任何一种方式都可以带来愉快的体验。

于 2012-09-06T12:47:11.747 回答
2

即使在 2012 年,Web 开发人员仍然面临Laszlo在公司最初创建OpenLaszlo时试图解决的问题。10 年前,Flash 是唯一的跨浏览器技术,可为 97% 的安装了插件的桌面浏览器提供像素完美的渲染。
JavaScript 引擎、HTML 和 CSS 现在可以提供更多功能:音频和视频播放、嵌入字体、基于 CSS 的动画、硬件加速的内容渲染、绘图 API、最近在某些浏览器(Chrome、Firefox 和 Opera)中的视频会议支持基于WebRTC)。现代浏览器提供几乎与 Flash 相同的功能,但仍有一定比例的用户使用比 IE9 更早版本的 Internet Explorer 浏览网页。
面向消费者或商业应用的要求仍然不同:许多企业

跨浏览器应用程序开发
如果您了解浏览器之间的 API 和差异,您可以轻松实现基于开放标准的 Flash 的 80-90%。但是您仍然依赖于开发人员的专业知识,使用 Flash,您有一个 ActionScript API,您可以在所有浏览器中使用它(至少对于 Windows 和 OS X,Linux 有一些限制并且没有得到很好的支持)。

LZX 语言与纯 JavaScript
LZX 仍然是一种出色的语言,可以使用已建立的开发方法构建出色的 UI。LZX 已经发展了很多:CSS 支持、mixins、支持用 JavaScript 而非 XML 编码类、将 ActionScript 3 代码嵌入到语言中是一些新功能。
6 年前 - 在 LZX 创建很久之后 - 许多开发人员不知道如何编写好的 JavaScript 代码。基于原型的开发模型没有很好的文档记录,开发人员倾向于使用 Java/OOP 之类的 JavaScript - 导致代码很糟糕。甚至在 2012 年,市场上有许多关于 JavaScript 的好书和数百万兴奋的 JavaScript 开发人员,使用纯 JavaScript 构建复杂的接口并不是一件容易的事。像CoffeeScript这样的交叉编译到 JavaScript 的语言的流行是有原因的。
大量使用 OpenLaszlo 的 LZX 语言并转而使用 jQuery 或 Prototype 等 JavaScript 框架的开发人员抱怨需要多少代码才能使用数据集、数据绑定、复制和复制几行 LZX 代码来完成。布局系统。许多转向 HTML5/JavaScript 开发的 Flex 开发人员抱怨同样的事情。因此,拥有 LZX 的强大功能并能够交叉编译为 SWF 和 JavaScript 仍然是非常有价值的东西。

OpenLaszlo 和Adob​​e AIR SDK
使用基于 ActionScript 3 的 SWF10/11 运行时,任何 OpenLaszlo 应用程序都可以轻松地编译成 Adob​​e AIR for Android 或 iOS 应用程序。查看我在 2010 年创建的此视频,其中显示了将 OpenLaszlo 应用程序编译为 AIR for Android 应用程序的 Apache Ant 脚本并将应用程序部署到手机。该工作流程适用于 OpenLaszlo 5.0 的最新(未发布)版本。缺少的是,目前没有针对 OpenLaszlo 的移动和触控优化的组件集。但是,如果活跃的社区成员愿意为这样的项目做出贡献,那么创建这样的组件集不会有太多的工作。这意味着,您可以使用 LZX 在现代智能手机和平板电脑上开发性能良好的移动应用程序,而无需学习用于 Android 开发的 Objective C 或 Java。Haxe是另一个开源项目,它大量使用交叉编译来针对更多的运行时:JavaScript、Flash、NekoVM、PHP、C++、C# 和 Java。

双重运行时和交叉编译以获得更好的用户体验
在过去几年中,有许多技术使移动应用程序开发人员能够以一种语言编写应用程序,并在其他移动平台上交叉编译代码。您可以对 OpenLaszlo 执行相同的操作,并且由于模块化架构(用 LZX 编写的组件、用 LaszloScript/JavaScript 编写的 LFC、用运行时特定语言编写的内核,例如 ActionScript3),您可以轻松添加其他运行时。但在我看来,使用 LZX 之类的语言并交叉编译为 JavaScript、ActionScript 3 或其他语言或 VM 有一个更重要的原因。它与创建令人惊叹的视觉效果和独特的用户体验的能力有关,这是由 LZX 实现的,而纯 JavaScript 开发很难实现。
Laszlo Systems 和 David Temkin(Laszlo 的前首席执行官兼首席技术官)建立了电影用户体验一词:

电影般的用户体验首先传达了你不仅仅是在看你在互动——它的“用户体验”部分。我们认为电影是一个有趣的术语,它带有非技术性的旋转。当非技术人员看到它时,他们立即明白这是一个完全不同类型的产品类别,但业内人士会看到它并说屏幕上的东西正在移动,也许你有不同的技术架构......</ p>

OpenLaszlo 和 LZX 的目标之一是通过为 UI 工程师提供 API 和编程语言 (LZX) 中的工具来准确再现 UX 设计师使用 Flash 创作等工具创建的体验,从而实现这种电影用户体验的创建工具。

这是一本关于 iOS 应用程序开发的书的引述,表明其他公司看到了这种方法的价值:

Apple 工程师在谈论漂亮的用户界面时喜欢谈论的概念之一是“电影用户体验”的概念。电影用户体验本质上是一个看起来像好莱坞电影的用户界面。它看起来充满未来感且流畅,它使用动画来增强使用物理对象的感觉。
Apple 用户界面设计师专门为您提供了一组工具,使您能够构建这些类型的电影用户界面。Core Animation 之类的工具使您能够构建用户界面,这些用户界面涉及从屏幕外滑入而不仅仅是出现的元素,以及以几乎物理重量滚动的元素

LZX 和交叉编译器为我们提供了创建这种特殊用户体验的工具。你可以用 JavaScript 做同样的事情,但它会更多的代码,而且可能更难。一个很好的例子是在 DHTML 中运行的第一个 OpenLaszlo 应用程序,LzPix 演示创建于 2006 年,它仍然是一个令人惊叹的 UI - 我还没有看到使用 JavaScript 框架构建的任何类似的东西。

双运行时仍然有效
是的,双运行时方法仍然有效。展示中应该有更多使用 DHTML 运行时的应用程序,我不知道为什么不是这样。OpenLaszlo 没有针对 iPad 或平板电脑进行优化这一事实绝对是一个劣势,但 DHTML 运行时可以针对 iOS 和 Android 进行优化。如果桌面浏览器的怪癖被删除,将创建一个针对移动浏览器优化的新组件集(使用 HTML 画布和 CSS2/3 呈现组件),您将拥有适用于 OpenLaszlo 的可靠移动运行时。

于 2012-09-06T23:11:57.370 回答
1

我们在 2006 年选择了 OpenLaszlo 来实现我们的在线视频编辑应用程序 (http://www.sarolta.tv/web/sarolta-tools/template-editor.html),这是在两次尝试使用不同平台创建它之后。

第一次失败的尝试是使用 DHTML,但是在纯 JavaScript+HTML 中执行此操作的复杂性以及使代码在不同浏览器中工作方式不同的浏览器怪癖阻止了该尝试的成功完成。

第二次尝试是使用纯 Adob​​e Flash,但 Flash 面向时间线的特性对开发人员来说是一个陌生的概念,这使得他们很难创造出想要的东西。

最后,选择了 OpenLaszlo,它是 XML 和 JavaScript 的直观组合,任何对 OO 编程和 Web 设计有一点经验的人都可以轻松上手,在 Flash 中构建复杂的应用程序。那时 OpenLaszlo 只支持 Flash,但每个操作系统上的每个浏览器都支持 Flash。我们喜欢 Flash 是跨平台的,因为代码在每个浏览器中都以相同的方式运行,而基于 JavaScript 的 DHTML 应用程序并非如此。当时 97% 以上的系统都支持 Flash,因此用户也无需安装任何软件,我们的应用程序就可以在他们的系统上运行。

作为一家员工数量有限的初创公司,构建和维护用于不同浏览器和操作系统的应用程序的多个版本的资源并不存在,OpenLaszlo 在当时解决了这个问题。

当 OpenLaszlo 添加 DHTML 运行时以及听说 IBM 正在为 OpenLaszlo 开发(现已放弃的)Java 运行时时,我们很高兴,因为这意味着我们的代码将与新兴的移动市场和其他设备兼容。不幸的是,自 2010 年 10 月以来,在 Laszlo 系统上工作的任何官方 OpenLaszlo 开发人员都没有做太多的工作,因此 DHTML/HTML5 运行时从那时起没有任何改进。

我确实认为,即使在今天,一次写入随处运行的方法仍然非常受欢迎。被迫处理使您的应用程序在不同系统上以不同方式工作的浏览器和操作系统怪癖是一件令人讨厌的事情,并且需要大量的维护时间。我认为 JQuery 尤其是 JQuery mobile 在今天如此受欢迎的原因是因为它被设计为跨平台的,它可以为您无形地处理浏览器/操作系统的怪癖,因此您不必担心它。JQuery mobile 支持几乎所有平台:

http://jquerymobile.com/gbs/

所以,我认为,OpenLaszlo 的双运行时仍然有效,但也许问题是 OpenLaszlo 在近两年没有任何正式发布的情况下是否仍然有效,而其他 JavaScript 框架正在不断改进和发展以取代对它的需求。

于 2012-09-07T00:32:37.553 回答