自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

外物互聯(lián):針對移動應(yīng)用開發(fā)的虛擬討論

移動開發(fā) 移動應(yīng)用
移動應(yīng)用幾乎已經(jīng)無處不在,因此我們不應(yīng)該忽視,它們作為提供服務(wù)的輔助甚至是主要渠道的價值。不過,盡管大家都很清楚,為了獲得最大的用戶量,我們的應(yīng)用應(yīng)該同時支持Android和iOS系統(tǒng),但對于具體使用什么技術(shù)和工具開發(fā)適用于這些系統(tǒng)的應(yīng)用,卻還存在著許多爭執(zhí)。

本篇文章重點討論了日新月異的移動技術(shù)。在過去幾年間,移動應(yīng)用以雷霆之勢席卷全球。我們在工作和休閑時間中使用互聯(lián)網(wǎng)的方式,已經(jīng)隨著移動應(yīng)用的前進腳步發(fā)生了變革。在此期間,許多創(chuàng)建移動應(yīng)用的技術(shù)浮現(xiàn)在世間;而在開發(fā)應(yīng)用的時候,人們也開始考慮“移動優(yōu)先”的做法。然而,哪怕現(xiàn)在移動設(shè)備似乎早已無處不在,未來的時代卻只不過剛剛揭開帷幕。我們正在面對全新一代的移動設(shè)備,諸如可穿戴設(shè)備或眾多移動配件——正是它們構(gòu)成了“萬物互聯(lián)”的世界。我們將面對全新的用戶界面,通過它們數(shù)據(jù)展示及指令接收處理。同時,我們還將看到,越來越多的公司將真正地踐行“移動優(yōu)先”的思路。而在未來數(shù)年中,這一切都將影響我們設(shè)計、開發(fā)和測試軟件的方式。

[[127383]]

移動應(yīng)用幾乎已經(jīng)無處不在,因此我們不應(yīng)該忽視,它們作為提供服務(wù)的輔助甚至是主要渠道的價值。不過,盡管大家都很清楚,為了獲得***的用戶量,我們的應(yīng)用應(yīng)該同時支持Android和iOS系統(tǒng),但對于具體使用什么技術(shù)和工具開發(fā)適用于這些系統(tǒng)的應(yīng)用,卻還存在著許多爭執(zhí)。

在這一領(lǐng)域中,眾多圍繞著“原生應(yīng)用”、“混合應(yīng)用”和“HTML/JavaScript應(yīng)用”的討論仍未平息。因此我們邀請了一些業(yè)界人士,針對應(yīng)用開發(fā)分享他們各自的觀點。在這次討論邀請對象的名單中,包括了工具棧提供商和開發(fā)者:

  • Chris Eidhof——iOS開發(fā)者、作家
  • Daniel Gallo——Sencha的工程師
  • Brian LeRoux——PhoneGap創(chuàng)作者
  • Maxim Zaks——Wooga的游戲開發(fā)者
  • Miguel de Icaza——Xamarin的CTO

記者:現(xiàn)在有著數(shù)量龐大、類型多樣的移動應(yīng)用開發(fā)技術(shù),用于構(gòu)建基于交叉編譯器的原生應(yīng)用、混合應(yīng)用或是基于HTML5/JavaScript的應(yīng)用。那么,請為我們講一講,你們各自青睞哪些技術(shù),以及為何會對它們感興趣。

Chris我們希望能夠為應(yīng)用的最終用戶提供***體驗。基本上,這意味著 幾乎在應(yīng)用的各個方面,我們都需要與蘋果提供的原生類庫非常緊密地結(jié)合。我們非常重視流暢的動畫,以及讓用戶能夠感覺輕松自在的界面。然而在許多非原生應(yīng) 用中,用戶界面都讓人覺得還缺點什么。在我看來,只有當開發(fā)者正在構(gòu)建一個圖形圖像工作負荷較低的游戲時,非原生應(yīng)用才可能成為一個好的選擇。多年以來, 我為許多客戶重寫了應(yīng)用,他們最初都從HTML5應(yīng)用入手(大部分是因為他們認為這樣能夠節(jié)省資金),但最終的結(jié)果都非常令人失望——他們不得不從頭開發(fā) 原生版應(yīng)用。

Daniel我下面要說的內(nèi)容,將會非常具有傾向性,因為我在Sencha工作,我們開發(fā)針對移動和桌面環(huán)境的Web應(yīng)用框架,因此我的答案必然是:HTML5和JavaScript。

我相信,這條特別的技術(shù)路線能夠帶來許多便利,例如這里有著非常巨大的開發(fā)者人才市場,這些開發(fā)者都擁有Web技術(shù)(JS、HTML、CSS)經(jīng)驗。

此外,在開發(fā)過程中,開發(fā)者可以非常輕松地在瀏覽器中,調(diào)試和測試編寫好的代碼,因為在此期間并不需要使用任何交叉編譯器,將 HTML/JavaScript代碼轉(zhuǎn)化為對應(yīng)的原生版本。大部分基于HTML5和JavaScript的框架還提供了這樣的便利:開發(fā)者編寫一遍應(yīng)用, 就能夠讓它在各個不同平臺上運行——與針對每種設(shè)備編寫原生應(yīng)用相比,這將幫助開發(fā)者節(jié)省時間和金錢。

另外值得指出的一點是,現(xiàn)如今所有的設(shè)備都宣稱能夠支持HTML5,因此使用HTML5開發(fā)應(yīng)用,是能夠使應(yīng)用立即覆蓋到所有設(shè)備上的唯一途徑。

Brian:在我的職業(yè)生涯早期,先是為企業(yè)編寫原生APP,接下來又重寫它們。隨之而來的是我對這種類型的環(huán) 境的厭惡情緒不斷積累。我認為,這正是我創(chuàng)造PhoneGap的動機,至少是部分動機。不過,頗具諷刺意味的是,我們今天投入了大量的時間編寫原生代碼, 正是為了實現(xiàn)我們的目標:致力于推動Web成為開發(fā)者的***平臺。

有些時候人們會為此感到吃驚:Web瀏覽器以及其中嵌入的插件,都是采用原生代碼編寫的——與我們編寫操作系統(tǒng)時所采用的開發(fā)語言相同(一般都是C 和C++)。實際上,如果某種Web技術(shù)沒有實現(xiàn)某些東西,那并不是因為它不能,而是我們沒有在平臺中增加這部分的支持。因此,對Web成為“原生”來 說,并不存在技術(shù)壁壘。

