這篇文章主要為大家展示了“為什么使用Java”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“為什么使用Java”這篇文章吧。
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)懷寧,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792
我真的很討厭浪費(fèi)時(shí)間追蹤由我的代碼不小心迭代到數(shù)組末尾而導(dǎo)致的模糊錯(cuò)誤,特別是在 IBM 大型機(jī)上的 FORTRAN 編程時(shí)代。另一個(gè)不時(shí)出現(xiàn)的隱晦問(wèn)題是調(diào)用一個(gè)子程序時(shí),該子程序帶有一個(gè)四字節(jié)整數(shù)參數(shù),而預(yù)期有兩個(gè)字節(jié);在小端架構(gòu)上,這通常是一個(gè)良性的錯(cuò)誤,但在大端機(jī)器上,前兩個(gè)字節(jié)的值通常并不總是為零。
在那種批處理環(huán)境中進(jìn)行調(diào)試也非常不便,通過(guò)核心轉(zhuǎn)儲(chǔ)或插入打印語(yǔ)句進(jìn)行調(diào)試,這些語(yǔ)句本身會(huì)移動(dòng)錯(cuò)誤的位置甚至使它們消失。
所以我使用 Pascal 的早期體驗(yàn),先是在 MTS 上,然后是在 IBM OS/VS1 上使用相同的 MTS 編譯器,讓我的生活變得更加輕松。Pascal 的強(qiáng)類(lèi)型和靜態(tài)類(lèi)型是取得這種勝利的重要組成部分,我使用的每個(gè) Pascal 編譯器都會(huì)在數(shù)組的邊界和范圍上插入運(yùn)行時(shí)檢查,因此錯(cuò)誤可以在發(fā)生時(shí)檢測(cè)到。當(dāng)我們?cè)?20 世紀(jì) 80 年代早期將大部分工作轉(zhuǎn)移到 Unix 系統(tǒng)時(shí),移植 Pascal 代碼是一項(xiàng)簡(jiǎn)單的任務(wù)。
但是對(duì)于我所喜歡的 Pascal 來(lái)說(shuō),我的代碼很冗長(zhǎng),而且語(yǔ)法似乎要比代碼還要多;例如,使用:
if ... then begin ... end else ... end
而不是 C 或類(lèi)似語(yǔ)言中的:
if (...) { ... } else { ... }
另外,有些事情在 Pascal 中很難完成,在 C 中更容易。但是,當(dāng)我開(kāi)始越來(lái)越多地使用 C 時(shí),我發(fā)現(xiàn)自己遇到了我曾經(jīng)在 FORTRAN 中遇到的同樣類(lèi)型的錯(cuò)誤,例如,超出數(shù)組邊界。在原始的錯(cuò)誤點(diǎn)未檢測(cè)到數(shù)組結(jié)束,而僅在程序執(zhí)行后期才會(huì)檢測(cè)到它們的不利影響。幸運(yùn)的是,我不再生活在那種批處理環(huán)境中,并且手頭有很好的調(diào)試工具。不過(guò),C 對(duì)于我來(lái)說(shuō)有點(diǎn)太靈活了。
當(dāng)我遇到 awk 時(shí),我發(fā)現(xiàn)它與 C 相比又是另外一種樣子。那時(shí),我的很多工作都涉及轉(zhuǎn)換字段數(shù)據(jù)并創(chuàng)建報(bào)告。我發(fā)現(xiàn)用 awk
加上其他 Unix 命令行工具,如 sort
、sed
、cut
、join
、paste
、comm
等等,可以做到事情令人吃驚。從本質(zhì)上講,這些工具給了我一個(gè)像是基于文本文件的關(guān)系數(shù)據(jù)庫(kù)管理器,這種文本文件具有列式結(jié)構(gòu),是我們很多字段數(shù)據(jù)的保存方式。或者,即便不是這種格式,大部分時(shí)候也可以從關(guān)系數(shù)據(jù)庫(kù)或某種二進(jìn)制格式導(dǎo)出到列式結(jié)構(gòu)中。
awk
支持的字符串處理、正則表達(dá)式和關(guān)聯(lián)數(shù)組,以及 awk
的基本特性(它實(shí)際上是一個(gè)數(shù)據(jù)轉(zhuǎn)換管道),非常符合我的需求。當(dāng)面對(duì)二進(jìn)制數(shù)據(jù)文件、復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和關(guān)鍵性能需求時(shí),我仍然會(huì)轉(zhuǎn)回到 C;但隨著我越來(lái)越多地使用 awk
,我發(fā)現(xiàn) C 的非?;A(chǔ)的字符串支持越來(lái)越令人沮喪。隨著時(shí)間的推移,更多的時(shí)候我只會(huì)在必須時(shí)才使用 C,并且在其余的時(shí)候里大量使用 awk
。
然后是 Java。它看起來(lái)相當(dāng)不錯(cuò) —— 相對(duì)簡(jiǎn)潔的語(yǔ)法,讓人聯(lián)想到 C,或者這種相似性至少要比 Pascal 或其他任何早期的語(yǔ)言更為明顯。它是強(qiáng)類(lèi)型的,因此很多編程錯(cuò)誤會(huì)在編譯時(shí)被捕獲。它似乎并不需要過(guò)多的面向?qū)ο蟮闹R(shí)就能起步,這是一件好事,因?yàn)槲耶?dāng)時(shí)對(duì) OOP 設(shè)計(jì)模式毫不熟悉。但即使在剛剛開(kāi)始,我也喜歡它的簡(jiǎn)化繼承模型背后的思想。(Java 允許使用提供的接口進(jìn)行單繼承,以在某種程度上豐富范例。)
它似乎帶有豐富的功能庫(kù)(即“自備電池”的概念),在適當(dāng)?shù)乃缴现苯訚M足了我的需求。最后,我發(fā)現(xiàn)自己很快就會(huì)想到將數(shù)據(jù)和行為在對(duì)象中組合在一起的想法。這似乎是明確控制數(shù)據(jù)之間交互的好方法 —— 比大量的參數(shù)列表或?qū)θ肿兞康牟皇芸刂频脑L問(wèn)要好得多。
從那以后,Java 在我的編程工具箱中成為了 Helvetic 軍刀。我仍然偶爾會(huì)在 awk
中編寫(xiě)程序,或者使用 Linux 命令行實(shí)用程序(如 cut
、sort
或 sed
),因?yàn)樗鼈冿@然是解決手頭問(wèn)題的直接方法。我懷疑過(guò)去 20 年我可能沒(méi)寫(xiě)過(guò) 50 行的 C 語(yǔ)言代碼;Java 完全滿足了我的需求。
此外,Java 一直在不斷改進(jìn)。首先,它變得更加高效。并且它添加了一些非常有用的功能,例如可以用 try 來(lái)測(cè)試資源,它可以很好地清理在文件 I/O 期間冗長(zhǎng)而有點(diǎn)混亂的錯(cuò)誤處理代碼;或 lambda,它提供了聲明函數(shù)并將其作為參數(shù)傳遞的能力,而舊方法需要?jiǎng)?chuàng)建類(lèi)或接口來(lái)“托管”這些函數(shù);或流,它在函數(shù)中封裝了迭代行為,可以創(chuàng)建以鏈?zhǔn)胶瘮?shù)調(diào)用形式實(shí)現(xiàn)的高效數(shù)據(jù)轉(zhuǎn)換管道。
許多語(yǔ)言設(shè)計(jì)者研究了從根本上改善 Java 體驗(yàn)的方法。對(duì)我來(lái)說(shuō),其中大部分沒(méi)有引起我的太多興趣;再次,這更多地反映了我的典型工作流程,并且(更多地)減少了這些語(yǔ)言帶來(lái)的功能。但其中一個(gè)演化步驟已經(jīng)成為我的編程工具中不可或缺的一部分:Groovy。當(dāng)我遇到一個(gè)小問(wèn)題,需要一個(gè)簡(jiǎn)單的解決方案時(shí),Groovy 已經(jīng)成為了我的首選。而且,它與 Java 高度兼容。對(duì)我來(lái)說(shuō),Groovy 填補(bǔ)了 Python 為許多其他人所提供的相同用處 —— 它緊湊、DRY(不要重復(fù)自己)和具有表達(dá)性(列表和詞典有完整的語(yǔ)言支持)。我還使用了 Grails,它使用 Groovy 為非常高性能和有用的 Java Web 應(yīng)用程序提供簡(jiǎn)化的 Web 框架。
最近,對(duì) OpenJDK 越來(lái)越多的支持進(jìn)一步提高了我對(duì) Java 的舒適度。許多公司以各種方式支持 OpenJDK,包括 AdoptOpenJDK、Amazon 和 Red Hat。在我的一個(gè)更大、更長(zhǎng)期的項(xiàng)目中,我們使用 AdoptOpenJDK 來(lái)在幾個(gè)桌面平臺(tái)上生成自定義的運(yùn)行時(shí)環(huán)境。
有沒(méi)有比 Java 更好的語(yǔ)言?我確信有,這取決于你的工作需要。但我一直對(duì) Java 非常滿意,我還沒(méi)有遇到任何可能會(huì)讓我失望的東西。
以上是“為什么使用Java”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!