中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么使用Java

發布時間:2021-11-12 10:22:50 來源:億速云 閱讀:151 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“為什么使用Java”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“為什么使用Java”這篇文章吧。

調試是一個關鍵的語言特性

我真的很討厭浪費時間追蹤由我的代碼不小心迭代到數組末尾而導致的模糊錯誤,特別是在 IBM 大型機上的 FORTRAN  編程時代。另一個不時出現的隱晦問題是調用一個子程序時,該子程序帶有一個四字節整數參數,而預期有兩個字節;在小端架構上,這通常是一個良性的錯誤,但在大端機器上,前兩個字節的值通常并不總是為零。

在那種批處理環境中進行調試也非常不便,通過核心轉儲或插入打印語句進行調試,這些語句本身會移動錯誤的位置甚至使它們消失。

所以我使用 Pascal 的早期體驗,先是在 MTS 上,然后是在 IBM OS/VS1 上使用相同的 MTS 編譯器,讓我的生活變得更加輕松。Pascal 的強類型和靜態類型是取得這種勝利的重要組成部分,我使用的每個 Pascal 編譯器都會在數組的邊界和范圍上插入運行時檢查,因此錯誤可以在發生時檢測到。當我們在 20 世紀 80 年代早期將大部分工作轉移到 Unix 系統時,移植 Pascal 代碼是一項簡單的任務。

適量的語法

但是對于我所喜歡的 Pascal 來說,我的代碼很冗長,而且語法似乎要比代碼還要多;例如,使用:

if ... then begin ... end else ... end

而不是 C 或類似語言中的:

if (...) { ... } else { ... }

另外,有些事情在 Pascal 中很難完成,在 C 中更容易。但是,當我開始越來越多地使用 C 時,我發現自己遇到了我曾經在  FORTRAN  中遇到的同樣類型的錯誤,例如,超出數組邊界。在原始的錯誤點未檢測到數組結束,而僅在程序執行后期才會檢測到它們的不利影響。幸運的是,我不再生活在那種批處理環境中,并且手頭有很好的調試工具。不過,C  對于我來說有點太靈活了。

當我遇到 awk 時,我發現它與 C 相比又是另外一種樣子。那時,我的很多工作都涉及轉換字段數據并創建報告。我發現用 awk 加上其他 Unix 命令行工具,如 sortsedcutjoinpastecomm 等等,可以做到事情令人吃驚。從本質上講,這些工具給了我一個像是基于文本文件的關系數據庫管理器,這種文本文件具有列式結構,是我們很多字段數據的保存方式。或者,即便不是這種格式,大部分時候也可以從關系數據庫或某種二進制格式導出到列式結構中。

awk 支持的字符串處理、正則表達式和關聯數組,以及 awk 的基本特性(它實際上是一個數據轉換管道),非常符合我的需求。當面對二進制數據文件、復雜的數據結構和關鍵性能需求時,我仍然會轉回到 C;但隨著我越來越多地使用 awk,我發現 C 的非常基礎的字符串支持越來越令人沮喪。隨著時間的推移,更多的時候我只會在必須時才使用 C,并且在其余的時候里大量使用 awk

Java 的抽象層級合適

然后是 Java。它看起來相當不錯 —— 相對簡潔的語法,讓人聯想到 C,或者這種相似性至少要比 Pascal  或其他任何早期的語言更為明顯。它是強類型的,因此很多編程錯誤會在編譯時被捕獲。它似乎并不需要過多的面向對象的知識就能起步,這是一件好事,因為我當時對  OOP 設計模式毫不熟悉。但即使在剛剛開始,我也喜歡它的簡化繼承模型背后的思想。(Java 允許使用提供的接口進行單繼承,以在某種程度上豐富范例。)

它似乎帶有豐富的功能庫(即“自備電池”的概念),在適當的水平上直接滿足了我的需求。最后,我發現自己很快就會想到將數據和行為在對象中組合在一起的想法。這似乎是明確控制數據之間交互的好方法 —— 比大量的參數列表或對全局變量的不受控制的訪問要好得多。

從那以后,Java 在我的編程工具箱中成為了 Helvetic 軍刀。我仍然偶爾會在 awk 中編寫程序,或者使用 Linux 命令行實用程序(如 cutsortsed),因為它們顯然是解決手頭問題的直接方法。我懷疑過去 20 年我可能沒寫過 50 行的 C 語言代碼;Java 完全滿足了我的需求。

此外,Java 一直在不斷改進。首先,它變得更加高效。并且它添加了一些非常有用的功能,例如可以用 try 來測試資源,它可以很好地清理在文件 I/O 期間冗長而有點混亂的錯誤處理代碼;或 lambda,它提供了聲明函數并將其作為參數傳遞的能力,而舊方法需要創建類或接口來“托管”這些函數;或流,它在函數中封裝了迭代行為,可以創建以鏈式函數調用形式實現的高效數據轉換管道。

Java 越來越好

許多語言設計者研究了從根本上改善 Java 體驗的方法。對我來說,其中大部分沒有引起我的太多興趣;再次,這更多地反映了我的典型工作流程,并且(更多地)減少了這些語言帶來的功能。但其中一個演化步驟已經成為我的編程工具中不可或缺的一部分:Groovy。當我遇到一個小問題,需要一個簡單的解決方案時,Groovy  已經成為了我的首選。而且,它與 Java 高度兼容。對我來說,Groovy 填補了 Python 為許多其他人所提供的相同用處 ——  它緊湊、DRY(不要重復自己)和具有表達性(列表和詞典有完整的語言支持)。我還使用了 Grails,它使用 Groovy 為非常高性能和有用的 Java Web 應用程序提供簡化的 Web 框架。

Java 仍然開源嗎?

最近,對 OpenJDK 越來越多的支持進一步提高了我對 Java 的舒適度。許多公司以各種方式支持 OpenJDK,包括 AdoptOpenJDK、Amazon 和 Red Hat。在我的一個更大、更長期的項目中,我們使用 AdoptOpenJDK 來在幾個桌面平臺上生成自定義的運行時環境。

有沒有比 Java 更好的語言?我確信有,這取決于你的工作需要。但我一直對 Java 非常滿意,我還沒有遇到任何可能會讓我失望的東西。

以上是“為什么使用Java”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永寿县| 阿坝县| 自贡市| 阿克陶县| 沐川县| 迭部县| 兴安县| 江西省| 富蕴县| 岳阳县| 互助| 水城县| 巴彦淖尔市| 前郭尔| 金华市| 霍州市| 东山县| 会东县| 加查县| 阿克苏市| 富裕县| 河池市| 宣恩县| 盐亭县| 怀化市| 安阳市| 松滋市| 江西省| 鸡东县| 新疆| 丰镇市| 贵南县| 永福县| 永康市| 囊谦县| 周宁县| 绥阳县| 内黄县| 阳春市| 综艺| 汉寿县|