在理解這些東西是如何構(gòu)建起來方面,我們應(yīng)該意識到將之視為對立的兩面,是一種被誤導(dǎo)的觀點。此外,想象一下某個外來者闖入到特定某一組利益干系人 的利益壁壘中,只是為了看到這種技術(shù)在五到十年的時間窗里被拋棄,這并不是我們技術(shù)投資的***商業(yè)戰(zhàn)略。更好的方式是基于Web的通行守則(web commons)進行構(gòu)建,或許甚至做出一些貢獻,從而讓大家都能夠獲益。

封閉的GUI技術(shù)一般會表現(xiàn)出阻止、抗拒的態(tài)度,但接下來就會隨著Web技術(shù)悄然無聲卻又持續(xù)不斷地演進而逐漸淡出舞臺。科學(xué)技術(shù)的***進展與十年 前相比,其間遙遠的差距甚至可以用光年來形容。借助于WebRTC、WebGL,不同的設(shè)備API、WebAudio API,以及JavaScript虛擬機方面的進步,Web目前又一次站在了變革的邊緣。這些技術(shù)進步將為新興企業(yè)帶來重大的機遇,去顛覆舊有的企業(yè)。不 過從整體來看,移動Web尚處于新生兒時期,而這些新能力目前幾乎尚未得以利用。

Maxim我個人更青睞原生應(yīng)用開發(fā)方式,因為它使我們能夠聚焦并專注于用戶體驗,并且在這樣的模式下,我們可以輕易地利用平臺提供的精華能力。

在構(gòu)建應(yīng)用的過程中,開發(fā)者如果在心里想著要針對許多平臺,將會使得開發(fā)變得更脆弱。特別是在開始開發(fā)應(yīng)用的時候,我喜歡專注于針對某一個平臺,創(chuàng)建出***的應(yīng)用,而不去關(guān)心其他若干平臺的特性集或特殊范式。

Miguel毫無疑問,我喜歡的是我們現(xiàn)在為人們提供的方式。

我們所做的,是將.NET和C#的核心部分帶到了Android、iOS、Mac和PlayStation上,讓這一語言變得盡可能通用。這意味 著,我們并沒有移植以往與.NET相關(guān)的那些用戶界面元素。相反,我們針對各個平臺,分別創(chuàng)建了C#類庫,讓開發(fā)者能夠充分利用每個平臺上的全部特性,讓 他們創(chuàng)建的應(yīng)用能夠利用蘋果和Google帶來的每一個微小細節(jié)。這意味著這些原生平臺上出現(xiàn)的所有創(chuàng)新和改進,都將被我們轉(zhuǎn)化并提供給我們的用戶。

這樣的做法對于開發(fā)者很有價值,能夠幫助他們精細化調(diào)節(jié)每個最終細節(jié),并使用平臺上的每一個特性。但還有其他很多開發(fā)者,他們只是想要讓應(yīng)用經(jīng)過一 次開發(fā)就能夠運行在所有平臺上,或是認為在其應(yīng)用的用戶界面以及與平臺的整合中,并非每個部分都需要原生平臺的能力。對這些人來說,我們創(chuàng)建了一系列跨平 臺類庫(都在前面所提到的技術(shù)之上構(gòu)建),為他們提供一次編寫、四處運行的庫。這其中包括我們的Xamarin.Forms API,它聚焦于構(gòu)建跨平臺用戶界面;Xamarin.Mobile,用于訪問一個設(shè)備上的不同特性(例如相機、加速度計、陀螺儀等 等);CososSharp,用于跨平臺2D游戲。我們還開發(fā)了跨平臺的SQLite,另外我們向Couchbase提交了一些貢獻,使得同一套API能 夠使用存儲、離線和同步存儲。

記者現(xiàn)在有許多討論,圍繞著原生應(yīng)用與HTML5/JavaScript應(yīng)用的性能差異。即使移動設(shè)備和移動瀏覽器正在變得越來越強大,人們依舊認為原生的速度會更快。那么真實情況是否如此?或者這只不過取決于是否按正確的方式使用了正確的框架?

Chris:從理論上講,沒有任何理由能夠證明JavaScript就應(yīng)該更加緩慢。然而,在實踐中,我們“總 是會”發(fā)現(xiàn)這樣的現(xiàn)象。JavaScript是一門解釋性語言,運行速度比Objective-C慢許多。使用HTML進行渲染,無論怎樣優(yōu)化,其性能與 原生UI相比都有較大差距。我相信,確實能夠打造一個足夠快的非原生應(yīng)用,然而現(xiàn)實中幾乎沒人知道如何實現(xiàn)這一目標。

Daniel:這類討論已經(jīng)持續(xù)有一陣了。但是性能的問題,其實完全取決于使用某個特定框架構(gòu)建應(yīng)用的過程中, 開發(fā)者是否良好地完成了自己的工作。很多時候,他們只是完成了Web應(yīng)用的構(gòu)建,而完全沒有仔細考慮應(yīng)該如何組織它,以優(yōu)化其性能。例如,在屏幕上一次性 渲染過多的組件,或是展現(xiàn)過多的數(shù)據(jù)——它們原本可以打包成較小的分組——都將嚴重影響性能。

如果能夠巧妙地設(shè)計應(yīng)用,基于HTML5/JavaScript的方式完全沒有道理不能夠與對應(yīng)的原生應(yīng)用競爭。已經(jīng)有一些現(xiàn)實世界中的例子證實了這個理論,例如Sencha的Fastbook Demo, 這是一個基于HTML5的Facebook“概念驗證”(proof-of-concept)應(yīng)用,在許多方面它的表現(xiàn)都超過了Facebook的原生應(yīng) 用。它展示了人們能夠讓W(xué)eb應(yīng)用獲得很棒的性能,同時也證明了要實現(xiàn)這一點,需要經(jīng)過深思熟慮的設(shè)計——按照應(yīng)用而不是網(wǎng)站的思路來設(shè)計它。

原生應(yīng)用同樣可能由于采用了糟糕的架構(gòu),而出現(xiàn)性能欠佳的問題。例如Facebook應(yīng)用在iPhone 4上非常糟糕——因此,我們不應(yīng)該簡單地說“原生應(yīng)用的速度總是更快”。

毫無疑問,原生應(yīng)用中的一些特定方面會更快,例如我們知道當前WebView的一些性能限制。但除了這些為數(shù)不多的特定領(lǐng)域外,大部分商業(yè)應(yīng)用都可 以使用HTML5混合模式獲得理想的性能。此外,針對WebView性能的問題,iOS和Android都在新版本中做出了重大改進,而且預(yù)計在不遠的將 來,這一切將得到進一步改善。因此,許多與WebView相關(guān)的性能問題都將得到解決。

