亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Java Python 和Nodejs在web開發(fā)方面的簡單比較

Riddler / 1822人閱讀

摘要:在做數(shù)據(jù)分析和人工智能方面也有很多可以直接使用的算法庫。各方面都能找到優(yōu)秀的組件。但開發(fā)起來復(fù)雜一些,更適合有一定規(guī)模的團(tuán)隊采用。

對語言之間優(yōu)勢這個問題,可以寫幾本書來具體闡述. 我嘗試簡單地說一點(diǎn)。不見得對,也不可能完整,僅供參考。

互聯(lián)網(wǎng)興起,靜態(tài)頁面不能滿足復(fù)雜的交互需求. 出現(xiàn)了動態(tài)技術(shù).
史前時期動態(tài)Web 開發(fā)多采用CGI 技術(shù)來實(shí)現(xiàn).
CGI 將腳本作為多帶帶的進(jìn)程運(yùn)行, 每個請求都使用環(huán)境變量、標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出來與它 "通信 "。
這是種互對低效的運(yùn)行方式. 出現(xiàn)了類似isapi, ASP 這樣技術(shù)(ASP 1.0 發(fā)布于1996年12月, 作為 IIS 3.0的一部分). 方便多了,有了session管理, 有了內(nèi)置對象.
但也有明顯缺點(diǎn),代碼與頁面混在一起.

接下來提出Servlet標(biāo)準(zhǔn),參考實(shí)現(xiàn)是Tomcat.
Tomcat的作為Servlet 規(guī)范一個開源的參考實(shí)現(xiàn), 最初是Sun公司在1998年11月發(fā)布的. 核心人物是 James Duncan Davidson.
Tomcat 3.0合并了Sun捐贈的Java Web Server代碼, 這個版本實(shí)現(xiàn)了Servlet 2.2和JSP 1.1規(guī)范.
目前由Apache軟件基金維護(hù).

它是一個開放的標(biāo)準(zhǔn),引發(fā)了當(dāng)時的一些開發(fā)熱潮,
產(chǎn)生了大量的中間件,也稱為應(yīng)用服務(wù)器, 如WebSphere, WebLogic, GlassFish, JBoss, Jetty, Resin,金蝶的Apusic. 這里面有的是完整實(shí)現(xiàn)了J2EE標(biāo)準(zhǔn).如WebLogic:
標(biāo)準(zhǔn)具體有,Servlet, JSP, EJB, JDBC, Java Message Service, JTA, XML相關(guān), JAAS 等等.
有的只是一小部分實(shí)現(xiàn),如Tomcat:只有Servlet, JSP, Java EL, JNDI等.
對企業(yè)開發(fā)來說,這樣的標(biāo)準(zhǔn)有諸多的好處,解決了很多需要重復(fù)解決的問題,如消息隊列,分布式事務(wù)等等. 應(yīng)用只需根據(jù)接口開發(fā)就可以了,實(shí)現(xiàn)由應(yīng)用服務(wù)器來完成.
因為復(fù)雜,過重,適合中等以上團(tuán)隊開發(fā).

Tomcat/Servlet的體系之所以這么設(shè)計,基于幾點(diǎn)考慮:

方便擴(kuò)展
遵循標(biāo)準(zhǔn)化定義
保持版本間的兼容性
好處是穩(wěn)定,值得依賴,不會為個別商業(yè)機(jī)構(gòu)左右.
不好的是地方是升級相對慢, 與nodejs社區(qū)的飛速發(fā)展相比, Java顯得沉重而緩慢.
但這未嘗不是好事, 對于開發(fā)人員來說, 這是非常好的長效投資. 保證工作經(jīng)驗的積累是有效的, 而不是忽略業(yè)務(wù)追逐技術(shù)去適應(yīng)迎接不暇的新版本.
Python 2到Python 3的過渡即是斷堐式的. 而Java最早的代碼仍可以跑在今天的虛擬機(jī)上.
Node.js也存在很多版本間的問題, 但因為是腳本,而不是編譯,出錯時不會告訴你是版本的是問題, 而是報告各種奇怪的異常. 當(dāng)然,這是題外話了.

