2019独角兽企业重金招聘Python工程师标准>>>

本文的叙述过程分为两个部分,第一部分是现代Web发展趋势,第二部分是Web的前沿技术综述。现在先来阐述第一部分:现代Web发展趋势。

现代Web发展趋势

从网络在不同的发展阶段扮演的角色,现代Web发展阶段可以简单地分类为Web1.0、Web2.0、Web3.0。Web1.0中,网络是信息的提供者,单向性的提供和单一性理解;Web2.0中,网络是平台,用户提供信息,通过网络,其他用户获取信息;Web3.0中,网络成为用户需求理解和提供者,网路对用户了如指掌,知道用户有什么、要什么以及行为习惯,进行资源筛选、智能匹配,直接给出答案。

web1.0的特征

Web1.0类型的网站的口号是“内容为王”,网站的目标是用内容来吸引眼球。这种思想也是传统媒体思想的一种延续。但是,在网络中,人与内容之间的关系常常受到超链接等外部因素的干扰,因而呈现出偶然性、随意性与跳跃性,而信息超载也使得内容对于人的持续吸引力不断减弱。也就是说,在网络中,人与内容的关系往往是不稳定的。有时,反倒是形式(例如界面风格)对人们在网络中的行为方式产生较强的制约作用。

Web2.0的特征

Web2.0则试图把人与内容的关系深化为人与人的关系。Web2.0指的是一个利用Web的平台,由用户主导而生成的内容互联网产品模式,为了区别传统由网站雇员主导生成的内容而定义为第二代互联网。Web2.0中,用户参与网站内容制造,网站的内容通常是用户发布的,使得用户既是网站内容的浏览者也是网站内容的制造者,这也意味着Web2.0网站为用户提供了更多参与的机会。Web2.0是互联网的一次理念和思想体系的升级换代,由原来的自上而下的由少数资源控制者集中控制主导的互联网体系,转变为自下而上的由广大用户集体智慧和力量主导的互联网体系。

Web3.0的特征

Web3.0最大的特点在于信息的聚合以及提供个性化的信息服务,真正的Web3.0时代不仅仅是按照用户需求提供综合化服务,创建综合化服务平台,更关键的是,提供基于用户偏好的个性化聚合服务。例如,搜索引擎的个性智能化,用户不用分析和试验如何组合关键词语 , 只要把想要的东西列出,与个人的偏好和背景连接,搜索引擎就能把适合的数据提供出来,更快捷地搜索信息,解决问题,同时用户可以自由定制搜索聚合结果。Web致富Tim Bernerslee提出“Web3.0 is something called the semantic web(语义网)”,语义网是指将全部的信息、资源、知识分散各地,以内容的形式连接成网。Web2.0的信息通过Web程序中的标识代码实现站内互通,而Web3.0将信息的互通进一步深度挖掘,直接从底层数据库进行互通。随着人工智能、大数据的发展,基于统计的机器学习技术,Web3.0将会更加理解用户需求,提供更加智能的信息推荐。

前面从特征的角度,分别阐述了Web1.0、Web2.0和Web3.0的不同特点,简要的阐述了现代Web的发展趋势,下面的内容将讨论Web的前沿技术综述,讨论实现Web的技术的发展。

前沿技术综述

我从2013年就开始做Web技术方面的工作,而近几年主要是想转到Web推荐系统的方向。作为一名Web开发者,我曾在PHP和Java技术栈上开发Web应用和Web服务。最近,我将Web技术和开发趋势作为整体研究了一遍,在这里分享一下我的想法和观察结果。首先,让我分享一些我所观察到的可用性和体系结构目前的趋势。

前端发展的综述

前端里面近年来最流行的词语就是HTML5、CSS3、ECMAScript6技术,带来了前端技术的井喷式发展。