Brian直接向CPU下達指令,是硬件能夠提供的速度最快的執(zhí)行方式。然而這意味著我們應(yīng)該使用編譯語言來編寫一切,除非追求執(zhí)行速度并不總是我們達成軟件目標的***途徑!

有時,我們需要考慮開發(fā)者的技能、快樂情緒以及API的人機工程學(xué)。增加一名新的開發(fā)者,或者甚至只是加入已有的技術(shù)或內(nèi)容投資,都可能會引發(fā)這一 選擇問題。當我們考慮某種技術(shù)的性能時,這些方面的權(quán)衡會變得更加復(fù)雜。專利軟件類的GUI工具在持久性方面的過往記錄欠佳,而開源的 JavaScript框架則似乎逐漸進入(又淡出了)流行趨勢。

今天,我們可以使用Web技術(shù)構(gòu)建一個應(yīng)用,橫跨所有主流平臺,并獲得與原生應(yīng)用相比非常接近的體驗。有些時候我們則需要混合方法,例如像 Instagram所做的那樣,結(jié)合WebView和原生菜單。這些問題的答案,正如同現(xiàn)實生活一樣,并非那么明確的非黑即白,而是有許多處于灰度區(qū)域的 情況。如果我們恰巧擁有一支Swift開發(fā)者組成的***團隊,那么無論出于何種考慮,我們都應(yīng)該只針對iOS8開發(fā)應(yīng)用。如果我們認為Java的生態(tài)系統(tǒng) 在美學(xué)上充滿吸引力,那么在這種情況下,Android就是我們及我們的應(yīng)用應(yīng)該置身的***環(huán)境。而如果我們在.NET技術(shù)方面有著巨大的投入,那么我將 會推薦Xamarin。“具體問題具體分析”是開發(fā)者們熟知的一個理由。

最終,如果我們想要接觸到最廣闊范圍的設(shè)備及其用戶,那么建議的選擇便是Web技術(shù)。如果我們想要獲得蘋果軟件商店的曝光度,又或是想要早點去接觸新的Web API,那么基于Apache Cordova的項目(例如Adobe PhoneGap)則正是我們興趣所在。

Maxim:我認為,編寫原生應(yīng)用并且無需應(yīng)對性能問題,對開發(fā)者來說是更加便捷和簡單的道路。而當我們在開發(fā)過程中遇到了性能的時候,原生應(yīng)用的調(diào)優(yōu)也更容易處理。好的平臺生態(tài)系統(tǒng)提供了剖析調(diào)試的工具,以及解決這些問題的疑難解答。

現(xiàn)在也有一些技術(shù)性程序?qū)嵗?,展現(xiàn)了如何使用JavaScript開發(fā)對性能有重度要求的應(yīng)用。這些示例令人矚目,但我懷疑是否有必要。當我們開發(fā) 應(yīng)用時,需要面對許多問題,而性能調(diào)優(yōu)是我們最不愿意處理的方面。在我看來,對任何軟件開發(fā)項目來說,簡單性都應(yīng)該放在***位。如果我們當前需要開發(fā)一個 性能要求很高的應(yīng)用,那么我們應(yīng)該評估這樣的技術(shù):它們證明了自身能夠以用戶(注:指使用這些技術(shù)的開發(fā)者)友好的方式,來應(yīng)對這樣的工作需求。

Miguel:毫無疑問,使用原生編譯器和原生應(yīng)用的形式,速度會更快。畢竟,HTML5和JavaScript引擎是在原生的基礎(chǔ)資源之上構(gòu)建的。不過,并不是每個應(yīng)用都需要系統(tǒng)中大部分底層基礎(chǔ)資源的全部能力,而且在很多情況下,利用與否甚至根本無足輕重。

總體來說,HTML和JavaScript在移動設(shè)備上的主要問題,并不在于其速度較慢,而是給人的感覺不對。它們沒有使用原生特性,行為表征也不 同于原生應(yīng)用,而且有著奇怪的表現(xiàn)。正是這樣,才導(dǎo)致一些用戶在直觀感覺上認為其速度緩慢——他們并不是真的察覺到JavaScript代碼或HTML渲 染速度的快慢。Web應(yīng)用給他們的感受,就像是一系列相互關(guān)聯(lián)在一起的碎片,每個碎片都必須進行調(diào)優(yōu)。

因此,問題其實在于性能、行為表征、交互,以及能否使用數(shù)量龐大的移動API——要想模擬這些API是非常繁瑣的事情。

#p#

記者原生開發(fā)的一個主要優(yōu)勢,在于最終產(chǎn)出的應(yīng)用能夠為用戶提供更好的視覺和感覺效 果。蘋果通過提供通俗易懂的“iOS人機界面指南”,來確保大部分應(yīng)用的視覺和表現(xiàn)比較一致。如果開發(fā)者不使用原生UI插件,應(yīng)用或許將無法滿足用戶的期 望。那么你們是否認為這是一個嚴重的問題?

Chris:這主要取決于應(yīng)用本身。對大部分應(yīng)用來說,這確實是個問題。所有的非原生UI插件,對用戶來說都是 需要學(xué)習(xí)的新鮮事物。例如,如果我們構(gòu)建一個待辦事項清單(todo list),那么我們并不希望用戶不得不學(xué)習(xí)全新的UI范式,并因此感受到過于沉重的負擔。不過對游戲來說,我們則總是希望能夠創(chuàng)造定制化的UI。此外, 一些非常盛行的網(wǎng)站(例如Facebook),可能也會加入少量定制插件,因為其應(yīng)用的用戶粘性非常高。

Daniel:這與應(yīng)用的類型密切相關(guān)——例如,是傳統(tǒng)的B2C應(yīng)用,還是某些休閑類應(yīng)用,二者差異很大。Web應(yīng)用框架可以通過精巧地運用CSS,來復(fù)現(xiàn)原生組件的視覺和使用效果,因此一般來說這不是個問題。

Sencha的移動框架Sencha Touch,針對每個設(shè)備和平臺都提供了一些開箱即用的主題。開發(fā)者可以使用它們,將其運用到所有的UI組件和交互中,為用戶帶來能夠與原生應(yīng)用相媲美的 視覺和使用效果。這些主題,可以根據(jù)用戶運行Web應(yīng)用所使用的設(shè)備動態(tài)設(shè)定,而且還可以針對特定的顏色主題或品牌進行定制。

Brian:如果開發(fā)者將自身產(chǎn)品鎖定在蘋果人機交互指南(Apple HIG)的特定版本上,那么他們將發(fā)現(xiàn)自己需要針對后續(xù)版本重寫其應(yīng)用。而那些構(gòu)建起“自己的”品牌(注:指有著自己獨特的用戶體驗設(shè)計,而不是緊密跟隨 蘋果人機交互指南)的開發(fā)者們,他們不僅擁有跨平臺的應(yīng)用設(shè)計,而且甚至無需操心新平臺的發(fā)布。Uber的應(yīng)用是一個將用戶體驗擴展至不同設(shè)備和平臺的***例子。

