专栏首页蚂蚁开源社区编程有感,Web 新时代的机遇与挑战

编程有感,Web 新时代的机遇与挑战

一般来说,一项新技术是否会随着时代的推进而被快速地迭代和发展,要看这项技术所应用在的实际业务场景中是否有相应的技术需求,毕竟没有任何技术是会被凭空创造出来的。

技术决定了业务需求的多样性,而业务需求的多样性又推动着技术不断向前发展,两者相辅相成最终才能推动行业整体的发展和进步。

自1991年HTTP协议和HTML超文本标记语言这两种核心的Web技术诞生以来,Web开发技术领域便开始不断地发生着翻天覆地的变化。

如下图给出的Web技术发展史所示,从1991年到2002年的这十年里,Web技术的发展过程还是比较缓和和稳定的。

在这十年的时间里,首先是NetScape、Opera和Internet Explorer(IE)三大浏览器开始逐渐走入人们的视野。一些用于构建更丰富Web应用的基础性技术开始逐渐涌现,比如Flash技术从1996年开始可以被应用在浏览器端,这使得传统的Web应用中可以嵌入包含丰富多媒体信息的Flash应用,这一发展也使得Web应用的交互性和动态性大大的增强。Flash技术的出现催生了一批以提供视频播放、视频发布和视频分享服务为主的视频服务平台的出现,另一方面同时也推动了基于Flash的Web页游行业的发展。

自2002年开始,Web技术的发展便到了其整个发展历程的“下半场”。从2003年开始一直到2012年的这将近十年的时间里,新型Web技术的出现逐渐呈现出了爆炸式的增长。

首先是Chrome、FirefoxSafari这三种为推动 Web技术后来的爆炸式发展作出了巨大贡献的浏览器开始出现,各大浏览器厂商对其产品的版本更新迭代速度也开始加快。

Web技术的发展从2008年开始进入了一个“爆炸式”的快速发展阶段,各种各样的新型Web浏览器特性和新的Web标准以及ECMAScript标准如“雨后春笋”般开始涌现出来。

XMLHTTPRequest2技术为 Web应用的数据传输提供了更方便和高效的传输方式;WebRTC技术为Web应用的实时在线视频/语音直播提供了底层的基础技术解决方案;WebGL技术为Web 应用提供了一种可以通过JavaScript来操作Web版本OpenGL 的特性,基于WebGL暴露出的JavaScript接口,我们可以在Web网页上高效地绘制3D动画和模型,为在Web网页上运行大型3D网络游戏提供了可能;IndexedDB技术为前端应用存储结构化数据并且对数据进行高性能的数据检索提供了支持。

除此之外还有很多的Web相关技术被实现和标准化,这些技术都无疑大大地拓宽了Web应用所能覆盖到的应用领域和场景。也正是自2008年的HTML5标准和2009年的CSS3标准出现之后,Flash多媒体应用技术在Web开发领域逐渐开始走向了下坡路,直至最后被其他技术取代。由此也可见Web领域的技术迭代与更替速度之快。

JavaScript作为一门用于开发Web端应用的编程语言从1997年发展至今,其所能应用的领域已经不仅仅局限在最原始的基于浏览器的Web端应用开发上了。包括Node.js在内的等一系列新出现的JavaScript运行时环境已经把JavaScript的应用场景从前端应用的开发带到了服务端应用的开发。

基于Chrome V8引擎构建的Node.js和Fib.js等JavaScript运行时环境和框架为后端服务器应用的开发提供了“非阻塞的异步IO”和“基于事件模型”等新特性。

这些新特性可以让我们以开发传统前端Web应用的思路来开发服务器端应用。

不仅如此,基于Node.js开发出来的各种服务端应用框架更是极大的提高了我们开发后端应用的效率。

这些框架在一些必要的业务流程上已经为我们做了足够多的封装和优化,这使得我们可以更多的去关注业务逻辑代码上的实现,而不是一些底层细节架构上的事情。

