瞭解一下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進行網絡異步操做,方法調用倡導異步調用,有本身的模塊化機制。