用戶體驗是一個重要的問題。軟件的成功,毫無疑問與其能否提供良好的最終用戶體驗密切相關(guān)。開發(fā)GUI時所作的技術(shù)選擇,將影響許多方面。不過,技 術(shù)本身顯然不會“完成”或“破壞”為提供良好用戶體驗所進行的工作。在這一點上我們不能偷工減料。要想獲得偉大的用戶體驗,就意味著我們必須雇傭優(yōu)秀的用 戶體驗專家,并持續(xù)不斷地進行定性和定量分析。無論進行何種技術(shù)選擇,要想制作偉大的應(yīng)用,都不存在任何捷徑。

話雖如此,現(xiàn)在已經(jīng)證實了Web技術(shù)能夠擴展到多種屏幕尺寸、設(shè)備方向(橫縱屏幕),以及平臺的未來實現(xiàn)。

Maxim:任何時候,如果應(yīng)用不能夠滿足用戶的期望,都將是一個嚴重的問題。然而,這并不意味著我們?nèi)绻趹?yīng) 用中引入定制化的UI,就必定無法滿足用戶期望。我們只需要讓自己的應(yīng)用中定制的UI,能夠像原生用戶體驗?zāi)菢臃嫌脩糁庇X并使其感到愉悅即可。不過,這 永遠是個高難度的問題,特別是當我們的應(yīng)用瞄準了跨平臺發(fā)行的時候。

而我想要再次質(zhì)疑這種毫無意義的增加工作量的做法——創(chuàng)建定制化UI,且使其能夠為iOS、Android和Windows Phone用戶提供自然的、直觀的體驗。不要誤解我的意思,確實有一些有意義的例子。比如游戲往往伴隨著定制化UI。另外網(wǎng)站也是運行在不同的操作系統(tǒng)和 瀏覽器之上的定制UI的良好例子。

但消費者會做出自己的選擇,他們寧愿安裝應(yīng)用而不是訪問網(wǎng)站。他們這樣做的目的,是為了追尋更好的用戶體驗。而影響用戶體驗的最重要因素之一就是 UI。人們希望在熟悉的環(huán)境中完成操作。不過當我們設(shè)計網(wǎng)站的時候,則略有不同。Web上沒有熟悉的環(huán)境,因此參考的樣本基本上就是另一個網(wǎng)站。而當構(gòu)建 一個應(yīng)該解決某問題的應(yīng)用時,我們應(yīng)該問自己:定制化UI是否能夠幫助用戶理解并解決這個問題,或是反而增加用戶的疑惑。畢竟,別人可能基于原生UI開發(fā) 一個解決該問題的應(yīng)用,并把我們踢出局。

Miguel:只有當它成為我們業(yè)務(wù)上的問題,或是阻礙了我們前進的腳步時,才成其為問題。

許多垂直應(yīng)用永遠不會面臨任何競爭,因此它們沒有動力去解決這些問題。這也正是為何企業(yè)級軟件如此糟糕,因為它們所處的環(huán)境缺乏競爭,或是具有高昂 的遷移成本。當我們的軟件鎖定了用戶的時候,我們就不會有動力去改變應(yīng)用,對其進行進一步的潤色加工。在某些情況下,業(yè)務(wù)成本核算將促使我們打算只提供恰 到好處的解決方案,而所謂的“潤色加工”則是一些我們明明可以提供但卻將要忽略的東西。

只有當面臨競爭或業(yè)務(wù)需求發(fā)揮影響力的時候,開發(fā)者才會傾向于尋找最簡單交付路徑之外的解決方案。

記者應(yīng)用開發(fā)過程中涉及的工作,不僅僅在于編寫代碼,還包括對功能、性能及用戶行為進行測試。你們使用或提供了哪些工具,用于支持這些不同領(lǐng)域的測試?

Chris:我們很少遇到不得不測試性能的情況,因為我們開發(fā)的是原生應(yīng)用,而對原生應(yīng)用來說,性能一般都不是 個問題。站在功能的角度,我們的開發(fā)團隊與設(shè)計師一起,花費了大量的時間去嘗試那些感覺很給力的東西。另外,我們非常樂于通過Twitter和電子郵件收 集客戶的反饋,并與許多客戶保持聯(lián)系。因為我們團隊規(guī)模不大,所以每個人都加入了這個流程中。此外,我們還使用自動化回歸測試,以確保我們的產(chǎn)品質(zhì)量。

Daniel:Sencha開發(fā)者們可以選擇使用多種測試工具,其中比較流行的一套工具是由Bryntum開發(fā)的Siesta。Siesta是一個JavaScript單元測試工具,而且它支持對DOM進行測試并模擬用戶交互。這意味著它能夠測試應(yīng)用中的大部分功能。

Appurify則提供了另一種測試功能(最近Google收購了它),它能夠在云端運行的物理設(shè)備上,自動化測試應(yīng)用的UI和性能表現(xiàn)。這是一項 非常有幫助的工作,因為它意味著其用戶(開發(fā)者們)將無需購入多種型號的設(shè)備,或是管理與這些設(shè)備對應(yīng)的數(shù)量龐大的各種配置(例如不同的操作系統(tǒng)版本)。

當需要調(diào)試特定的故障或是分析特定的性能問題時,現(xiàn)代瀏覽器中的開發(fā)者工具提供了大量的功能支持,例如記錄和分析瀏覽器窗口內(nèi)發(fā)生的所有活動——包括布局、數(shù)據(jù)請求、內(nèi)存使用和事件等。瀏覽器的開發(fā)者工具可以通過插件得到進一步的擴展,例如Firefox的Illuminations或用于Google Chrome的Sencha App Instpector。與原生瀏覽器工具提供的更通用的HTML5調(diào)試工具相比,它們都針對Sencha框架提供了更深入和更智能的分析。這讓開發(fā)者在使用昂貴的框架(例如Sencha Ext JS或Sencha Touch)的時候,能夠快速查看他們的應(yīng)用中正在發(fā)生什么。

Brian:目前我們正在針對Apache Cordova和Adobe PhoneGap進行大量的手工單元測試。我們的目標是將這套架構(gòu)整理成可安裝的插件。另一方面,用戶空間將與Saucelabs Appium結(jié)合,以便進行自動化測試。另外,我還想要推薦大家看一下。

