現(xiàn)在,讓我們細(xì)看這份Java開(kāi)發(fā)者成長(zhǎng)路徑,看看我們究竟要學(xué)習(xí)哪些工具(tools),框架(frameworks),庫(kù)(libraries)和應(yīng)用程序接口(APIs)。
1.工具
工具章節(jié)主要分為兩個(gè)部分。第一部分介紹集成開(kāi)發(fā)環(huán)境(IDE),這是最基礎(chǔ)的工具,你幾乎可以用它做任何事,如編譯(compile),運(yùn)行(run),調(diào)試(debug),性能分析(profile),測(cè)試(test),比對(duì)文本(compare file),和編碼(code),重構(gòu)(refactoring)等。
第二部分介紹開(kāi)發(fā)工具,你需要用它進(jìn)行項(xiàng)目開(kāi)發(fā)與設(shè)計(jì),如Maven(一種項(xiàng)目對(duì)象模型)和Gradle(一種構(gòu)建工具),這些都很好用。我之前有提過(guò)ANT(一種跨平臺(tái)構(gòu)建工具),但這是為舊程序設(shè)計(jì)的。如果要開(kāi)發(fā)新程序,我更推薦Maven和Gradle。
2.Java開(kāi)發(fā)工具包應(yīng)用程序接口(JDK APIs)
JDK APIs對(duì)多數(shù)Java開(kāi)發(fā)者都十分重要。這部分內(nèi)容有點(diǎn)多,所以我將其分為Java集合框架,Java并發(fā)機(jī)制,Java IO和Java 8 APIs這幾大核心來(lái)講解。往下看。
2.1 Java集合框架
這是最為重要的Java應(yīng)用程序接口之一,每個(gè)Java開(kāi)發(fā)者都應(yīng)學(xué)會(huì)。它定義了Java標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu)的執(zhí)行方式,如鏈表(linked list),集合(set),棧(stack),隊(duì)列(queue),哈希表(hash table),優(yōu)先隊(duì)列(priority queue)等。
開(kāi)發(fā)者還至少需要了解一些最常用的數(shù)據(jù)結(jié)構(gòu),比如ArrayList,HashSet,linkedHashSet,TreeSet等。不同數(shù)據(jù)結(jié)構(gòu)屬性各不相同,如ArrayList是可以增長(zhǎng)的動(dòng)態(tài)數(shù)組;HashMap是哈希表的標(biāo)準(zhǔn)數(shù)據(jù)結(jié)構(gòu),用于儲(chǔ)存鍵值對(duì);而HashSet則是只能儲(chǔ)存不重復(fù)對(duì)象的集合數(shù)據(jù)結(jié)構(gòu)。
2.2 Java并發(fā)機(jī)制
重要性僅次于集合的API是多線程技術(shù)(multithreading)和并發(fā)機(jī)制(concurrency)。一位稱(chēng)職的Java開(kāi)發(fā)者必須熟練掌握J(rèn)ava并發(fā)機(jī)制。
你不僅需要深入理解線程(Thread),對(duì)象鎖(Object locking)和同步器(synchronization)這類(lèi)基本概念,還需要熟悉死鎖(deadlock),活鎖(livelock),競(jìng)爭(zhēng)條件(race conditions)等,并且知道如何操作。
同時(shí),你需要了解一些進(jìn)階概念,如Java 5及之后的版本中加入的循環(huán)柵欄(Cyclicbarrier),多線程條件通行工具(CountDownLatch),相位器(Phaser),異步編程(completeable future)等同步裝置(synchronizers),F(xiàn)eature(一種異步處理接口)以及如何在Java中實(shí)現(xiàn)異步操作。
2.3 Java IO
采訪了上百位Java開(kāi)發(fā)者后,我們發(fā)現(xiàn):跟集合或者多線程相比,他們普遍缺乏Java IO和NIO的知識(shí)。我理解大多數(shù)人會(huì)花更多時(shí)間在學(xué)習(xí)前兩者上,但是IO和NIO也不能忽視。
當(dāng)編寫(xiě)一個(gè)實(shí)踐性的核心程序時(shí),你會(huì)需要java.io包中的類(lèi)(classes),如文件流(file),字符流(InputStream&OutputStream),字節(jié)流(Reader&Writer),這也是Java IO接口的核心。同樣,如果要編寫(xiě)套接字應(yīng)用,你也需要了解Java NIO接口中的字節(jié)緩沖區(qū)(ByteBuffer),文件通道(FileChannel),選擇器(Selector)等重要的類(lèi)。可惜現(xiàn)在并沒(méi)有很多針對(duì)Java IO和NIO的公共學(xué)習(xí)資源,我找到一個(gè)不錯(cuò)的學(xué)習(xí)資源——The Complete Java Masterclass,從這里你能學(xué)習(xí)到這兩種接口的一些重要概念。
2.4 Java 8 Features
接下來(lái)介紹的這個(gè)接口所有Java開(kāi)發(fā)者都會(huì)用到——Java 8 features,這奠定了現(xiàn)今Java編寫(xiě)和編程的方向。在2019年,想要成為一個(gè)Java開(kāi)發(fā)者,必須了解Lambda表達(dá)式(Lambda expression),流接口(the Stream API),可選類(lèi)(Optional classes)和新的時(shí)間日期接口(Date and Time API)的用法,不然開(kāi)發(fā)Java程序會(huì)變的十分艱難?,F(xiàn)在很多的庫(kù)都不能支持Java 8以下的版本,也就是說(shuō)最好現(xiàn)在就開(kāi)始學(xué)習(xí)Java 8 features。Java 8已經(jīng)發(fā)布5年了,你沒(méi)什么理由不學(xué)習(xí)它。
以上就是長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java開(kāi)發(fā)學(xué)習(xí)哪些技術(shù)知識(shí)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。