為什么我喜歡Java的細節

他們說,Java太冗長了。 您可以找到Hello World程序的比較結果,這些程序在ruby中使用2行,在Java中使用10行,要讀取文件,您需要使用Java 20行和php中1行。

盡管示例經常被夸大(例如,計算導入次數),但確實Java程序需要更多的代碼行。 但這根本不是一件壞事。

相反,這是我真正喜歡的東西。 實際上,這與語言的冗長無關—除了匿名類而不是閉包之外,沒有什么其他語言太冗長。 它是關于核心庫的。 所以–我喜歡以冗長的方式編寫核心庫的方式。 兩個例子:

  • 拿java.io。 包。 讀取和寫入文件,流等。這有點難掌握,一開始,您需要復制粘貼很長的代碼片段以僅讀取文件。 但這迫使您理解流和讀者的抽象。 其他語言則很簡單: var contents = readFile("path")很酷,但是您永遠不必了解I / O管理的工作原理。 如果讀取失敗會怎樣? 對文件進行部分讀取就足夠了嗎? 您可以討價還價嗎? 您應該關閉資源還是將其自動關閉? 您無需為打招呼世界程序回答這些問題,但很快就需要了解它們。 不太冗長的語言對您隱藏了它們,并推遲了這種“抽象啟示”。
  • Servlet API。 乍一看,它看起來有些毛茸茸的類和接口。 但是很快,您就會意識到整個過程是如何工作的–不僅在Java中,而且在http請求的一般生命周期中。 因為您需要一個Servlet對象,請求和響應對象以及要寫入的輸出流,所以您了解了整個請求-響應周期。 我這里有一個個人例子。 我已經在學校寫PHP一年了。 然后一個月的Java和servlet使我完全明白了整個過程。 PHP非常易于使用– $_GET['foo'], session_start()和之間的一堆HTML。 因此,我不必理會底層的機制。 Java迫使我這么做。

您可能會說–很好,它迫使您學習這些重要的概念和抽象,但是它也應該為您提供一種輕松完成事情的方法。 但是,如果核心庫本身具有這些選項,則所有教程都將顯示這些選項,并且較低級的API將被忽略。

因此,解決方案是–第三方圖書館。 Apache和Google為您提供了這些。 有了番石榴和阿帕奇共享區,您將獲得所有這些一線。 Joiner.on(",").join(array) FileUtils.readLines(..)Joiner.on(",").join(array)等。但是,您不是從這些庫開始的,而是學習了如何在較低的層次上進行工作–仍然需要知道。

參考: 為什么我們喜歡 JCG合作伙伴 Bozhidar Bozhanov的 Java Verbosity,位于Bozho的技術博客上

相關文章 :

  • 討厭Java嗎? 您正在打錯仗。
  • 選擇一種新的編程語言來學習
  • 編寫不爛的代碼
  • 如果我有更多的時間,我會寫更少的代碼

翻譯自: https://www.javacodegeeks.com/2012/01/why-i-like-verbosity-of-java.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374472.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374472.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374472.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dll 源碼_【技術分享】 | 一個JAVA內存馬的源碼分析

前言偶然接觸到了這樣一個JAVA內存馬,其作者也是冰蝎的作者,項目地址:https://github.com/rebeyond/memShell正好最近在接觸JAVA,借此機會學習下大佬的代碼,對自己的編程思路也有了一定的提升。當然筆者只是一個腳本小…

ThunderSearch(閃電搜索器)_網絡空間搜索引擎工具_信息收集