Maxim:作為測試驅(qū)動開發(fā)的鐵桿粉絲,我編寫單元測試以確保應(yīng)用邏輯的正確性。性能缺陷方面的最主要指征是 FPS速率的下跌。無論何時,只要性能問題出現(xiàn),我就會使用平臺提供的分析工具,來找出性能關(guān)鍵代碼并對其進行重構(gòu)。單元測試令重構(gòu)過程變得非常便捷,因 為它們能夠告訴我,在性能優(yōu)化之后應(yīng)用邏輯并未被改變。

現(xiàn)在有許多跟蹤服務(wù),讓我們能夠獲得關(guān)于用戶行為的匿名數(shù)據(jù)。這些服務(wù)一般提供針對特定平臺和開發(fā)語言的SDK。

Miguel:Xamarin提供了一系列為數(shù)眾多的測試服務(wù),涵蓋了從非常簡單到非常復(fù)雜的測試情景。

測試云是我們的拳頭產(chǎn)品。它是一套由約700部設(shè)備組成的集群——這些設(shè)備規(guī)格豐富,并搭載著各個版本的Android和iOS——我們將測試云提 供給開發(fā)者,以便其進行自動化測試。開發(fā)者在構(gòu)建自己的應(yīng)用時,可以將其上傳到我們的測試云,由我們針對開發(fā)者希望支持的各個平臺運行測試套件,并將測試 過程中出現(xiàn)的問題生成一份詳細的報告。我們的常規(guī)工作,還包括幫助開發(fā)者找出不同平臺上的差別和問題。例如,最近我們幫助一個客戶測試的時候發(fā)現(xiàn),目前流 行的OpenGL優(yōu)化中的某個特定類,在使用某款CPU的所有設(shè)備上均未得到支持。

另一方面,我們還提供了Calabash系統(tǒng),它讓開發(fā)者能夠為其移動應(yīng)用編寫測試套件——就像普通的單元測試框架那樣,開發(fā)者能夠在每次構(gòu)建自己的應(yīng)用時,持續(xù)地運行它。

記者管理者們往往表示,將要使用HTML和JavaScript來實現(xiàn)應(yīng)用,因為“這 么多年以來,我們早就已經(jīng)很了解應(yīng)該如何做Web應(yīng)用了”。即使真是這樣,一般為桌面端和移動設(shè)備開發(fā)Web應(yīng)用也會有許多不同,包括基于 JavaScript的業(yè)務(wù)邏輯等方面。使用JavaScript編寫業(yè)務(wù)邏輯,是否像使用Objective-C或Java一樣容易?人才市場中,能夠 勝任此類任務(wù)的JavaScript開發(fā)者數(shù)量是否足夠多?

Chris:我不認為它們之間有什么不同,這三種語言都非常相似(除了一些語法上的細節(jié)差異)。

Daniel:我認為,為多個平臺開發(fā)Web應(yīng)用和編寫業(yè)務(wù)邏輯的難易程度,很大程度上取決于 JavaScript應(yīng)用的結(jié)構(gòu)以及所使用的框架。例如,Sencha同時為桌面和移動應(yīng)用開發(fā)提供了JavaScript框架(Sencha Ext JS和Sencha Touch)。這兩種框架基于相同的機制,而Ext JS甚至除了桌面外還支持平板電腦,因此代碼可以輕易在桌面、平板和移動應(yīng)用之間共享。

Sencha Touch和Ext JS都具有MVC架構(gòu)的特性,將應(yīng)用的代碼分離在不同的區(qū)域中:模型(對數(shù)據(jù)進行定義)、視圖(用戶界面)和控制器(業(yè)務(wù)邏輯)。業(yè)務(wù)邏輯永遠包含在應(yīng)用 的控制器中,這意味著這些代碼始終處于這樣一個區(qū)域里。同時,與在視圖中零散地直接編寫業(yè)務(wù)邏輯片段的方式相比,這也會促進代碼的復(fù)用。Sencha對 MVC的支持與原生Objective-C或Java開發(fā)模式非常相似。因此,在JavaScript中編寫業(yè)務(wù)邏輯同樣可以是一件非常便捷的工作——只 要為它設(shè)計合適的結(jié)構(gòu)。

在開發(fā)人員求職市場上,就編程語言方面來說,JavaScript擁有較大的技術(shù)人才基礎(chǔ)。IT Jobs Watch跟 蹤了英國的IT就職市場,統(tǒng)計了固定工作職位(非臨時性工作)要求的編程語言經(jīng)驗排行。在為期三個月的統(tǒng)計樣本時間段中(2014年6月至8月),要求 Objective-C的職位數(shù)量約在1000個上下;要求Java的數(shù)量在16000個左右;而對JavaScript有需求的則超過17000個。

