了解一下Web开发相关的历史,相关技术的演进历程,知其前世此生,很是有助于加深Web开发相关技术的理解和认识。php
下面是对网上几篇相关文章的总结和摘要: java
1. Web开发的发展史 web
对过去的15年来,Web开发从最初的纯HTML到CGI、PHP/JSP/ASP、Ajax、Rails、NodeJS的这个过程进行了简要的介绍。数据库
http://blog.jobbole.com/45169/编程
2. Web开发技术的演变安全
静态页面时代、CGI时代、PHP、J2EE、Web层框架、摒弃EJB运动、Ajax、Ruby on Rails、JSF和CDI(可视化)、异步化的发展趋势。性能优化
http://blog.jobbole.com/45170/服务器
1)静态内容的网站cookie
HTML技术,主要是文本和图片(包括gif动态图片)。网络
特色:简单,只能作信息的展现,没法同用户进行交互。
2)最先的动态网站
主要采用CGI/Perl脚本技术,可以实现内容动态,具有了交互性,服务器可以访问文件系统或数据库。
缺点:伸缩性差(为每一个请求分配一个新的进程)、安全性差(直接使用系统环境变量和文件系统)、脚本组织混乱而且缺乏一种结构化的构造动态应用程序的方式。
3)有了参考模型的动态网站
主要采用PHP、ASP、JSP等技术,在一个比较通用的参考架构下,可以构造出伸缩性良好、安全的Web应用程序。
1994年,Rasmus Lerdorf建立了PHP。
刚刚开始只是一个简单的用Perl语言编写的程序,用来统计他本身网站的访问者。后来又用C语言从新编写,包括能够访问数据库。多年来,PHP通过不断的发展已经成为当前最热门的Web开发语言。现在全世界82%的网站使用PHP,ASP.net是17%,Java是2.9%(数据来源:http://www.csdn.net/article/1970-01-01/2825720)。1995年,正式对外发布了1.0版,目前最新版是PHP 7.1.10(2016年12月1日发布)。
1995年,PHP1就是个快速实用的工具包。
1997年11月,PHP2是个基本完善的程序包。
1998年6月,PHP3有了更好的执行效果和清晰的结构,强大之处在于可扩展性,吸引了全世界大量的开发者加入并提交新模块。
2000年5月,PHP4全新的引擎,性能提高了近10倍。同时,提升跨平台能力,开始支持面向对象(虽然还不完善)。
2004年7月,PHP5采用了第二代的Zend引擎。最大特点是引入面向对象的所有机制,引进了类型提示和异常处理。
PHP6,胎死腹中,是一个失败的专案,虽然作了一些改进,但始终没能发布正式版本,是一个被直接跳过的版本。
2015年11月,PHP 7(PHP NG):性能方面实现了跨越式提高,并引入了一些新特性。参考:PHP7革新与性能优化
更多内容可参考:PHP的历史 http://php.net/manual/zh/history.php.php PHP发展史
1996年,ASP 1.0诞生,简化了Web开发。
原来要写C语言,太难了;有了ASP只须要写写VBScript脚本或者JavaScript脚本便可,并且还有内部组件实现了cookie等高级功能,ADO(ActiveX Data Object)简化了数据库的相关操做。
1998年,微软发布了ASP 2.0。
与ASP 1.0的主要区别在于它的外部组件是能够初始化的,这样,在ASP程序内部的全部组件都有了独立的内存空间,并能够进行事务处理。
2000年,微软发不了ASP 3.0,随着Windows 2000一同附带。
优点在于它使用了COM+,于是其效率会比它前面的版本要好,而且更稳定。
2001年,ASP·NET出现了。
几乎彻底是基于组件和模块化的,Web应用程序的开发人员使用这个开发环境能够实现更加模块化的、功能更强大的应用程序。
Java web的历史待补充。
1997年6月,SUN公司的Pavni Diwanji编写了Servlet 1.0规范。
1999年8月,Servlet 2.2发布,开始成为J2EE的一部分。
当前Servlet最新版是2013年5月发布的3.1, 属于Java EE 7,支持非阻塞I/O和WebSocket。
Servlet 4.0正在开发过程。
参考:https://en.wikipedia.org/wiki/Java_servlet
Java EE的发展历程:https://en.wikipedia.org/wiki/Java_EE_version_history
Java web开发技术的发展(从Servlet、JSP到模型1、模型2、框架、可视化开发):http://blog.csdn.net/javaeeteacher/article/details/6478450
4)Ajax:异步JavaScript和XML
局部更新,响应更快,真正用Web应用取代了Web页面。典型的产品如Google Mail和Google Map。
5)Ruby on Rails:经过约定的规范方式开发Web应用
基于Ruby on Rails 5分钟构建博客的演示彻底征服了全世界的开发者。
第一次将普遍应用于桌面应用的开发模式——MVC,搬到了Web应用开发领域。
6)客户端开发技术的崛起
2007年到2010年的三种开发潮流:
一是智能手机和移动应用;二是很是流行的JavaScript库——jQuery;三是Node.JS发布,经过JavaScript开发高性能的服务端程序!
7)客户端开发技术的规范化
客户端框架如Backbone、Ember、Derby、Meteor、AngularJS等等,简化了客户端的开发,而且也逐步造成了MVC的模式。
8)网络架构异步化分布式的发展趋势
到了这里,能够说上层的各种技术都发展的差很少了,底层的技术又有了新的突破。
Netty是由JBOSS提供的一个java开源框架。
Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 能够确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。
Netty至关简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。
这是一段很是常见的、很官方的介绍。前面都好理解,从“基于NIO”就不知所云了。
NodeJS也是一个异步化的、基于JavaScript的开发框架。
Java社区很快出现了和NodeJs有相同设计思路的项目,Vertx就是其中的优秀表明。它充分借鉴了NodeJs和Erlang/OTP Actor模型的优秀设计,利用分布式消息机制进行对象间通讯,利用Netty进行网络异步操做,方法调用倡导异步调用,有本身的模块化机制。