HTML5中的5代表版本号,我们可以简单地理解为第五代HTML标准(实际在HTML5之前有非常多的次要版本更新),这一代标准提出了很多重大的功能更新,例如:Canvas、WebSockets、直接的多媒体支持、硬件加速支持、本地存储的支持等功能。HTML5的发展越来越迈向成熟,许多的应用已经逐渐出现在你我日常生活中了,不止让传统网站上的互动Flash逐渐被HTML5的技术取代,更重要的是可以透过HTML5的技术来开发跨平台的手机软件。HTML5的优势有:文档声明简化;新语义化标签;很好的替代Flash和Silverlight;SEO的友好性对于一些网站,特别是那些严重依赖于Flash的网站,HTML5是一个大福音。HTML5的发展机遇带来了网页游戏的发展和移动终端的普及。

CSS3.0是CSS技术的升级版本,CSS3.0语言开发是朝着模块化发展的。以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为一些小的模块,更多新的模块也被加入进来。这些模块包括:盒子模型、列表模块、超链接方式、语言模块、背景和边框、文字特效、多栏布局等。

我最早是从jQuery开发开始的JavaScript的学习,到现在的AngularJS、Vue.js和React.js的流行,体会到AngularJS开发的好处,组件化开发的好处,AngularJS和Java的思想非常的像,开发Java编程的人能够平稳过度到AngualrJS的程序。jQuery流行起来的最根本原因是DOM选择器,DOM选择器加上事件的操作。但随着页面的事件交互的复杂,jQuery的代码将会变得不好维护,AngularJS就是为了解决这样的问题诞生的,与jQuery事件驱动的思路不同,AngularJS采用数据驱动,采用组件化开发,对于大型的前端页面,将会变得好维护起来。

另一方面,ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。ES6中引入了class类的关键词,也就有了import、export、extends等关键词,与类class配合使用。撇开具体语言细节不谈,ES6整体的代码风格非常容易上手,与Java、Python、Ruby等高版本的语言风格非常一致,给人的映像是学习的带入感很强,方便学习。

另外一点,前端的发展开始向后端发展,随着Node.JS的产生,Node.JS可以写服务端的任务了。Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效。Node.js 的包管理器npm,是全球最大的开源库生态系统。基于Electron搭建Web/Desktop应用会更加常见,仅仅使用JavaScript,HTML以及CSS,搭建跨平台桌面应用。

可用性的综述

如今,用户体验变得比以往更重要,响应式网页设计(Reponsive Web Design)也成为了网站必备的特性。RWD响应式网页设计 能让最终用户在不同尺寸的设备上访问网站,包括手机和平板浏览器。有了响应式网页设计取代移动网站,我们便无需为移动用户单独开发额外的网站。特别是当我们需要把焦点放到如何呈现内容时尤为有用。但如果你是在开发Web应用(包含着大量UI交互流程)而不是网站时,响应式网页设计就帮不了你了。记住Web应用与网站是不同的。Twitter的Bootstrap与Zurb的Foundation算是目前最流行的响应式网页设计框架。如果你要针对移动用户开发APP,我会建议使用轻量级的框架比如Yahoo的PureCSS。

应用程序架构的综述

企业中的移动优先策略同样影响到了Web开发架构。当一个组织在开发Web应用与 Web服务时,他们会以自身的移动策略作为主方向调整。且如今,Web API已成为Web应用和移动应用的中心,开发者会在服务器端建立RESTful服务,然后基于RESTful服务为 Web 和移动开发前端应用。Web变得无处不在,不会因为桌面端的衰退而退缩,Web以支持云服务的形式继续发展。

API驱动开发的综述

在移动领域,API(特别是 RESTful API)已成为 Web 应用的关键部分,而服务器端的实现已变成薄薄的一层,只提供数据和安全相关的 API 。这些 RESTful API 并不受限于 Web 应用,移动应用同样可以使用。所以说现代 Web 开发人员编写的服务器端代码同时用于移动应用和Web应用,给予了我们更多的机会。这里的另外一个趋势是移动后端云服务的兴起,如Parse和AzureMobileServices 等的服务(MBaaS)云平台解决方案。这些MBaaS平台可针对多种特定移动后端服务的数据模型提供自动的RESTful API 。我们可以使用MBaaS 服务开发Web应用,因为它们不仅提供RESTful API ,伴随着移动SDK还提供了JavaScript SDK 用于HTML5客户端。未来,我坚信MBaaS服务将广泛用于Web应用和移动应用。