(來源:Objective-C Jobs、Java Jobs、和JavaScript Jobs

Brian:使用動態(tài)語言表達業(yè)務(wù)邏輯更加容易,但是這需要更加嚴苛的測試,并將功能封裝在不連續(xù)的(理想情況 下應(yīng)該是分離的)模塊中。原生環(huán)境中的工具為開發(fā)者提供了許多支持,例如代碼生成和編譯器警告——編譯器廠家宣稱,后者能夠帶來更好的軟件。然而實際上并 非如此,它只是造就了更加懶惰的開發(fā)者。他們并不測試自己的工作,而是將它拋給與開發(fā)部門平行的獨立QA部門,由其在完全不同的環(huán)境中進行測試。動態(tài)語言 環(huán)境則會強制性推動創(chuàng)建和維護更好的測試套件,從而促使自身演進為更高質(zhì)量的解決方案。世界上那些業(yè)務(wù)量***的網(wǎng)站都是用這種方式構(gòu)建的。

在打造絕妙軟件用戶體驗的道路上沒有捷徑。我們需要在編寫代碼過程中保持嚴謹和自律的路線,以獲得良好的結(jié)果。但是這與原生還是Web編碼方式無關(guān)。兩種方式都能夠從全面測試、持續(xù)集成和持續(xù)交付中獲益。

Maxim:我上一次涉足Web開發(fā),使用HTML和JavaScript是在2012年。彼時我置身于一支技術(shù)團隊,為移動和桌面端的家居自動化平臺開發(fā)富互聯(lián)網(wǎng)客戶端。在那段時間里,我注意到了以下現(xiàn)象。對桌面環(huán)境的Web前端開發(fā)者來說,主要需要完成兩項任務(wù):

  1. 開發(fā)應(yīng)用;
  2. 使其能夠適配老版本的IE瀏覽器(大部分通過按需引入修補性的代碼片段來實現(xiàn))。

而移動環(huán)境的Web前端開發(fā)者同樣也有兩項任務(wù):

  1. 開發(fā)應(yīng)用;
  2. 精簡掉應(yīng)用中的所有非必要功能,以便它能夠在糟糕的網(wǎng)絡(luò)連接和低端Android設(shè)備上運行。

或許在最近兩年里,世界的面貌發(fā)生了翻天覆地的變革。然而如果沒有的話,那種“這么多年以來,我們已經(jīng)很了解應(yīng)該如何做Web應(yīng)用了” 的論調(diào)就依舊不適用。在桌面或移動環(huán)境下開發(fā)、構(gòu)建HTML和原生應(yīng)用,都應(yīng)該被視作互相間完全不同的工作。在學(xué)習(xí)了如何構(gòu)建桌面HTML應(yīng)用后,我們依 舊需要學(xué)習(xí)如何構(gòu)建移動版的HTML應(yīng)用。即使我擁有構(gòu)建原生移動應(yīng)用方面的經(jīng)驗,在進行HTML應(yīng)用開發(fā)時,依舊需要學(xué)習(xí)一些東西。

Miguel:我不認同這個問題里的前提條件。

一些管理者更熟悉伴隨JavaScript而來的那些微妙的問題,并且傾向于每次都選擇更好的語言和IDE,以便在應(yīng)用的整個生命周期幫助開發(fā)者: 從代碼完成到智能感知、自動測試、重構(gòu)工具、長期維護代碼庫,乃至到能夠讓團隊輕松地成長,而不會讓他們自己迷失在意大利面式代碼(spaghetti code,指混雜難懂的糟糕代碼)的海洋中。

JavaScript的主要優(yōu)勢在于其普適性,但是Google和微軟早就認識到,在面對構(gòu)建復(fù)雜系統(tǒng),并且需要使用很多我剛剛列出的特性 時,JavaScript語言就顯得蒼白無力了。因此它們分別在JavaScript的基礎(chǔ)上開發(fā)了新的語言以解決這些問題(Google的Dart和微 軟的Typescript)。

從目前來看,JavaScript***的優(yōu)點在于,許多人都可以把它與其他一些東西整合在一起。

記者移動開發(fā)不再只局限于智能手機和平板電腦,許多新的設(shè)備和界面形式正在浮現(xiàn)。讓我 們考慮一下那些可穿戴設(shè)備,比如Pebble、Google Glass或Gear Fit,在這些設(shè)備上,我們將同時面對數(shù)據(jù)呈現(xiàn)以及全新的設(shè)備交互方式這兩方面的挑戰(zhàn)。原生SDK讓開發(fā)者能夠訪問那些設(shè)備相關(guān)的特定功能。但是,考慮一 下不遠的將來市場上,可能會出現(xiàn)的非常廣泛、多樣化的設(shè)備類型和界面,HTML和JavaScript是否能夠覆蓋它們并提供支持?

Chris:長遠來看,HTML和JavaScript或許最終能夠做到。這完全取決于制造商以及他們打算開放出來什么東西。在可以預(yù)見的未來,毫無疑問原生開發(fā)將比HTML有著更多的可能性。

Daniel:原生SDK的問題在于,我們只能針對特定平臺開發(fā)特定的東西。而對HTML和JavaScript來說,世界上數(shù)量龐大的個人設(shè)備,都能夠渲染基于Web的內(nèi)容。

在Sencha,我們總是努力支持新出現(xiàn)并逐漸流行起來的設(shè)備和平臺,而我們的一位工程師完成了一項概念驗證,確認了傳統(tǒng)的結(jié)合Cordova打包的Sencha移動應(yīng)用能夠在Google Glass上運行。

這表明,只要對已有的基于Web的應(yīng)用做一些微小的調(diào)整,就能夠使其能夠適配到更小的設(shè)備上。顯然,對于Pebble或Gear 2這樣的設(shè)備來說,我們都被限制在更小的屏幕空間中,因此設(shè)計師或開發(fā)者需要更加審慎地思考,需要在屏幕上一次性呈現(xiàn)多少組件,而不是讓太多內(nèi)容淹沒設(shè)備 和用戶,以至于令其無所適從!

Brian:恩,毫無疑問,Android Wear和Google Glass都使用了嵌入式WebView(但不支持JS)以渲染其界面。這證明了WebView確實非常適合橫跨不同屏幕尺寸進行渲染,而且尤其擅長以文 本為核心的展現(xiàn)任務(wù)。Pebble擁有一套JavaScript SDK??纱┐髟O(shè)備的未來將與Web結(jié)合非常緊密,而界面也將追隨這一趨勢。

Maxim:當出現(xiàn)新設(shè)備,且制造商決定面向第三方開發(fā)者開放和提供原生SDK的時候,制造商應(yīng)該表現(xiàn)出自己的 某些愿景。我認為,硬件/操作系統(tǒng)制造商所展露出的清晰明確的愿景,將為第三方開發(fā)者帶來巨大幫助。如果在制造商的規(guī)劃中,第三方開發(fā)者將針對其平臺開發(fā) Web應(yīng)用,那么一切都沒問題。如果制造商不這么打算,但第三方開發(fā)者卻使用瀏覽器作為后門進入這個平臺,那么對應(yīng)用開發(fā)者和用戶來說,這都將變得十分痛 苦。

記者移動應(yīng)用針對的往往是個人用戶,對這個群體來說,應(yīng)用能夠快速、定期地提供涵蓋新 功能和Bug修訂的升級版非常重要。一般來說,開發(fā)者運用敏捷過程以實現(xiàn)這一目標,并力爭進行持續(xù)交付。從敏捷的角度看,HTML和JavaScript 似乎具有顯而易見的優(yōu)勢——在原生應(yīng)用開發(fā)的世界里,是否也有能夠與之媲美的東西?

Chris:如果將移動應(yīng)用與移動網(wǎng)站進行對比,那么我們會發(fā)現(xiàn)明顯的差別:對移動網(wǎng)站進行變更總是更容易。而 如果我們將原生應(yīng)用與HTML5應(yīng)用(例如使用PhoneGap或類似技術(shù)創(chuàng)建),則沒有區(qū)別,至少在蘋果平臺上,無論使用二者之中那種方式,蘋果官方均 不允許已安裝應(yīng)用下載新的代碼。盡管站在技術(shù)上看,HTML應(yīng)用本身具有持續(xù)更新的能力,但這卻是被禁止的。

Daniel:在開發(fā)原生應(yīng)用的過程中,我們可以使用諸如TestFlight等服務(wù)向β用戶推送更新。在企業(yè)環(huán)境中,還可以面向企業(yè)內(nèi)部用戶,使用TestFlight進行應(yīng)用的大規(guī)模部署,從而繞過蘋果軟件商店。這意味著用戶無需等待應(yīng)用審核周期,就能夠獲得新的版本。

Brian:如果嘗試使用混合開發(fā),那么我們就能夠利用持續(xù)交付的優(yōu)勢,而不必受限于蘋果軟件商店的審核。蘋果最近放松了在這方面的姿態(tài)。在這個問題上我顯然是有立場偏頗的,但是說實在的,混合方式結(jié)合了兩種模型中各自***的部分。我們能夠享受通過蘋果軟件商店分發(fā)獲得的曝光度,享受原生平臺結(jié)合插件的能力,并且還能夠按自己的意愿將代碼推送到產(chǎn)品中。

Maxim:這完全取決于我們正在構(gòu)建的應(yīng)用。對于個人用戶非常關(guān)注頻繁升級這個話題,我持有不同意見。他們需 要的是應(yīng)用能夠工作。如果我們在***個版本就能夠提供良好的用戶體驗,那非常好!而且這對于軟件商店中的應(yīng)用評分也更有利,因為每個版本的用戶評分都是從 零開始的(注:這意味著,每次升級后,顯示的應(yīng)用評分都會被歸0,這可能會影響新用戶對應(yīng)用的選擇)。

不過,發(fā)布用來解決Bug的更新是非常重要的,而提供新特性或許也會有所幫助:)。從這個角度看,Web擁有***的交付機制。如果我們構(gòu)建一個 Web應(yīng)用,那么我們想要多么頻繁地發(fā)布都可以,而且我們可以進行局部回滾、A/B測試等等。不過,請注意我說的是Web,而HTML和 JavaScript并不等同于Web。通過蘋果軟件商店分發(fā)應(yīng)用時,蘋果不允許在審核通過后,應(yīng)用內(nèi)部再下載任何代碼。這意味著,如果我們將HTML應(yīng) 用打包成原生應(yīng)用并在蘋果軟件商店中發(fā)行,幾乎就失去了我剛才提到的便利。我們依舊可以使用Web來加載配置,并進行諸如A/B測試等工作,但是在應(yīng)對緊 急發(fā)現(xiàn)的Bug時,這種方式并不會為我們提供幫助。

