博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[JAVA]web开发,你必须要了解的web后端发展史
阅读量:4120 次
发布时间:2019-05-25

本文共 5458 字,大约阅读时间需要 18 分钟。

没有网页的日子是什么样的?

本篇文章是杂谈兼科普类文章,讲的比较随性,尽量避免讲到技术细节部分,以免诸位睡着*_*!!

  • 早期的web的应用场景不像现在这样广泛,你可以在浏览器上看电影,聊天,浏览新闻,玩游戏办公,看文档,浏览器基本上把非专业领域的活都给干了,现在大有取代c/s的架势,不过取代专业领域的生产和开发工具目前来看依旧没戏,cs且倒不了呢

说到这里我就想提下chrome,一个web浏览器,他的代码竟然还成为笔记本的操作系统,不但卖得不错,还让google已经抛弃掉了平板市场,通过chromebook狙击了一波笔记本市场,真的是难以想象


没有网页的日子是怎样的,这个问题也可以问成:为什么需要网页?

  • 因为其实最早的民用互联网的应用主要是在高校和实验室,能够让研究人员方便沟通,传email啥的,但是问题是email那也是带宽啊,那个东西只能简单沟通,如果我想看文献那怎么办?当时的办法就是:
  • 首先,你需要给大量的大学和研究室问:你们有没有关于xxx的文献?
  • 然后用人家的ftp服务器下载文档,用对应软件打开
  • 你浏览文献的时候肯定有几个词的概念,不懂?好了重复之前的步骤
    这一套下来,大家可想而知为什么科研人员头发少了吧*_*!!
  • 所以可以看到当时浏览文献是一件多麻烦的事,这个痛点就出现了:能够让全球各地的研究人员用个人电脑通过互联网浏览文献和研究文档,还有一个需求就是能够在文档里链接到另一个文档
    网页,或者说html文件就这样诞生了,这一年是1990年,第二年的8月6日,历史上第一个网页正式上线
  • 当然有了新的技术,还需要对应的工具,浏览器就是专门用于浏览静态网页的工具,这种软件大家就都很熟悉了,主要作用就是用户可以使用他就可以通过互联网快速地查找,浏览静态网页,并且很容易地链接到下一个静态网页上

当时的浏览器

在这里插入图片描述
很快静态网页技术发展了起来,静态网页技术也从科研和军方来到了民用,后来静态网页也支持图片显示和表格,不过很快的静态网页很快就满足不了人民群众的日益增长的需求了,因为这玩意改内容太麻烦了,也没人愿意改这么个东西,一般就是当个公告板或者当传单使用,写完基本也就不改了,就这点能力明显是太弱了,所以能够接收用用户数据,处理数据并返回到浏览器的技术很快就诞生了


动态网页的诞生

  • 说动态网页之前还有一个小插曲,那就是gif的引入,gif和png,jpg基本上是现在互联网表情包和沙雕动图的最大传播介质了*_*~~,gif的引入让静态网页实现了冒充了动态网页,还有万恶的Flash
    不过假的还是假,除了给死妈脸的静态网页带来一丝生气外,并不能想现在的网站一样提供任何服务,静态网页提供的服务还是做公告板之类的事情,或者是让你跳到下一个公告板上·····

  • 不过很快的真正让能够改变互联网发展方向的技术来了,那就是CGI。从第一个静态网页上线不到两年的时间,动态网页技术就来到了大众面前,CGI(Common Gateway Interface)公共网关接口本身是一个规范,一个标准,并不是一个具体的程序,产品。
  • 那么CGI这个规范都规范了什么,三个东西:
  • 标准输入
  • 标准输出
  • 环境变量

遵守这个规范编写的程序叫做CGI程序,编写语言不限,servlet就是一个CGI程序。

三个要求的内容大致是这样的:

标准输入是指用户真正传递的数据,比如表单信息,文本框


标准输出:这里的输出是指返回给浏览器的输入信息的处理结果,格式不固定,通常是是html或者纯文本格式

类似于这样:fprintf(stdout, "Content-type: %s\r\n\r\n", MimeType);  //输出响应头,响应头之后要加两个"\r\n"        fprintf(stdout, "CGI小程序\n");        fprintf(stdout, "由C编写的CGI小程序\n");

你可以看到很多html的标签,CGI程序返回给浏览器的就是这样的内容,这其实也是后来淘汰掉CGI的原因


环境变量:这里是指一些请求信息,和用户具体传递的数据无关,作用类似于配置文件,只是传递执行信息,比如ip地址,端口号,get还是post方法

