為了獲得更多商業(yè)機(jī)會(huì),在競爭中占得一席之,傳統(tǒng)企業(yè)紛紛向互聯(lián)網(wǎng)轉(zhuǎn)型。那么如何讓傳統(tǒng)企業(yè)在移動(dòng)互聯(lián)網(wǎng)中找到落腳點(diǎn)?諸多的平臺(tái)廠商,推出各類移動(dòng)平臺(tái)、移動(dòng)中間件產(chǎn)品,企圖從技術(shù)層面來打碎傳統(tǒng)企業(yè)信息移動(dòng)化進(jìn)程中的種種阻礙。
如何去實(shí)現(xiàn)跨平臺(tái)、跨設(shè)備、跨屏幕、跨技術(shù)、跨網(wǎng)絡(luò)?如何去實(shí)現(xiàn)設(shè)計(jì)驅(qū)動(dòng)、模型驅(qū)動(dòng)的開發(fā)?平臺(tái)將致力于解決這些技術(shù)層面的問題,去降低研發(fā)技術(shù)門檻、降低研發(fā)成本。好的架構(gòu)設(shè)計(jì)與設(shè)計(jì)模式將能更好的為業(yè)務(wù)實(shí)現(xiàn)服務(wù),打下堅(jiān)實(shí)的技術(shù)基礎(chǔ)。
在眾多平臺(tái)類產(chǎn)品中,按跨平臺(tái)核心技術(shù)可分為兩個(gè)陣營:一,基于瀏覽器技術(shù);二,基于交叉編譯技術(shù)。統(tǒng)一的跨平臺(tái)技術(shù)架構(gòu),一次開發(fā),多處運(yùn)行,一直是架構(gòu)師們的夢想,也是減少研發(fā)成本、屏蔽技術(shù)差異的有效手段。從Java、C++、HTML5到微軟的。Net,跨平臺(tái),一直是他們的一貫訴求。
基于瀏覽器技術(shù)
在諸多的移動(dòng)平臺(tái)類產(chǎn)品中,大多數(shù)的跨平臺(tái)解決方案,是基于瀏覽器技術(shù)的。
基于瀏覽器技術(shù),主要是依托移動(dòng)操作系統(tǒng)中的WebView組件,使用HTML5、Javascript、CSS3等WEB技術(shù)來進(jìn)行移動(dòng)開發(fā)。依托移動(dòng)瀏覽器來實(shí)現(xiàn)跨平臺(tái)的目標(biāo)。
近幾年來,在開發(fā)者的熱情以及各個(gè)廠商的大力推動(dòng)下,HTML5技術(shù)迅猛發(fā)展,W3C HTML5規(guī)范日益成熟。越來越多的人開始追隨HTML5,就在人們以為它真的能成為未來移動(dòng)世界的主角的時(shí)候,伴隨著Facebook HTML5 App的失敗,HTML5作為移動(dòng)跨平臺(tái)的主流技術(shù),被蒙上了一層揮之不去的陰影。
依托WebView的HTML5展現(xiàn),雖然理論上解決了跨平臺(tái)的問題,但是不可忽視的是由此而帶來的性能問題、與Native應(yīng)用而比的表現(xiàn)力不足問題、以及本地存儲(chǔ)、安全、穩(wěn)定性等各個(gè)層面的問題。我們寄希望于移動(dòng)操作系統(tǒng)廠商對于HTML5 的支持將會(huì)在新的版本中得以改善,也許這要一個(gè)漫長的等待過程。HTML5,對于游戲、流媒體等領(lǐng)域具備了更好的支持,但對于移動(dòng)領(lǐng)域,它也許還沒有完全準(zhǔn)備好,Mozilla等很多廠商一直為此而努力,我們期待它們有更令人振奮不已的表現(xiàn)。
基于交叉編譯技術(shù)
那么,另外一條跨平臺(tái)之路,即為:交叉編譯。
平臺(tái)設(shè)計(jì)自己的UI描述語言--領(lǐng)域特定語言DSL(domain specific language ),拋掉WebView,書寫平臺(tái)自己的DSL編譯器,交叉編譯為不同操作系統(tǒng)的App。
對于DSL技術(shù),自從計(jì)算機(jī)誕生以來,人們就開始討論并使用它了,它的核心在于:求專而不求全,致力于描述某個(gè)特定領(lǐng)域的事物,有人曾把它等同于非程序員的編程語言。
那么在移動(dòng)領(lǐng)域,把符合W3C規(guī)范的HTML5語法,作為移動(dòng)UI開發(fā)的DSL,這是一個(gè)很有趣的事情,一個(gè)不錯(cuò)的跨平臺(tái)解決方案:使用Web技術(shù)開發(fā)Native應(yīng)用。
交叉編譯
另一方面,如何選擇統(tǒng)一的邏輯編程語言,對于平臺(tái)來講,也是一個(gè)巨大的挑戰(zhàn)。
Android使用Java,IOS使用Objective-C,WP8使用C#……,各個(gè)操作系統(tǒng)使用自己的語言,Java通過虛擬機(jī)跨越了一個(gè)又一個(gè)的系統(tǒng)平臺(tái),但它最終是沒有跨過蘋果的IOS。那么有沒有一種語言,可以跨越所有的移動(dòng)操作系統(tǒng)呢?漸漸的,Javascript進(jìn)入了人們的視線。
依托移動(dòng)瀏覽器,它基本實(shí)現(xiàn)了Write once,run anywhere的偉大夢想,遺憾的是,卻被瀏覽器的特性與能力所局限。
Javascript似乎應(yīng)該發(fā)揮更強(qiáng)大的作用,事實(shí)上,從某種角度來講,Javascript早已從Web技術(shù)領(lǐng)域中脫離而出,它不再僅僅是單純的一項(xiàng)Web技術(shù)。比如Nodejs,比如眾多的游戲引擎,它們不再依賴于WebView,而是透過javascript引擎,更加高效的做你想做的任何事情。
Javascript成功的跨越了大多數(shù)的主流移動(dòng)平臺(tái)。用友UAP Mobile移動(dòng)應(yīng)用平臺(tái)正是利用Javascript做跨平臺(tái)業(yè)務(wù)語言,和Native對象模型通訊綁定技術(shù)。
基于瀏覽器技術(shù)的移動(dòng)平臺(tái)實(shí)現(xiàn),具備天然的跨平臺(tái)能力,降低了平臺(tái)產(chǎn)品的開發(fā)難度,具備著可以快速部署、動(dòng)態(tài)更新的優(yōu)勢。基于交叉編譯的平臺(tái)實(shí)現(xiàn),帶來的是接近Native的性能與表現(xiàn)能力。如何去合理的選擇技術(shù)實(shí)現(xiàn),去平衡其中的優(yōu)勢與弱勢,是企業(yè)級(jí)移動(dòng)平臺(tái)需要慎重考慮的一個(gè)問題。
用友UAP Mobile移動(dòng)應(yīng)用平臺(tái)既支持Native開發(fā)方式,也支持HHC(Hybird Html5 Container)開發(fā)方式,還支持WebAPP開發(fā)方式。用友UAP Mobile與普通意義上的混合應(yīng)用平臺(tái)的不同之處是,我們使用Web技術(shù)開發(fā)Native應(yīng)用,提供所見即所得的開發(fā)工具,使用統(tǒng)一的開發(fā)語言如HTML5、css3、javascript等,而不必掌握J(rèn)ava、C/C++、C#等Native移動(dòng)開發(fā)技術(shù)來開發(fā)Native App、Hybird App、Web App。
用友UAP Mobile移動(dòng)應(yīng)用平臺(tái)的開發(fā)語言采用DSL技術(shù),并遵循W3C HTML5標(biāo)準(zhǔn)自定義了一套DSL體系,基于模型驅(qū)動(dòng)、組件化UI、Web開發(fā)環(huán)境、動(dòng)態(tài)交叉編譯等,這些技術(shù)除了很好的實(shí)現(xiàn)了跨平臺(tái)開發(fā)外,還大幅度降低了開發(fā)成本,希望能夠?yàn)榇蠹規(guī)硪欢ǖ膮⒖純r(jià)值。