Miguel 原生開發(fā)者最多只能夠在發(fā)現(xiàn)重大缺陷的時候,提示用戶進行升級。

這意味著,當我們遇到類似IBM最近發(fā)現(xiàn)的那個漏洞(惡意用戶可以劫持展現(xiàn)的銀行信息)一樣,盡管對于使用HTML和JavaScript開發(fā)并通 過原生容器封裝的應(yīng)用來說,可以將HTML和JS代碼完全托管在服務(wù)器側(cè)并進行更新,但數(shù)量龐大的此類應(yīng)用,仍舊需要對容器本身進行升級。

不過,這里也有其他一些替代方案,我們可以讓服務(wù)器來控制那些呈現(xiàn)在用戶面前的內(nèi)容——通過傳輸HTML和JavaScript或通過傳輸其他形式的結(jié)構(gòu)化數(shù)據(jù)。

#p#

記者“JavaScript無處不在”——這往往被認為是在服務(wù)器端使用JavaScript的一項優(yōu)勢。如果服務(wù)器端和客戶端使用相同的技術(shù)棧,開發(fā)者可以復(fù)用代碼和工具。那么在移動應(yīng)用領(lǐng)域是否也有類似的可能?在原生世界中,是否同樣能夠復(fù)用代碼和工具?

Chris:在進行Mac桌面編程的時候,我的很多技能和代碼都得以復(fù)用。而且我還使用Objective-C編寫了服務(wù)器端代碼,并且正在嘗試使用Swift來進行服務(wù)器端開發(fā)。

Daniel:代碼復(fù)用是有可能的,因為諸如Cordova等工具可以被用來創(chuàng)建混合應(yīng)用,因此開發(fā)過程與普通Web應(yīng)用幾乎一致。

但是這里(混合開發(fā))的主要優(yōu)勢是,應(yīng)用開發(fā)者不必學(xué)習(xí)不同平臺上的原生語言。對服務(wù)器端/Web而言,只有一種變體(服務(wù)器端),但卻能覆蓋3種或更多的原生平臺。在跨平臺交付時,HTML5顯然是更便捷的途徑。

Brian:我們再次享受到了混合開發(fā)帶來的潛在便利。我們在客戶側(cè)制作了大量的模板,接下來還會在服務(wù)器側(cè)復(fù) 用它們。其它不這么明顯但同樣令人振奮的是,我們可以同時在客戶側(cè)和服務(wù)器側(cè)運行我們的測試套件。總的來說,讓JS無處不在是一個重大的勝利,特別是這門 語言正隨著ES6標準逐步成熟。

Maxim:在代碼復(fù)用的時候會遇到一個問題——耦合。當我們在服務(wù)器端和客戶端使用相同的代碼時,我們必須先檢查一下是否會對服務(wù)器端的實現(xiàn)造成影響,而后才可以變更客戶端。當我們擁有一個長生命周期的產(chǎn)品時,這會顯得尤為麻煩。

在移動應(yīng)用領(lǐng)域也存在相同的問題。如果我為若干平臺編寫一款移動應(yīng)用,并復(fù)用其中大部分代碼,那么我實際上創(chuàng)建了一個一體化的核心。在這種情況下, 每當我將要對它做一些變更,都會影響到所有的平臺。在前一個話題中,討論了交付機制的問題,它因我們選擇發(fā)布的不同平臺而異。Web是最快速的交付機制, 而蘋果軟件商店則是最慢的。有一句老話說:“鏈條的強度取決于其最薄弱一環(huán)”。在進行跨平臺開發(fā)時,我必須聚焦于各個平臺中的最薄弱環(huán)節(jié)。這意味著,當我 改變了業(yè)務(wù)邏輯中的某個關(guān)鍵點的時候,我需要等到蘋果應(yīng)用商店的發(fā)布完成后,才能夠改變我的Web應(yīng)用。而如果我要做一些復(fù)雜的視覺展現(xiàn)(UI),則必須 考慮我希望支持的性能***的Android設(shè)備。

我并不是說代碼復(fù)用不好,只是想指出,任何事情都有其代價。

Miguel:是的,我們在客戶端和服務(wù)器端兩側(cè)同時使用C#或C。

記者在最近幾個月里,應(yīng)用內(nèi)建插件進行分析的做法逐步興盛流行。你們是否使用了一些類似于Splitforce的工具,另外對于產(chǎn)出***的產(chǎn)品,分析到底有多重要?

Chris:我們有自己的分析系統(tǒng)。我們相信,分析有助于獲得用戶行為方面的洞見。我們還通過郵件、Twitter和線下方式與用戶進行大量溝通。這一點甚至更為重要,因為它促使我們站在大局角度,獲得更好的視野。而且它有助于我們理解,我們的應(yīng)用如何與用戶的日常工作流相互契合。