Tomcat 內(nèi)部的體系結(jié)構(gòu)
Tomcat 有非常優(yōu)秀的結(jié)構(gòu)定義
核心部分有:
Catalina - 實(shí)現(xiàn)Servlet API
Coyote - HTTP協(xié)議棧
Jasper - JSP 動態(tài)編譯器及加載器, 負(fù)責(zé)把JSP頁面編譯成Servlet

可以看出以上全部的核心是 Servlet 規(guī)范.

作為互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施,Tomcat歷經(jīng)20年,沒有本質(zhì)上改動, 可見當(dāng)初設(shè)計才的洞見.

可以與其媲美的有估計只有以太網(wǎng)口的設(shè)計, HTTP的設(shè)計, TCP/IP 的設(shè)計,USB接口的設(shè)計.

Tomcat 的配置項與代碼隔離, 個人認(rèn)為這是Tomcat設(shè)計最精良的地方
你可以在不改代碼的前提下,對tomcat各個層面環(huán)節(jié)進(jìn)行配置,從而實(shí)現(xiàn)多種協(xié)議多種特性的支持

與Python和Nodejs的Web Server的比較

都遵循HTTP/1.0 and HTTP/1.1 協(xié)議
但用Java寫的Web 應(yīng)用支持更高層的Servlet 接口, 可以在不同應(yīng)用服務(wù)器中運(yùn)行,不需要對代碼進(jìn)行調(diào)整,
Python和Nodejs都有很多Web Server的實(shí)現(xiàn), 但這些Servers之間顯然沒有更高層次的抽象, 如需要切換,需要做大量改動和測試.
假設(shè)在你Server A 上做開發(fā), 忽然發(fā)現(xiàn)Server B 上有你想的的特性, 你只有大幅改動才行.

Python 下的Web服務(wù)器, 核心標(biāo)準(zhǔn) WSGI

Python 下也有很多Web Server 軟件,如CherryPy WSGI Server, Gunicorn, Tornado, Twisted Web, uWSGI, Waitress WSGI Server等等.

這個服務(wù)器都支持[WSGI]2規(guī)范.
需要指出的是WSGIv1.0.1出現(xiàn)的時間是: 26-Sep-2010, 比Java相應(yīng)規(guī)范晚了十多年. 出來時已經(jīng)是群雄混戰(zhàn),想統(tǒng)一已經(jīng)很難了,
也使得WSGI 是一個相對簡單,容易實(shí)現(xiàn)的規(guī)范, 以此來吸引服務(wù)器開發(fā)者. 在此之前則是 CGI, FastCGI, mod_python三分天下的局面.

Node.js下的Web服務(wù)器:light-server, live-server ,lite-server, http-server
基本以輕量級的靜態(tài)文件服務(wù)器為主。

總結(jié)一下

名稱 Java Python Node.js
典型的WebServer Tomcat Tornado http-server
標(biāo)準(zhǔn) Servlet WSGI 無
服務(wù)器端模板 JSP,Freemarker tornado.template CoffeKup, Swig, Jade
典型 Web框架 Spring MVC Flask, Django Express
數(shù)據(jù)庫相關(guān) JDBC, Hibernate SQLAlchemy Moogoose
多線程與分布式 容易 不清楚 不清楚
日志 Log4j, Slf4j 不清楚 不清楚
遠(yuǎn)程調(diào)試 容易 不清楚 不清楚
結(jié)論:
各有優(yōu)勢,如Nodejs配合前端模板技術(shù)如Vue.js采用前后端分離的json/ajax作為數(shù)據(jù)格式在一些場景下很有吸引力。Python在做數(shù)據(jù)分析和人工智能方面也有很多可以直接使用的算法庫。Java的優(yōu)勢更在于包羅萬象。各方面都能找到優(yōu)秀的組件。但開發(fā)起來復(fù)雜一些,更適合有一定規(guī)模的團(tuán)隊采用。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/69600.html