Web技术栈的综述

几年以前,动态类型语言如Ruby、Python和PHP已经吸引了许多创业公司。直到几年前,Ruby on Rails (以下简称ROR)真是Web开发的一场革命。ROR框架这样极其复杂的框架,它由无数顶级高手成年累月的心血堆砌而成,融合了Web开发领域内几乎全部的最佳实践。Ruby语言的优势是可读性非常好,做Web应用系统的代码量小。但是由于Ruby语言自身的缺陷,ROR的性能和内存占用不理想,规模效益不高。Ruby作为动态语言在大团队开发上存在劣势,不能像Java有接口和静态类型检查。近年来Ruby语言呈现出衰退的趋势,Ruby几乎只能做Web开发,其最佳的适用场景正在慢慢被其他的语言取代。

Python做Web方向从来也没有热门过,但是Python做Web也没有衰退,因为用Python的人很多,自然有人就会用自己熟悉的语言Pyhton去做Web方面了。Python流行起来的根本原因是Python在科学计算、计算机视觉、图像处理、运维脚本等领域是非常强大的胶水语言,相关的模块支持非常地多。Python语言做模型非常的快。

总是有人在黑PHP,但是PHP在Web开发领域的地位是无人撼动的。PHP语言本身是不错的,对于web应用一直都是最佳的选择,而且近年来Composer, PSR, PHP7带来了颠覆性的变化。PHP兼具无需编译和热部署这两点,就让人无法拒绝了.再加上PHP弱类型,内置模板引擎和丰富的库函数以及强大的哈希表,决定了PHP的学习/开发/运维成本远远低于Java等其他Web开发语言。首先PHP确实是开发速度极快,为什么?因为弱类型(PHP7有类型声明选择开关,只要引入开关指令declare(strict_type=1)就会强制当前的文件下的程序遵循严格的参数类型,返回值类型),不需要定义返回的类型,加上PHP实际开发过程中喜欢运用它万能的数组来做计算,返回。所以他的动态扩展性非常强,如果返回值结构改变,没关系,直接改数组结构就行(注意,PHP数组太强大,可以当作Map,List来用,底层的实现其实是HashMap)。

Java老牌语言,大数据和Hadoop的首选。JAVA的优点在于成熟,任何技术,任何需求,包括与各种硬件打交道的接口。都有相对应的方案,或者开源项目,拿来可以用,比如POI操作。Hadoop,Spark和Storm是目前最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据处理,Spark常用于离线的快速的大数据处理,而Storm常用于在线的实时的大数据处理。不过Hadoop有成熟的生态圈,而Spark的话虽说处理速度快,但还相对不太稳定。而Java可能要开发过程可能要慢一点,Java面向对象的技巧,设计模式会运用的更多一点。需要定义各类Model来适应你业务的需求。编写风格会有一定的统一要求。强类型在编写的时候会比PHP麻烦,但好处是更安全,因为类型固定,潜在风险较低,还有编译器给你做了一次保障。

许多创业公司已经利用RoR和Python的Web框架开发出各种创新的产品。但如今有趣的是,由于性能和可扩展性的难题,这些应用程序正被其它的Web技术栈重建。在大型应用程序中使用动态类型语言就像在喝加了太多糖的饮料。开始的时候,糖的甜味会比较吸引人,但长期来看就会伤害到应用程序的健康。今年,我们已经看到很多企业采用Node.js尤其是用于构建备受关注的移动应用后端服务。大企业如领英(LinkedIn)和沃尔玛(Walmart)正在使用 Node.js 加强它们的移动后端服务。作为一项新技术,Node.js 真是 2014 年采纳市场的赢家。Node.js 也是移动后端服务(MBaaS)云解决方案的首选技术栈。今年我们也看到许多基于 Node.js 的命令行工具被用于前端开发。Node.js 的崛起与 Ruby 栈的衰落是今年最值得注意的趋势

Dcoker容器技术的发展