值得一提的是,CGI中还提出了get和post的概念,在环境变量中可以指定这次传输的请求方式,post方式允许用户发送数据,而Get则无法从服务器中获取数据;不过get可以在url中附加数据比如:

http://www.mycorp.com/hello.html?name=hgq$id=1

有些程序员不愿意采用GET方法,因为在他们看来,把动态信息附加在URL的末尾有

违URL的出发点:URL作为一种标准用语,一般是用作网络资源的唯一定位标示。

  • 由此我们可以看出,CGI标准其实是规定了从浏览器发出数据到接受数据的全过程,当然这个只是提出了一个web程序的设计规范,这个规范的落实需要其他个人组织用编程语言来编写成最后可用的程序

  • 关于CGI的详情可以看一看这个帖子:

  • 很快的程序员们就很膈应CGI程序了,因为输出都是把HTML文档一行行的输出,工作量很恐怖,想想现在一个html页面成百上千行,随后可以嵌入部分html的技术很快就出现了

ASP的诞生

ASP是Active Server Page的缩写,意为“活动服务器网页”。ASP是微软公司开发的代替CGI脚本程序的一种应用,诞生于1996年,目的就是取代CGI这种编写模式,只要把需要改写的数据替换到原来的html文件就行了,同时PHP也采用了同样的开发方式,程序员总算从苦海中解脱了


到此web的夏商周的上古时代已经结束,web从静态到动态再到稳定可开发,用了6,7年的时间,从无到有,接下来就是动态网页的春秋战国时代了

selvet与jsp的诞生

java的诞生

  • 要说selvet必然要讲java的诞生,没有互联网大潮,可能也就没有web了,1995年5月,SUN公司发布了Java,这是一个对于后世影响深远的语言,虽然诞生java的团队给自己的语言起了一个类似阿猫阿狗的名字,java语言最开始不叫java,最开始立项的时候其实是叫oak,本身是为了下一代小型智能家用电器而立项,第一次实用化是想给电视机顶盒做一个软件平台,不过失败了,此时是1992年,而随后互联网对于动态页面的技术渴求,oak团队看到了互联网的未来,1994年10月,HotJava和Java平台为公司高层进行演示。1994年,Java 1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。升阳公司的科学指导约翰·盖吉宣告Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。1996年1月,升阳公司成立了Java业务集团,专门开发Java技术 由于商标搜索显示,Oak已被一家显示卡制造商注册。于是同年,Oak被改名为Java。

java在web上的发展

  • java在没有将目标转向互联网之前一直是默默无闻的,上文也提到当时java是想作为一个可移植程序的编程语言而开发的,最开始是为了嵌入式开发,稍微了解嵌入式开发的都知道,嵌入式开发其实就是开发中小型电子设备,最开始是用c和c++进行开发,但是问题是每个产品都要对这个产品的硬件进行一对一开发,换个cpu可能就要重写代码,所以当时的java的想法就是开发一种可移植,跨平台的语言。该语言能够生成运行于不同环境,不同CPU芯片上的代码。java的推出很快受到了it界的热烈欢迎,跨平台的优势给了java极大的优势,也是流行到现在的一个原因之一

java发展第一步:java在前台

  • 有意思的是,java的在web领域第一步不是在后端,而是在前端,当然那个时候还么有前后端的概念。当时java程序开发方向一般分成两部分,应用程序应用小程序。前者不用讲大家都很熟悉,比如在手机上各种java软件和游戏,而另一个就是应用小程序,这是java在web领域的首秀,一般我们称作java applet或者简称applet,而applet的中文意思也是小程序。applet作用就是给页面提供一定的动态功能,比如嵌入一个音乐播放器或者小游戏之类的,只能干些前端简单的交互功能,实现方式就是在html嵌入java代码。

  • 网景浏览器宣布支持java,所以可以运行html文档镶嵌的java代码,从名字上看小程序肯定是比应用程序体量小,只能干些简单的任务。这也是java发布的时候着重宣传的功能

  • java applet其实并没有掀起多大的波澜,一个是adobe家的flash疯狂进攻,把applet打的昏头转向,一个是微软眼红于jsp在后端狙击自家的亲儿子asp,在自己家的ie浏览器中不再支持java插件,最后还有JS的强势崛起,先后把applet和flash拍在了沙滩上。