文章目錄 ThunderSearch簡介1 項目地址2 使用方式2.1 配置文件config.json說明2.2 構建和運行 3 使用式例 ThunderSearch簡介 ThunderSearch(閃電搜索器)是一款使用多個(【支持Fofa、Shodan、Hunter、Zoomeye、360Quake網絡空間搜索引擎】網絡空間搜索引…

字符串匹配方法

介紹兩種字符串匹配方法1.暴力匹配母串用s表示,長度為m子串用p表示,長度為n時間復雜度為:(m-n1)n算法:從s串的第一個字符開始匹配,若匹配,繼續根據p向后匹配,若后續的不匹配,s右移重新匹配p 2.K…

區分幾進制的標志

自己總是記不住進制的開頭標記,就寫下來忘了就看看 1.二進制:Binary,數字以0b 、0B開頭 2.八進制:octal number system,數字自然以0打頭 3.十六進制:hexadecimal,以0x、0X開頭

每個人都知道MVC…

從一個最近的博客中,您可能已經了解到我最近一直在進行一些采訪,因為他們是針對Web應用程序開發人員的,所以我問的一個問題是“您能解釋一下MVC模式是什么嗎?”,值得稱贊的是,每個候選人知道答案。 對于不認…

php無限分類

無限循環 1.需要套2個foreach 2.2個foreach結構一樣 純代碼獲取數據 public function CycleData($parent_id0){$where[parent_id] $parent_id;$res $this->m->where($where)->field(id,name)->select();foreach($res as $k>$v){$result[$v[id]][id] $v[id];$r…

動態網頁數據的采集方案

我在上一篇文章中介紹了使用ScrapySharp快速從網頁中采集數據,這種方式是通過直接發送的Http請求來獲取的原始頁面信息,對于靜態網頁非常有效,但還有許多網站中的頁面內容并非全部存放在原始的頁面中,很多內容是通過javascript來動…

r語言ggplot2 多線圖繪制圖例_plotnine: Python版的ggplot2作圖庫

騰訊課堂 | Python網絡爬蟲與文本數據分析同樣的基本作圖任務,plotnine比matplotlib和seaborn代碼量少,更美觀。所以我又重新發一遍,大家可以先收藏起來,后面總有用到的時候~R語言的ggplot2繪圖能力超強,python雖有mat…

單元和集成測試的代碼覆蓋率

我最近在一個寵物項目中著手構建自動化的UI(集成)測試以及普通的單元測試。 我想將所有這些集成到我的Maven構建中,并提供代碼覆蓋率報告,以便我可以了解測試覆蓋率不足的區域。 我不僅發布了項目的源代碼,還整理了一個…

javascript事件與event對象的屬性

javascript事件列表解說事件瀏覽器支持解說一般事件onclickIE3、N2鼠標點擊時觸發此事件ondblclickIE4、N4鼠標雙擊時觸發此事件onmousedownIE4、N4按下鼠標時觸發此事件onmouseupIE4、N4鼠標按下后松開鼠標時觸發此事件onmouseoverIE3、N2當鼠標移動到某對象范圍的上方時觸發此…

感想

讀完三篇文章看到了前輩們的努力與堅持和對各自的學科的熱愛,以及各位前輩的奮斗的艱苦環境,我與那些前輩相比也許還達不到前輩們的那種級別,但是我的學習的條件卻比那些前輩們好的多,看完前輩們的奮斗史,以及前輩們的…

python學生分布_Python數據分析實戰之分布分析

前言 本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。 作者:嚴小樣兒 分布分析法,一般是根據分析目的,將數據進行分組,研究各組別分布規律的一種分析方法。…

使用Spring Security 3.1保護RESTful Web服務,第3部分

1.概述 本教程顯示了如何使用Spring和基于Java的Spring Security 3.1來保護REST服務 。 本文將重點介紹如何使用“登錄和Cookie”方法專門針對REST API設置安全配置。 2. Spring Security的體系結構完全基于Servlet過濾器,因此,在HTTP請求處理方面&…

一次完整的HTTP請求所經歷的7個步驟

HTTP通信機制是在一次完整的HTTP通信過程中,Web瀏覽器與Web服務器之間將完成下列7個步驟: 1、建立TCP連接 在HTTP工作開始之前,Web瀏覽器首先要通過網絡與Web服務器建立連接,該連接是通過TCP來完成的,該協議與IP協議共…

jQuery基礎--樣式篇(3)

1.jQuiery對象與DOM對象   對于剛剛接觸jQuery的初學者,我們要清楚認識一點:jQuery對象與DOM對象是不一樣的。可能一時半會分不清楚哪些是jQuery對象,哪些是DOM對象,下面重點介紹一下jQuery對象,以及兩者相互間的轉換…

hls fifo_HLS優化方法DATAFLOW你用了嗎

上期內容:異步跨時鐘域電路該怎么約束DATAFLOW作為HLS的一種優化方法,對于改善吞吐率(Throughput)、降低延遲(Latency)非常有效。DATAFLOW的作用對象DATAFLOW可以作用于函數,也可以作用于for循環。如下圖所示(圖片來源Figure62, Figure 63, u…

Java 8虛擬擴展方法

我一直關注Java 8 Lambda表達式項目的發展已經有一段時間了,我對其當前的進展狀態感到非常興奮。 我發現的最新“易于理解”的演示文稿是這樣的: http://blogs.oracle.com/briangoetz/resource/devoxx-lang-lib-vm-co-evol.pdf 現在,作為一名…

python爬蟲 庫_七款必備的Python爬蟲庫,你知道幾個?

很多你需要的信息數據都是在網站內,雖然有些網站的數據會以整潔、結構化的形式呈現,但大部分網站卻無法做到這樣。因此,當你想要獲得一些數據的時候,你需要一些爬蟲工具幫助抓取,然后再對其進行分析。今天,…

62個Android Studio小技巧合集

轉載: 原文鏈接:http://laobie.github.io/android/2016/02/14/android-studio-tips.html轉載于:https://www.cnblogs.com/kesteler/p/5618490.html

在Hibernate,EhCache,Quartz,DBCP和Spring中啟用JMX

繼續使用JMX的過程(請參閱: 人類JMX ),我們將學習如何在一些流行的框架中啟用JMX支持(通常是統計和監視功能)。 這些信息大部分都可以在項目的主頁上找到,但是我決定在收集這些信息的同時&#…