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