1. gzyueqian
      13352868059

      好的java培訓(xùn)學(xué)院在哪里?來粵嵌了解學(xué)習(xí)java應(yīng)用吧

      更新時(shí)間: 2018-09-19 11:01:39來源: 學(xué)習(xí)java瀏覽量:5255

          給初學(xué)者之八:java應(yīng)用之框架篇
          沒錯(cuò),我沒敲錯(cuò)!之所以不再聲稱是企業(yè)級(jí)應(yīng)用而稱之為應(yīng)用是因?yàn)橄旅嬉v的東西屬于純民間性質(zhì),是java具體應(yīng)用的上層建筑,可用可不用,沒有人強(qiáng)迫你用

          首先給框架//framework 下一個(gè)定義

          我想讀者你可能聽說過.net framework這個(gè)概念!沒錯(cuò),我們將要說的framework也和這個(gè)framework差不多
          所不同的是.net framework的競(jìng)爭(zhēng)對(duì)象是j2ee那一系列標(biāo)準(zhǔn),而我們將要說到的幾個(gè)框架則應(yīng)用在j2ee的不同層面
          單就單個(gè)框架而言,沒有.net framework管得那么多,但是卻要比它精專多了,而且總量加起來,也遠(yuǎn)比微軟那一套框架要廣泛得多
          回到正題,框架是什么? 
          軟件工程之所以被叫做軟件工程就是因?yàn)橛心敲匆慌擞X得可以用工程學(xué)里面,那些管理Project的方法來管理軟件從開發(fā)到維護(hù)這一系列流程
          那么在建筑工程里面框架是什么? 
          現(xiàn)在建筑多采用鋼筋混凝土結(jié)構(gòu),注意里面一個(gè)很重要的詞匯:鋼筋 
          托福閱讀中曾有一題聽力就是關(guān)于鋼筋結(jié)構(gòu)的誕生,在美國(guó) 
          恩,現(xiàn)代建筑中多在建筑起來之前,先用鋼筋搭建出一個(gè)框架出來,然后往鋼筋中間填入混凝土,從而形成一個(gè)完成的建筑 
          而今天要說到的框架就是這么一個(gè)東西在每一個(gè)軟件中間的實(shí)現(xiàn),框架就是那么一個(gè)通過預(yù)先寫好代碼從而幫我們建立起一個(gè)軟件結(jié)構(gòu)的這么一個(gè)東西
          這里提一下框架與規(guī)范//主要指J2ee規(guī)范也就是官方標(biāo)準(zhǔn)的區(qū)別
          從某種意義上說,J2ee規(guī)范本身就是一個(gè)框架
          無論是web容器也好,還是ejb容器也好,它們都開發(fā)了一部分通用的代碼,并且?guī)椭覀兇罱ㄆ饋砹艘粋€(gè)軟件結(jié)構(gòu),我們要做的就是往里面填入組件
          比如ejb/servlet/jsp等等
          沒錯(cuò),要這么理解也沒錯(cuò),但是為了避免混亂,我們還是嚴(yán)格區(qū)分開來!本文中將要提到的框架如無特別說明,就是指的是非官方標(biāo)準(zhǔn)的框架 
          規(guī)范是規(guī)范,而框架是建立在規(guī)范之上的一種東西??梢哉f是標(biāo)準(zhǔn)的延續(xù),或者說是民間的嘗試,總之是這么一個(gè)非官方的東西
          說到這里順便提一下JCP組織也就是Java Community Process/Java社區(qū),當(dāng)初Sun公司在java發(fā)布之初,為了提倡開源和共項(xiàng)。同時(shí)也出于一個(gè)提出合理的標(biāo)準(zhǔn)的目的,而讓廣大的開發(fā)者參與標(biāo)準(zhǔn)的制定
          而成立了這樣一個(gè)社區(qū),現(xiàn)在還健在,網(wǎng)址是jcp.org 
          每一個(gè)新的規(guī)范發(fā)布之前都會(huì)在這個(gè)社區(qū)廣泛討論,終對(duì)規(guī)范的制定產(chǎn)生巨大的影響。其中就包括企業(yè)級(jí)的參與者,相當(dāng)有名的JBoss以及我國(guó)的金碟公司都是其中的成員
          下面介紹一下幾個(gè)相當(dāng)?shù)目蚣?,必須要指出的是,雖然框架大多開源但并不代表所有的框架都開源,比如.net framework,但是java框架大多數(shù)開源
          言歸正傳 
          Struts 
          表示層框架,名字來源于飛機(jī)的金屬框架 
          可能有讀者會(huì)提問了 
          表示層不是客戶端么? 
          沒錯(cuò),但是語言這東西,眾口爍金,別人都這么說你就不好不這么說了,早表示層說的是客戶端,后來隨著時(shí)間的發(fā)展。人們也把服務(wù)器端直接與客戶端//比如IE打交道的那部分也稱為表示層//JSP+Servlet,那么表示層框架是干什么的呢? 
          早先大規(guī)模應(yīng)用JSP的時(shí)候,人們發(fā)現(xiàn),JSP里面充斥著邏輯代碼與數(shù)據(jù)??勺x性極差,于是人們借用很早很早以前的MVC模式的思想
          把表示層組件分為V-Viewer,也就是JSP
          M-Model模型,一般來說是一個(gè)JavaBean 
          C-Controller控制器,一般來說是一個(gè)Servlet 
          所有人通過JSP和服務(wù)器打交道,發(fā)送請(qǐng)求,Viewer把這個(gè)請(qǐng)求轉(zhuǎn)發(fā)給Controller
          Controller通過調(diào)用一個(gè)Model來處理該請(qǐng)求,然后返回?cái)?shù)據(jù)到Viewer這么一個(gè)過程,從而達(dá)到數(shù)據(jù)與邏輯的剝離,增強(qiáng)代碼可讀性,降低維護(hù)成本
          而幫助人們實(shí)現(xiàn)這一系列東西的就是Struts框架,就是這么一個(gè)東西。Struts的競(jìng)爭(zhēng)對(duì)手主要是產(chǎn)商們極力倡導(dǎo)的JSF也就是Java Server Faces
          但是由于Struts出道時(shí)間早,所以應(yīng)用比較多!JSF則是產(chǎn)商們大力支持,前景看好。對(duì)于這一層來說,在JSP的html代碼中出現(xiàn)的java語句越少越好
          因?yàn)閖ava代碼越少說明頁面處理的業(yè)務(wù)邏輯越少,也越合理!這也是Struts初的目的,記住這話
          Spring 大名鼎鼎的Spring框架
          有人曾說2005年一片叫春之聲,指的就是該框架
          Spring起源于Rod Johnson的《Expert One-on-One J2EE Design and Development》一書
          Rod Johnson認(rèn)為,J2ee里面的那一套//尤其是ejb!太重了,對(duì)于單機(jī)的系統(tǒng)來說,沒有必要使用那么復(fù)雜的東西,于是就開始設(shè)計(jì)并引導(dǎo)Spring小組開發(fā)出這樣一個(gè)構(gòu)架。不能不說他是個(gè)天才,因?yàn)榈牡拇_確不是所有的系統(tǒng)都是跨多服務(wù)器的,沒有必要把一個(gè)簡(jiǎn)單的系統(tǒng)設(shè)計(jì)得那么復(fù)雜//天才的那幾個(gè)共性又體現(xiàn)出來了
          Spring從誕生之日起就是針對(duì)EJB的,力爭(zhēng)在不少應(yīng)用上取代EJB,而它也確實(shí)達(dá)到了這個(gè)目的?,F(xiàn)在包括WebLogic等主流應(yīng)用服務(wù)器還有主流IDE都開始逐漸接受該框架
          并提供相應(yīng)支持 
          提到Spring就不能不說控制反轉(zhuǎn)Ioc//Inversion of Control和依賴注射DI//Dependency Injection 
          什么叫控制反轉(zhuǎn)呢? 
          套用好萊塢的一句名言就是:你呆著別動(dòng),到時(shí)我會(huì)找你。什么意思呢?就好比一個(gè)皇帝和太監(jiān) 
          有皇帝想幸某個(gè)美女,于是跟太監(jiān)說,今夜我要寵幸美女,皇帝往往不會(huì)告訴太監(jiān),今晚幾點(diǎn)會(huì)回宮,會(huì)回哪張龍床,他只會(huì)告訴太監(jiān)他要哪位美女。其它一切都交由太監(jiān)去安排,到了晚上皇帝回宮時(shí),自然會(huì)有美女出現(xiàn)在皇帝的龍床上
          這就是控制反轉(zhuǎn),而把美女送到皇帝的寢宮里面去就是注射,太監(jiān)就是是框架里面的注射控制器類BeanFactory,負(fù)責(zé)找到美女并送到龍床上去。整個(gè)后宮可以看成是Spring框架,美女就是Spring控制下的JavaBean
          而傳統(tǒng)的模式就是一個(gè)饑渴男去找小姐出臺(tái)
          找領(lǐng)班,幫助給介紹一個(gè)云云,于是領(lǐng)班就開始給他張羅。介紹一個(gè)合適的給他,完事后,再把小姐還給領(lǐng)班,下次再來 
          這個(gè)過程中,領(lǐng)班就是查詢上下文Context,領(lǐng)班的一個(gè)職能就是給客戶找到他們所要的小姐
          這就是lookup()方法,領(lǐng)班手中的小姐名錄就是JNDI//Java Naming and Directory Interface、小姐就是EJB,饑渴男是客戶端,青樓是EJB容器
          看到區(qū)別了么?饑渴男去找小姐出臺(tái)很麻煩,不僅得找,用完后還得把小姐給還回去
          而皇帝就輕松了,什么都不用管,交給太監(jiān)去處理,控制權(quán)轉(zhuǎn)移到太監(jiān)手中去了
          而不是皇帝,必要時(shí)候由太監(jiān)給注射進(jìn)去就可以了,看到Spring的美妙了吧,Spring還提供了與多個(gè)主流框架的支持
          可以和其它開源框架集成 
          Hibernate 
          名字取材自O(shè)RM早的一句玩笑話//ORM就是OR-Mapping說用了ORM之后,程序員就可以去冬眠了,而不需要操心那么多事。這里不得不說的是,該框架由于做得太好,以至于被J2ee招安,成為EJB3.0的一部分替代原有EJB2.X里面關(guān)于Entity Bean而成為EJB ORM的工具
          這里解釋一下ORM//OR-Mapping 
          中文名對(duì)象關(guān)系映射 
          什么意思呢?我們知道傳統(tǒng)的數(shù)據(jù)庫(kù)都是關(guān)系型的 
          一條條記錄以表格的形式儲(chǔ)存,而表與表之間充斥著是關(guān)系/關(guān)聯(lián)
          比如說一個(gè)人,名字zhaoce,性別男,年齡23那么數(shù)據(jù)庫(kù)中是這么儲(chǔ)存的姓名性別年齡 zhaoce m  23 某女   f  22,而實(shí)際應(yīng)用服務(wù)器中的實(shí)體都是以對(duì)象的形式存在,一個(gè)個(gè)對(duì)象 

          zhaoce是以這種形式存在的 


          Human human=new Human(); 
          human.setName("zhaoce") 
          human.setSex("m"); 
          human.setAge(23); 

          這樣的,那么我們知道,傳統(tǒng)的JDBC是通過一個(gè)二維字符串將數(shù)據(jù)取出需要我們自己將其包裝成對(duì)象,在存入的時(shí)候,我們還需要將對(duì)象拆開 
          放入sql語句中//Insert into Huamn values('zhaoce','m',23)
          然后執(zhí)行該sql語句
          太麻煩太麻煩,ORM理念的提出改變了這一切,ORM認(rèn)為,這些東西應(yīng)該由框架來做而不是程序員,程序員做他該做的,不要為這種破事分心,還測(cè)試半天 
          于是就出現(xiàn)了Hibernate,JDO,TopLink等等,甚至.net里面也有ADO.net。過去一段時(shí)間是Hibernate和JDO爭(zhēng)風(fēng),現(xiàn)在看來Hibernate逐漸成為主流并被官方接納,成為規(guī)范標(biāo)準(zhǔn)之一,替代掉原來EJB2.X的ORM     EntityBean
          TopLink則是Oracle公司推出和Oracle數(shù)據(jù)庫(kù)結(jié)合的一種ORM
          商業(yè)用軟件,貴且復(fù)雜,不過正在逐漸開放 
          而象表示層一樣,這一種專門面對(duì)數(shù)據(jù)層的代碼也被稱為數(shù)據(jù)持久層,所以數(shù)據(jù)持久層這一概念有時(shí)不僅僅指代數(shù)據(jù)庫(kù) 
          關(guān)于ORM,的境界應(yīng)該是在java代碼中不出現(xiàn)任何一句的sql語句。注意,是不包括sql語句,Hibernate的hql以及ejb的ejb-ql不算在內(nèi)
          至于出現(xiàn)不出現(xiàn)hql/ejb-ql等替代ql,這要視具體情況而定,不過也是不出現(xiàn)!當(dāng)然所說的過分理想的情況往往不現(xiàn)實(shí),總之一句話 
          以sql為代表的ql/*還有hql,ejbql等*/語句在代碼中出現(xiàn)得越少越好。記住這話,現(xiàn)在未必能夠理解,學(xué)了以后就懂了 
          這三個(gè)是目前為常用的框架而目前光已公布的框架就>500 
          還在不停增加中,不可能一一列舉,有興趣的可以去看相應(yīng)文檔要指出的是框架不是應(yīng)用程序,只是一堆組件的有序復(fù)合,應(yīng)用時(shí)不能脫離于應(yīng)用服務(wù)器單獨(dú)存在

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 午夜三级A三级三点在线观看 | 久热中文字字幕在线 | 亚洲午夜福利片 | 黑人巨大亚州宗合在线 | 午夜丰满少妇性开放视频 | 午夜福利精品自拍视频在线看 |