一個(gè)暑假,兩本書,讓我了解到了Java的神奇美妙,這個(gè)工具的年齡跟我一樣大,然而日久彌新,隨著電腦技術(shù)科學(xué)家,工程師的開發(fā),Java的功能越來越完善。學(xué)習(xí)的時(shí)間不長(zhǎng),但我比較著學(xué)習(xí),把Java跟C、C++、C#比較著學(xué)習(xí),收獲良多。
Java沒有VS那種可視化的編程環(huán)境,現(xiàn)在還有點(diǎn)不習(xí)慣,畢竟完成這些程序的代碼量還是挺大的,但Boss跟我們說,Swing、AWT、Bean等圖形化界面設(shè)計(jì),不用看,直接跳過,只是納悶,既然這種技術(shù)落后,為什么還要寫進(jìn)書里。然而,事實(shí)上,經(jīng)過瀏覽一遍,這些圖形界面的設(shè)計(jì)模式確實(shí)很讓人捉急,確實(shí)很好奇,當(dāng)年的工程師們是怎么過來的。
最棒的是,Java的指針已經(jīng)被封裝起來了,不用像C、C++一樣,一遍遍苦逼的被指針?biāo)5膱F(tuán)團(tuán)轉(zhuǎn),debug半天不知所以然,由于一個(gè)小小的指針,可以耗費(fèi)一整天的時(shí)間,不再考慮鏈表、隊(duì)列、棧等數(shù)據(jù)結(jié)構(gòu),都被封裝好了,多么造福的一項(xiàng)設(shè)計(jì)啊
在Java的面向?qū)ο筇匦灾校杏X比C++好多了,用簡(jiǎn)單的接口概念、metaclass等多繼承手段代替C++的多繼承。然而令我奇怪的是,Java竟然不支持多繼承!畢竟在C++中,一個(gè)類經(jīng)常可以通過繼承衍生出很多個(gè)不同的子類,孫子類。下文才知道,可以使用類的接口解決復(fù)雜任務(wù),而不必知道其中的實(shí)現(xiàn)細(xì)節(jié)。一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口,并在需要接口的地方,隨時(shí)使用實(shí)現(xiàn)相應(yīng)接口的對(duì)象。了解到Java的封裝性,也許就是其迅速走紅的一個(gè)原因吧,良好的封裝性,讓代碼不易被篡改。
對(duì)于package的概念,確實(shí)感到很新鮮,我把他們類比為頭文件,庫……都不想,因?yàn)樵谕粋€(gè)PRoject中,可以新建很多個(gè)package,每個(gè)package還可以建立很多個(gè)class,到底有什么意義呢,為了封裝性?書中說,為了確保類名的唯一性,嵌套的package之間沒有任何聯(lián)系。
程序出錯(cuò)了怎么辦?我不是說程序員敲代碼的錯(cuò)誤,而是當(dāng)遇到一些比較調(diào)皮的用戶,故意不輸入我們想要的數(shù)據(jù),導(dǎo)致程序出現(xiàn)異常,這怪誰???當(dāng)然是苦逼程序員咯,所以本著客戶就是上帝的原則,既要考慮到用戶有多調(diào)皮,又要關(guān)心電腦不要傲嬌。把異常分類:Error類和Exception類。這些還遠(yuǎn)遠(yuǎn)不能滿足報(bào)錯(cuò)的需要,還需要?jiǎng)?chuàng)建特定的異常類
JDBC,這是Boss安排給我的第一個(gè)任務(wù)。雖然完成了,但在編寫的過程中,有許多的疑問,首先,既然是連接的端口,難道不不可以直接import這個(gè)包嗎?接著,假如不能import這個(gè)包,直接把代碼copy不行嗎?另外,還不能通過編譯器完成對(duì)數(shù)據(jù)庫的創(chuàng)建,需要在MySQL里面進(jìn)行創(chuàng)建,這,好麻煩?。。。∵€有進(jìn)行增刪查改的操作是固定的,能不能隨時(shí)根據(jù)用戶需要打印出來呢?命令行只能寫所有數(shù)據(jù)庫都有的那種命令才能通用,求同存異,這種思想一直存在。創(chuàng)建一個(gè)接口,目的是方便,然而這還遠(yuǎn)遠(yuǎn)沒有達(dá)到方便的目的。
Java的應(yīng)用跨國界,堪稱計(jì)算機(jī)領(lǐng)域的絲綢之路,只是,世界這么大,語言這么多,完成這些語言的轉(zhuǎn)換是多么蛋疼的一件事啊,日期、時(shí)間、貨幣、數(shù)字格式……各個(gè)地區(qū)各有特色,都要一一對(duì)他們進(jìn)行設(shè)置,做完這些工作,很累的啊,難道跨國界這么費(fèi)勁嗎?難道不能以來系統(tǒng)來完成這些操作嗎?
安全性,Java對(duì)程序安全性的真的是苛刻到無以復(fù)加的地步。C中,經(jīng)常會(huì)忽略對(duì)數(shù)組邊界的檢查,然而Java絕不會(huì)留下這個(gè)可乘之機(jī)。Java的三種安全機(jī)制:校驗(yàn)器、安全管理器、數(shù)字簽名,一項(xiàng)比一項(xiàng)嚴(yán)格,對(duì)于惡意的攻擊性代碼,Java的安全性機(jī)制,保護(hù)著程序不受攻擊(在書中,我了解到,惡意代碼的攻擊方式主要是以繼承出一個(gè)新的子類、利用數(shù)組的邊界漏洞、通過指針使內(nèi)存溢出、篡改代碼達(dá)到修改注冊(cè)表的目的等方式為主),數(shù)字簽名(也就是開發(fā)者的身份證明)又包括消息摘要,消息簽名、校驗(yàn)簽名、證書簽名,證明程序未曾被黑客修改過。很有趣哦,當(dāng)自己還不能完全信任對(duì)方的程序時(shí),通過第三方認(rèn)證,確定程序的安全性。這在現(xiàn)實(shí)生活的人際交流中,很常見吶,兩個(gè)陌生人通過一個(gè)共同的熟人搭橋達(dá)到熟識(shí)的目的。
Java可以很輕松的完成打開socket等操作,可以通過遠(yuǎn)程方法調(diào)用機(jī)制使得分布式對(duì)象之間進(jìn)行通信。通過設(shè)置端口號(hào),我用編譯器訪問了美國的國家技術(shù)研究所的服務(wù)器。我知道,Java Wed的范圍何其寬廣,我所接觸的只是冰山一角。雖然了解到分布式結(jié)構(gòu),但由于書中給的例子只是一臺(tái)服務(wù)器對(duì)應(yīng)一個(gè)客戶端,,通過這個(gè)例子,讓我知道,客戶端和服務(wù)器之間的數(shù)據(jù)交流環(huán)節(jié),以及交流之前的身份認(rèn)證。此外,對(duì)于多臺(tái)客戶端訪問同一個(gè)服務(wù)器,我猜想是否可以使用多線程管理,達(dá)到多個(gè)客戶端訪問一臺(tái)服務(wù)器的目的?還是開辟多個(gè)端口以滿足多臺(tái)客戶端訪問的目的(這樣的話,客戶端的需求的數(shù)量又是無止境的)?聯(lián)想到蜂窩拓?fù)渚W(wǎng)絡(luò),對(duì)于書中的介紹有更加的不足了。
Java另一個(gè)有趣的地方,就是可以調(diào)用本地方法。代碼啊,敲太多也會(huì)煩的,Java可以與其他語言兼容。以前敲過的程序,經(jīng)過鼠標(biāo)的稍微點(diǎn)擊,編譯器的小小操作就可以了果然很方便。
Java的水好深,隨便一個(gè)方面的研究就可以發(fā)現(xiàn)很多問題,不只是知識(shí)的不足,更有經(jīng)驗(yàn)上的不足。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注