flash > 裏所有文章列表

Run c/c++ in flash, again !

In General, flex   July 8, 2008 - 3:50 pm

最近仍然持續極度忙錄中,但有趣的新消息卻仍然不斷冒出,抽空趕緊寫一下。

還記得去年 Max 2007 時 Adobe 的神人 Scott Petersen 展示了一個 flash 版的 Quake 遊戲嗎?那時他使用的技術,例如 LLVM 等,現在已經變的更成熟,而且離正式推出更近一步了。

根據 toolness.com 的報導,Scott Petersen 最近在 Mozilla 給了場演講,說明了 LLVM 與 Tamarin 的運作關係,以及如何讓 c/c++ 程式可以跑在 Tamarin 上,下面是基本的 steps

1. c -> LLVM instructions (using slightly modified version of llvm-gcc)

c/c++ code 透過 llvm-gcc (可能有動手腳稍微改過以符合 Tamarin 的需要) 編譯成標準的 LLVM instructions (IR)

2. LLVM instructions -> opcode (run by LLVM virtual machine in as3)

這些 llvm instructions 再經由一個用 actionscript 3 implement 的 virutal machine 處理成底層的 opcode

3. as3 -> bytecode -> machine code

而東西一旦變成 as3 剩下的就好處理了,它會利用 flash player 既有的功能去處理 bytecode 與 JIT machine code 轉換,然後就可以在每個人的 browser, desktop 與 mobile devices 上跑了。

由上面三個過程可知,真正的關鍵在於 #2 的 llvm virtual machine,它能將 llvm 轉換成 flash player 可吃的 opcode 進而達成『介接』的目地。

並且,據 Scott 指出,他同時也設計了一個特別的 byte array 來 directly mapping the system ram, 籍此降低模擬時的耗損並提升效率,這也是為何 Max 2007 上那個 Quake game 會嚇死人的快。

*這樣做的好處是?

當然任何理性的人都會接著問,這樣做有什麼好處呢?答案是好處多的很吶~

1、由於他的 toolchain 支援 llvm-gcc,因此理論上,任何 c-based 的語言都可以吃進去,這包含了php, ruby, perl, python 甚至 java 與 objective-c ,只要這個語言能用 c compiler 編譯,就可以編譯成 llvm-instruction 然後在 flash player 裏執行。

因此,過去一狗票現成的 library 都可以拿來重覆使用,不需使用 actionscript 重寫,也不需為此特別把某些工作丟回 server 上去跑。

也因此,才會出現有人想惡搞,把 WINE port 上 flash 然後讓它跑 windows 程式 (flash player running on windows with windows application inside ?) XD

2、另一個更隱誨的好處則是

這可能徹底的改變人們編寫 web application 的方式。

基本上大部份人都會承認,現行用 javascript/html/css 寫 web app 實在不是那麼的理想(well, I’m really trying to put it very nicely here…),如果能讓開發者直接用熟悉的語言(會 php 的請舉手?ruby 呢?)一路從 backend 寫到 frontend,這不是方便許多?

3、別忘了 Tamarin

Tamarin 是 Adobe 在 2006 時捐出去的一個 ECMAScript VM,目前由 Mozilla 基金會與Adobe 共同開發維護中,將來會用在 SpiderMonkey 中,並出現在下一版的 Firefox 4裏。

而 Tamarin 與 flash player 系出同門,這代表,將來 llvm 的東西也可以跑在所有支援 SpiderMonkey 的 browser 裏,至少 Firefox 就少不了,所以 nay-sayers against flash 不用急著跳著搖頭,你們也有的爽 :P

4、當然也別忘了 air

對我們而言,能在 browser 裏跑 php, ruby 等其實價值不大,因為它 code base 的積體可能是個問題,但對一支 desktop app 來說,這些就不會是太大的 concern,我們可以儘情的 mashup 任何需要的語言、技術來個大鍋炒,不用重新再造輪子,這才是最有價值的地方。

*缺點?

-Object model 不相容

現階段雖然可以讓 c/c++ 程式跑在 flash player 上,但它們與 actionscript 的 object model 卻完全不相容,因此要 inter-op 可能還有段路要走,但 Scott 說這件事已在進行中了。

oh, 如果你對 inter-op 不瞭解,可以想像一下 JRuby 與 Java 的運作關係,或是 Objective-C 與 C++ 的關係,就差不多是那樣。

-速度夠快嗎?

LLVM interpreter 是用 as3 寫的,等於是 interpreter (flash player) 再加上 interpreter,執行速度可能是個問題(也因此 Quake 展示時它背後用的 byte array 有動過手腳,直接可 map 到 system mem 減少了一些 simulation overhead)

*延伸閱讀

-名詞解釋部份

LLVM GCC

LLVM 是什麼?

Using LLVM, one can create a virtual machine for languages that require a code generator for a specific machine architecture, and optimizers independent from particular platforms or languages. The LLVM intermediate representation (IR) is language and architecture independent; it lies between a language-specific module and a code generator for a specific machine.

-Ryan Stewart 去年專訪 Scott 的文章(個人認為這篇裏面講的細節更多,也比較正確)

Ryan Stewart 專訪 Scott Pertersen

1 comment | by admin

Searchable flash content finally is here !

In flex   July 1, 2008 - 12:55 pm

Official release note

Ryan Stewart’s blog

