- 相關(guān)推薦
Java三大框架技術(shù)起源
作為java新手,你可否知道,這些Java三大框架Struts、Hibernate和Spring是怎么來的呢?下面一起來了解三大框架的起源吧!
傳統(tǒng)的Java Web應(yīng)用程序是通過JSP+Servlet+Javabean來實(shí)現(xiàn)的。這樣的模式可以將程序幾個(gè)分為基層,也就是最基本的程序分層,它們中有負(fù)責(zé)前臺(tái)展示的JSP,也有負(fù)責(zé)邏輯控制的Servlet,還有負(fù)責(zé)程序分裝的Javabean?此仆昝赖慕Y(jié)構(gòu)仍然存問題,比如說在JSP頁面中,需要通過符合的使用來嵌入大量的Java代碼,導(dǎo)致頁面結(jié)構(gòu)的混亂,Servlet和Javabean負(fù)責(zé)大量的跳轉(zhuǎn)和運(yùn)算的工作,它們耦合緊密,導(dǎo)致程序復(fù)用率低等問題。
Struts
Struts框架出現(xiàn)就是為了解決這些問題,它是一個(gè)完美的MVC實(shí)現(xiàn),Struts框架有一個(gè)中央控制類( Servlet),在針對(duì)不同業(yè)務(wù)時(shí),我們可以通過一個(gè)Action類來負(fù)責(zé)頁面跳轉(zhuǎn)和后臺(tái)的邏輯運(yùn)算,一個(gè)或者幾個(gè)JSP頁面來負(fù)責(zé)數(shù)據(jù)的輸入、輸出以及顯示,通過一個(gè) Form類來負(fù)責(zé)傳遞Action和JSP中間的數(shù)據(jù)。JSP中也可以使用Struts框架來提供的一組標(biāo)簽,就像我們使用HTML的標(biāo)簽一樣簡(jiǎn)單,但是它可以完成更為復(fù)雜的程序邏輯。從此在JSP頁面中再也不用出現(xiàn)一行包圍的Java代碼了。
但是在Struts的Action里放入大量的運(yùn)算邏輯也會(huì)使得 Action類的復(fù)用度低和導(dǎo)致的邏輯混亂,所以在開發(fā)者習(xí)慣把整個(gè)的Web應(yīng)用程序分為三層,分別是:Struts來負(fù)責(zé)顯示層,由它來調(diào)用業(yè)務(wù)層完成運(yùn)算邏輯,業(yè)務(wù)層再來調(diào)用持久層完成數(shù)據(jù)庫的讀寫。
使用JDBC連接來讀寫數(shù)據(jù)庫,最常見的方法就是打開數(shù)據(jù)庫的連接、使用復(fù)雜的SQL語句來讀寫、關(guān)閉連接,最后獲取的數(shù)據(jù)還得需要轉(zhuǎn)換或封裝后再往外傳,這是一個(gè)非常煩瑣的過程。
Hibernate
這時(shí)候 Hibernate框架出現(xiàn)了,你可以通過創(chuàng)建一系列的持久化類,每個(gè)類的屬性我們都可以簡(jiǎn)單的將其看做是一張數(shù)據(jù)庫便的屬性并與之一一對(duì)應(yīng),同樣也可以實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫的各種表件關(guān)聯(lián)的對(duì)應(yīng)。在我們需要進(jìn)行相關(guān)操作時(shí),就可以不用再關(guān)注數(shù)據(jù)庫表。無需去一行一行的查詢數(shù)據(jù)庫,只要持久化類就可以輕松的完成增刪改查的功能。這也是使我們的軟件開發(fā)可以真正面向?qū)ο,而不是面向混亂的代碼。Hibernate使用比JDBC方式減少了80%的編程量。
現(xiàn)在我們已經(jīng)有三個(gè)層了,但層與層直接是怎樣調(diào)用的呢?如果顯示層的Struts需要調(diào)用一個(gè)業(yè)務(wù)類,就得先new出一個(gè)業(yè)務(wù)類出來,然后再使用;業(yè)務(wù)層需要調(diào)用持久層的類,也得先new出一個(gè)持久層類再用。這種new方式的相互調(diào)用就是軟件開發(fā)中糟糕的設(shè)計(jì)體體現(xiàn)。簡(jiǎn)而言之,就是調(diào)用者依賴被調(diào)用者,它們之間形成了強(qiáng)耦合,如果我想在其他地方復(fù)用某個(gè)類,則這個(gè)類依賴的其他類也需要包含。程序就變得很混亂,每個(gè)類互相依賴互相調(diào)用,復(fù)用度極低。如果一個(gè)類做了修改,則依賴它的很多類都會(huì)受到牽連。 為此,出現(xiàn)Spring框架。
Spring
Spring的作用就是完全解耦類之間的依賴關(guān)系,一個(gè)類如果要依賴什么,那就是一個(gè)接口。至于如何實(shí)現(xiàn)這個(gè)接口,這都不重要了。只要拿到一個(gè)實(shí)現(xiàn)了這個(gè)接口的類,就可以輕松的通過xml配置文件把實(shí)現(xiàn)類注射到調(diào)用接口的那個(gè)類里。所有類之間的這種依賴關(guān)系就完全通過配置文件的方式替代了。所以 Spring框架最核心的就是所謂的依賴注射和控制反轉(zhuǎn)。
現(xiàn)在的結(jié)構(gòu)是,Struts負(fù)責(zé)顯示層,Hibernate負(fù)責(zé)持久層,Spring負(fù)責(zé)中間的業(yè)務(wù)層,這個(gè)結(jié)構(gòu)是目前國內(nèi)最流行的Java Web應(yīng)用程序架構(gòu)了。另外,由于Spring使用的依賴注射以及AOP(面向方面編程),所以它的這種內(nèi)部模式非常優(yōu)秀,以至于Spring自己也實(shí)現(xiàn)了一個(gè)使用依賴注射的MVC框架,叫做Spring MVC,同時(shí)為了很好的處理事物,Spring集成了Hibernate,使事物管理從Hibernate的持久層提升到了業(yè)務(wù)層,使用更加方便和強(qiáng)大。
Struts框架是2000年就開始起步了,到目前已經(jīng)發(fā)展了5年,技術(shù)相當(dāng)成熟,目前全球Java開發(fā)中Struts框架是顯示層技術(shù)中當(dāng)之無愧的王者。它擁有大量的用戶群和很好的開發(fā)團(tuán)隊(duì)。這也是國內(nèi)大部分Java軟件公司對(duì)新進(jìn)員工的基本要求。
其他
Java這個(gè)名詞似乎注定和開源緊密聯(lián)系在一起了,在Java界,每天都有大量的開源技術(shù)出現(xiàn),由于是開放源代碼的,技術(shù)中存在的問題和不足很快就會(huì)被人發(fā)現(xiàn),開源軟件提供者會(huì)很快的修正或擴(kuò)展這些技術(shù),因此版本更新很快,幾個(gè)星期或者幾天就有一個(gè)新版本出來。
當(dāng)我們?cè)诩夹g(shù)線路中選擇了Java,也就選擇了你必須持續(xù)學(xué)習(xí),經(jīng)常關(guān)注最新的技術(shù),了解它們,看是否適合你的需要,然后學(xué)習(xí)使用它們。
你應(yīng)該掌握的Java技術(shù)
Java基礎(chǔ):
◆Java原理和使用,包括基本的語言、語法知識(shí)和API
◆JSP+Servlet,Java Web開發(fā)的基礎(chǔ)
服務(wù)器:
◆WebLogic的原理、使用和配置
◆Tomcat:輕量的 JavaWeb容器,和WebLogic功能類似,使用簡(jiǎn)單、方便、免費(fèi)、開源,但不支持EJB
◆JBoss:類似于Tomcat,功能更強(qiáng),支持EJB
這三種應(yīng)用服務(wù)器至少掌握其中的一種是很必要的。
框架:
◆Struts、Spring、Hibernate
◆Tapestry:這是一個(gè)新的MVC框架,使用組件式開發(fā),是顯示層技術(shù)的發(fā)展趨勢(shì)。
◆Flex和Laszlo:新的顯示層技術(shù),支持富客戶端應(yīng)用,是目前的較前沿的顯示技術(shù)。
◆EJB :EJB的全稱是Enterprise JavaBeans,是Java中的商業(yè)應(yīng)用組件技術(shù)。
Java Web開發(fā)周邊技術(shù):
◆HTML、Javascript、CSS、XML、XSLT,這些是開發(fā)中經(jīng)常使用到的,應(yīng)該熟練掌握。
開發(fā)工具:
◆Dreamweaver、Eclipse或Jbuilder、PL/SQL
數(shù)據(jù)庫:
◆Oracle必須會(huì)用、 SQLServer掌握、MySQL可以在自己學(xué)習(xí)時(shí)使用。DB2那種東西就不要學(xué)了,國內(nèi)太少使用了。
軟件工程:
◆可以理解UML設(shè)計(jì)和使用UML進(jìn)行簡(jiǎn)單設(shè)計(jì)。
【Java三大框架技術(shù)起源】相關(guān)文章:
sun認(rèn)證java程序員須知Java日志框架09-11
Java程序員集合框架面試題及答案10-25
JAVA認(rèn)證開源技術(shù):關(guān)于Java的對(duì)象equals方法06-26
乒乓高手必須具備的技術(shù)框架09-28
JAVA和WAP移動(dòng)學(xué)習(xí)技術(shù)07-28
框架式玻璃幕墻施工技術(shù)方法09-02
象棋的起源08-10
網(wǎng)球的起源09-30
高爾夫的起源09-16
Java與Java web的區(qū)別08-10