摘要:在做數據分析和人工智能方面也有很多可以直接使用的算法庫。各方面都能找到優秀的組件。但開發起來復雜一些,更適合有一定規模的團隊采用。
對語言之間優勢這個問題,可以寫幾本書來具體闡述. 我嘗試簡單地說一點。不見得對,也不可能完整,僅供參考。
互聯網興起,靜態頁面不能滿足復雜的交互需求. 出現了動態技術.
史前時期動態Web 開發多采用CGI 技術來實現.
CGI 將腳本作為多帶帶的進程運行, 每個請求都使用環境變量、標準輸入和標準輸出來與它 "通信 "。
這是種互對低效的運行方式. 出現了類似isapi, ASP 這樣技術(ASP 1.0 發布于1996年12月, 作為 IIS 3.0的一部分). 方便多了,有了session管理, 有了內置對象.
但也有明顯缺點,代碼與頁面混在一起.
接下來提出Servlet標準,參考實現是Tomcat.
Tomcat的作為Servlet 規范一個開源的參考實現, 最初是Sun公司在1998年11月發布的. 核心人物是 James Duncan Davidson.
Tomcat 3.0合并了Sun捐贈的Java Web Server代碼, 這個版本實現了Servlet 2.2和JSP 1.1規范.
目前由Apache軟件基金維護.
它是一個開放的標準,引發了當時的一些開發熱潮,
產生了大量的中間件,也稱為應用服務器, 如WebSphere, WebLogic, GlassFish, JBoss, Jetty, Resin,金蝶的Apusic. 這里面有的是完整實現了J2EE標準.如WebLogic:
標準具體有,Servlet, JSP, EJB, JDBC, Java Message Service, JTA, XML相關, JAAS 等等.
有的只是一小部分實現,如Tomcat:只有Servlet, JSP, Java EL, JNDI等.
對企業開發來說,這樣的標準有諸多的好處,解決了很多需要重復解決的問題,如消息隊列,分布式事務等等. 應用只需根據接口開發就可以了,實現由應用服務器來完成.
因為復雜,過重,適合中等以上團隊開發.
Tomcat/Servlet的體系之所以這么設計,基于幾點考慮:
方便擴展
遵循標準化定義
保持版本間的兼容性
好處是穩定,值得依賴,不會為個別商業機構左右.
不好的是地方是升級相對慢, 與nodejs社區的飛速發展相比, Java顯得沉重而緩慢.
但這未嘗不是好事, 對于開發人員來說, 這是非常好的長效投資. 保證工作經驗的積累是有效的, 而不是忽略業務追逐技術去適應迎接不暇的新版本.
Python 2到Python 3的過渡即是斷堐式的. 而Java最早的代碼仍可以跑在今天的虛擬機上.
Node.js也存在很多版本間的問題, 但因為是腳本,而不是編譯,出錯時不會告訴你是版本的是問題, 而是報告各種奇怪的異常. 當然,這是題外話了.
Tomcat 內部的體系結構
Tomcat 有非常優秀的結構定義
核心部分有:
Catalina - 實現Servlet API
Coyote - HTTP協議棧
Jasper - JSP 動態編譯器及加載器, 負責把JSP頁面編譯成Servlet
可以看出以上全部的核心是 Servlet 規范.
作為互聯網的基礎設施,Tomcat歷經20年,沒有本質上改動, 可見當初設計才的洞見.
可以與其媲美的有估計只有以太網口的設計, HTTP的設計, TCP/IP 的設計,USB接口的設計.
Tomcat 的配置項與代碼隔離, 個人認為這是Tomcat設計最精良的地方
你可以在不改代碼的前提下,對tomcat各個層面環節進行配置,從而實現多種協議多種特性的支持
與Python和Nodejs的Web Server的比較
都遵循HTTP/1.0 and HTTP/1.1 協議
但用Java寫的Web 應用支持更高層的Servlet 接口, 可以在不同應用服務器中運行,不需要對代碼進行調整,
Python和Nodejs都有很多Web Server的實現, 但這些Servers之間顯然沒有更高層次的抽象, 如需要切換,需要做大量改動和測試.
假設在你Server A 上做開發, 忽然發現Server B 上有你想的的特性, 你只有大幅改動才行.
Python 下的Web服務器, 核心標準 WSGI
Python 下也有很多Web Server 軟件,如CherryPy WSGI Server, Gunicorn, Tornado, Twisted Web, uWSGI, Waitress WSGI Server等等.
這個服務器都支持[WSGI]2規范.
需要指出的是WSGIv1.0.1出現的時間是: 26-Sep-2010, 比Java相應規范晚了十多年. 出來時已經是群雄混戰,想統一已經很難了,
也使得WSGI 是一個相對簡單,容易實現的規范, 以此來吸引服務器開發者. 在此之前則是 CGI, FastCGI, mod_python三分天下的局面.
Node.js下的Web服務器:light-server, live-server ,lite-server, http-server
基本以輕量級的靜態文件服務器為主。
總結一下
名稱 Java Python Node.js
典型的WebServer Tomcat Tornado http-server
標準 Servlet WSGI 無
服務器端模板 JSP,Freemarker tornado.template CoffeKup, Swig, Jade
典型 Web框架 Spring MVC Flask, Django Express
數據庫相關 JDBC, Hibernate SQLAlchemy Moogoose
多線程與分布式 容易 不清楚 不清楚
日志 Log4j, Slf4j 不清楚 不清楚
遠程調試 容易 不清楚 不清楚
結論:
各有優勢,如Nodejs配合前端模板技術如Vue.js采用前后端分離的json/ajax作為數據格式在一些場景下很有吸引力。Python在做數據分析和人工智能方面也有很多可以直接使用的算法庫。Java的優勢更在于包羅萬象。各方面都能找到優秀的組件。但開發起來復雜一些,更適合有一定規模的團隊采用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41802.html
摘要:在做數據分析和人工智能方面也有很多可以直接使用的算法庫。各方面都能找到優秀的組件。但開發起來復雜一些,更適合有一定規模的團隊采用。 對語言之間優勢這個問題,可以寫幾本書來具體闡述. 我嘗試簡單地說一點。不見得對,也不可能完整,僅供參考。 互聯網興起,靜態頁面不能滿足復雜的交互需求. 出現了動態技術.史前時期動態Web 開發多采用CGI 技術來實現. CGI 將腳本作為單獨的進程運行, ...
摘要:年,保羅格雷厄姆在他的一篇文章中提到,他的公司決定使用一門編程語言。然而,仍未得到與其他語言同等的尊重。被評為年開發者調查中最受歡迎的框架。是中最流行的編程語言。也就是說,我認為質疑是否是一種真正的編程語言的時代已經過去。 原文:JavaScript-A First-Class Language At Last作者:Tom Goldenberg譯者:LeviDing聲明:轉載請聯系本人...
摘要:年,保羅格雷厄姆在他的一篇文章中提到,他的公司決定使用一門編程語言。然而,仍未得到與其他語言同等的尊重。被評為年開發者調查中最受歡迎的框架。是中最流行的編程語言。也就是說,我認為質疑是否是一種真正的編程語言的時代已經過去。 原文:JavaScript-A First-Class Language At Last作者:Tom Goldenberg譯者:LeviDing聲明:轉載請聯系本人...
閱讀 2470·2023-04-25 21:41
閱讀 1647·2021-09-22 15:17
閱讀 1921·2021-09-22 10:02
閱讀 2433·2021-09-10 11:21
閱讀 2569·2019-08-30 15:53
閱讀 996·2019-08-30 15:44
閱讀 946·2019-08-30 13:46
閱讀 1125·2019-08-29 18:36