第一篇:Java程序員學(xué)習(xí)Flex和BlazeDS七大理由
Java程序員學(xué)習(xí)Flex和BlazeDS七大理由
本文列述了7個(gè)Java程序員應(yīng)當(dāng)學(xué)習(xí)Flex和BlazeDS的理由,討論了為什么Flex結(jié)合BlazeDS是開發(fā)RIA的最佳組合之一。無(wú)論是高度交互的網(wǎng)站還是以Java為后端的企業(yè)應(yīng)用,這項(xiàng)組合都是最佳選擇之一。更重要的是,這項(xiàng)組合能同時(shí)為開發(fā)員和企
業(yè)帶來(lái)高回報(bào)(ROI)。
在闡述Java程序員應(yīng)
當(dāng)學(xué)習(xí)BlazeDS的7
條理由時(shí),我以一個(gè)假
想的蘇打分派系統(tǒng)來(lái)
展示如何讓已有的Java程序轉(zhuǎn)變?yōu)镽IA
應(yīng)用。通過(guò)這個(gè)例子,我同時(shí)還會(huì)講解到
BlazeDS在已有Java
應(yīng)用或新建Java應(yīng)用
中的多種不同用法。
開源
Flex軟件開發(fā)工具箱(SDK)的核心是個(gè)開源框架,專門用來(lái)開發(fā)、維護(hù)那些在不同瀏覽器、不同操作系統(tǒng)下界面都相同的RIA應(yīng)用。Flex發(fā)布采用的是Mozilla公共許可證(MozillaPublicLicense)。編譯后的Flex應(yīng)用在AdobeFlash平臺(tái)下運(yùn)行。
BlazeDS是連接Flex和Java的索橋,是項(xiàng)針對(duì)遠(yuǎn)程調(diào)用和消息傳遞的開源技術(shù)。在Java應(yīng)用服務(wù)器上,它以servlet的形式存在,因此可以在任何標(biāo)準(zhǔn)Java網(wǎng)絡(luò)應(yīng)用中運(yùn)用它。BlazeDS以LGPL(LesserGNUPublicLicense)公共許可證書發(fā)布。在發(fā)布BlazeDS的同時(shí),Adobe還公布了AMF(ActionScriptMessageFormat)規(guī)格說(shuō)明,BlazeDS、Java和Flex客戶端間以這種簡(jiǎn)潔的二進(jìn)制格式實(shí)現(xiàn)通信。完善的社區(qū)支持
Flex社區(qū)非?;钴S,社區(qū)貢獻(xiàn)了大量項(xiàng)目。Flex.org,這個(gè)配以社區(qū)新聞的Adobe站點(diǎn)幾乎每天都有新的社區(qū)貢獻(xiàn);Yahoo!上的Flex用戶組的成員也已經(jīng)超過(guò)了11000。
再比如GoogleCode上的Flexlib項(xiàng)目,已經(jīng)提交了大量的開源UI組件。Swiz和Mate項(xiàng)目貢獻(xiàn)了優(yōu)化事件處理的框架;還有GorillaLogic貢獻(xiàn)了自動(dòng)化UI測(cè)試的FlexMonkeym項(xiàng)目。
帶來(lái)廣闊的就業(yè)前景
據(jù)Adobe的Flex“傳道士”——JamesWard看來(lái),F(xiàn)lex高級(jí)開發(fā)員的市場(chǎng)需求非常大,學(xué)習(xí)Flex能讓你擁有極具市場(chǎng)競(jìng)爭(zhēng)力的開發(fā)技能。
更高的業(yè)務(wù)效益回報(bào)
總體上,開發(fā)企業(yè)web應(yīng)用不是個(gè)輕松的活,這基本上是眾所周知的事實(shí)。Flex和BlazeDS提供的不僅僅是功能強(qiáng)大的開發(fā)工具,而且開發(fā)技術(shù)本身相對(duì)也非常簡(jiǎn)單。開發(fā)效率可以得到大幅度的提升,產(chǎn)品因此可以很快推向市場(chǎng)。Flex和Flash帶來(lái)的用戶體驗(yàn)也相對(duì)更有魅力,對(duì)增加流量、提高用戶轉(zhuǎn)化率
(conversionrate)很有幫助。
很經(jīng)典的一個(gè)例子是Borders連鎖書店。他們最近發(fā)布了帶有“魔法書架”的新網(wǎng)站,這個(gè)網(wǎng)站采用Flash接口來(lái)模擬書籍借閱的過(guò)程。Borders發(fā)現(xiàn)這一模擬借閱非常明顯地提到了用戶轉(zhuǎn)換率:“借助這個(gè)Flash驅(qū)動(dòng)的接口,用戶可以瀏覽書籍、DVD和CD的封面,用戶轉(zhuǎn)換率比其他沒(méi)有此項(xiàng)功能的網(wǎng)站高出62%”。Flex是第一個(gè)專門為創(chuàng)建UI而設(shè)計(jì)的語(yǔ)言
大部分語(yǔ)言都不是在第一時(shí)間設(shè)計(jì)其對(duì)UI的支持。Java中Swing包的實(shí)現(xiàn)剛好是個(gè)很好的證明。也就是這個(gè)原因,很多像捆綁數(shù)據(jù)這樣的簡(jiǎn)單動(dòng)作在Swing當(dāng)中的實(shí)現(xiàn)就非常痛苦。用Swing最大的問(wèn)題在于,要想提高開發(fā)效率就必須要對(duì)其API了如指掌。
Flex剛好相反,它是專門為創(chuàng)建webUI而設(shè)計(jì)的。正如BruceEckel所說(shuō),F(xiàn)lex是第一個(gè)針對(duì)UI開發(fā)的領(lǐng)域特定語(yǔ)言(DSL)。用Flex構(gòu)建UI比其它諸如JSP、JSF、Swing等技術(shù)簡(jiǎn)便得多。語(yǔ)言本身糅合了數(shù)據(jù)綁定、事件處理、控件布局以及其它一些UI常用開發(fā)技巧,就算對(duì)語(yǔ)言沒(méi)有深刻的理解也不會(huì)影響開發(fā)效率。
編程風(fēng)格近似于Java
你可以繼續(xù)使用現(xiàn)有的Java開發(fā)工具來(lái)開發(fā)Flex應(yīng)用。當(dāng)然也可以采用SDK中攜帶的免費(fèi)命令行工具,AdobeFlexBuilder(一個(gè)Eclipse插件),或最近的IntelliJIDEA8。
Flex提供的是一個(gè)有狀態(tài)環(huán)境,在這個(gè)環(huán)境中,數(shù)據(jù)從客戶端加載。這種編程模式更像是開發(fā)桌面客戶端而非HTML編程,這種風(fēng)格對(duì)于用過(guò)JavaSwing編程的開發(fā)員來(lái)說(shuō)應(yīng)該是相當(dāng)熟悉。
Flex是MXML(類似XML的UI標(biāo)記語(yǔ)言)和AdobeActionScript(面向?qū)ο蟮慕馕稣Z(yǔ)言)的結(jié)合體。鑒于這種結(jié)合方式,F(xiàn)lex編程與Java非常相似,因?yàn)閮烧哂玫亩际鞘熘拿嫦驅(qū)ο蟮母拍睢?/p>
最理想的開發(fā)環(huán)境是把Flex應(yīng)用創(chuàng)建在web部署文件夾下。這樣一來(lái),每次更新應(yīng)用之后都不需要重新部署,只要在瀏覽器下刷新一下就可以了。用Flex和BlazeDS開發(fā)后,開發(fā)效率絕對(duì)比之前有很大的提升。
BlazeDS可以在任何Java應(yīng)用服務(wù)器上運(yùn)行
BlazeDS目前已發(fā)布了多個(gè)版本,其中的turnkey版本還包含了為BlazeDS配置的ApacheTomcat。本文中,我用的是二進(jìn)制發(fā)布版本,其中含有一個(gè)WAR用來(lái)展示如何把應(yīng)用部署到各種應(yīng)用服務(wù)器上去。不用這個(gè)WAR的話,你也可以從中提取JAR文件放到自己的項(xiàng)目中去。關(guān)于安裝BlazeDS的各種選項(xiàng)內(nèi)容,可以參見BlazeDS的wiki。
這里舉一個(gè)簡(jiǎn)單的例子,比方說(shuō)要在已有的一個(gè)簡(jiǎn)單的蘇打調(diào)配系統(tǒng)中應(yīng)用BlazeDS。你只要把JAR文件放到項(xiàng)目文件夾下,然后就可以在應(yīng)用里直接用BlazeDS,可以部署到能夠部署應(yīng)用的任何地方。
參考資料
第二篇:Java程序員學(xué)習(xí)Flex和BlazeDS的十三個(gè)理由
Java程序員學(xué)習(xí)Flex和BlazeDS的十三個(gè)理由
閱讀次數(shù): 335次 發(fā)布時(shí)間: 2009-05-20 15:24:33發(fā)布人: 沙曉蘭
來(lái)源: infoq
本文列述了13個(gè)Java程序員應(yīng)當(dāng)學(xué)習(xí)Flex和BlazeDS的理由,討論了為什么Flex結(jié)合BlazeDS是開發(fā)RIA的最佳組合之一。無(wú)論是高度交互的網(wǎng)站還是以Java為后端的企業(yè)應(yīng)用,這項(xiàng)組合都是最佳選擇之一。更重要的是,這項(xiàng)組合能同時(shí)為開發(fā)員和企業(yè)帶來(lái)高回報(bào)(ROI)。
在闡述Java程序員應(yīng)當(dāng)學(xué)習(xí)BlazeDS的13條理由時(shí),我以一個(gè)假想的蘇打分派系統(tǒng)來(lái)展示如何讓已有的Java程序轉(zhuǎn)變?yōu)镽IA應(yīng)用。通過(guò)這個(gè)例子,我同時(shí)還會(huì)講解到BlazeDS在已有Java應(yīng)用或新建Java應(yīng)用中的多種不同用法。
理由一:開源
Flex軟件開發(fā)工具箱(SDK)的核心是個(gè)開源框架,專門用來(lái)開發(fā)、維護(hù)那些在不同瀏覽器、不同操作系統(tǒng)下界面都相同的RIA應(yīng)用。Flex發(fā)布采用的是Mozilla公共許可證(Mozilla Public License)。編譯后的Flex應(yīng)用在Adobe Flash平臺(tái)下運(yùn)行。
BlazeDS是連接Flex和Java的索橋,是項(xiàng)針對(duì)遠(yuǎn)程調(diào)用和消息傳遞的開源技術(shù)。在Java應(yīng)用服務(wù)器上,它以servlet的形式存在,因此可以在任何標(biāo)準(zhǔn)Java網(wǎng)絡(luò)應(yīng)用中運(yùn)用它。BlazeDS以LGPL(Lesser GNU Public License)公共許可證書發(fā)布。在發(fā)布BlazeDS的同時(shí),Adobe還公布了AMF(ActionScript Message Format)規(guī)格說(shuō)明,BlazeDS、Java和Flex客戶端間以這種簡(jiǎn)潔的二進(jìn)制格式實(shí)現(xiàn)通信。理由二:完善的社區(qū)支持
Flex社區(qū)非?;钴S,社區(qū)貢獻(xiàn)了大量項(xiàng)目。Flex.org,這個(gè)配以社區(qū)新聞的Adobe站點(diǎn)幾乎每天都有新的社區(qū)貢獻(xiàn);Yahoo!上的Flex用戶組的成員也已經(jīng)超過(guò)了11000。
再比如Google Code上的Flexlib項(xiàng)目,已經(jīng)提交了大量的開源UI組件。Swiz和Mate項(xiàng)目貢獻(xiàn)了優(yōu)化事件處理的框架;還有Gorilla Logic貢獻(xiàn)了自動(dòng)化UI測(cè)試的Flex Monkeym項(xiàng)目。理由三:帶來(lái)廣闊的就業(yè)前景
據(jù)Adobe的Flex“傳道士”——James Ward看來(lái),F(xiàn)lex高級(jí)開發(fā)員的市場(chǎng)需求非常大,學(xué)習(xí)Flex能讓你擁有極具市場(chǎng)競(jìng)爭(zhēng)力的開發(fā)技能。
理由四:更高的業(yè)務(wù)效益回報(bào)
總體上,開發(fā)企業(yè)web應(yīng)用不是個(gè)輕松的活,這基本上是眾所周知的事實(shí)。Flex和BlazeDS提供的不僅僅是功能強(qiáng)大的開發(fā)工具,而且開發(fā)技術(shù)本身相對(duì)也非常簡(jiǎn)單。開發(fā)效率可以得到大幅度的提升,產(chǎn)品因此可以很快推向市場(chǎng)。Flex和Flash帶來(lái)的用戶體驗(yàn)也相對(duì)更有魅力,對(duì)增加流量、提高用戶轉(zhuǎn)化率(conversion rate)很有幫助。
很經(jīng)典的一個(gè)例子是Borders連鎖書店。他們最近發(fā)布了帶有“魔法書架”的新網(wǎng)站,這個(gè)網(wǎng)站采用Flash接口來(lái)模擬書籍借閱的過(guò)程。Borders 發(fā)現(xiàn)這一模擬借閱非常明顯地提到了用戶轉(zhuǎn)換率:“借助這個(gè)Flash驅(qū)動(dòng)的接口,用戶可以瀏覽書籍、DVD和CD的封面,用戶轉(zhuǎn)換率比其他沒(méi)有此項(xiàng)功能的網(wǎng)站高出62%”。
理由五:Flex是第一個(gè)專門為創(chuàng)建UI而設(shè)計(jì)的語(yǔ)言
大部分語(yǔ)言都不是在第一時(shí)間設(shè)計(jì)其對(duì)UI的支持。Java中Swing包的實(shí)現(xiàn)剛好是個(gè)很好的證明。也就是這個(gè)原因,很多像捆綁數(shù)據(jù)這樣的簡(jiǎn)單動(dòng)作在Swing當(dāng)中的實(shí)現(xiàn)就非常痛苦。用 Swing最大的問(wèn)題在于,要想提高開發(fā)效率就必須要對(duì)其API了如指掌。
Flex剛好相反,它是專門為創(chuàng)建web UI而設(shè)計(jì)的。正如Bruce Eckel所說(shuō),F(xiàn)lex是第一個(gè)針對(duì)UI開發(fā)的領(lǐng)域特定語(yǔ)言(DSL)。用Flex構(gòu)建UI比其它諸如JSP、JSF、Swing等技術(shù)簡(jiǎn)便得多。語(yǔ)言本身糅合了數(shù)據(jù)綁定、事件處理、控件布局以及其它一些UI常用開發(fā)技巧,就算對(duì)語(yǔ)言沒(méi)有深刻的理解也不會(huì)影響開發(fā)效率。
理由六:編程風(fēng)格近似于Java
你可以繼續(xù)使用現(xiàn)有的Java開發(fā)工具來(lái)開發(fā)Flex應(yīng)用。當(dāng)然也可以采用SDK中攜帶的免費(fèi)命令行工具,Adobe Flex Builder(一個(gè)Eclipse插件),或最近的IntelliJ IDEA 8。
Flex提供的是一個(gè)有狀態(tài)環(huán)境,在這個(gè)環(huán)境中,數(shù)據(jù)從客戶端加載。這種編程模式更像是開發(fā)桌面客戶端而非HTML編程,這種風(fēng)格對(duì)于用過(guò)Java Swing編程的開發(fā)員來(lái)說(shuō)應(yīng)該是相當(dāng)熟悉。
Flex是MXML(類似XML的UI標(biāo)記語(yǔ)言)和Adobe ActionScript(面向?qū)ο蟮慕馕稣Z(yǔ)言)的結(jié)合體。鑒于這種結(jié)合方式,F(xiàn)lex編程與Java非常相似,因?yàn)閮烧哂玫亩际鞘熘拿嫦驅(qū)ο蟮母拍睢?/p>
最理想的開發(fā)環(huán)境是把Flex應(yīng)用創(chuàng)建在web部署文件夾下。這樣一來(lái),每次更新應(yīng)用之后都不需要重新部署,只要在瀏覽器下刷新一下就可以了。用Flex和BlazeDS開發(fā)后,開發(fā)效率絕對(duì)比之前有很大的提升。
理由七:BlazeDS可以在任何Java應(yīng)用服務(wù)器上運(yùn)行
BlazeDS目前已發(fā)布了多個(gè)版本,其中的turnkey版本還包含了為BlazeDS配置的Apache Tomcat。本文中,我用的是二進(jìn)制發(fā)布版本,其中含有一個(gè)WAR用來(lái)展示如何把應(yīng)用部署到各種應(yīng)用服務(wù)器上去。不用這個(gè)WAR的話,你也可以從中提取 JAR文件放到自己的項(xiàng)目中去。關(guān)于安裝BlazeDS的各種選項(xiàng)內(nèi)容,可以參見BlazeDS的wiki。
這里舉一個(gè)簡(jiǎn)單的例子,比方說(shuō)要在已有的一個(gè)簡(jiǎn)單的蘇打調(diào)配系統(tǒng)中應(yīng)用BlazeDS。你只要把JAR文件放到項(xiàng)目文件夾下,然后就可以在應(yīng)用里直接用BlazeDS,可以部署到能夠部署應(yīng)用的任何地方。
在項(xiàng)目中添加BlazeDS,只需要完成下面兩個(gè)步驟:
解壓縮BlazeDS WAR文件的內(nèi)容:jar xvf blazeds.war。
把JAR文件都拷貝到項(xiàng)目的lib文件夾下:cp-R WEB-INF/lib /sodaSample。
理由八:可以在已有Java應(yīng)用中運(yùn)用
比方說(shuō)這個(gè)簡(jiǎn)單的蘇打調(diào)配系統(tǒng),假設(shè)你想要擴(kuò)展這個(gè)已開發(fā)好的服務(wù),讓其它Flex應(yīng)用可以遠(yuǎn)程調(diào)用。在現(xiàn)成的應(yīng)用中配置BlazeDS的基本步驟有:
修改WEB-INF/flex文件夾下的BlazeDS配置文件
在該應(yīng)用對(duì)應(yīng)的web.xml文件里定義MessageBrokerServlet和session監(jiān)聽器
配置好BlazeDS之后,再把蘇打調(diào)配服務(wù)添加到BlazeDS遠(yuǎn)程配置文件里,F(xiàn)lex客戶就能遠(yuǎn)程調(diào)用了。這個(gè)過(guò)程通過(guò)在配置文件里定義一個(gè)目的地(destination)、一個(gè)或多個(gè)信道(channel)來(lái)傳輸數(shù)據(jù)?;镜腁MF信道定義在services.xml文件里。下面這段配置在 remoting-config.xml里定義了目的地
(destination):1
2
3
4
通過(guò)在遠(yuǎn)程調(diào)用配置文件里定義端點(diǎn)(endpoint),F(xiàn)lex客戶端就可以調(diào)用任何一個(gè)基本的Java服務(wù)。要是想把Java數(shù)據(jù)模型也傳送到Flex客戶端的話,只要在ActionScript類中定義好兩者間的映射:1 [Bindable][RemoteClass(alias=“com.gorillalogic.sodaSample.SodaModel”)]
這段代碼告訴Flex,在遠(yuǎn)程調(diào)用的服務(wù)返回SodaModel的時(shí)候,把它映射到Flex的SodaModel。本例
中的Flex客戶端顯示的就是如何調(diào)用這個(gè)Java服務(wù)。調(diào)用返回一個(gè)已經(jīng)填寫好預(yù)定信息的SodaModel:1 public function callSodaService():void {
2var sodaType:String = type.text;
3var sodaCount:int = parseInt(cnt.text);
4var flag:Boolean = preOpen.selected;
5remoteObject.getSoda(sodaType, sodaCount, flag);}
7private function resultHandler(event:ResultEvent):void {var sodaModel:SodaModel = event.result as SodaModel;}
Flex返回的結(jié)果是通用的result變量,可以直接映射到你的SodaModel。這里我就不深入討論怎么實(shí)現(xiàn)映射了,但其中值得提到的是要在編譯配置里聲明services-config.xml路徑,像這樣:
-locale en_US-services=/nsource/sodaSample/web/WEB-INF/flex/services-config.xml-context-root /
如果不添加這個(gè)路徑的話,你的Flex客戶端就沒(méi)發(fā)找到Java服務(wù)。同樣的方式,你還能把一個(gè)對(duì)象從客戶端傳遞回服務(wù)器端。比如,你可以把一個(gè)空的soda model發(fā)回服務(wù)器(審校注:原文這里寫的是客戶端,根據(jù)上下文判斷這里應(yīng)該是服務(wù)器端)。
理由九:可以通過(guò)Java來(lái)擴(kuò)展和修改BlazeDS
假如你想添加特殊的日志來(lái)記錄蘇打調(diào)配服務(wù)被調(diào)用的情況,那么你可以擴(kuò)展標(biāo)準(zhǔn)的Java適配器來(lái)添加日志功能。
首先,添加一個(gè)繼承了JavaAdapter的Java類:1 import flex.messaging.services.remoting.adapters.JavaAdapter.3public class TimingJavaAdapter extends JavaAdapter {
其次,重載invoke()方法: 1public Object invoke(Message message){
3RemotingMessage remotingMessage =(RemotingMessage)message;
5String operation = remotingMessage.getOperation();
7String destination = remotingMessage.getDestination();
9Logger.info(“calling ” + operation + “ on destination ” + destination);
11Object data = super.invoke(message);
13return data;
15}
這個(gè)方法中,你可以看到調(diào)用之后的操作和調(diào)用的目的地(destination)。這種方法也能用來(lái)處理其它一些問(wèn)題,比如記錄向服務(wù)器發(fā)送調(diào)用需要多長(zhǎng)時(shí)間。
理由十:HTML和JSP也能調(diào)用BlazeDS
從HTML和JSP也能調(diào)用BlazeDS,這種調(diào)用有幾種不同的實(shí)現(xiàn)方式,比如通過(guò)Browser Manager或fflashVarsf來(lái)實(shí)現(xiàn)。Flex應(yīng)用能夠讀取由HTML頁(yè)面設(shè)置的fflashVarsf。
比方說(shuō)你想要通過(guò)HTML頁(yè)面來(lái)發(fā)送你的用戶名和準(zhǔn)備預(yù)定的蘇打類型,你可以在HTML頁(yè)面這樣設(shè)置flashVars:1
2
3
4
然后,在Flex應(yīng)用中,你可以通過(guò)讀取應(yīng)用參數(shù)來(lái)獲取這些變量:1 var username:String;
3if(Application.application.parameters.hasOwnProperty(“username”)){
5username = Application.application.parameters.username;
7}
理由十一:Flex和BlazeDS的數(shù)據(jù)傳輸性能遠(yuǎn)勝于其它Ajax解決方案
目前使用的遠(yuǎn)程過(guò)程調(diào)用(RPC)都默認(rèn)選擇AMF二進(jìn)制協(xié)議。AMF是個(gè)開放的標(biāo)準(zhǔn),而且相當(dāng)快。James Ward曾舉例比較過(guò)多種遠(yuǎn)程調(diào)用解決方案。盡管其它Ajax技術(shù)——比如Dojo——已經(jīng)能夠快速處理幾百行的數(shù)據(jù),但是用Flex和BlazeDS的話可以輕松搞定成千上萬(wàn)行。(請(qǐng)參考James Ward's census,可以了解下各種不同的RIA數(shù)據(jù)加載技術(shù)的測(cè)評(píng)。)
理由十二:Java客戶端能夠直接調(diào)用BlazeDS
最新發(fā)布的BlazeDS當(dāng)中含有一個(gè)Java的AMF類,通過(guò)這個(gè)類,你可以在Java客戶端直接調(diào)用BlazeDS服務(wù)器。對(duì)于單元測(cè)試和加載測(cè)試來(lái)說(shuō),BlazeDS的這種調(diào)用方式非常實(shí)用。
理由十三:Spring下也能用
Adobe和Spring互相聯(lián)手,嘗試將雙方項(xiàng)目集成起來(lái)。他們發(fā)布的第一個(gè)Spring–BlazeDS集成版本就向大家展示了他們的良苦用心。Spring Bean能夠以遠(yuǎn)程服務(wù)的方式被調(diào)用,因此可以清除很多重復(fù)的配置文件。更多這方面的相關(guān)信息,可以參考該項(xiàng)目的主頁(yè)。
結(jié)論
開源的BlazeDS創(chuàng)建在Java基礎(chǔ)上,無(wú)論是對(duì)新的還是已有的Java服務(wù)器項(xiàng)目來(lái)說(shuō)都是個(gè)很好的選擇。Flex、BlazeDS技術(shù)能夠提供高性能的遠(yuǎn)程通信,支持Flex和Java間的對(duì)象映射,因此是RIA開發(fā)的理想選擇。Flex和BlazeDS的開發(fā)新手,如果曾經(jīng)是Java開發(fā)員的話,會(huì)發(fā)現(xiàn)整個(gè)開發(fā)過(guò)程效率非常高,而且很容易掌握。
Flex加BlazeDS還是開發(fā)大型Java企業(yè)應(yīng)用的理想選擇。我們組開發(fā)的上個(gè)項(xiàng)目中,應(yīng)用涉及到50多個(gè)不同的界面,而且服務(wù)器和客戶端之間需要規(guī)律性地互傳幾千行的代碼。這類應(yīng)用幾乎沒(méi)法通過(guò)傳統(tǒng)的Ajax技術(shù)來(lái)實(shí)現(xiàn)。但是在引入了Flex和BlazeDS之后,我們?cè)谀陜?nèi)就發(fā)布了第一個(gè)版本??矗@就是這對(duì)動(dòng)態(tài)組合為你的應(yīng)用開發(fā)項(xiàng)目帶來(lái)的過(guò)人之處。
第三篇:Java 程序員學(xué)習(xí)路線圖
第一階段:Java核心部分
JavaSE
Java核心語(yǔ)法、Java核心API、面向?qū)ο蟪绦蛟O(shè)計(jì)、Java容器類(集合)、GUI 用戶界面編程、I/O體系結(jié)構(gòu)、多線程并發(fā)模型、網(wǎng)絡(luò)編程、數(shù)據(jù)結(jié)構(gòu).掌握J(rèn)ava核心語(yǔ)法與面向?qū)ο笏枷?,能熟練運(yùn)用常用設(shè)計(jì)模式與編程技巧完成桌面應(yīng)用或網(wǎng)絡(luò)通信類程序的開發(fā).140
Java5.0新特性
Autoboxing/unboxing(自動(dòng)裝包/拆包)、Enums(枚舉)、Varargs(可變參數(shù))、Static Implements(靜態(tài)導(dǎo)入)、for each(增強(qiáng))循環(huán)、Generic(泛型)程序設(shè)計(jì)、Annotation(注釋)無(wú)侵入式程序設(shè)計(jì)等
掌握全新java設(shè)計(jì)思想, 把握未來(lái)java技術(shù)發(fā)展趨勢(shì).16
Java高級(jí)技術(shù)
Java反射(Reflect)與動(dòng)態(tài)代理(Dynamic Proxy)
深入研究Java語(yǔ)言高級(jí)技術(shù),設(shè)計(jì)更加靈活、擴(kuò)展性更強(qiáng)的動(dòng)態(tài)程序.Java開發(fā)IDE
各種Java常用開發(fā)工具(如:Eclipse、NetBean等)的使用
掌握J(rèn)ava開發(fā)IDE的使用與代碼調(diào)試技巧
軟件測(cè)試
黑盒、白盒測(cè)試.Java測(cè)試框架Junit.理解測(cè)試的重要性.學(xué)習(xí)使用Juni進(jìn)行單元測(cè)試、參數(shù)化測(cè)試、測(cè)試套件的開發(fā)和測(cè)試運(yùn)行器的使用...............第二階段: 數(shù)據(jù)庫(kù)編程
Oracle/SQL語(yǔ)言
以O(shè)racle為平臺(tái),介紹Oracle數(shù)據(jù)庫(kù)的安裝、Oracle體系結(jié)構(gòu)、物理組件、權(quán)限分配、數(shù)據(jù)管理、分析各種關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)的常見問(wèn)題,深入講解數(shù)據(jù)庫(kù)設(shè)計(jì)范式.全面講解各類SQL語(yǔ)句的使用和優(yōu)化策略.深入學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)對(duì)象:index(索引)、view(視圖)、sequence(序列)、tirgger(觸發(fā)器)、comment(注釋).理解Oracle數(shù)據(jù)庫(kù)體系結(jié)構(gòu),掌握Oracle數(shù)據(jù)庫(kù)基本操作,數(shù)據(jù)庫(kù)設(shè)計(jì),開發(fā)和管理知識(shí),熟練掌握SQL和Oracle對(duì)象使用.PL/SQL
PL/SQL語(yǔ)法,作用.使用游標(biāo)、存儲(chǔ)過(guò)程、函數(shù)、觸發(fā)器解決數(shù)據(jù)庫(kù)性能問(wèn)題.掌握PL/SQL的使用,能夠使用存儲(chǔ)過(guò)程開發(fā)高效的數(shù)據(jù)處理系統(tǒng),解決數(shù)據(jù)庫(kù)性能瓶頸并
實(shí)現(xiàn)數(shù)據(jù)優(yōu)化.MySql
以MySql為平臺(tái),介紹MySql數(shù)據(jù)庫(kù)的安裝、權(quán)限分配、數(shù)據(jù)管理.數(shù)據(jù)庫(kù)使用.掌握MySql數(shù)據(jù)庫(kù)的使用.JDBC
使用Java操作數(shù)據(jù)庫(kù),包括:數(shù)據(jù)庫(kù)連接、結(jié)果集處理、存儲(chǔ)過(guò)程調(diào)用、元數(shù)據(jù)、大數(shù)據(jù)類型處理、事務(wù)管理,批更新,可滾動(dòng)、可更新的結(jié)果集,SQL3.0新特性,連接池技術(shù),數(shù)據(jù)庫(kù)應(yīng)用架構(gòu).熟練掌握J(rèn)ava數(shù)據(jù)庫(kù)編程技巧,能使用高級(jí)API、DAO編程模式編寫高性能的數(shù)據(jù)持久層應(yīng)用....................第三階段: Web應(yīng)用
XML
XML的概念與作用、基本語(yǔ)法、驗(yàn)證、XML模式定義(DTD、Schema)、XML解析(SAX、DOM)、Jdom和Dom4j、xpath、XSL.掌握XML使用及XML文檔的處理技術(shù).使用XML進(jìn)行信息配置、數(shù)據(jù)存儲(chǔ)以及數(shù)據(jù)交換.Html
介紹Web原理.Web頁(yè)面開發(fā)的基本過(guò)程,超文本標(biāo)記語(yǔ)言(HTML)基本標(biāo)簽的使用,CSS 層疊式樣式表
掌握HTML基本標(biāo)簽的使用,能利用CSS優(yōu)化頁(yè)面設(shè)計(jì)的方法
JavaScript
JavaScript 腳本語(yǔ)言基本語(yǔ)法,常用函數(shù),JavaScript高級(jí)DOM編程及頁(yè)面組件控制掌握基于對(duì)象的JavaScript程序設(shè)計(jì),能通過(guò)W3C DOM模型完成動(dòng)態(tài)頁(yè)面腳本開發(fā)
Web容器之Tomcat
Tomcat的下載、安裝、啟動(dòng)分析、體系結(jié)構(gòu)、基本配置、應(yīng)用程序部署、管理和性能調(diào)優(yōu).掌握使用Tomcat的使用.Java Web編程Servlets
HTTP協(xié)議詳解,Servlet核心對(duì)象操作,Servlet生命周期,Session與Cookie的應(yīng)用場(chǎng)景,過(guò)濾器與監(jiān)聽器.分層結(jié)構(gòu).全面掌握Servlet 2.5 API的使用,能夠獨(dú)立分析設(shè)計(jì)基于N層體系結(jié)構(gòu)的Web 應(yīng)用,熟練使用各種Java EE應(yīng)用服務(wù)器
Java Web編程JSP
JSP介紹、創(chuàng)建、部署JSP程序,JSP的三個(gè)指令、六個(gè)動(dòng)作和九個(gè)內(nèi)置對(duì)象.JSP中異常處理,自定義標(biāo)簽,EL和JSTL
掌握J(rèn)SP2.0規(guī)范技術(shù),掌握J(rèn)SP進(jìn)行動(dòng)態(tài)頁(yè)面開發(fā)的專業(yè)技術(shù),能結(jié)合Servlet完成B/S應(yīng)用的設(shè)計(jì)與開發(fā)工作
...............第四階段: 流行框架技術(shù)
J2EE容器之JBoss
JBoss的下載、安裝、啟動(dòng)分析、體系結(jié)構(gòu)、基本配置、應(yīng)用程序部署、管理和性能調(diào)優(yōu).掌握使用JBoss的使用.Struts
MVC設(shè)計(jì)思想,Strust1的體系架構(gòu)、控制器組件、視圖組件、框架的擴(kuò)展、國(guó)際化、驗(yàn)證框架、常用標(biāo)簽庫(kù)等.理解MVC模式,掌握基于struts1的java EE解決方案
學(xué)習(xí)Struts1和WebWork結(jié)合而成的Struts2.包括:Struts2的無(wú)侵入設(shè)計(jì),控制器組件、視圖組件、動(dòng)態(tài)方法調(diào)用、包、攔截器、annotaction的支持、國(guó)際化、驗(yàn)證框架、常用標(biāo)簽等.深入學(xué)習(xí)Struts2,完成從Struts1到Struts2的Java Web應(yīng)用的升級(jí).Hibernate
學(xué)習(xí)領(lǐng)域建模思想與O/R Mapping,各種對(duì)象關(guān)系映射、實(shí)體狀態(tài)、繼承關(guān)系、組件映射、查詢緩存與二級(jí)緩存配置、事務(wù)鎖機(jī)制與性能調(diào)優(yōu).能以領(lǐng)域建模思想完成持久化層的設(shè)計(jì),使用Hibernate完成持久化層的開發(fā)工作.40
AJAX
全面講解AJAX應(yīng)用的設(shè)計(jì)與開發(fā)方式,內(nèi)容包括: XMLHttpRequest對(duì)象操作、W3C DOM模型操作、jQuery與DWR快速開發(fā)Ajax.能通過(guò)AJAX開源框架實(shí)現(xiàn)Web 2.0應(yīng)用中的異步通訊.掌握DWR的開發(fā)原理,并熟練使用DWR簡(jiǎn)化Ajax的開發(fā)
SVN/CVS及編程規(guī)范
掌握SVN/CVS的配置和使用;軟件編程規(guī)范
SVN/CVS的配置和使用;軟件編程規(guī)范
Spring
學(xué)習(xí)最新Spring2.0技術(shù).包括:IOC、AOP,使用Spring的ORM支持完成DAO層的開發(fā),事務(wù)層管理,Springde MVC框架,使用Spring與EJB3、Struts1(Struts2)、Hibernate等流行框架進(jìn)行整合.通過(guò)Spring完成多層架構(gòu)應(yīng)用的設(shè)計(jì)與開發(fā)工作,掌握面向接口編程的重要性.通過(guò)Spring去簡(jiǎn)化企業(yè)開發(fā).第五階段: JavaEE企業(yè)應(yīng)用
Linux
學(xué)習(xí)Linux的安裝和基本操作,通過(guò)SSH2訪問(wèn)Linux,在Linux安裝JDK,安裝Web服務(wù)器、安裝數(shù)據(jù)庫(kù)服務(wù)器,安裝和部署Java應(yīng)用程序。
掌握Linux的基本操作,掌握在Linux發(fā)表基于Java的Web應(yīng)用程序。
OOAD
學(xué)習(xí)面向?qū)ο蟮姆治龊驮O(shè)計(jì)
掌握面向?qū)ο蟮姆治龊驮O(shè)計(jì)。
Java設(shè)計(jì)模式
學(xué)習(xí)Java經(jīng)典設(shè)計(jì)模式。包括單例模式、命令模式、工廠模式、攔截器模式等。學(xué)習(xí)經(jīng)典的軟件設(shè)計(jì)思想,能夠?qū)懗鲆子诰S護(hù)和更容易擴(kuò)展性的代碼。
8J2EE容器之WebLogic
Weblogic的下載、安裝、啟動(dòng)分析、體系結(jié)構(gòu)(Domain、Cluster、Machine、Server、Administrative Server、Managed Server、Node Manager)、基本配置、應(yīng)用程序部署、管理和性能調(diào)優(yōu).集群的概念和配置.掌握使用WebLogic的使用.JAVA EE/EJB
高級(jí)編程
創(chuàng)建基于JAVA EE5.0規(guī)范的EJB中間件學(xué)習(xí)將EJB融入分布式企業(yè)級(jí)應(yīng)用程序的編程技術(shù),學(xué)習(xí)Session Beans,Entity Beans,Message-Driven Beans,JTA/JTS,JAAS,JNDI,RMI等技術(shù)同時(shí)講解最新EJB3.0技術(shù)規(guī)范。
掌握基于EJB3.0規(guī)范的企業(yè)應(yīng)用架構(gòu)編程接口及訪問(wèn)EJB技術(shù)實(shí)現(xiàn),掌握開發(fā)和運(yùn)行基于 JAVA EE 應(yīng)用程序所遇到的常見問(wèn)題,包括安全性,伸縮性和負(fù)載平衡管理等。
Web Services
了解Web Services技術(shù),使用JAX-RPC和JAXWS開發(fā)Web Services項(xiàng)目,SOA系統(tǒng)的設(shè)計(jì)與開發(fā),流行的XFire實(shí)現(xiàn)Web Services.能使用Web Service技術(shù)完成SOA系統(tǒng)的設(shè)計(jì)與開發(fā)和使用XFire完成企業(yè)應(yīng)用.
第四篇:java程序員
如何迅速成為Java高手[Tomjava原創(chuàng)]
很多網(wǎng)友問(wèn)我學(xué)習(xí)Java有沒(méi)有什么捷徑,我說(shuō)“無(wú)他,唯手熟爾”。但是我卻很愿意將自己學(xué)習(xí)的一些經(jīng)驗(yàn)寫出來(lái),以便后來(lái)者少走彎路,幫助別人是最大的快樂(lè)嘛!
要想學(xué)好Java,首先要知道Java的大致分類。我們知道,自從Sun推出Java以來(lái),就力圖使之無(wú)所不包,所以Java發(fā)展到現(xiàn)在,按應(yīng)用來(lái)分主要分為三大塊:J2SE,J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用軟件的編程;J2ME主要應(yīng)用于嵌入是系統(tǒng)開發(fā),如手機(jī)和PDA的編程;J2EE是Java2的企業(yè)版,主要用于分布式的網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。J2SE開發(fā)桌面應(yīng)用軟件比起VC,VB,DEPHI這些傳統(tǒng)開發(fā)語(yǔ)言來(lái)說(shuō),優(yōu)勢(shì)好象并不明顯。J2ME對(duì)于初學(xué)者來(lái)說(shuō),好象又有點(diǎn)深?yuàn)W,而且一般開發(fā)者很難有開發(fā)環(huán)境。所以現(xiàn)在應(yīng)用最廣泛又最好學(xué)的就是J2EE了。J2EE又包括許多組件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要學(xué)習(xí)起來(lái)可不是一兩天的事。
那么又該如何學(xué)習(xí)J2EE呢?當(dāng)然Java語(yǔ)法得先看一看的,I/O包,Util包,Lang包你都熟悉了嗎?然后再?gòu)腏SP學(xué)起。如果你學(xué)過(guò)HTML,那么事情要好辦的多,如果沒(méi)有,那你快去補(bǔ)一補(bǔ)HTML基礎(chǔ)吧。其實(shí)JSP中的Java語(yǔ)法也不多,它更象一個(gè)腳本語(yǔ)言,有點(diǎn)象ASP。然后你就該學(xué)一學(xué)Servlet了。Servlet就是服務(wù)器端小程序,他負(fù)責(zé)生成發(fā)送給客戶端的HTML文件。JSP在執(zhí)行時(shí),也是先轉(zhuǎn)換成Servlet再運(yùn)行的。雖說(shuō)JSP理論上可以完全取代Servlet,這也是SUN推出JSP的本意,可是Servlet用來(lái)控制流程跳轉(zhuǎn)還是挺方便的,也令程序更清晰。接下來(lái)你應(yīng)該學(xué)習(xí)一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代碼的混亂方式了,這種方式跟ASP又有什么區(qū)別呢?還好,SUN提供了Javabean可以把你的JSP中的Java代碼封裝起來(lái),便于調(diào)用也便于重用。接著就是EJB了,EJB就是Enterprise JavaBean,看名字好象它是Javabean,可是它和Javabean還是有區(qū)別的。它是一個(gè)體系結(jié)構(gòu),你可以搭建更安全、更穩(wěn)定的企業(yè)應(yīng)用。它的大量代碼已由中間件(也就是我們常聽到的Weblogic,Websphere這些J2EE服務(wù)器)完成了,所以我們要做的程序代碼量很少,大部分工作都在設(shè)計(jì)和配置中間件上。至于JDBC,就不用我多說(shuō)了,你如果用java編過(guò)存取數(shù)據(jù)庫(kù)的程序,就應(yīng)該很熟悉。還有,如果你要用Java編發(fā)送電子郵件的程序,你就得看看Javamail了。
好了,對(duì)Java和J2EE有了一些基本概念之后,你就應(yīng)該編一些程序了,千萬(wàn)不要紙上談兵哦。最好找一些有實(shí)例且?guī)Ч獗P的書來(lái)看,這樣看到好的程序就可以直接Ctrl+C再Ctrl+V,也不用勞您老大架再親自把它再輸一遍吧,再說(shuō)直接復(fù)制還不用怕出錯(cuò),何樂(lè)而不為呢!還有就是要經(jīng)常上一些好的Java編程文章,有好的文章要Cut下來(lái),有問(wèn)題盡管問(wèn),只要問(wèn)題不是太傻,一般高手都會(huì)回答你的。下面介紹幾個(gè)好的Java方面的編程網(wǎng)站:
CSDN論壇 http:///那里Java資料比較全;
java.com.cnhttp://.cn/看這域名就知道有多牛,注冊(cè)用戶快接近一萬(wàn)了,同時(shí)在線人數(shù)也在一千左右,人氣很旺的;
IBM的開發(fā)者網(wǎng)絡(luò)http://IBM永遠(yuǎn)的藍(lán)色巨人;
那么我書也看了,程序也做了,別人問(wèn)我的問(wèn)題我都能解決了,是不是就成為高手了呢?當(dāng)然沒(méi)那么簡(jiǎn)單,這只是萬(wàn)里長(zhǎng)征走完了第一步。不信?那你出去接一個(gè)項(xiàng)目,你知道怎么下手嗎,你知道怎么設(shè)計(jì)嗎,你知道怎么組織人員進(jìn)行開發(fā)嗎?你現(xiàn)在腦子里除了一些散亂的代碼之外,可能再?zèng)]有別的東西了吧!你現(xiàn)在最缺的是實(shí)際的工作經(jīng)驗(yàn),而不是書本上那些
憑空想出來(lái)的程序。所以你快去找一份Java的編程工作來(lái)做吧(如果是在校學(xué)生可以去做兼職?。趯?shí)踐中提高自己,那才是最快的。不過(guò)你得祈禱在公司里碰到一個(gè)高手,而且他還愿意不厭其煩地教你,這樣好象有點(diǎn)難哦!
還有一個(gè)辦法就是讀開放源碼的程序了。我們知道開放源碼大都出自高手,他們?cè)O(shè)計(jì)合理,考慮周到,再加上有廣大的程序員參與,代碼的價(jià)值自然是字字珠嘰,鏗鏘有力(對(duì)不起,偶最近《金裝四大才子》看多了)。學(xué)Java必讀的兩個(gè)開源程序就是Jive和Pet Store.。Jive是國(guó)外一個(gè)非常著名的BBS程序,完全開放源碼。論壇的設(shè)計(jì)采用了很多先進(jìn)的技術(shù),如Cache、用戶認(rèn)證、Filter、XML等,而且論壇完全屏蔽了對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),可以很輕易的在不同數(shù)據(jù)庫(kù)中移植。論壇還有方便的安裝和管理程序,這是我們平時(shí)編程時(shí)容易忽略的一部份(中國(guó)程序員一般只注重編程的技術(shù)含量,卻完全不考慮用戶的感受,這就是我們與國(guó)外軟件的差距所在)。Jive的資料在很多網(wǎng)站上都有,大家可以找來(lái)研究一下。相信你讀完代碼后,會(huì)有脫胎換骨的感覺。遺憾的是Jive從2.5以后就不再無(wú)條件的開放源代碼,同時(shí)有l(wèi)icence限制。不過(guò)幸好還有中國(guó)一流的Java程序員關(guān)注它,外國(guó)人不開源了,中國(guó)人就不能開源嗎?這里向大家推薦一個(gè)漢化的Jive版本—J道。Jive(J道版)是由中國(guó)Java界大名鼎鼎的banq在Jive 2.1版本基礎(chǔ)上改編而成, 全中文,增加了一些實(shí)用功能,如貼圖,用戶頭像和用戶資料查詢等,而且有一個(gè)開發(fā)團(tuán)隊(duì)在不斷升級(jí)。你可以訪問(wèn)banq的網(wǎng)站http:///去下載,或到同濟(jì)技術(shù)論壇的服務(wù)器上ftp://nro.shtdu.edu.cn去下,安裝上有什么問(wèn)題,可以到論壇上去提問(wèn)。Pet Store.(寵物店)是SUN公司為了演示其J2EE編程規(guī)范而推出的開放源碼的程序,應(yīng)該很具有權(quán)威性,想學(xué)J2EE和EJB的朋友不要錯(cuò)過(guò)了。
你一定會(huì)高興地說(shuō),哈哈,原來(lái)成為Java高手就這么簡(jiǎn)單啊!記得Tomjava也曾碰到過(guò)一個(gè)項(xiàng)目經(jīng)理,號(hào)稱Java很簡(jiǎn)單,只要三個(gè)月就可以學(xué)會(huì)。其實(shí)說(shuō)這種話的人就如當(dāng)年小日本號(hào)稱“三個(gè)月拿下中國(guó)”一樣大言不慚。不是Tomjava潑你冷水,你現(xiàn)在只是學(xué)到了Java的骨架,卻還沒(méi)有學(xué)到Java的精髓。接下來(lái)你得研究設(shè)計(jì)模式了。設(shè)計(jì)模式是高級(jí)程序員真正掌握面向?qū)ο蠛诵乃枷氲谋匦拚n。設(shè)計(jì)模式并不是一種具體“技術(shù)”,它講述的是思想,它不僅僅展示了接口或抽象類在實(shí)際案例中的靈活應(yīng)用和智慧,讓你能夠真正掌握接口或抽象類的應(yīng)用,從而在原來(lái)的Java語(yǔ)言基礎(chǔ)上躍進(jìn)一步,更重要的是,設(shè)計(jì)模式反復(fù)向你強(qiáng)調(diào)一個(gè)宗旨:要讓你的程序盡可能的可重用。關(guān)于設(shè)計(jì)模式的資料,還是向大家推薦banq的網(wǎng)站http:///,他把GOF的23種模式以通俗易懂的方式詮釋出來(lái),純Java描述,真是經(jīng)典中的經(jīng)典。有時(shí)間再研究一下MVC結(jié)構(gòu)(把Model-View-Control分離開的設(shè)計(jì)思想)吧,現(xiàn)在很流行的Structs就是它的一種實(shí)現(xiàn)方式,不過(guò)Structs用起來(lái)實(shí)在是很繁,我們只要學(xué)習(xí)其精髓即可,我們完全可以設(shè)計(jì)自己的MVC結(jié)構(gòu)。然后你再研究一下軟件Refactoring(重整)和極限XP編程,相信你又會(huì)上一個(gè)臺(tái)階。
做完這些,你不如整理一下你的Java代碼,把那些經(jīng)典的程序和常見的應(yīng)用整理出來(lái),再精心打造一番,提高其重用性和可擴(kuò)展性。你再找?guī)讉€(gè)志同道合的朋友成立一個(gè)工作室吧,你可以去承接一些項(xiàng)目做了,一開始可能有些困難,可是你有技術(shù)積累,又考慮周全,接下項(xiàng)目來(lái)可以迅速作完,相信大家以后都會(huì)來(lái)找你的,所以Money就嘩啦啦的來(lái)了。。。當(dāng)然你也可以參加一些開源項(xiàng)目,一方面可以提高自己,另一方面也是為中國(guó)軟件事業(yè)做貢獻(xiàn)嘛!開發(fā)者在互聯(lián)網(wǎng)上用CVS合作開發(fā),用QQ,MSN,E-mail討論聯(lián)系,天南海北的程序員分散在各地卻同時(shí)開發(fā)同一個(gè)軟件,是不是很有意思呢?
下面介紹兩個(gè)好的開源項(xiàng)目網(wǎng)站:
湖北省軟件公共開發(fā)平臺(tái)http://gro.clinux.org/
共創(chuàng)聯(lián)盟http://cosoft.org.cn/
哇,好高興哦,我終于成為高手了!非也,非也。古人云:“識(shí)時(shí)務(wù)者為俊杰”。你知道計(jì)算
機(jī)界現(xiàn)在的發(fā)展形勢(shì)嗎?你知道微軟的.NET藍(lán)圖和SUN ONE計(jì)劃之間的明爭(zhēng)暗斗嗎?你知道計(jì)算機(jī)技術(shù)將向何處發(fā)展嗎?其實(shí)從各大計(jì)算機(jī)廠商最近的動(dòng)作,都可以看出來(lái)“Web服務(wù)將是下一代互聯(lián)網(wǎng)應(yīng)用的制高點(diǎn)”,而微軟的.NET藍(lán)圖和SUN ONE計(jì)劃的斗爭(zhēng)焦點(diǎn),也就是Web服務(wù)。Web服務(wù)就是一個(gè)嶄新的分布式計(jì)算模型,它是一系列標(biāo)準(zhǔn)的綜合(XML,SOAP,UDDI,WSDL和WSFL等)。它使得不同語(yǔ)言編寫的軟件能夠輕易的集成起來(lái),使網(wǎng)絡(luò)資源和Web站點(diǎn)變成一種服務(wù)而不是混亂的垃圾場(chǎng)。不遠(yuǎn)的將來(lái),我們就可以在家里點(diǎn)擊一下鼠標(biāo),就可以完成出門旅游的全部準(zhǔn)備工作,包括定飛機(jī)票,定旅游線路,定好房間等。請(qǐng)注意,這所有的一切都是Web站點(diǎn)間自動(dòng)完成的,再也不用象現(xiàn)在一樣,表面上是電子商務(wù),實(shí)際上很多環(huán)節(jié)都是人工操作。也許你會(huì)覺得這是天方夜談,不過(guò)就近的說(shuō),你也很有可能承接一個(gè)項(xiàng)目,要集成兩個(gè)企業(yè)的ERP系統(tǒng)。很有可能上游企業(yè)的系統(tǒng)是用Dephi編的,而下游企業(yè)的系統(tǒng)是用Java編的。你說(shuō)你是Java高手,大家都看者你怎么做呢。所以啊,你還得學(xué)習(xí)新技術(shù),如Web服務(wù),而且你Dephi也要懂一點(diǎn)吧(Dephi6現(xiàn)在已經(jīng)提供Web服務(wù)的控件了)。你編的Java系統(tǒng),可能要和.NET集成,所以你.NET要懂一點(diǎn)吧?到最后,你可能發(fā)現(xiàn)你已經(jīng)成為Java高手了,但很多時(shí)間卻在搞別的技術(shù)。太極張三豐里說(shuō),最厲害的招式就是沒(méi)有招式,可能就是這個(gè)道理吧!
因?yàn)閯倓偱d起,所以網(wǎng)上Web服務(wù)的資料不是很多,我還是給大家推薦幾個(gè)網(wǎng)站吧: 中國(guó)UDDI技術(shù)聯(lián)盟http:///developerWorks/cn/xml/index.shtml?csdnIBM可是Web服務(wù)的力推者
嗚?你費(fèi)勁千心萬(wàn)苦,總算成為Java高手了,怎叫人不由喜極而泣呢!是啊,真不容易,真不簡(jiǎn)單,真叫人感動(dòng)?。∧敲创騻€(gè)電話告訴我吧,什么?我的電話號(hào)碼是多少?昏到,你打電話問(wèn)不就知道了嗎,真是的??
第五篇:java程序員面試題
1、你怎樣理解Struts,又那些配置文件,以及作用? 理解:http://ruixin.iteye.com/blog/899289 配置文件:struts.xml 作用:struts 框架mvc 實(shí)現(xiàn)低耦合,便于程序的維護(hù)~ 配置文件控制流程的轉(zhuǎn)向 很清晰~ 主要負(fù)責(zé)具體業(yè)務(wù)的實(shí)現(xiàn)和頁(yè)面的轉(zhuǎn)向~
2、怎么樣來(lái)捕獲數(shù)據(jù)庫(kù)中的異常?
3、如何處理網(wǎng)頁(yè)中的驗(yàn)證信息,如何友好的進(jìn)行處理?
4、用javaScript實(shí)現(xiàn)java中的監(jiān)聽器功能?
5、你對(duì)對(duì)日外包的看法?
6、數(shù)據(jù)庫(kù)連接方式由哪幾種?
Jdbc、連接池、hibernate
7、你清楚哪幾種設(shè)計(jì)模式,談?wù)劯鞣N設(shè)計(jì)模式的類結(jié)構(gòu)。
8、談?wù)刯sp和sevlet的區(qū)別,以及它們性能上的區(qū)別。
jsp是servlet的一種簡(jiǎn)化,jsp編譯后是“類servlet”。servlet 主要是用來(lái)處理業(yè)務(wù)層;
jsp 則是主要負(fù)責(zé) 表現(xiàn)層。
servlet完全是java程序代碼構(gòu)成,擅長(zhǎng)于流程控制和事務(wù)處理,而通過(guò)servlet來(lái)生成動(dòng)態(tài)網(wǎng)頁(yè)很不直觀; 對(duì)于靜態(tài)的html標(biāo)簽,servlet都必須使用頁(yè)面輸出流逐行輸出。Servlet中沒(méi)有內(nèi)置對(duì)象。Jsp由html代碼和jsp標(biāo)簽構(gòu)成可以方便地編寫動(dòng)態(tài)網(wǎng)頁(yè),在struts框架中,jsp位于MVC設(shè)計(jì)模式的視圖層,而servlet位于控制層。
總之,使用jsp只需要完成程序員需要輸出到客戶端的內(nèi)容,至于jsp中的java腳本如果鑲嵌到一個(gè)類中,由jsp容器完成,而servlet則是個(gè)完整的java類,這個(gè)類的service方法用于生成對(duì)客戶端的響應(yīng)
9、如何來(lái)編寫存儲(chǔ)過(guò)程,如何優(yōu)化存儲(chǔ)過(guò)程,以及存儲(chǔ)過(guò)程和TSQL的區(qū)別。
10、提供的培訓(xùn),CMM-5軟件開發(fā)流程培訓(xùn)、代碼編寫規(guī)范和業(yè)務(wù)流程培訓(xùn)、對(duì)日語(yǔ)的培訓(xùn)。
1、為什么要選擇這個(gè)行業(yè),和計(jì)算機(jī)專業(yè)的相比有什么優(yōu)勢(shì)?
2、Servlet是什么,以及生命周期?
Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。
與cgi的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過(guò)多線程方式運(yùn)行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。
3、怎么理解事務(wù)?
4、怎么理解MVC?
自己做自己的事情,主要強(qiáng)調(diào)分層,5、同時(shí)插入大量數(shù)據(jù),使用何種方法優(yōu)化?Batch
6、多個(gè)有關(guān)系得怎么樣操作?
7、你認(rèn)為你還有什么優(yōu)點(diǎn)在前面沒(méi)有提到?
8、對(duì)加班的看法?
9、與上級(jí)意見不一致時(shí)怎么樣處理?10、11、12、13、14、15、16、17、18、19、20、21、22、23、你如何理解團(tuán)隊(duì)精神?
你怎樣處理學(xué)習(xí)新技術(shù)和項(xiàng)目開發(fā)之間的矛盾? 怎樣去學(xué)習(xí)新技術(shù)?
作為一個(gè)初級(jí)程序員怎么樣彌補(bǔ)與有經(jīng)驗(yàn)程序員之間的差距? 你對(duì)索引的理解,索引有幾種,什么時(shí)候用索引? 對(duì)Oracle理解?
怎樣優(yōu)化復(fù)雜的查詢語(yǔ)句? 你對(duì)Jdbc理解?
對(duì)Finally塊的理解和應(yīng)用? 游標(biāo)的理解? ResultSet 重載,重寫? 簽名
EJB的事務(wù),Hibernate的事務(wù)? Struts的標(biāo)簽? 重定向和跳轉(zhuǎn)? A、
a.地址欄不改變跳轉(zhuǎn)——服務(wù)器端跳轉(zhuǎn),服務(wù)器之間內(nèi)部轉(zhuǎn),相同的request,可傳參;
b.執(zhí)行到跳轉(zhuǎn)語(yǔ)句后無(wú)條件立刻跳轉(zhuǎn)——之后的代碼不再被執(zhí)行;
注意:如果使用forward跳轉(zhuǎn),則一定要在跳轉(zhuǎn)之前釋放掉全部的資源;
c.使用forward時(shí),request設(shè)置的屬性依然能保留在下一個(gè)頁(yè)面(setAttribute);d.通過(guò)
e.地址中的”/”代表是:http://localhost:8080/Test B、response.sendRedirect(“地址”):效率低,速度慢
a.地址欄改變跳轉(zhuǎn)——客戶端跳轉(zhuǎn)(其中地址可以是任意的)
b.所有代碼執(zhí)行完畢之后再跳轉(zhuǎn),跳轉(zhuǎn)語(yǔ)句后面的代碼還是會(huì)執(zhí)行,除非在其后面加上return(return)需復(fù)雜一些。
<% Response.sendRedirect(“aa.jsp”);boolean b = true;
if(b){ Return;} System.out.println(“aaaaaaaaaa”);%>
c.不能保存request屬性——地址改變了,客戶端跳轉(zhuǎn),不同的request d.通過(guò)對(duì)URL地址的重寫傳遞參數(shù):
response.sendRedirect(“responseDemo04.jsp?id=mldn”);
e.地址中的”/”代表是:http://localhost:8080/
下面是兩種比較重要的跳轉(zhuǎn),我還是與上次的一次,把我做的筆記貼出來(lái):24、25、Hibernate的左聯(lián)結(jié)和右連接,緩存,數(shù)據(jù)加載? 面向?qū)ο笕绾卫斫?
26、EJB中CMP和BMP,SessionBean的機(jī)制?27、28、29、對(duì)日外包是否有抵觸情緒? 如何減少Servlet的請(qǐng)求? 對(duì)設(shè)計(jì)模式了解多少?作過(guò)的項(xiàng)目中用過(guò)那些設(shè)計(jì)模式? 30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、怎樣看待團(tuán)隊(duì)合作,在團(tuán)隊(duì)合作中你扮演什么樣的角色,遇到技術(shù)難題時(shí)怎么解決? Exception的層次結(jié)構(gòu)? EJB對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)機(jī)制? Struts中是否有事務(wù)處理? Hibernate的其它功能(除了ORM)? 如何提高數(shù)據(jù)庫(kù)中的數(shù)據(jù)查詢效率? 作為項(xiàng)目經(jīng)理如何對(duì)組內(nèi)成員分工? 描述一下你做過(guò)項(xiàng)目的流程。
加班到12點(diǎn),突然有人來(lái)問(wèn)你技術(shù)上的難題,你會(huì)如何處理? Oracle的冷備份、熱備份 Strurs中怎樣實(shí)現(xiàn) Hibernate怎樣實(shí)現(xiàn)ORM Spring 的事務(wù)處理機(jī)制
Strurs的驗(yàn)證方式,Javascript的驗(yàn)證的方式
一個(gè)是服務(wù)器端驗(yàn)證,一個(gè)是客戶端驗(yàn)證
Struts的工作機(jī)制 Delete/trancate的區(qū)別
trancate與delete都是刪除數(shù)據(jù),不同的是trancate是將表的所有數(shù)據(jù)都刪除,而delete可以有選擇地刪除數(shù)據(jù); delete刪除數(shù)據(jù)是記錄在日志中的,可以通過(guò)其將數(shù)據(jù)恢復(fù),而trancate則是將整個(gè)表截?cái)?,其操作是不記錄在日志里的?6、47、48、作為項(xiàng)目組長(zhǎng),你遇到的最大問(wèn)題是什么?如何解決?
Ajax/內(nèi)嵌框架實(shí)現(xiàn)局部刷新,有什么差別?
Exception/Error的區(qū)別,在什么情況下可以拋出RuntimeException 父類不同
知道異常和錯(cuò)誤最本質(zhì)的區(qū)別就是異常能被開發(fā)人員處理而錯(cuò)誤時(shí)系統(tǒng)本來(lái)自帶的,一般無(wú)法處理也不需要我們程序員來(lái)處理。
在程序運(yùn)行時(shí)候出錯(cuò)而又不是系統(tǒng)原因差生的,一般是由于程序原因產(chǎn)生,比如程序?qū)懙牟粔驀?yán)謹(jǐn)、完善
典型的RuntimeException
有
ArithmeticException、ClassCastException、IndexOutOfBoundsException、NullPointerException、UnsupportedOperationException 等.49、50、51、52、53、54、55、56、57、58、59、Orcale 物化視圖(MV)
業(yè)務(wù)處理模塊中,是如何處理事務(wù)? Sql語(yǔ)句如何優(yōu)化 數(shù)據(jù)庫(kù)右連接
JDBC的連接關(guān)閉在哪?
Finally語(yǔ)句塊內(nèi)
錯(cuò)誤處理模塊是放在哪個(gè)層的。接口能否繼承接口。
接口可以繼承接口..但是要使用extends~而不是用implements 抽象類能否繼承實(shí)體類。
抽象類是可以繼承實(shí)體類,但前提是實(shí)體類必須有明確的構(gòu)造函數(shù) 答案很明確,可以繼承。
項(xiàng)目中查詢時(shí)怎么樣實(shí)現(xiàn)的?
作為項(xiàng)目負(fù)責(zé)人你是管理這個(gè)團(tuán)隊(duì)的?
在你做項(xiàng)目過(guò)程中遇到些什么問(wèn)題,是怎么樣解決的?
Jquery中的幾種選擇器:
Javascript如何進(jìn)行數(shù)字和字符串之間的轉(zhuǎn)換?
數(shù)字類型轉(zhuǎn)換成String類型用 對(duì)象=對(duì)象.toString()方法,字符串轉(zhuǎn)換成數(shù)字類型則是對(duì)象=Number(對(duì)象);