但事情并没有这么完美,就拿Node.js为例,由于Node.js本身是基于V8实现的,而V8本身所负责的一个最重要的功能就是对JavaScript代码进行解析和优化,然后将这些优化后的代码编译成机器码最后运行。

因此,无论Node.js对V8上层的JavaScript代码进行了何种系统底层调用流程上的优化,如果最后在V8解析和执行JavaScript代码时的速度很慢,那么整个应用的运行效率必然会大打折扣。总的来说,Chrome V8、JavaScriptCore和SpiderMonkey等JavaScript引擎对JavaScript代码的解析和执行效率高低,直接决定了这些基于JavaScript开发的前端和服务器端应用的运行流畅程度,进而也直接影响了最前端的产品用户体验。

除此之外,变得日益复杂和庞大的Web前端应用也带来了更多对JavaScript语言性能上的挑战。

比如基于Web端的视频处理软件、基于Web端的大型3D游戏、基于Web端的在线机器学习(深度学习)训练平台等。这些应用无一例外都需要消耗浏览器大量的计算资源,因此JavaScript引擎对JavaScript代码的执行效率也直接决定了这些应用能否被流畅地运行。

不仅如此,我们都知道通过JavaScript来移动或修改页面上的DOM节点所付出的成本是巨大的,随着传统Web页面的交互设计变得越来越复杂,这种成本损耗所带来的问题可能会被逐渐放大,这也是我们在未来将要面对的问题 。

本文分享自微信公众号 - 蚂蚁开源社区(mayi_zzfriend),作者:思齐大神

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 大话程序员系列:一张图道尽程序员的出路

    最近在琢磨程序员到底路在何方,经过不断的自虐和代入,终于在迷雾森林中得图一张,看之豁然开朗。独乐乐不如众乐乐,share了:

    用户5997198
  • 【公共UI】纯CSS3 Material Design风格单选框和复选框

    这是一款使用纯CSS3制作的MaterialDesign风格单选框和复选框插件。该插件只需引入指定的CSS文件,然后配合特定的HTML结构,就可以生成漂亮的Ma...

    用户5997198
  • 技术人生:说说技术总监的“三板斧”

    作为一个老技术人,今天不聊技术,就聊点技术人员职业发展的事情:对技术管理岗位的认知,比如技术总监。

    用户5997198
  • 算法| 选择排序

    第一步要找到其中的最小值将其放到第一个位置,然后找余下的最小值放到第二个位置,以此类推。

    fem178
  • Java垃圾回收机制、系统设计、Android异步、排序算法

    内存回收机制:就是释放掉在内存中已经没有用的对象,要判断怎样的对象是没用的,有两种方法:

    陈宇明
  • 实时协同编辑的实现

    在最近某个项目中打算使用协同编辑来解决冲突问题,因此抽空调研了现有的实现方案,结果发现要想做完美是很难的,但我们可以低成本地做到不错的效果,本文将介绍几种实现方...

    一个会写诗的程序员
  • Myeclipse2017无法修改项目的Web Context Root问题

      在myeclipse中写项目,经常使用复制项目的方式创建新的项目,但是新项目复制后,光改个名字是不能发布到Tomcat中,这会和以前的项目同名,因为它的We...

    黑泽君
  • 算法之旅 | 选择排序法

    HTML5学堂-码匠:数据快速的计算与排序,与前端页面性能有直接的关系。由于排序的算法有很多,在本次“算法系列”的分享当中,我们先从简单易上手的选择排序法开始,...

    HTML5学堂
  • 开源后台系统*mee-admin*

    mee-admin是由我的个人mee项目开源而来,mee-admin项目是一个前后端一体化的项目,不过在代码上实现了页面与数据分离,是一个非常好的 轻量级后端...

    上帝
  • Codeforces Round #234A

    Inna and choose option     题意: 一个由12个字符('O'或'X')组成的字符串,这12个字符可以排列成a*b(a*b=12)的...

    CN_Simo

扫码关注云+社区

领取腾讯云代金券