Daniel:取決于正在開發(fā)的應(yīng)用的類型。在理解最終用戶如何使用我們的應(yīng)用方面,分析工具能夠提供有力的幫助;對于找出應(yīng)用中哪些部分相比其他更受用戶青睞方面也是如此。這樣我們就能夠?qū)⑽磥淼拈_發(fā)精力聚焦在應(yīng)用中的流行部分,而不是揮霍在那些用戶較少使用的部分。

Brian:既然問到了這個問題,我想介紹一下我們的Adobe PhoneGap Enterprise產(chǎn)品,它與Adboe Marketing Cloud相互結(jié)合。它能夠針對內(nèi)容優(yōu)化及內(nèi)容發(fā)布到產(chǎn)品應(yīng)用中的工作流程,進行深入分析和A/B測試?;旧线@項工具非常貼心。:)

Maxim:如果應(yīng)用想要取得成功,A/B測試和商業(yè)分析非常關(guān)鍵,而在我最近兩年投身的移動游戲開發(fā)領(lǐng)域里尤其如此。

人類其實并不是一定要玩游戲,游戲并非生存的關(guān)鍵要素。我們玩游戲是因為喜歡——我們喜歡這種體驗。A/B測試和商業(yè)分析幫助我們針對目標用戶群 體,找出***用戶體驗。離開這些工具,我們只能夠?qū)Σ煌墓δ芴匦允欠衲苋〉贸晒M行押寶。而對于一家謀求可持續(xù)發(fā)展的企業(yè)來說,這是無法接受的。

Miguel:這塊領(lǐng)域現(xiàn)在擁有來自諸如Twitter、Amazon、Google、Microsoft等眾多公司的產(chǎn)品,有助于了解用戶如何使用自己的軟件?,F(xiàn)在,這已經(jīng)是一塊非常成熟的領(lǐng)域,而且這么做已經(jīng)成為標準做法而不是個例。

參與討論的成員

[[127384]]Chris Eidhof是一位來自德國的軟件開發(fā)者,目前定居于柏林。他的大部分精力投入在iOS和Mac應(yīng)用開發(fā)方面,例如Deckset。此外,他還創(chuàng)立了UIKonfobjc.io,并撰圍繞著使用Swift進行函數(shù)式編程寫了一本書。

 

 

[[127385]]Daniel Gallo擁有9年以上的開發(fā)經(jīng)驗,曾經(jīng)使用多種不同技術(shù)開發(fā)基于Web的創(chuàng)新型應(yīng)用,并且尤其精通ASP.NET、C#和JavaScript。在2012年初,Dan加入Sencha成為其歐洲銷售工程師之一,從事Sencha產(chǎn)品線的售前技術(shù)支持工作。

 

 

[[127386]]Maxim Zaks曾在若干Java Enterprise和Web的項目中擔任開發(fā)和咨詢的角色,并曾出任某個基于Eclipse的IDE開發(fā)項目的***開發(fā)人員。現(xiàn)在,他正在為Wooga開發(fā)iOS平臺上的休閑游戲。

 

 

[[127387]]Brian LeRoux是Adboe PhoneGap的***產(chǎn)品經(jīng)理及對外代表,同時也是Apache Cordova的VP。他是Node Firm的會員,也是一位移動Web黑客和啤酒愛好者,并且曾針對一個JavaScript問題與其他許多人一起在wtfjs上撰文。讀者可以在他的個人網(wǎng)頁上了解更多信息。

 

 

[[127387]]Miguel de Icaza是 Xamarin的聯(lián)合創(chuàng)始人,Xamarin創(chuàng)作了MonoTOuch和Mono(針對Android類庫),讓開發(fā)者能夠使用C#,為iPhone、 iPad和Android開發(fā)移動應(yīng)用。在創(chuàng)立Xamarin之前,Miguel締造了Gnome和Mono,并與他人共同創(chuàng)建了Ximian。

 

 

在過去幾年間,移動應(yīng)用以雷霆之勢席卷全球。我們在工作和休閑時間中使用互聯(lián)網(wǎng)的方式,已經(jīng)隨著移動應(yīng)用的前進腳步發(fā)生了變革。在此期間,許多創(chuàng)建移動應(yīng)用的技術(shù)浮現(xiàn)在世間;而在開發(fā)應(yīng)用的時候,人們也開始考慮“移動優(yōu)先”的做法。然而,哪怕現(xiàn)在移動設(shè)備似乎早已無處不在,未來的時代卻只不過 剛剛揭開帷幕。我們正在面對全新一代的移動設(shè)備,諸如可穿戴設(shè)備或眾多移動配件——正是它們構(gòu)成了“萬物互聯(lián)”的世界。我們將面對全新的用戶界面,通過它們數(shù)據(jù)展示及指令接收處理。同時,我們還將看到,越來越多的公司將真正地踐行“移動優(yōu)先”的思路。而在未來數(shù)年中,這一切都將影響我們設(shè)計、開發(fā)和測試軟件的方式。

英文原文:Virtual Panel on App Development

譯文出處:InfoQ

責(zé)任編輯:閆佳明 來源: infoq編譯
相關(guān)推薦

2011-05-11 09:47:14

mobl移動web開發(fā)

2019-08-29 09:00:55

開發(fā)Flutter框架

2014-07-28 09:15:02

開發(fā)框架

2012-03-19 21:25:47

2014-07-30 14:52:32

應(yīng)用App產(chǎn)品

2012-12-21 14:59:52

Tabris

2013-10-22 09:54:42

開發(fā)者應(yīng)用

2013-09-24 09:52:33

移動應(yīng)用虛擬化

2013-01-05 10:28:18

虛擬化移動應(yīng)用

2013-03-15 13:51:31

在線教育移動互聯(lián)網(wǎng)

2014-05-30 17:53:43

移動互聯(lián)網(wǎng)

2013-08-26 10:29:22

移動互聯(lián)網(wǎng)入口應(yīng)用

2011-08-02 09:04:02

移動應(yīng)用開發(fā)

2015-08-19 10:07:18

云應(yīng)用移動云應(yīng)用云應(yīng)用開發(fā)

2012-08-30 09:41:23

移動應(yīng)用開發(fā)

2016-09-13 16:47:33

移動·開發(fā)技術(shù)周刊

2012-11-30 11:56:48

2012-02-01 15:38:08

2013-08-30 09:54:58

企業(yè)移動應(yīng)用

2011-05-19 10:46:58

Office應(yīng)用訪談金山
點贊
收藏

51CTO技術(shù)棧公眾號