Ted Patrick’s blog

如果你沒時間看完整份文件,只要搞懂下面這段就好:

What technology has Adobe contributed to this effort?

Adobe has provided Flash Player technology to Google and Yahoo! that allows their search spiders to navigate through a live SWF application as if they were virtual users. The Flash Player technology, optimized for search spiders, runs a SWF file similarly to how the file would run in Adobe Flash Player in the browser, yet it returns all of the text and links that occur at any state of the application back to the search spider, which then appears in search results to the end user.

簡單來說,就是 Adobe 提供了特殊版本的 flash player 給 yahoo, google (不過我一直以為自從 m$ 退散後這兩家已經等同於一家了啊 誤誤誤 XD),所以它們現在可以搜尋到 flash/swf 的內容了,即使是那些 動態下載的內容 (dynamic content) 也一樣 indexable.

不過 Adobe/Google/Yahoo 間的合作還不止如此,精彩的還在後頭哩…過陣子就會知道。

comments(8) | by admin

Adobe 第二季收入上昇 41%,共賺了 2 億多美金

In General, flex   June 20, 2008 - 10:22 am

Wired report

淨利約2.14億美金,較去年的 1.52億美金成長不少啊。

文章中指出獲利上升的兩個主要原因:

1、亞洲地區幾個主要國家盜版率下降所造成的銷售率持續上升

2、美元相對走軟因此賺來的國外貨幣匯兌後數字變大了

另外最近從各個方面聽來的消息,看來 Adobe 終於打算開始正視中國市場,這包括了推出繁/簡中文版的 flex builder,以及九月後的亞洲巡迴宣傳。

就辜且先把這些都當作是好消息吧。

Add comment | by admin

AIR for enterprise

In flex   June 14, 2008 - 7:19 am

RRW 原文

這篇文章中提到了 AIR 目前在企業中的應用,雖然都是簡單的例子,但每個都很實用,下面這句話尤其讚:

AIR let them “leverage the power of the desktop and the Web to immediately deliver customized desktop notifications that will keep our clients well-informed and empowered while they carry out their daily activities.”

比較有趣的是日本的 Sharp 也已經採用了,很進步吶…

Add comment | by admin

air/flex gathering 第二次網聚照片

In General, flex   June 10, 2008 - 11:18 am

呼,不好意思最近太忙又碰上 iphone 發表差點沒時間寫網聚的事 XD
這次的網聚已經順利於上週六結束,照片與花絮如下。
IMG_5161
IMG_5131

全部照片(on flickr)

*簡報下載:

-google maps (on lanma’s blog)

-flickr 整合應用

-flash player 10 new features

*花絮

-當天出席人數約六十幾位,其中約10人是現場報名,而原本已報名然後沒來的也約十多人,因此總人數還是控制在七十人以下,這仍然是出乎意料的爆大量啊,希望當天的內容沒讓來賓們失望 :P

-從事後的問卷分析來看,來賓們3/4 為工程師,只有五六人為設計師,而在工程師裏面,只有約 1/4 的人已在使用 RIA 技術

-目前尚未使用 RIA 技術的公司主要原因為1、沒有人會/懂 2、成本太高,而且 1 這點是最主要的因素,由此來看 Adobe 在 PR 上真的還有很大的努力空間,在這種時機只要花一點點 effort 就會有很好的效果啊!

-90% 的人認為當天三場講題難度適中,未來最想聽到的則是更多關於技術面的實作細節,例如 flex 開發上的“眉眉角角”,這點我們絕對會納入下次題目考量,實際上這種開發上的甘苦談講起來三天三夜都結束不了啊 XD

-這次活動採用 40-20 模式,每場 40 分鐘,中間休息 20 分鐘,讓大家吃吃喝喝並且有足夠時間閒聊交流,這樣比會後留一小時來的更自然,因為大部份人在散會後就會離開。

關於場地部份心得如下:

-伯朗的場地寬敝,沒有壓迫感,很像咖啡館的 laid back 感覺(呃,它本來就是個咖啡館啊),這點很讚

-但這個場地有太多柱子,因此雖然寬敝但視線容易被擋住,唯一的最佳視野區就是正中央那塊,所以我們把所有椅子都排在那裏,結果就變的有點擠

-投影幕位置不佳,加上投影機色差不正確因此不容易看清楚畫面,加上沒有梯型分配,因此中央座位區很容易被前面人頭擋住

-蛋糕還不錯,飲料普普,紅茶太甜,咖啡則是,呃,有醒腦效果其它不要多要求

-整體來說,這個場地很適合閒聊、social,但用來做簡報、抄筆記等就嫌不足,這代表我們要開始下一輪的場地尋覓之旅

*所以下次何時?

下一場預定在七月中以後,目前三個主題已大致確定,但仍然歡迎大家主動報名當講者(come on, 其實很多人都很有料,不要再害羞了啊…只要是跟 air/flex 有關的應用都可以來試試的),同時我們也需要更好的場地,理想的地方要有下列條件:

1、有梯型分配(由低而高)的講廳,讓每個人都能清楚看到投影幕
2、外面有塊空間可供來賓吃喝與交流

如果有適合的地點請大家不吝報馬,感謝 :)

最後也謝謝大家的熱情參與,如果有什麼想法與意見請隨時告訴我們

comments(7) | by admin

Next Posts Previous Posts

mobile phone