《近匠》Wijmo 5 CTO:從Web到移動,我的25年編程生涯
現年 52 歲的 Bernardo Castilho 先生是 GrapeCity(中文名為葡萄城)ComponentOne 公司的 CTO,在與他的對話過程中,充滿風趣嚴謹和厚重的歷史感。當作為年輕人的我們崇拜著各式娛樂男神女神時,他的偶像卻是這個世界上最為杰出的科學家,從少 年時代開始,編程成了他的興趣愛好,并最終成為了他許以一生的職業。作為 Wijmo 5 開發團隊的 Leader 之一,他是 HTML5、JavaScript 等眾多技術的行家里手。
圖:GrapeCity ComponentOne CTO Bernardo Castilho 先生
CSDN:首先,請向我們的讀者自我介紹一下,可以分享一些您的小八卦。從業以來,有哪些印象深刻的經歷?從 Web 到移動,有哪些經驗分享?
Bernardo Castilho:我的編程生涯可以追溯到少年時代,當時我使用的是一臺 45k 內存的 Apple II,我沉醉于這種能讓一切事物變得格外簡單的編程滋味兒。上世紀 90 年代初,當我編寫出我的第一款適用于 Visual Basic 1.0 的自定義控件,這種愛好變成了我許以一生的職業。
一直以來,我都非常熱愛閱讀,如果必須選擇一本的話,我會推薦侯世達的《哥德爾、埃舍爾、巴赫:集異璧之大成》,從嚴格意義上來講,它并不是一 本編程書籍,但它卻涵蓋了包括萬物相連在內的諸多領域。我也有很多的偶像,比如阿基米德、伽利略、牛頓、高斯、馮·諾伊曼、艾倫·圖靈等,但在我的生命 中,我最崇拜的人是 Turbo Pascal、Delphi、C#和 TypeScript 的創造者——安德斯·海爾斯伯格,我參加過他很多的演講,他獨到的見解與想法總會讓我倍感驚喜。
在過往 25 年的職業生涯里,我有幸目睹了 Web 革命的完整歷程,從上世紀的一個天才想法逐漸演變成為今時今日人們生活中不可或缺的一部分,從向一個平臺發布內容到一次編程處處運行的跨平臺應用。于我個人而言,從 Web 到移動最重要的轉折點是微軟決定停止開發 Silverlight,它讓我看到了 HTML5 和 JavaScript 將成為未來的技術趨勢。
從我涉足這一行業開始,一切都變得有趣起來,回首過去,人們發明了個人電腦和萬維網,許許多多驚天地的事情對現實生活產生了劇烈影響。而今天, 冒著像個老男人一樣嘮叨的風險,我看到很多年輕的孩子在 iPad 上浪費他們的大好光陰,而成年人則成日在 非死book 等社交網絡上刷屏度日,甚至還有的人在為他們的下一部手機該選個什么顏色而苦惱。當然,在此之中,仍然有許多有趣的事情正在發生,只是還不為人知罷了。對 我來說,EcmaScript 5、TypeScript、AngularJS 以及 Wijmo 5 都格外地有趣,希望會有更多的人喜愛它們。
CSDN:請具體說一下 Wijmo 5 是什么?為什么將其命名為“Five”?
Bernardo Castilho:Wijmo 5 是新一代的 HTML5/JavaScript 控件庫,采用最新和最受歡迎的技術,包含了開發可運行于桌面與移動設備之上的現代 MVVM 應用需要的所有控件和組件,并且,它不再兼容任何傳統瀏覽器,我們仍然會繼續支持并更新 Wijmo 3,以便傳統瀏覽器的用戶還能繼續使用。
Wijmo 5 的“Five”實際上來自于 EcmaScript 5。在 Wijmo 5 中有一項非常重要的特性,就是真正實現了對于 getter 和 setter 屬性的支持,這是 EcmaScript 5 新添加的部分,也是 Wijmo 早期版本一直缺乏的東西。
CSDN:請講講 Wijmo 5 開發團隊的成員以及分工情況。
Bernardo Castilho:Wijmo 5 團隊的大部分人也負責其他的產品開發工作。我們利用在各自擅長領域的專業經驗來為各個類別的開發項目創建擁有最好品質的控件。
就我而言,我之前負責了從 ActiveX、Winforms 到 XAML 等 FlexGrid 所有版本的開發工作,而我在 Grid 方面也擁有著極為豐富的經驗,并把它們帶到了 Wijmo 5 FlexGrid 的開發中。Alex Trefilov 是 Wijmo 5 FlexChart 控件的開發者,他一直負責 XAML 圖表控件的開發工作,可以說是圖表方面的行家。Tim Emanuel 是我們的主設計師兼 CSS 專家,他創建了 Wijmo 控件的外觀和布局行為,以及可輕松新建控件主題的 LESS 文件。
Chris Bannon 是 Wijmo 的產品經理,負責包括 Wijmo 5 在內的 Wijmo 所有版本的研發工作。Chris 在 Web 開發、HTML5、JavaScript 以及包括 jQuery、SVG、Bootstrap、AngularJS、KnockoutJS 等的所有流行 JavaScript 技術和控件方面絕對稱得上是行家,他為我們了解當下最先進的 Web 開發技術以及該如何開展研發工作投入了大量的精力。Alex Ivanenko 是我們的項目經理,負責包括構建過程、自動化測試、Bug 管理及用戶請求等基礎架構工作。而 Wijmo 5 的所有演示示例則是由 Raleigh Johnson 來開發的,Nazim Turakulov 是我們負責交互層的開發者,主要包括 AngularJS 和 KnockoutJS 指令等。Kim Landis 是我們的技術文檔工程師,主要負責文檔、技術論文博客等的審校工作,確保所有信息都是簡潔明確的。而市場經理 Eve Turzillo 則負責包括廣告、視頻、會議等在內的推廣工作。除此之外,我們還有一個分布在中美等國家的開發團隊,同時負責 Wijmo 3 和 Wijmo 5 產品的開發工作。
CSDN:Wijmo 5 的開發用到了哪些技術?具體的開發思路是怎樣的?
Bernardo Castilho:2013 年,當我們看到通過 EcmaScript 5、HTML5、TypeScript、AngularJS 等全新的 Web 技術能夠創建出像 Silverlight 和 .NET 中的那些工具一樣強大的 HTML 工具時,我們決定開發 Wijmo 5。我們想要創建一個這樣的庫,當我們的客戶習慣于體積更小、依賴性更弱的其他平臺時,能夠為他們提供擁有同樣強大的功能及靈活性的控件。我們使用到了 jQuery,但不包含 jQuery UI、Raphael、Globalize 或其他的庫。
我們希望這些控件能夠充分利用 HTML5 隨處運行的特性,因此,所有的控件設計都以可良好運行于移動/觸屏及桌面設備為前提。
圖:Wijmo 5 設計草圖
Wijmo 5 使用 TypeScript 語言編寫,它融合了包括類、繼承等在內的面向對象編程所有優點,并編譯成 EcmaScript 5,從而實現可運行于所有現代瀏覽器。此外,TypeScript 還提供了靜態誤差檢查,能夠極大地加快開發速度并提供產品質量。
Wijmo 5 的控件擁有著非常豐富的對象模型,在我們其他平臺已有控件的基礎上,利用我們作為控件開發者的經驗優勢來減少客戶的學習曲線。并且,我們還從 Silverlight 移植了 JavaScript 堆棧所缺失的類,其中就包括和 MVVM 應用關鍵接口 ICollectionView 相似的 Control 和 Event 基礎類。
CSDN:這款工具做了多久?遇到過哪些坑?
Bernardo Castilho:我們用了一年的時間來開發 Wijmo 5,整個過程可以說很順利,但也遇到了一些挑戰,而最大的挑戰當屬文檔, 我們渴望能夠找到像 JSDoc 這樣的工具來將代碼注釋編譯進在線幫助系統,但卻無功而返,最終,我們自己編寫了一款能夠從源碼中提取注釋并生成支持本地化的 XML 文件的工具。另外,還有一款專門用于將 XML 文件編譯成 Web 頁面一起匯成幫助系統的工具,這樣一來,無論何時構建 Wijmo,我們的幫助站點都能實現自動更新。相對而言,其他的問題則容易得多。
CSDN:Wijmo 5 和 Wijmo 在本質上有哪些不同?與同類工具相比,Wijmo 5 的優勢在哪兒?
Bernardo Castilho:Wijmo 5 與之前諸多版本的 Wijmo 存在著很大的不同,并且完全不相兼容,它包含了一系列截然不同的控件,不同的架構,最為關鍵的是,它不再對傳統瀏覽器提供支持。與其他同類工具相比,Wijmo 5 的控件體積更小,速度更快,并有著更為富足也易于使用的對象模型,整個 Wijmo 5 庫也就 300k 大小,同類產品則通常比它大 10 倍左右,Wijmo 的控件不是“widgets”,而是真真正正的控件,擁有著更棒的性能。
CSDN:關于 Wijmo 5 未來會有哪些規劃?是否會考慮開源?
Bernardo Castilho:我們沒有將 Wijmo 5 開源的計劃,相反,我們會將 Wijmo 5 以一個極具競爭力的價格出售,并提供用戶支持。對于 Wijmo 5 的未來發展,我們有一套路線圖以及用戶請求列表,在發布 Beta 之后,我們會將所收集到的信息匯總出一個優先級列表,根據它們來制定具體的實施計劃。
CSDN:很多開發者關心,Angular 與其他流行組件集成時是否會存在問題?
Bernardo Castilho:對于 Angular 的支持實際上是 Wijmo 5 開發的重點項目之一,我們熱愛 AngularJS,并在大部分的示例中使用了它,并且,我們還提供了指令來讓使用帶有 AngularJS 的 Wijmo 5 變得更容易。另外,對于控件本身,Wijmo 5 還有一個 CollectionView 類,讓使用 AngularJS 的 MVVM 開發達到 XAML 平臺的水準。
CSDN:如果開發者想將項目從 Wijmo 向 Wijmo 5 遷移,該怎么實現?
Bernardo Castilho:從 Wijmo 向 Wijmo 5 遷移非常容易,如果開發者使用 AngularJS 和 MVVM,那么就可以通過對控制類進行細微的調整并指令執行以舊換新操作,即可完成項目遷移。當然,我們非常樂于為用戶提供遷移指導,在官網的 NewsGroup 版塊就包含了 Wijmo 等主題相關的信息,對開發者而言絕對非常實用。
圖:Wijmo 5 代碼截圖
CSDN:在 Wijmo 5 的介紹中,有一塊“真正的 JavaScript 控件”,可否具體講講它所指的意思?
Bernardo Castilho:從字面意思來理解,“控件”是指一個具備用戶接口以及包含屬性、事 件、方法等的對象模型的可重復使用的軟構件。大多數 JavaScript 庫所提供的都是與控件極為類似的組件(Widget),只不過,組件的性能有一個單一卻相當難管理的“Options”對象,并且,它們使用調用方法或附 加事件處理程序的字符串,導致語法冗長又容易出錯。
而 Wijmo 5 則完全不同,它實現了 getter 和 setter 等屬性支持,擁有真正的事件和方法。所有的對象模型都是類型安全的,開發者可從 IntelliSense 和 TypeScript 編譯器受益。最重要的是,Wijmo 5 語法和 JavaScript 類一樣簡潔,代碼更易于編寫、閱讀和理解。
CSDN:Wijmo 5 控件是否可以根據設備或瀏覽器進行自適應?其通用性如何?
Bernardo Castilho:Wijmo 5 控件支持包括手機、平板電腦、PC 在內的所有設備,無論開發者選擇使用哪種布局框架,都可以完美集成。比如說,我們大部分的示例都是用 Bootstrap 來實現自適應布局,這就確保了應用程序不僅可以運行于小屏設備之上,還能自適應,當然,有些示例還用到了其他框架,比如專門用于開發混合應用的 Ionic。Wijmo 并不提供布局服務,但無論開發者選擇 Bootstrap、Ionic 還是其他任何 CSS 庫,都可將其輕松集成到 Wijmo 中。
CSDN:Wijmo 5 在中國有哪些技術支持?如果中國的開發者們遇到問題該如何尋求幫助?
Bernardo Castilho:我們將為來自中國的開發者提供一流的服務支持。我們的母公司 GrapeCity 在中國的上海和西安都設有分公司,關于 Wijmo 5 開發的許多工作都是在中國完成。如果來自中國的開發者們關于 Wijmo 有任何的問題,都可以在GrapeCity 論壇提出,我們的開發人員一定會及時提供幫助。
CSDN:作為資深程序員,能否談談您對于 HTML5/JavaScript 技術趨勢的看法?
Bernardo Castilho:在我看來,EcmaScript 5、TypeScript、AngularJS 等技術的更新已經讓 HTML5 和 JavaScript 成為應用開發最高效實用的平臺。EcmaScript 5 引入了最為重要的 getter 和 setter 屬性以及 SVG、Canvas、JSON 等支持,而在此版本之前, EcmaScript 根本不夠強大。TypeScript 也新增了許多關鍵元素,除了面向對象之外,還有能節省時間并提高代碼質量的靜態錯誤檢查。AngularJS 則提供了豐富的 MVVM 和 Web 組件,兩者都是現代應用開發的關鍵部分,盡管 AngularJS 所具備的功能并不是獨此一家,但它卻是當下最流行的技術之一。
CSDN:近期在中國,有一個頗為熱門的話題,就是 Adobe 關閉了在中國的研發分公司,僅留銷售部門,其中很重要的一個原因就是對于國人而言,正版軟件太過昂貴,就 GrapeCity 控件來說,你們是否會針對中國市場進行價格調整以適應中國國情?
Bernardo Castilho:我們曾就定價進行過許多內部討論,大部分人認為目前的價格是相當合適的,而有的人則希望能夠增加一個價格較低但有限制條件或減少支持的選擇。對于中國的開發者,究竟該提供一個什么樣的價位?關于這一切,我們仍在思考中。同時,根據我們在中國的業務團隊的反饋,中國的企業用戶非常重視技術服務,因此在中國市場,我們會提供本地化的技術支持,以及電話、郵件響應等增值服務,以幫助開發者獲取更棒的體驗。
CSDN:有沒有想對中國的開發者們說的話?
Bernardo Castilho:我鼓勵所有對 HTML5 和 JavaScript 感興趣的中國開發者登陸我們的官網了解 Wijmo 5,在這里,不僅可以下載 Wijmo 5,還有視頻、示例、文檔、論壇等讓你深入了解 Wijmo 5。更希望來自中國的開發者們能夠以英語或中文等方式直接與我們聯系,獲取更多信息,或向我們提出建議,來幫助我們將 Wijmo 5 做得更好!
相關鏈接:Wijmo 的 mobilehub 主頁
<span id="shareA4" class="fl">
</span>
</div>