相關(guān)文章

  • Java Python Nodejsweb發(fā)方面的簡單比較

    摘要:在做數(shù)據(jù)分析和人工智能方面也有很多可以直接使用的算法庫。各方面都能找到優(yōu)秀的組件。但開發(fā)起來復(fù)雜一些,更適合有一定規(guī)模的團(tuán)隊采用。 對語言之間優(yōu)勢這個問題,可以寫幾本書來具體闡述. 我嘗試簡單地說一點(diǎn)。不見得對,也不可能完整,僅供參考。 互聯(lián)網(wǎng)興起,靜態(tài)頁面不能滿足復(fù)雜的交互需求. 出現(xiàn)了動態(tài)技術(shù).史前時期動態(tài)Web 開發(fā)多采用CGI 技術(shù)來實(shí)現(xiàn). CGI 將腳本作為單獨(dú)的進(jìn)程運(yùn)行, ...

    Amio 評論0 收藏0
  • 程序員入門學(xué)習(xí)指南

    摘要:程序員的入門規(guī)劃我該學(xué)習(xí)什么語言這個問題困擾了幾乎所有的程序員,比如應(yīng)用廣好就業(yè),比如入門簡單,和安卓待遇高,和開發(fā)效率高,是萬能語言,和前端缺人才等等個人見解先學(xué)習(xí)難度小,大眾化的編程語言,比如,,,這幾個學(xué)哪一種其實(shí)差不多,入門以后看自 程序員的入門規(guī)劃 1.我該學(xué)習(xí)什么語言? 這個問題困擾了幾乎所有的程序員,比如java應(yīng)用廣好就業(yè),比如php入門簡單,ios和安卓待遇高,rub...

    Kahn 評論0 收藏0
  • 程序員入門學(xué)習(xí)指南

    摘要:程序員的入門規(guī)劃我該學(xué)習(xí)什么語言這個問題困擾了幾乎所有的程序員,比如應(yīng)用廣好就業(yè),比如入門簡單,和安卓待遇高,和開發(fā)效率高,是萬能語言,和前端缺人才等等個人見解先學(xué)習(xí)難度小,大眾化的編程語言,比如,,,這幾個學(xué)哪一種其實(shí)差不多,入門以后看自 程序員的入門規(guī)劃 1.我該學(xué)習(xí)什么語言? 這個問題困擾了幾乎所有的程序員,比如java應(yīng)用廣好就業(yè),比如php入門簡單,ios和安卓待遇高,rub...

    princekin 評論0 收藏1
  • JavaScript,大有前景的編程語言

    摘要:年,保羅格雷厄姆在他的一篇文章中提到,他的公司決定使用一門編程語言。然而,仍未得到與其他語言同等的尊重。被評為年開發(fā)者調(diào)查中最受歡迎的框架。是中最流行的編程語言。也就是說,我認(rèn)為質(zhì)疑是否是一種真正的編程語言的時代已經(jīng)過去。 原文:JavaScript-A First-Class Language At Last作者:Tom Goldenberg譯者:LeviDing聲明:轉(zhuǎn)載請聯(lián)系本人...

    Aklman 評論0 收藏0
  • JavaScript,大有前景的編程語言

    摘要:年,保羅格雷厄姆在他的一篇文章中提到,他的公司決定使用一門編程語言。然而,仍未得到與其他語言同等的尊重。被評為年開發(fā)者調(diào)查中最受歡迎的框架。是中最流行的編程語言。也就是說,我認(rèn)為質(zhì)疑是否是一種真正的編程語言的時代已經(jīng)過去。 原文:JavaScript-A First-Class Language At Last作者:Tom Goldenberg譯者:LeviDing聲明:轉(zhuǎn)載請聯(lián)系本人...

    dayday_up 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<