阿不都艾尼·阿不都肉素力
摘要:作為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,Java可以用來撰寫跨平臺(tái)應(yīng)用軟件,它是Java程序設(shè)計(jì)語言和Java平臺(tái)的總稱。應(yīng)該來說,這種Java技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,能夠被廣泛應(yīng)用在很多平臺(tái)和設(shè)備里,具有顯著的技術(shù)應(yīng)用優(yōu)勢(shì)和廣闊的發(fā)展前景。但是,當(dāng)前,有很多人對(duì)于Java編程語言程序的認(rèn)識(shí)還沒有做好充足的思想準(zhǔn)備,仍然存在著一些認(rèn)識(shí)誤區(qū),從而導(dǎo)致了使用方法上和開發(fā)技術(shù)方面也存在幾大誤區(qū)。因此,該文將圍繞Java軟件開發(fā)過程中的幾大誤區(qū)展開具體的討論,以期能夠更好的發(fā)揮出Java軟件在各個(gè)設(shè)備或者平臺(tái)中的應(yīng)用效果。
關(guān)鍵詞:Java軟件;認(rèn)識(shí)誤區(qū);開發(fā)誤區(qū)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2012)35-8392-02
當(dāng)前,科學(xué)技術(shù)的日益發(fā)展,使得人們?cè)絹碓街匾晫?duì)各種現(xiàn)代化技術(shù)的開發(fā)與應(yīng)用。其中非常熱門的一門技術(shù)就是編程技術(shù)的迅速普及發(fā)展,使得由Sun公司開發(fā)的Java軟件得到更多人的青睞,這種Java軟件具有簡單與安全的特性,還具有可移植的特點(diǎn),其面向?qū)ο蟮姆植际郊夹g(shù)布局,使其具有健壯的特性。這些都使得Java軟件深得很多軟件開發(fā)與使用人員的喜愛。盡管越來越多的人開始使用Java軟件,但是,他們大多數(shù)人并沒有真正做好充足的思想準(zhǔn)備,因此,在真正使用的過程中,往往顯得力不從心,無法很好的駕馭Java項(xiàng)目,嚴(yán)重的情況還會(huì)導(dǎo)致開發(fā)后的Java系統(tǒng)性能緩慢或者直接死機(jī)。有不少人認(rèn)為這是由于Java軟件的復(fù)雜性造成的。而我們認(rèn)為這種狀況的根本原因就在于我們所具有的軟件知識(shí)太貧乏或者使用方法不恰當(dāng)造成的,從而導(dǎo)致了認(rèn)識(shí)誤區(qū)和開發(fā)使用誤區(qū)。
1Java軟件相關(guān)概述
20世紀(jì)九十年代中期,SunMicrosystems公司經(jīng)過多次試驗(yàn)研究,正式推出了Java程序設(shè)計(jì)語言和Java平臺(tái),它們的總稱就是Java軟件,它是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,具有卓越的通用性、高效性、平臺(tái)移植性和安全性,這種Java技術(shù)能夠廣泛應(yīng)用于各種電腦和數(shù)據(jù)中心,是迄今為止全球范圍內(nèi)開發(fā)者群體最多的一門技術(shù)。隨著新興云計(jì)算和移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來,Java更是具備了顯著的優(yōu)勢(shì)和廣闊的發(fā)展前景。事實(shí)上,Java軟件名字的由來,最先來源于印度尼西亞爪哇島的英文名稱,那里盛產(chǎn)咖啡。因此,Java軟件中的很多語言都與咖啡有關(guān),比如說JavaBeans(咖啡豆)等。Java軟件由于成功的應(yīng)用到支持Javaapplet的HotJava瀏覽器里就充分展示了其魅力,并由此開啟了它對(duì)于Web的應(yīng)用與發(fā)展。
一般來說,Java軟件由Java編程語言、Java類文件格式、Java虛擬機(jī)和Java應(yīng)用程序接口四個(gè)方面的部件組成。Java程序與傳統(tǒng)的程序不同,它是一種開放性的技術(shù),要求能夠做到多種Java軟件相互兼容。其中,Java編程的優(yōu)勢(shì)在于其適合團(tuán)隊(duì)開發(fā),并能夠做到相對(duì)規(guī)范。而其劣勢(shì)則是架構(gòu)雖然較為完美,但是,其與互聯(lián)網(wǎng)訊息萬變的特征不相適應(yīng),一旦系統(tǒng)進(jìn)行更新,就要求網(wǎng)絡(luò)重啟,這是網(wǎng)絡(luò)服務(wù)難以接受的缺陷。應(yīng)該來說,Java軟件的編程語言風(fēng)格與C、C++語言風(fēng)格十分相近,它是一個(gè)純粹的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,繼承了C++語言面向?qū)ο蠹夹g(shù)的核心。因此,Java語言是簡單的,也是容易學(xué)習(xí)和使用的,而且它也摒棄了原來C++中一些繁雜的特性,使得其應(yīng)用起來更為方便簡捷。它的具體特性表現(xiàn)為:Java中對(duì)內(nèi)存的分配是動(dòng)態(tài)的,Java不在所有類之外定義全局變量,Java不用goto語句,而是用try-catch-finally異常處理語句來代替,Java不支持頭文件,不支持宏定義,對(duì)每種數(shù)據(jù)類型都分配固定長度,類型轉(zhuǎn)換不同,沒有結(jié)構(gòu)和聯(lián)合,不再使用指針,避免運(yùn)行時(shí)平臺(tái)依賴。一般來說,Java技術(shù)包含了以下幾種相關(guān)技術(shù):JDBC、EJB、JavaRMI、JavaIDL、JNDI、JMAPI、JMS、JTS、JMF、Annotation、javaFX、JMX以及JPA等。Java還與其他行業(yè)實(shí)現(xiàn)了復(fù)合,比如說Java與Internet、Java與電子商務(wù)。Java軟件的架構(gòu)隨著技術(shù)的不斷革新而更新自身的具體內(nèi)容,且建立在一些基本原則之上。這些基本原則包含了:分層原則、模塊化原則、細(xì)節(jié)隱藏原則、依賴倒置原則,這些基本原則為Java軟件架構(gòu)奠定了價(jià)值指標(biāo)。此外,Java軟件還應(yīng)用在Android系統(tǒng)中,但是,無論如何,Java雖然做到了很多它承諾過的事情,其仍然不是完美的一門語言,還有很多工程和環(huán)境并不適合使用它,因?yàn)樗墓δ苓^于強(qiáng)大或者過于復(fù)雜。
2Java軟件中編程語言程序的認(rèn)識(shí)誤區(qū)分析
雖然說Java軟件的編程語言已經(jīng)集合了其他幾種語言的優(yōu)點(diǎn),盡量趨于簡單易操作。但是,由于真正的使用者和開發(fā)者對(duì)于它的認(rèn)識(shí)還存在一定的偏差,導(dǎo)致了一些問題的產(chǎn)生。具體來說,Java軟件中編程語言程序的認(rèn)識(shí)誤區(qū)有如下幾個(gè)方面:
1)對(duì)于Java軟件的使用期限的認(rèn)識(shí)誤區(qū)。我們知道,任何一款軟件都是有使用時(shí)限的,它直接關(guān)系到分層架構(gòu)問題。一個(gè)有生命周期的軟件應(yīng)該首先有一個(gè)較為靈活可擴(kuò)展的基礎(chǔ)架構(gòu),然后也要擁有完整的功能。但是,目前很多人都認(rèn)為軟件的重點(diǎn)在于其功能是否完整,而非其架構(gòu)是否良好。這是一個(gè)致命的認(rèn)識(shí)誤區(qū),因?yàn)橐粋€(gè)軟件如果架構(gòu)不夠好,那么,它即使有完整的功能也無法真正在實(shí)際應(yīng)用中大展身手。因此,這種對(duì)于軟件生命力的短視,導(dǎo)致了很多有經(jīng)驗(yàn)的程序員不得不離開軟件行業(yè),而新手則仍然在老思維的誤導(dǎo)下奮起直追。同時(shí),國外也有很多免費(fèi)的軟件有著類似的陷阱存在,它們使用起來較為方便,但是其擴(kuò)展性以及持續(xù)發(fā)展性嚴(yán)重不足;
2)存儲(chǔ)陷阱和Hibernate等ORM問題。當(dāng)前,使用存儲(chǔ)過程架構(gòu)的人都認(rèn)為存儲(chǔ)過程可以解決性能問題,實(shí)則不然。因?yàn)榇鎯?chǔ)過程不可能封裝業(yè)務(wù)過程,而是面對(duì)廣大的互聯(lián)網(wǎng)的,不可能只是依靠一臺(tái)數(shù)據(jù)庫主機(jī)來提供多用戶訪問環(huán)境的。Java軟件應(yīng)該有三層架構(gòu),即表現(xiàn)層、業(yè)務(wù)層和持久層,這三個(gè)層次之間應(yīng)該分割明顯,職責(zé)分明。我們不能因?yàn)槌志脤邮潜9苷叨笃渥鲚^為復(fù)雜的業(yè)務(wù)組合。誠然,適量使用存儲(chǔ)過程也是可以的。此外,當(dāng)前使用Hibernate的人比較多,但是他們發(fā)現(xiàn)Hibernate性能緩慢,而事實(shí)是我們的使用方式有誤,從而導(dǎo)致了數(shù)據(jù)加載很慢。而當(dāng)我們進(jìn)行數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,往往會(huì)希望數(shù)據(jù)庫表結(jié)構(gòu)能夠保持恒久性,而這是非常難以實(shí)現(xiàn)的,從而讓人覺得使用ORM框架非常棘手;
3)Spring分層矛盾和領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)DDD的認(rèn)識(shí)誤區(qū)。Spring是以挑戰(zhàn)EJB面貌出現(xiàn)的,其優(yōu)點(diǎn)在于其擁有強(qiáng)大的組件定制功能,但是,在實(shí)際操作過程中有不少問題。首先,Spring作為業(yè)務(wù)層框架,不支持業(yè)務(wù)層Session功能,這就使得Java項(xiàng)目層次混亂,維護(hù)性差。其次,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)DDD初衷是進(jìn)行分層架構(gòu),而其實(shí)際操作中卻還沒有真正開始項(xiàng)目開發(fā)工作,就已經(jīng)開始選定了某種框架的組合。現(xiàn)在仍然有不少人誤認(rèn)為DDD是一種新的理論,而實(shí)際上它只是一種設(shè)計(jì)模式,并非新理論,是對(duì)實(shí)戰(zhàn)經(jīng)驗(yàn)的總結(jié)。
3Java軟件開發(fā)中的幾種誤區(qū)分析
作為一種簡單而功能強(qiáng)大的軟件,Java已經(jīng)得到了很多人的認(rèn)可和使用。但是,由于人們對(duì)于它的編程語言程序還存在一定的認(rèn)識(shí)誤區(qū),因此,軟件開發(fā)人員也在實(shí)際開發(fā)過程中存在一些誤區(qū),具體表現(xiàn)如下:
1)片面重視軟件的功能,忽視軟件架構(gòu)的重要性。這種開發(fā)誤區(qū)主要來源于老的開發(fā)思維,一般人都認(rèn)為軟件的生命力主要在于其使用周期的長短,而不是它的架構(gòu)是否合理和良好。因此,軟件開發(fā)人員在開發(fā)軟件的時(shí)候,就會(huì)在這種錯(cuò)誤思維的指導(dǎo)之下進(jìn)行系統(tǒng)開發(fā),非常重視其功能的實(shí)現(xiàn),而不是重視其基礎(chǔ)結(jié)構(gòu)是否靈活、擴(kuò)展性是否強(qiáng)、維護(hù)起來是否方便等。殊不知,軟件的架構(gòu)如果靈活性好,耦合度低,可擴(kuò)展性強(qiáng),將使得軟件開發(fā)工作變得事半功倍,還有利于軟件的升級(jí)等。但是,當(dāng)前很多人對(duì)軟件的開發(fā)與使用仍然僅滿足于功能的使用,并沒有充分考慮到今后的發(fā)展,使得軟件的生命力不強(qiáng)。我們應(yīng)該盡快扭轉(zhuǎn)這種開發(fā)誤區(qū),首先重視軟件架構(gòu)的搭建,然后再實(shí)現(xiàn)其完整的功能方面下功夫;
2)Java軟件系統(tǒng)層次混亂,相互不融合的現(xiàn)象存在。這又是Java軟件開發(fā)中的又一重大誤區(qū)。我們知道,Java軟件系統(tǒng)中一般分為表現(xiàn)層、業(yè)務(wù)層和持久層,這三個(gè)層次之間應(yīng)該是分割明顯,職責(zé)分明的關(guān)系,從而能夠有效增強(qiáng)該軟件系統(tǒng)的可移植性、擴(kuò)展性和維護(hù)性。其中,每一個(gè)數(shù)據(jù)庫都應(yīng)該對(duì)應(yīng)著一個(gè)持久化的對(duì)象,從而屏蔽了具體的數(shù)據(jù)庫和具體的數(shù)據(jù)表、字段,消除數(shù)據(jù)庫操作的誤區(qū)。但是,持久層只是一種持久化了的數(shù)據(jù)對(duì)象保存功能,在實(shí)際應(yīng)用中應(yīng)該盡量避免本末倒置,應(yīng)該避免讓持久層侵蝕業(yè)務(wù)層,做到各個(gè)層次清晰分明,不要混亂不堪,否則就會(huì)影響到該軟件的實(shí)際使用效果,其性能也會(huì)大大降低;
3)實(shí)際使用ORM問題的誤區(qū)。一般來說,ORM問題全稱為Object/RelationMapping技術(shù),它是為了解決關(guān)系型數(shù)據(jù)庫和面向?qū)ο蟮某绦蛟O(shè)計(jì)之間不匹配的矛盾而設(shè)計(jì)出來的。目前,在ORM框架中使用最為普遍的就是Hibernate,它是在關(guān)系型數(shù)據(jù)庫和Java對(duì)象之間做了一個(gè)自動(dòng)映射,從而使得軟件開發(fā)者能夠簡單的實(shí)現(xiàn)對(duì)于數(shù)據(jù)庫的操作。雖然說該種技術(shù)有著諸多的優(yōu)點(diǎn),但是,它作為一門技術(shù),仍然存在自身的缺陷和不足之處,這就是說運(yùn)用Hibernate作為數(shù)據(jù)持久化的開源框架,其在處理大批量數(shù)據(jù)的時(shí)候,顯得有些力不從心,無法應(yīng)對(duì)大量的對(duì)象進(jìn)行實(shí)際操作。事實(shí)上,這也是ORM框架的弱點(diǎn)所在。但是,很多用戶在實(shí)際使用的過程中,卻會(huì)忽視這個(gè)弱點(diǎn),甚至包括一些軟件開發(fā)人員也并不是很了解Hibernate的優(yōu)缺點(diǎn),從而導(dǎo)致了其開發(fā)的軟件存在天生的缺陷,一旦用戶訪問量大的時(shí)候,就會(huì)泄漏內(nèi)存,服務(wù)器死機(jī)。此外,還有些開發(fā)人員會(huì)存在喜新厭舊,過分追求新技術(shù)的誤區(qū)以及過分注重軟件功能,忽視用戶體驗(yàn)的誤區(qū)。
4結(jié)論
總之,作為當(dāng)前開發(fā)與使用最為廣泛的軟件來說,Java軟件有著簡單的操作和強(qiáng)大的功能。但是,我們要避免陷入一些認(rèn)識(shí)誤區(qū)和開發(fā)使用的誤區(qū)之中,盡可能的發(fā)揮出該軟件的多種優(yōu)勢(shì),避免或者消除其劣勢(shì),揚(yáng)長避短,更好的與其他軟件或者業(yè)務(wù)進(jìn)行關(guān)聯(lián)。
參考文獻(xiàn):
[1]BruceEckel.Thinkinginjava[M].陳吳鵬,饒若楠,譯.北京:機(jī)械工業(yè)出版社,2003.