精品国产免费观看久久久_久久天天躁狠狠躁夜夜爽_无码人妻少妇久久中文字幕_狠狠做深爱婷婷久久综合一区

網絡建站知識

精準傳達 ? 價值共享

洞悉互聯網前沿資訊,探尋網站營銷規律

查看其它板塊

為什么用 Java:讓程序員告訴你

作者:Smileby陌少羽 | 2017-06-16 08:15 |點擊:

每當我告訴別人我一直在用Java工作時,大家的反應都是:

“納尼!Java?為啥是Java?”

說實話,本人剛開始的時候也是同樣的反應。但是由于Java的類型安全,執行性能和堅如磐石的工具,我漸漸地開始欣賞Java。同時我注意到,現在的Java已今非昔比——它在過去的10年間穩健地改善著。

緣何是Java?

假 設每天都用Java的想法還沒有讓君惡心到食不下咽,我在此重申Java已非你所了解的“吳下阿蒙”了。當Python, Ruby, 和Javascript在“動態類型語言革命”™(我自己造的名詞)中大放異彩時,Java已經悄悄地借鑒了動態語言和函數式語言的很多吸引人的特性,同 時保留了讓Java和JVM晉級一流開發環境的先賢的努力成果。憑借大約9百萬Java攻城獅的基層群體,Java仍然是世界上最受歡迎的編程語言。我們 不能僅僅因為Java的語法有一點點繁瑣,就抹殺掉它所有的歷史和開發工作。但是流行不等同于正確。下面我們就來看看是什么讓Java如此大放異彩。

Java虛擬機(JVM)

Java虛擬機(JVM) 已經誕生20年了。在此期間,它被部署在成千上萬的系統上,歷經了無數的漏洞修復和性能提升。JVM的優點有以下幾個方面。首先,JVM完美支持日志和監控, 這使你可以很方便地監控小到單個線程的性能指標。JVM有世界上最優化的垃圾回收器之一,你可以根據優化吞吐量等因素靈活選擇垃圾回收算法。最 后,Java承諾的“write once, run anywhere”終于得已實現——你可以輕松地在任何架構上部署一個Java應用(大家還是承認applet從來沒有過吧)。為什么用Scala和 Clojure這樣新式語言的聰明人會選擇JVM作為他們的執行環境呢?——因為JVM為你的代碼提供了一個無出其右的分發環境。拋棄像JVM這樣堅如磐 石的工具是非常不合理的。

庫的支持

如 果你需要做點什么,很可能已經有非常好用且經過測試的Java庫在等著你。Java庫大部分都是成熟并用于實際生產開發的。Google, Amazon, LinkedIn, Twitter和很多Apache項目都很倚重于Java。如果你用了Java,你可以參考這些庫和公司,從而借鑒偉大的程序員先驅們的工作。

類型安全

Java的類型系統,雖然有時很繁瑣,但是這使得你可以寫出“好用”的代碼。不再有運行調試,它使你可以依靠編譯器而不是單元測試——單元測試只在你知道bug在哪里的時候才有用。類型安全也使你輕松的代碼重構。Java同時支持范型——Go語言的最大詬病之一。再者,Guava這樣的庫I以最小的樣板和開銷,標準化了創建類型安全的API的方法。 Java編譯器的改進也意味著你可以在享受類型安全的同時最小化范型所需的樣板代碼。

并發性

下面這條tweet總結了大多數動態語言的并行狀態:

Most JS/Python/Ruby apps… pic.twitter.com/hkDkjdxpFH

— Reuben Bond (@reubenbond)

Java 卻有著對多線程和并行的一流支持。對于Java 1.7, 許并行的immutable數據結構令你輕松地在線程間共享數據。Akka庫更進一步的提供了Erlang型的Actors來寫并發和分布式的程序。我并 不是在說Java比Go具有更好的并行支持,但是可以管理單個線程這一特性為Java應用提供了異步性能;而Python是做不到這點的。

用最新的Java來編程

