UC 开发语言的选择

来源:《程序员》杂志第11期
连接:http://www.programmer.com.cn/14092/程序员

有人把开发语言比喻成武侠中的门派:少林、武当、峨眉、崆峒等,每一个门派武功的招式、修炼方法和宗旨都不相同,所以新人投奔某个门派后再改投新门派的门槛很高,而各个门派之间也是三六九等。也有人把开发语言比喻成各类工具:锤子、钳子、螺丝刀、小刀、大棒等,各个工具没有强弱之分。浏览器

对于通常程序员来讲,切换语言的门槛是存在的,由于开发语言不只包括语法,还包括开发语言和框架等整套技术堆栈。从公司角度来看,肯定公司内部的主流开发语言也有利于人才培养和招聘,可以促进企业的健康发展。安全

本文将分享一下 UC 在选择开发语言方面的一些经验和思考。服务器

UC的业务定位网络

选择开发语言时首先要考虑的就是它要和整个公司的业务定位相契合。
UC 是作浏览器起家的,浏览器就是全部研发的核心。
同时咱们也会围绕浏览器拓展一些附属业务,如资讯频道、软件下载频道、游戏下载频道等。架构

2004 年咱们刚开始创业时,使用了服务器客户端混合运算架构去解决使用手机浏览器浏览 Web 网页的问题。
这种架构将大部分复杂的运算工做放在服务器上完成。
用户在使用 UC 浏览器浏览 Web 网页时,“服务器”会先将页面内容进行预处理。
例如,当页面出现 JavaScript、CSS 等手机端没法很好处理的元素时,服务器会采用高容错策略进行自动过滤。
当页面须要显示图片时,服务器会根据终端返回的屏幕参数对图片进行匹配压缩。
考虑到上网浏览页面的特性,全部服务器处理工做基本都是实时进行的。并发

而随着终端性能的提高、网络环境变好,咱们发现,客户端支持的事情变得更多了。
因而咱们从 2008 年起组织了一个单独的团队,开始打造新一代的手机浏览器内核。
U3 内核将原先主要放在“云”的页面解析功能,向本地客户端作了相应的迁移。
如今,U3 内核已经能够很好地符合 HTML5 的相关标准。
而浏览器内核对跨平台、性能要求都是很高的。框架

UC 的客户端开发语言函数

2004 年刚开始作 UC 浏览器时,用户手机基本都只能支持 Java,因而 UC 的客户端开发语言就选择了 Java。
2007 年先后,咱们看到基于 Symbian 60 的智能机开始兴起,操做系统也开始支持性能更好的 C/C++,所以,咱们开始跟进使用 C/C++ 进行 Symbian 客户端的改造和开发。
咱们应该是最先一批进行原生开发的手机软件研发团队,UC 在 Symbian 上占有很高的市场份额也正是得益于此。
2010 年以后,iOS 和 Android 等智能平台开始出现,UC 也快速跟进,开发了原生产品。工具

目前,UC 已经覆盖了国内全部主流手机平台,下面是开发语言的的列表。

开发语言列表

值得一提的是,咱们的 U3 内核主要采用 C/C++ 进行开发,这样作的好处是,能够作到很好的跨平台。
目前U3内核已经在 Android 和 iPad 上上线。
咱们计划用一年时间使之支持 iPhone、Android 平板还有 Windows Phone。
此外,因为 MTK 的平台也是可使用 C/C++ 开发的,因此,将来咱们也但愿 U3 内核能够登录诸如 MTK 这样的平台,服务更广大的用户群。

UC 的服务器端开发语言

服务器端开发一直是 UC 业务的核心之一。
在初创阶段,UC 的服务器端只是 UC 浏览器的云端,仅仅是为了实现网页压缩和加速,提升渲染的效果。
服务器端开发团队的开发语言采用的是 C/C++(核心模块)和 Python(业务逻辑),比较统一。
2007 年左右,咱们开始围绕浏览器发展了不少周边业务,算上后台的统计分析等项目,能够说是五花八门。
当时,各个项目分属不一样团队,通常来说,团队 Leader 熟悉什么语言,团队就使用什么开发语言,涉及 PHP、C/C++、C#、Boo、Python、Java 等。
同种开发语言中使用的框架、库也都各自为政,由各团队本身克服困难和积累技术。

在 2011 年末到 2012 年第一季度,咱们在公司范围内进行了一次集中讨论,最终肯定以 PHP、C/C++、Java 做为 UC 服务器端的主流语言。

大项目开发语言选型

  • 在如下场景建议使用 PHP:

    “页面展现”:带有 Web 页面的产品和项目,用PHP方便结合前台其余开发技术,如 HTML/XHTML、CSS、JavaScript、JSON 等,不需编译,可快速调整页面;

    “模块粘合”:将一个大项目分解出多个逻辑相对固定且独立的模块,采用 C/C++、PHP 等作成独立模块提供服务,用 PHP 调用这类服务后,结合其余灵活多变的业务逻辑组装起来。

  • 在如下场景建议使用 C/C++:

    “高性能、大并发、高实时”:性能高是 C/C++ 的优势,相对于 PHP 或 Java,用户量大、并发访问的程序使用 C/C++ 能节省大量机器;

    “耗 CPU、管理大量内存、高磁盘 I/O 或者网络 I/O”:对物理资源的管理以及灵活方便的操做是 C/C++ 的天生优点,但缺点要求开发人员有着丰富的开发经验。

  • 在如下场景建议使用 Java:

    “兼顾业务灵活性、规范性、性能和安全”:Java 类被组织成等级层次,纯粹面向对象、规范、类库多、业务抽象较好、跨平台、业务逻辑变动方便,并且性能相对较高;

    不少银行系统、银行网站、制造企业的系统都是基于 Java 平台,所以,互联网企业跟其余企业有交互接口的项目经常使用 Java。

要求掌握 2 种开发语言

UC 如今要求每一个开发人员应该熟练使用至少 2 种开发语言。
一种是目前工做时主要使用的“母语”,另外一种是根据兴趣或工做须要选择的“外语”。
在学习“外语”时,通常是要求快速掌握其语法,而后了解相关函数列表和库,知道用的时候在哪儿查,了解项目文件如何组装以及开发框架、开发规范。

从公司的角度看,由于互联网企业节奏快,咱们常常从各个团队抽调人员快速组建新的团队,因此开发人员熟悉2种语言可让公司的运转更为流畅,咱们在人员调动时也会征询各自的意愿和了解其对语言的掌握状况。

从团队内看,须要有一部分人能够工做在几个领域,例如使用 PHP 的人中有一部分还须要会用 C/C++ 写 PHP 扩展;或者在用 Java 为主的团队里,须要有一部分人能用 C/C++ 开发底层服务。
另外,部分项目还需一些辅助的后台脚本,咱们要求开发者会用 Linux Shell 写简单脚本,部分开发还会用 Python 写复杂的脚本。

从人才培养的角度看,选择这些开发语言,主要是考虑到移动互联网和互联网行业的现状。
这有利于开发人员复用之前的技术积累,也有利于开发人员长期的职业发展。
经过内部讨论,让你们意识到几种开发语言的优缺点,能在更高的视角选择合适的开发语言。

最后,适合的开发语言有利于团队的技术储备、提高工做效率和跨团队的人员调动。

相关文章
相关标签/搜索