在2013年3月,Docker项目正式开源。短短的三年中,Docker已经迅速普及开来,云计算、大数据、互联网等相关IT技术公司纷纷开始拥抱Docker。在硅谷,有200多家Docker相关的创业公司。Google、Microsoft、AWS、IBM等大型技术公司都已经加入Docker生态圈,开始使用Docker,并为Docker社区共享。OpenStack、Hadoop等云计算、大数据框架也开始向Docker迁移。

在国内,从Docker诞生之日起,各大技术公司和极客们就开始紧密关注这项技术。从2014年下半年开始,陆续有公司开始把现有系统迁移到Docker平台。BAT、华为、新浪、京东都有Docker相关产品上线。Docker的普及愈演愈烈,大有掀起第二次云计算革命之势。

通过在实际项目中使用Docker,发现Docker天生就是要解决敏捷开发、持续集成、持续发布、动态迁移、动态伸缩等互联网、云计算、大数据行业普遍存在的问题。通过把产品容器化,加速了开发、测试、发布的流程,产品发布时间从半天减少到47秒。通过镜像提交产品,解决了开发、测试、发布的环境异构性问题,使产品可以平滑地在各个部门之间传递。

Go:2017及未来的技术

最近出现了许多用Go开发的优秀应用,包括Docker和Packer.IO。我预测Go将会在各种不同的社区中产生巨大的吸引力,包括 Java、Ruby、Python和Node.js。Go是静态类型语言却提供了动态类型语言生产力的灵活性。在Go语言中,并发性是核心编程语言的一等公民。类似C和C++,Go编译成原生机器码;而不像Java和.Net,它不需要任何JIT编译。我爱上了Go的简单性、实用的设计和相当好用的包系统。也许它不适合构建传统的Web应用,但绝对适合做提供RESTful服务的HTTP服务器。在未来,你也许还可以用Go开发Android 应用。Go 的优势是它是一种通用编程语言,可以用于任何可能的场景--包括系统编程和大型分布式商业应用。我强烈感受到Go是属于云时代的分布式、并发、并行计算的语言。Go可以在企业中成为下一个Java。

参考文献

[1] http://www.bootcss.com/

[2] https://purecss.io/

[3] https://foundation.zurb.com/

[4] 向阳. Web1.0与Web2.0比较研究[J]. 计算机光盘软件与应用, 2011(3):8-8.

[5] 周珍妮, 陈碧荣. Web3.0——全新的互联网时代[J]. 科技广场, 2008(7):235-237.

[6] 徐璐, 曹三省, 毕雯婧,等. Web2.0技术应用及Web3.0发展趋势[J]. 中国传媒科技, 2008(5):50-52.

[7] 刘林霞, 杨馨. 计算机网络服务器硬件和操作系统的发展趋势分析[J]. 信息与电脑:理论版, 2010(6):86-86.

转载于:https://my.oschina.net/feanlau/blog/1546295