現在你的心情可能已經從惡心變成好奇了,那么我們在2015年該如何寫Java呢?從哪兒開始呢?首先,讓我們回顧一些在Java 7和Java 8涌現的核心語言概念。

迭代

首先我們一起來看看迭代。下面是Java 8中的 for循環:

List<String> names = new LinkedList<>();  // compiler determines type of LinkedList

// ... add some names to the collection

names.forEach(name -> System.out.println(name));

或者是被大大簡化的 for關鍵詞?

for (String name : names)

System.out.println(name);

這2種循環結構都比你平時看到的for循環簡潔的多。

Lambda函數

上面提到的第一個for循環引入了Lambda函數這個新概念。Lamda函數,語法記作->, 是Java語言的一項重大改革,并從函數式編程中引入了一些概念。

下面來看幾個Java中Lambda函數的例子。

// Lambda Runnable
Runnable r2 = () -> System.out.println("Hello world two!");

// Lambda Sorting
Collections.sort(personList, (Person p1, Person p2) -> p1.getSurName().compareTo(p2.getSurName()))

// Lambda Listener
testButton.addActionListener(e -> System.out.println("Click Detected by Lambda Listener"));

這里無法詳細展開Lambda函數這個話題——http://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764文章提供了一個很好的切入點來更多地了解Lambda函數。

Java 8引入了流(stream)的概念,這為Java提供了很多現代函數式語言的特性。流是一種對集合上的一系列轉換延遲執行的機制。比如我們來數一下以’A’開頭的名字。首先想到的方法肯定是像下面這樣:

List<String> names = new LinkedList<>();
// ... add some names to the collection
long count = 0;
for (String name : names)  {
if (name.startsWith("A"))
++count;
}

如果用流,上述就可以簡化為首先將集合轉換成流,然后使用函數:

List<String> names = new LinkedList<>();
// ... add some names to the collection
long count = names.stream()
.filter(name -> name.startsWith("A"))
.count();

Java同時支持用parallelStream()來進行流的并行處理。并行流允許流水線業務在獨立的線程同時執行,這不僅改進了語法,同時提高了性能。在大多數情況下,你可以簡單得用parallelStream()替換stream()實現并行。

 Try-With-Resources結構

在Java 6之前,打開一個文件然后讀取內容需要通過try/finally來完成:

static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}

但是readLine和close都有可能拋出異常。在這種情況下,readLine拋出的異常被忽略,我們事實上并不知道readLine執行失敗。

Java 7引入了 Try-With-Resources結構來克服這種缺陷:

static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}

上例中,無論在何種失敗情況下,BufferedReader都會自動關閉文件流。你可以通過用逗號分隔的方式,用一個try語句來打開多個資源。

多重catch

以往Java只允許一個catch代碼塊對應一個異常,這造成如下的代碼冗余:

