7yue's Weblog

Thinking in RIA Solutions...2470,8514,1020的生活演绎

« AS3代码作为帧Script一个HelloWorld的MXML的背后 »

MXML等于ActionScript

不止一次在Java开发者论坛或者相关文章中看到有关于Java开发人员认为MXML(基于XML)语法构造Flex GUI的抱怨,原因有很多:
开发人员都讨厌XML的语法 (连JavaFX团队的人都这么认为,具体参考:http://www.infoq.com/cn/articles/jfx_preview)
这种语法方式增加了学习成本,学习它的同时还要学习Actionscript

我的看法是MXML就是ActionScript,不过是通过XML标签式的方式将UI Layout构造出来。对于JavaFX团队说的“开发人员都讨厌XML”,我实在不敢苟同,以前我作为web开发人员的时候,我非常喜欢Tag式的语言,从HTML到DHTML到XHTML,后来又喜欢上了ColdFusion,无一不是高效明确的Tag式表现方法。现在Flex也使用这种方式,为的是能够更加有效,直观,而且快速的构建一个RIA的Application Layout出来,恰恰这是弥合设计师和开发人员最有效的途径,设计师能够非常容易理解开发人员使用这种MXML构造Layout布局的方式,尤其是Web UI designer和producer,而开发人员也能够轻易接受设计师和互动人员对于他们构造的MXML template的修改和整理。由MXML构造UI Layout,由AS3构造UI Interactive Logic,我认为绝对是经过深思熟虑后的决定。上面那篇文章说出了开发人员都讨厌XML标签式语法,恰恰反应出了JavaFX团队在理解设计师和开发人员工作流上的经验欠缺,一个RIA,如果只考虑满足开发人员的需求,而忽略UI设计师的工作方式的话,损失将是非常巨大的。

从技术角度而言,MXML=Actionscript更加成立

<mx:Button id="coolbutton"/>

从AS3的角度而言,就是:

import mx.controls.Button;
var coolbutton:Button=new Button();
addChild(coolbutton);


从上面两段代码来看,你是希望你团队里的设计师可以看懂第一行代码呢?还是需要设计师去读懂第二段代码呢?如果说你一个人既是设计师,又是开发人员,呵呵,抱歉我这篇文章浪费了你的时间让你看到了最后。

  • quote 6.jinni
  • http://byjog.com/blog
  • 连Microsoft不也在SilverLight中使用XAML吗,就是为了对应MXML来的。至于JavaFX,只能说Sun天生不是做RIA的料,去看看不伦不类的JavaFX Script,混合了界面和逻辑,既不是Java,也不是Script,也不是XML,这下不光是设计师看不懂了,程序员也得晕。(刚才回复发错地方了)
  • 2008-12-10 23:11:54 回复该留言
  • quote 7.spe
  • 从Designer到Developer,或者Developer同时兼任Designer
    一开始真的是学习成本有一定的增加,不是看不懂XML,而是看到做一件同样事为什么要同时学习2个写法呢。
    作为Designer还是喜欢使用设计软件做出图片与效果,对于用XML编写程序界面并不是Designer要做的事。
    不是说MXML不好,至少我个人觉得在做用MXML来做UI布局毕竟会比直接使用as快很多。
    不过考虑到发布文件大小与不是特别复杂程序,同样不会选用MXML。
    1、开代码要在2个书写风格上去转
    2、使用MXML项目发布文件打,也许我只需要几十K的小应用
  • 2008-12-10 23:17:20 回复该留言
  • quote 8.Nero
  • http://www.leo3.com
  • 一直使用FLASH IDE+DREWING API来做界面。感觉MXML虽然开发速度快,但是开发灵活性不高,还是做喜欢交互效果更丰富的界面:)

    当然了,明年催化剂出来的时候可能会打破这个格局,我会考虑用FLEX,FLASH的AS编辑器实在有点憋手~
  • 2008-12-11 0:23:15 回复该留言
  • quote 9.babyfaction
  • 同意8楼的,MXML确实不灵活,而且喜欢MXML的多是WEB开发者转过来的,为什么ADOBE不允许As开发者使用MXML里的那些控件?(或者是我不知道怎么使用),我猜原因是怕纯AS开发者,使用那些控件之后比MXML开发者做的程序更有效率,更健壮。 导致web开发者失去信心。。 从而导致大量开发人员(ADOBE产品使用者)的流失。

    当然我也不是贬低WEB开发者。。我以前也做WEB开发的。 我的HTML和CSS也还算可以,乱效率我觉得MXML不如HTML+css, 如果世界上没有纯AS工程,只有MXML,我的选择也许是HTML+CSS。

    MXML的控件只要ADOBE想让我们在纯AS工程里用,我想应该是可以用的。。(也许我不懂怎么用,)。强烈对AS工程开放MXML里的那些控件。。
  • 2008-12-11 1:26:33 回复该留言
  • quote 10.babyfaction
  • 再说一下,MS模仿ADOBE的mxml吧自己的RIA也搞成XML式的开发方式,真是失败。。 其实有无mxml都无所谓,如果adobe的mxml设计视图能跟vs的 winform设计视图的布局方便性及智能化媲美,我到喜欢GUI布局的。。如果真能那样,mxml真是多余了。。呵呵。。

    大家不要吵架,及吐我口水,我这只是建议。
  • 2008-12-11 1:41:28 回复该留言
  • quote 11.Nero
  • MS那套只能吸引Developer,没有Designer的话他们什么都不是.
  • 2008-12-11 3:45:00 回复该留言
  • quote 12.auzn
  • 其实MXML我觉得不错的,布局排版很快速。即使是纯AS程序员也可以直接使用或者通过继承等方法来开发更强大灵活的组件。MXML和纯AS之间没多大矛盾,相互结合能发挥出很大的功效。
  • 2008-12-11 9:06:48 回复该留言
  • quote 13.goodfish
  • 我的理解是MXML像FLEX的一个“内置框架”,最终还是AS。FLEX3发布之前,我一直用FLASH IDE或者Eclipse+FDT纯AS开发,用上FLEX3之后(MXML+AS方式),我就没装FLASH IDE了。MXML有在UI布局上的优势(类似于用Dreamweaver和记事本写html),AS在扩展UI组件上更灵活一些(虽然用MXML方式也能实现,但看起来别扭)
  • 2008-12-11 10:02:11 回复该留言
  • quote 14.goosfish
  • 学过几天Java Web开发,记得用XML的地方不少。Tomcat和Resin要用web.xml配置,Ant也支持用bulid.xml,Spring框架的配置等,反正我学用Spring+Ibatis+Freemarker写web时,没少和XML打交道。
  • 2008-12-11 10:09:44 回复该留言
  • quote 15.xvyu
  • 不明白为什么adobe要发明一套标记,直接用html和css规范不是更好么
  • 2008-12-11 16:28:50 回复该留言
  • quote 17.7yue
  • http://www.7yue.com
  • 因为html和CSS是被browser识别的,而mxml是被flex compiler识别的,如果换成html和CSS,还要flex编译器干什么,直接拿browser就好了,呵呵。
  • 2008-12-11 16:37:17 回复该留言
  • quote 18.baby
  • adobe为什么不为as开发者提供一套UI框架。。 它不怕损失一批不喜欢XML式编程的开发者么?
  • 2008-12-11 17:07:15 回复该留言
  • quote 19.7yue
  • http://www.7yue.com
  • 如果什么都是Adobe来做,这个生态系统反而不好了。最好的就是第三方API能够百花齐放,这是最好的结果。现在第三方API数量增长相当不错,势头很猛,尤其是3D Engine部分。
  • 2008-12-11 17:51:20 回复该留言
  • quote 21.asfan
  • 最喜欢FLEX MXML的程序员是JavaScript程序员,因为这两都的关系类似于下面这样的类比:
    HTML+CSS ==MXML+CSS
    JavaScript==ActionScript
    连编写代码的风格都非常像,如onclick='clickfun()'之类。

    MXML非常适合用来编制以FLEX为主要应用的场合。
    其它场合,如游戏,动效之类的,拜托,还是用纯AS工程吧。
    你见过有用XML编写的C/C++游戏吗?XML更多的地位应该是消息通讯以及配置文件。
    夸大或无视MXML的态度都是不对的,总而言之,MXML不错,但仅适合某类应用。
  • 2008-12-12 10:01:32 回复该留言
  • quote 22.jinni
  • http://byjog.com/blog
  • to 15F: 没有人会选择HTML去做一个框架支持语言,因为它是不可扩展的,如果你选择HTML,那么你能做的事也就是HTML能做的事而已,请问你如何使用HTML来声明一个Flex的Effect? 相反,XML是可扩展的,Adobe并没有发明一种新语言,而是提供了XML的一个扩展集而已,同时你自己也可以对这个集合提供扩展。CSS同理,Flex的CSS不可能是标准CSS,那是浏览器支持的集合。无论在编译和渲染时的机制都完全不同。
  • 2008-12-12 10:43:45 回复该留言
  • quote 24.jinni
  • http://byjog.com/blog
  • to 9F (babyfaction):
    何谓“对AS工程开放那些MXML控件”?
    所有的Flex SDK中的控件都是纯AS写成的,你可以编写一个完全没有MXML的Flex程序。
  • 2008-12-12 10:49:22 回复该留言
  • quote 25.xvyu
  • to 22F:
    正如ActionScript3是对ECMAscript标准的扩展一样
    Adobe也可以在兼容的基础上对html和css进行扩展,即便浏览器也有很多这么做的。

    假如有这么一套sdk,web开发人员几乎可以无缝过渡,flex的普及肯定容易得多。
  • 2008-12-12 17:22:38 回复该留言
  • quote 26.jinni
  • http://byjog.com/blog
  • to 25F:
    "Adobe也可以在兼容的基础上对html和css进行扩展,即便浏览器也有很多这么做的。"

    兼容HTML和CSS做什么呢?让大家用Flex去写HTML页面?浏览器这么做是因为他们本来就是为了渲染HTML和CSS的。但Flash Player不是为了渲染HTML而存在。使用MXML是因为XML是自由的,但兼容HTML意味着大量的限制,最终的结果也只是让大家用Flash去写HTML页面而已。




  • 2008-12-12 17:40:20 回复该留言
  • quote 27.babyfaction
  • to 24(jinni) 貌似我在纯AS工程里用了不了 MXML里头的那些控件。 毕竟轮子重复也不太好,既然它是纯AS编写成的,为什么不给偶们用呢?
  • 2008-12-13 0:09:17 回复该留言
  • quote 28.jinni
  • http://byjog.com/blog
  • to 27(babyfaction)
    你要Flex控件,当然需要创建一个Flex应用程序。纯AS工程的意思是不依赖于Flex Framework的工程。但是编写一个Flex应用程序和用不用MXML没有关系,MXML只是开发Flex的工具之一,你可以用,也可以不用。还是那句话,太多人把MXML和Flex等同起来,这是误解。
  • 2008-12-13 13:53:59 回复该留言
  • quote 29.baby
  • to 28(jinni)
    建FLEX工程就可以完全不用MXML呢? 请问如何做。偶不会,老大教偶。
  • 2008-12-14 0:41:36 回复该留言
  • quote 30.baby
  • The main application file must end with a valid extension (.mxml). 建FLEX web appliction工程,貌似猪文件必须用 mxml文件啊.
  • 2008-12-14 0:43:33 回复该留言
  • quote 31.fraser
  • JavaFX团队怎么不说 学了servlet 还要学jsp 哈哈 炒作哦
  • 2008-12-16 10:13:47 回复该留言

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 91204

Copyright 2007 www.7yue.com. Some Rights Reserved.
京ICP备05064035号