现代Web发展趋势和前沿技术综述相关推荐

  1. 计算机技术前沿知识,计算机前沿技术综述_相关文章专题_写写帮文库

    时间:2019-05-12 12:00:26 作者:admin 计算机科学前沿技术心得 --计科11-1班 于凡 110201124 当代,发展最快而且对人类生活影响最大的学科无疑是计算机科学与信息技 ...

  2. 计算机科学发展有关的事,计算机科学前沿热点及发展趋势 计算机前沿技术论文.doc...

    计算机科学前沿热点及发展趋势 [摘要] 当代,发展最快而且对人类生活影响最大的学科无疑是计算机科学与信息技术了,计算机已经成为了21世纪的一种象征,当代的社会,计算机科学与信息技术的应用已经渗透到社会 ...

  3. 地理信息系统(GIS)的前沿技术综述

    从系统角度看,在未来的几十年内.地理信息将向着数据标准化(interoperable GIS).数据多维化(3D&4D GIS)系统集成化(componentGIS).系统智能化(CybeGI ...

  4. 存储前沿技术和发展趋势【1】

    文章目录 说明 存储的定义 存储技术的发展史 DAS 架构 直连存储(DAS): 内部DAS: 外部DAS: NAS 架构 FC SAN 架构 IP SAN 架构 存储就架构趋势--融合存储 云存储: ...

  5. 陈震学的什么计算机专业,一起来看看陈震学长为我们分享的前沿技术发展趋势及自己的思考吧!...

    原标题:一起来看看陈震学长为我们分享的前沿技术发展趋势及自己的思考吧! 这是 北航士谔书院的第 881篇推送 12月23日,士谔书院邀请了书院特聘导师.速感科技创始人,同时也是北航校友的陈震为同学们带 ...

  6. 万维网Web自动搜索引擎(技术报告)

    万维网Web自动搜索引擎(技术报告) 邓雄(Johnny Deng) 2006.12 网络时代的信息量每8个月翻一番,如今的网页以100亿来计算:网络搜索已成为仅次于电子邮件的第二大网络应用.2005 ...

  7. ChatGPT: 人工智能对话模型的前沿技术与应用探析

    ChatGPT: 人工智能对话模型的前沿技术与应用探析 引言 ChatGPT作为一种人工智能对话模型,在近年来引起了广泛的关注和研究.随着人工智能技术的不断发展,ChatGPT作为一种前沿技术在人机对 ...

  8. 新春特辑 | 前沿技术专题合辑 报告下载

    志在哪里,哪里就有成功:心在哪里,哪里就有风景:爱在哪里,哪里就有感动.在新年来临之际,互联互通社区衷心祝愿您:春节快乐,身体健康,心想事成! 1.2021达摩院十大科技趋势 2.达摩院2020十大科 ...

  9. 知识图谱 | (3) 知识图谱技术综述(下)

    原文地址 文章目录 3.3 知识融合 3.4 知识推理 4. 知识图谱的典型应用 4.1 智能搜索 4.2 深度问答 4.3 社交网络 4.4 垂直行业应用 5. 知识图谱的挑战 5.1 知识获取 5 ...

  10. AutoML前沿技术与实践经验分享 | 免费公开课

    传统机器学习的解决范式可表示为: ML Solution = ML expertise + Computation + Data 新机器学习范式可表示为: New ML Solution = 100x ...

最新文章

  1. linux设置ulimit值永久生效
  2. WebApplication和WebSite有什么区别?我该选择哪个?
  3. 计算机没有autoCAD_挑战在一年内用晚上业余时间学会灵活运用CAD(1)|cad|autocad|图学|计算机|电子电路...
  4. Java 类型和数据库类型怎么实现相互映射?
  5. java扫描指定package注解_java获取包下被指定注解的类
  6. mysql综合查询索引优化_MySQL数据库SQL优化之确定问题使用索引提高查询效率
  7. 全局莫兰指数_空间自相关 | 莫兰指数
  8. xmapp 查询文字内容显示乱码
  9. BootStrap笔记-信息提示框的使用
  10. mysql 结果集 超大_使用MySQL流式传输大型结果集
  11. Go语言获取文件的文件路径、文件名、扩展名
  12. Hadoop Hbase单机配置
  13. 8.docker search
  14. 探讨VSTS联合MS PROJECT协同开发之三:比较篇
  15. 【Unity】入门级Unity安装教程
  16. 网络编程学习笔记之TCP_01(帅帅老师讲堂)
  17. win10系统预加载服务器,等等, 你的win10关闭了这几个服务, 会流畅许多
  18. C# 调试应用提示“无法访问此网站”问题的处理(图文)
  19. 【1.7】docker —— 容器
  20. android 设置画布颜色,android – 如何设置笔触颜色以在画布上绘制矩形?

热门文章

  1. MySQL数据库之分库分表方案
  2. 东京喰种语录(节选)
  3. 数据库所有者 (dbo)
  4. python123期末四题编程题 -无空隙回声输出-文件关键行数-字典翻转输出-《沉默的羔羊》之最多单词
  5. 华罗庚黄金分割优选法
  6. 阿里云存储开通与使用
  7. 远程唤醒、WOL、Magic_Packet【转】
  8. 大唐凌烟阁开国廿四将
  9. 怎么修改背景图片大小的HTML代码,网页背景图片的大小的代码是什么
  10. 时钟周期,机器周期(cpu周期),指令周期,存储周期,总线周期