catch (IOException ex) {
logger.log(ex);
throw ex;
catch (SQLException ex) {
logger.log(ex);
throw ex;
}

從Java 7開始,你可以在一個代碼塊內捕捉多個異常,從而減少了代碼冗余:

catch (IOException|SQLException ex) {
logger.log(ex);
throw ex;
}

數值字面常量(Numeric Literals)

數值字面常量可以添加下劃線是Java語言的新特性。這允許你使用_作為大數字的視覺分隔符。下面的例子不言自明:

int thousand = 1_000;
int million  = 1_000_000;

使用Java

看到現代Java的語法如何簡化并擴展了老Java之后,你可能已經摩拳擦掌躍躍欲試Java了。我整理了一下第三方的工具和庫,這些可以用來幫助你們上手。

Maven

Maven是一個Java構建系統,相比于配置,它更重視規范。Maven定義了應用程序的結構,并提供了許多內置函數,比如運行測試,打包應用,部署你的庫。使用Maven會顯著降低管理Java項目的認知開銷。 Maven Central是Java世界中的PyPI,為已發布的Java庫提供一站式服務。

核心函數

谷歌的Guava library提供了谷歌Java開發中所使用的核心函數。這包括應用于集合,緩存,基礎數據類型,并發,字符串處理工作,I/O等的常見函數。Guava為如何設計好的的Java API提供了絕佳的案例分析,提供最有效的從Java中推薦的最佳實踐的具體例子一個很好的案例, Effective Java中推薦的最佳實踐大部分都在Guava中得以體現。Guava被用于谷歌產品開發,進行了超過286,000個單元測試,可謂經受過實戰測試的考驗。

日期/時間函數

Joda-Time 已 經成為Java實際上的標準日期/時間函數庫。事實上,Java 8幾乎一字不差地采用了Joda-Time規范。自此,我們建議使用java.time中的日期/時間函數代替Joda-Time。但是,如果你需要使用 Java 8之前的版本,Joda-Time提供了無與倫比的API。

分布式系統

Akka 提供類似Erlang型的Actor模型的抽象層來編寫分布式系統。Akka可以從容應對許多種不同的故障,為編寫可靠的分布式系統提供了更高層次的抽象。

Web應用程序

需要用Java寫一個功能完善的Web應用程序?莫怕,有Play Framework罩著你。Play基于Akka的非阻塞I/O,提供了編寫Web應用程序的可擴展的異步框架。如果想使用不那么前沿但是被廣泛應用于產品的框架,請嘗試Jetty。

單元測試

JUnit 仍為編寫單元測試的標準。最近幾年,JUnit的匹配器有所擴展,允許你對集合作assertions。例如,您可以輕松地斷言一個鏈表是否包含某個特殊值。

模擬框架(Mocking Framework)

Mockito是Java的標準模擬庫。它提供了所有你能想到的且對編寫測試非常重要的模擬庫的功能。

然而不足的是。。。

目前為止,我一直在為Java說好話,但是有些方面它還是很爛。

它還是Java!

Java的歷史遺留不可避免,Java仍然向下兼容其最早的版本,這意味著語言和標準庫的最爛的部分還存在著。Guava是為了令Java語言更討人喜歡而產生這個事實就證明了,Java和API存在不一致,令人困惑的問題,有時甚至是完全錯誤的。

JSON

Java缺少映射到JSON的object literal syntax(如Python的字典literal syntax)。正因如此,從Java對象映射到JSON有時需要繁復的對象實例化和映射,反之亦然。目前有各種JSON庫在這個領域競爭,Jackson是當前的最受歡迎的,但是Jackson的文檔需要進一步完善。

模擬(Mocking)

Mockito解決了測試Java代碼中的很多痛點,但是從像Python語言的靈活轉換到Java語言的嚴格,你需要更謹慎地來設計你的類用于模擬。

REPL

我之所以喜歡Python,其中一點就是它可以迅速地實現讀取﹣求值﹣輸出循環( read-eval-print loop),從而快速評估新的想法或檢驗假設。雖然一直有聲音說要把讀取﹣求值﹣輸出循環添加到標準Java庫,這一點目前還是不支持的。

語法累贅

雖然Java編譯器的進步意味著明確的類型簽名不再那么需要——尤其對于泛型——但是Java仍然比Python冗余的多。啟動和運行一個項目需要更多的樣板和開銷——通常這意味更多的工作。

結論

Java擁有一個漫長而傳奇的歷史,其中有好有壞。如果你已經很多年沒有使用Java工作了,也許現在是一個好機會再次嘗試它。只要不是像下面這樣做:

 

如沒特殊注明,文章均為狐靈科技原創,轉載請注明?? "為什么用 Java:讓程序員告訴你
多一份免費策劃方案,總有益處。

請直接添加技術總監微信聯系咨詢

網站設計 品牌營銷

多一份參考,總有益處

聯系狐靈科技,免費獲得專屬《策劃方案》及報價

咨詢相關問題或預約面談,可以通過以下方式與我們聯系

業務熱線:15082661954 / 大客戶專線:15523356218

18成禁人视频免费网站| 人妻互换一二三区激情视频| 欧洲亚洲国产成人综合色婷婷 | 午夜天堂AV天堂久久久| 亚洲AV日韩AV无码| 亚洲日韩中文第一精品| 中国老B亂伦AV| MD豆传媒APP网址入口免费| 丁香花在线观看免费观看图片| 国产精品99久久精品| 好男人在在线社区WWW在线影院| 久久精品亚洲乱码伦伦中文| 妺妺窝人体色聚窝窝| 人妻系列AV无码专区| 特级毛片在线大全免费播放| 亚洲AV成人无码久久精品老人| 亚洲区小说区图片区QVOD| 中国小帅男男GAYXNXX| ZOOM人与ZOOM| 国产成人精品三级麻豆| 国色天香卡一卡2卡3卡4卡5| 久久久亚洲熟妇熟女ⅩXXX直播 | 成熟丰满熟妇高潮XXXX| 国产另类TS人妖一区二区| 精品一区二区三区无码免费直播 | 麻豆星空传媒果冻传媒大象| 人妻巨大乳HD免费看| 四虎影视在线观看2413| 亚洲成在人线AV| 在线观看的AV网站| ぱらだいす天堂中文网WWW在线 | 亚洲AV无码久久精品成人| 亚洲综合久久精品无码色欲| 99热成人精品热久久6网站| 动漫AV纯肉无码AV在线播放| 国产无遮挡18禁无码网站| 久久久久黑人强伦姧人妻| 欧美成人一区二区三区| 少妇粉嫩小泬喷水视频在线观看| 亚洲AV毛片一区二区三区| 永久免费AV无码国产网站 | 中文字幕一本性无码| 波多野结衣高潮AV在线播放| 国产精品免费高清在线观看| 精品无人区麻豆乱码1区2区新区| 男生J桶进女人P又色又爽又黄| 日韩精品人妻中文字幕有码| 亚洲AV成人网站| 荫蒂每天被三个男人添视频| 斑马视频电影免费观看| 国产乱人伦精品免费| 久久久久久精品天堂无码中文字幕 | 91久久精品www人人做人人爽| 大粗鳮巴久久久久久久久| 国精产品一二三产区| 麻豆国产果冻自制传媒 | 亚洲国产精品成人网址天堂| 中文字幕人成人乱码亚洲影| 大J8黑人BBW巨大怪物| 韩国乱码片免费看| 免费观看电视在线高清| 色欲人妻AAAAAA无码| 亚洲大尺度专区无码| 67194人成免费无码| 国产DB624色谱柱88690| 久久99精品久久久久久9蜜桃| 欧美日日日日BBBBB视频| 无码人妻精品一区二区蜜桃视频 | 野花新免费高清完整在线观看| YSL小黑条蜜桃色| 国产三级在线观看完整版| 老司机亚洲精品影院| 日韩欧美人妻系列中文字幕一区二区三区 | A级毛片毛片免费观看丝瓜| 国产精品久久国产三级国 | 三上悠亚被弄到痉挛惨叫AV| 亚洲国产精品嫩草影院久久 | 日本熟妇毛茸茸XXXX| 亚洲AV怡红院AV男人的天堂| √天堂中文最新版在线中文| 国产Ⅴ亚洲V天堂A无码| 久久国产色AV免费观看| 人妻无码中文字幕| 亚洲AV无码久久| 99久RE热视频这里只有精品6| 国产高颜值大学生情侣酒店| 久久人妻无码中文字幕第一| 日本无人区码一二三区别| 亚洲国产精品久久久久爰| av网站免费观看| 国产麻豆精品一区| 老阿姨哔哩哔哩B站肉片入口6 | 欧美性爱一二三区| 亚洲AV成人一区二区三区在线播| 51成品网站W灬源码1688| 国产成人亚洲精品青草天美| 巨爆乳中文字幕巨爆区巨爆乳无码| 色狠狠色噜噜AV天堂一区| 亚洲熟妇无码八AV在线播放| 超碰97人人做人人爱综合| 金瓶梅之爱的奴隶| 热99RE久久免费视精品频| 亚洲AV无码专区亚洲AV漫画| CAOPORN免费视频在线| 国产亚洲欧美另类一区二区三区| 欧美成人午夜免费全部完| 小浪货水多奶大被领导| 97超级碰碰碰久久久久APP| 国产农村妇女毛片精品久久| 男配每天都在体内成结节| 无遮挡粉嫩小泬久久久久久久| 中文字幕一线产区和二线| 国产精品亚洲A∨天堂| 女班长给我看她小积积作文| 香港三日本三级少妇三级2021 | 精品国产乱码久久久久久软件大全| 亲嘴扒胸摸屁股激烈网站| 亚洲AV中文AⅤ无码AV接吻| YIN荡护士揉捏乱P办公室视频| 黑人巨大VS苍井空| 人妻少妇精品视频专区 | 亚洲∧V久久久无码精品| 97夜夜澡人人爽人人| 国产一区二三区好的精华液| 欧美人与动欧交视频| 亚洲av中文无码| 拔萝卜视频免费观看高清下载| 精品久久久中文字幕人妻| 日韩AV无码精品一二三区| 野花韩国在线观看免费版5| 国产AV高清无亚洲| 免费 黄 色 人成 视频 在| 午夜丰满少妇性开放视频| AV免费网站在线观看| 好爽…又高潮了粉色视频| 日本不卡在线视频二区三区| 亚洲性色AV日韩在线观看| 国产 国语对白 露脸| 免费观看羞羞的事情网站| 亚洲 成人 无码 在线观看| www高潮无码免费看| 久久99精品久久久久免费| 熟妇性MATURETUBE另类| 18级成人毛片免费观看| 国精品午夜福利视频不卡| 人人澡人人透人人爽| 亚洲综合国产成人无码| 国产粉嫩呻吟一区二区三区| 欧美A片XⅩX黑人性受| 亚洲国产精品线路久久| 夫目前侵犯一区二区三区 | XXXX性BBBB欧美| 久久99久国产麻精品66| 特大黑人巨交吊性XXXX| √最新版天堂资源网在线下载| 国偷自产AⅤ一区二区三区| 日韩AV无码AV免费AV不卡| 再深点灬舒服灬太大了下载 | 免费中文无码AV动作片| 亚洲AV永久无码精品主页丝瓜| 成人免费高清A级毛片| 里面也请好好疼爱漫画最新章节| 香蕉网久久久久丫| 超碰CAO已满18进入| 老头挺进娇妻身体| 性无码专区一色吊丝中文字幕 | 精品国产一区二区三区不卡| 少妇又紧又色又爽又刺激视频| 67194熟妇在线观看线路| 精品国际久久久久999波多野| 少妇激情AV一区二区三区| 97久久精品午夜一区二区 | 国产拍揄自揄免费观看| 日本三级强伦姧护士HD| 幼儿HIPHOP张婉莹仙踪网| 国产又黄又爽胸又大免费视频| 日韩人妻无码精品二专区| 装睡被陌生人摸出水好爽| 激情爆乳一区二区三区| 私密按摩高潮熟女啪啪 | 国语自产拍精品香蕉在线播放| 日日摸日日踫夜夜爽无码| 18禁无遮挡啪啪无码网站| 禁18在线观看免费网站| 玩弄漂亮少妇高潮大叫| PYTHON人马大战CSDN| 久久夜色噜噜噜亚洲AV| 亚洲AV日韩AV无码污污网站| 粗壮挺进邻居人妻无码| 男人的天堂在线视频| 亚洲熟妇AV午夜无码不卡| 国产精品自产拍高潮在线观看| 日产乱码一二三区别视频| 2021最新久久久视精品爱| 久久99精品久久久久麻豆| 西西人体444WWW高清大但| 成视频年人黄网站免费视频| 内射毛片内射国产夫妻| 亚洲中文字幕乱码电影| 国偷自产一区二区免费视频|