《近匠》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 主页