千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)
一、python和java相比寫(xiě)app的區(qū)別

從架構(gòu)模式的角度來(lái)說(shuō),Java中更側(cè)重提到MVC,而在Python中則是MTV。簡(jiǎn)單來(lái)說(shuō),MVC和MTV是類似的,只是歸屬于不同的開(kāi)發(fā)目錄。都是在已有的實(shí)現(xiàn)上解耦合,通過(guò)配置和擴(kuò)展來(lái)實(shí)現(xiàn)復(fù)雜的需求。
最終選擇什么編程語(yǔ)言做web開(kāi)發(fā)必須要考慮哪個(gè)語(yǔ)言更適合后端業(yè)務(wù)流程。如果是個(gè)相對(duì)計(jì)算密集型的、需要多線程的,那么就應(yīng)該慎用Python,或者提前將計(jì)算密集的部分拆出去單獨(dú)組成服務(wù)。如果是業(yè)務(wù)本身比較繁雜、變更比較頻繁的,Python和PHP這樣的腳本語(yǔ)言就比較合適。
當(dāng)然跟程序員的個(gè)人喜好也有很大關(guān)系。比如有些人死都不會(huì)去用Java和PHP,但是也有很多人視Java為信仰,所以開(kāi)發(fā)人員的主觀能動(dòng)性也是很重要的。
Python的好處是開(kāi)發(fā)、部署都很快,變更起來(lái)很容易,代碼量小所以拋棄起來(lái)也很容易,不容易背上歷史負(fù)擔(dān)。如果你是穩(wěn)扎穩(wěn)打?qū)懥藥装賯€(gè)Java類,那你肯定很難下決心把幾百上千行的代碼都拋棄掉。Python的缺點(diǎn)是運(yùn)行起來(lái)相對(duì)Java來(lái)說(shuō)慢得多,性能有瓶頸的時(shí)候Java和Go這樣的編譯語(yǔ)言的優(yōu)勢(shì)就體現(xiàn)出來(lái)了,不過(guò)大部分公司如果不夠快的話,是撐不到性能有瓶頸的時(shí)候的。
按照J(rèn)avaEE的規(guī)范,servlet都需要直接或間接的實(shí)現(xiàn)Servlet接口,即javax.servlet.Servlet,這個(gè)接口里面只定義了5個(gè)方法,但是因?yàn)閟ervlet是協(xié)議無(wú)關(guān)的,要直接實(shí)現(xiàn)還是很困難的,所以,曾經(jīng)的sun給除了實(shí)現(xiàn)Servlet接口的類,是javax.servlet.GenericServlet類。而到了Python棧,情況會(huì)略有一些變化。簡(jiǎn)單來(lái)說(shuō),如果不使用任何web框架,我們可以完全使用socket的方式來(lái)實(shí)現(xiàn),這也就是Python web應(yīng)用的本質(zhì)了。
Python的web開(kāi)發(fā)使得我們更專注于生成HTML文檔。因?yàn)槲覀儾幌M佑|到TCP連接、HTTP原始請(qǐng)求和響應(yīng)格式,所以需要一個(gè)統(tǒng)一的接口讓我們專心用Python編寫(xiě)Web業(yè)務(wù),這個(gè)接口就是WSGI,感覺(jué)和servlet有異曲同工之妙。和Java中servlet中service()不同的是,WSGI接口定義非常簡(jiǎn)單,只要求Web開(kāi)發(fā)者實(shí)現(xiàn)一個(gè)函數(shù),就可以響應(yīng)HTTP請(qǐng)求。
延伸閱讀:
二、Dao層(持久層、數(shù)據(jù)訪問(wèn)層)
功能:只負(fù)責(zé)與數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行交互,dao層是在Mybatis框架下通過(guò)@MyBatisDao連接后臺(tái)代碼與數(shù)據(jù)庫(kù)的。@Repository用于標(biāo)注數(shù)據(jù)訪問(wèn)組件Dao層。
DAO層首先會(huì)創(chuàng)建DAO接口,然后會(huì)在配置文件中定義該接口的實(shí)現(xiàn)類,接著就可以在模塊中就可以調(diào)用DAO 的接口進(jìn)行數(shù)據(jù)業(yè)務(wù)的而處理。
Dao層用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的持久化(把內(nèi)存中的數(shù)據(jù)永久保存到硬盤(pán)中)。
個(gè)人理解:Dao層用于定義方法接口,然后在service層和serviceimpl層實(shí)現(xiàn)接口的方法,從而達(dá)到操作數(shù)據(jù)庫(kù)的目的。對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)持久化操作,方法語(yǔ)句主要是針對(duì)數(shù)據(jù)庫(kù)的,主要實(shí)現(xiàn)一些增刪改查操作,在Mybatis中的方法主要與xx.xml內(nèi)相互一一映射。
相關(guān)推薦