java发展第二步:java在后台——servlet的诞生

  • serlvet其实是server+applet的拼接词,applet就是小程序的意思,上文提到了,java发布的时候网景公司宣布自己的网景浏览器支持java,而这里的java是小程序也就是applet,浏览器解析html文档时候同时运行java代码片段实现对应的效果,而实现这一效果的缘由是在编写html文档时候已经嵌入的java代码。既然applet是运行在浏览器中的,那么server applet就是运行在服务器中的了,简称也就是serlvet了
  • serlvet的第一个版本发布于1997年,而我们上文提到了asp发布于1996年而且就开发上看asp吊打serlvet,serlvet还是用那种输出html几千行的形式,远远落后于asp可以修改少量代码就可以了。
  • 虽然你跨平台,虽然你系统开销小,虽然你安全,但是程序员不乐意啊,是人些的程序吗?serlvet是嫌自己死的不够快吗?serlvet DNMD!!各种问候声纷至沓来,但是这需要时间,两年后的1998年6月,jsp终于诞生了

java发展第三步:jsp的诞生

  • jsp诞生是爆炸性的,他的诞生迅速席卷了整个软件业,jsp借鉴了asp嵌入html文档的思路,加上本身java拥有“一次编译,到处执行”的强大优势,身出名门的ASP也只有超架之功,毫无还手之力且asp只能在本家的win server运行。当asp升级为asp.net的时,借助强大的.net,asp终于能和jsp一较高下了,但是结果就像我们现在看到的那样,jsp被各种java框架取代,前端也和java say good bye了

  • JSP全名为Java Server Pages,其实就是servlet加入了类似于asp动态修改页面的技术,摇身一变就成了jsp(j就是指java,asp的a是actve)

  • jsp的出现很快就在全球的编程界传开,一个个项目纷纷上了jsp这条大船,大家喜大普奔,办公室里充满了快活的气息。

  • 然而好景不长,大家就笑不起来了,这玩意写的时候是挺爽的,但是一会java一会html是真的难受,维护起来也是脑壳痛,都写一起分不开了,一个页面代码也是上千行,有用没用都堆在一起,大家发现jsp和asp这种前后不分的现状是个大麻烦,不过当时这俩已经是最先进的技术了,不好你也没得选,不过技术上不够,咱们可以在开发思路上弥补不足,这样MVC开发思路就引入了web开发中来

MVC开发思路的引入

  • 其实MVC在70年代的时候就已经提出来了,而最早的web网页的出现要到1990年MVC并不是一个技术,而是一种解决问题的思路,MVC更不是在java时代才提出来的,MVC就是web应用开发中的“如何把大象装进冰箱”,到web应用开发就变成了“如何分离html和服务器程序代码”

  • 可能许多人和我一样接触MVC的时候就发现有些不对劲,model view controller好像和我们真正开发项目的时候对不上,总觉得好像MVC这三个词好像并不够用,那是因为MVC这个东西本身就是C/S开发时候提出来的。

  • jsp,asp时代中出现的前后不分的情况,这是web开发中出现了新问题,需要程序员们找到一个解决这一问题的方法

*前后端不分离在传统软件开发中也出现过,而MVC的思想刚好可以拿试一下,当然B/S开发和C/S开发也是不同的,不能拿来主义,需要根据B/S开发中的实际情况出发,琢磨出一套适用于B/S开发,解决前后不分的思路。结果是成功了,但是MVC的名字也没改,许多教材和教程也就直接说成是web开发中提出来的,web MVC当然也是MVC在web领域的解决思路一种,但是这会给后来的学习者带来很多误解


最后怕大家乱套,我大概整理一下web整体的一个发展过程,从最开始只能发布一些公告的静态网页,到CGI支持修改页面内容成为真正的动态网页,从CGI输出千行html代码,到asp精简所需的代码,java横空出世赶上web发展大潮,诞生了serlvet,由于serlvet有CGI的缺点,sun公司根据asp开发了jsp,再从jsp到mvc思想和各种框架了。

再往后就是现在所了解的各种框架了,大家都比我了解,这里我也就不去提了,有时间我会把后面的MVC具体的发展过程整理出来,敬请期待

转载地址:http://nkppi.baihongyu.com/

你可能感兴趣的文章
机器学习-----K近邻算法
查看>>
HBASE安装和简单测试
查看>>
关于程序员的59条搞笑但却真实无比的编程语录
查看>>
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>
springcloud 连续请求 500
查看>>
vue复用新增和编辑表单
查看>>
Ubuntu 16.04 apt-get更换为国内阿里云源
查看>>