-
1 # 我也不知道叫啥了哈哈
-
2 # w吾十有五而志於學w
我鄰居家孩子前年是在中公優就業培訓的,好像是java,目前在北京就業,聽說學完後找的工作工資還挺高,他媽媽總在我媽面前說,搞得我都想去學了
-
3 # 小翠你明明
初學者一般首先要學習以下四點內容
1、熟練使用一種 IDE。Intellij IDEA或者 Eclipse 都可以。至少熟悉常用的快捷鍵,會 debug(包括遠端 debug)專案。
2、熟悉一種編輯器。比如 Vim/Emacs/Sublime Text,至少學會搜尋/替換/程式碼補全。
3、熟悉 Linux 開發環境和 bash shell。
4、掌握 JDK 以外的常用類庫和工具包。
推薦一個學習平臺,www.itbaizhan.cn,有一些不錯的學習資料可以參考
-
4 # 走進程式設計世界
我覺得學習java程式設計的話,其實是一個很好的選擇,java學起來很容易的,但是一定要學習,就是堅持下去,很多的人在學習java的時候不選擇堅持下去,反而是學習一段時間之後,就不在堅持了,這樣的話,你肯定是不能學習的很好的啊,第二個比較重要的是,去網上看一下影片,現在網上的關於java的影片非常的多,你自己去網上學習去看一些影片就會提高的。最重要的是堅持,因為這程式碼這種東西是很容易忘記的 啊
-
5 # 遊猿會Java語言
學習Java語言之前,先來認識一下Java語言吧,這樣對我們學習會有好處。
Java是一門面向物件程式語言,即經常說的OOP(Object Oriented Programming)。說起面向物件程式設計,大部分人在大學時應該都學過了C++語言,C++是很經典的面嚮物件語言。Java吸收了C++的OOP思想,同時也摒棄了C++中一些難以理解的元素,比如指標,多繼承等。所以,Java語言同時具有了功能強大和簡單易用的優點。
JVM說起Java,就不得不說Java的一個很重要的特性了,那就是JVM(Java Virtual Machine)。Java語言一經發布就收到了巨大的關注和歡迎,一門新的語言,能夠迅速流行,肯定是在某些方面有著巨大的進步。尤其是在老前輩C,C++面前。
JVM是Java語言和同時代語言相比的一個重大突破。Java的口號是“Write Once, Run everywhere”。用Java語言編寫的應用,只需編寫一次,可以在各個平臺執行,包括Window,Linux,Mac等。簡言之,Java應用可以跨平臺。目前有很多的跨平臺語言,但是在當時,這可謂是一個巨大的突破。使用Java語言可以極大的減少跨平臺應用的開發成本,收廣大開發者和企業的歡迎。
JVM是如何做到跨平臺呢?軟體是執行在作業系統之上的,而不同的作業系統的核心,系統API都是不同的。這也導致了不同作業系統的軟體不能在其他系統上直接執行。比如Windows的exe檔案在Mac上無法執行。Mac的app軟體在Windows上也無法執行。
計算機系統軟體體系結構採用一種層的結構,有人說過一句名言:
計算機科學領域的任何問題都可以透過增加一個間接的中間層來解決JVM也是採用了這種方法。即Java程式碼不是編譯成可在各平臺直接執行的二進位制檔案,而是編譯為一種Class檔案。Class檔案執行在JVM中,JVM負責將Class檔案翻譯成各平臺的二進位制檔案。透過引入JVM中間層,Java應用實現了跨平臺功能。
JVM工作原理如下圖所示:
在學習Java的時候,要記住Java的JVM特性。這樣對後續的Java學習很有好處,比如後面我將要提到的動態代理,AOP等特性。
Java開發環境搭建知道了Java的JVM原理之後,搭建Java開發環境就很簡單了。不同的作業系統上需要安裝平臺相關的Java開發工具,即常說的JDK,或JRE。
JDK = JRE + 開發工具。JRE是Java應用的執行時環境,是必須的。JDK包含了JRE和開發工具(比如除錯,日誌,監控等)。安裝Java有兩種方式:
安裝檔案安裝:手動去Oracle官網下載安裝檔案,進行安裝。
包管理工具安裝:在Mac平臺推薦使用Homebrew安裝;Linux上使用apt-get或yum來安裝。
Java IDE推薦工欲善其事必先利其器一個好的開發工具,能為我們提升效率。
Java IDE有很多,比較主流的有Eclipse和IntelliJ IDEA。強烈推薦IntelliJ IDEA,比Eclipse要強大很多,唯一的缺點是IntelliJ IDEA完整功能是收費的。不過,作為日常開發,社群辦已經足夠強大,滿足我們的需求了。如果想使用IntelliJ IDEA商業版,可以購買,獲得更好的體驗。
另外,如果資金不足,可以去網上找找破解版本,作為學習使用。不過,還是推薦使用正版軟體哦。Java一些容易混淆的概念我是從C#轉Java的。C#是微軟閉環的一個開發語言,剛開始接觸Java時,還沒開始寫程式碼,就已經被Java各種概念弄的暈頭轉向。接下來我就理清一下那些容易混淆的概念。
Java1.6和Java6:關於Java的版本,經常看到Java 1.6和Java6的說法。其實Java 1.6和Java6是同樣的版本,只是叫法不一樣。目前在使用的版本一般都是Java 6或以上了。
Java SE,Java EE,Java ME:是很早的時候提出來的一些概念,現在基本已廢棄了,其實可以不用關注了。但我還是簡單說明一下吧,Java SE:Java Standard Edition,可以認為是Java的核心。Java EE:Java Enterprise Edittion:Java企業版,基於Java SE,添加了一些企業開發的特性,用於開發企業級的大專案。Java ME:Java Mobile Edition:移動端開發版本。現在基本沒有這樣的區分了,在Oracle下載Java時,也只有Java SE。Java SE就是Java。
J2EE:J2EE就是Java EE。這個概念也基本被廢棄了。不用太關心。
Apache:Apache是一個開源軟體基金會,也是一款Web伺服器,同時還是一種武裝直升機。。。。
學Java即學習Java的生態這是我自己感觸最深的一點,學習Java最重要的就是要學習Java的生態。這也是剛學習Java時,大部分人比較迷茫的。學習其他語言時,主要的精力可能在學習語言本身。而學習Java,將會需要花費大量的精力來學習Java生態中的各個元件,類庫,框架,產品等。當然Java語言本身也是很重要的,需要花很多時間來學習。下面我就列一下Java常用的元件吧:
Tomcat:Web容器。用於執行Java的Web應用。
Jetty:Web容器。
Maven:專案構建工具。大多數的專案都是使用maven構建的。
Gradle:角色同Maven,是Maven的下一代,升級版。但市場普及度不如Maven。
Spring:Java中最常用的框架。幾乎所有的專案都會使用。我會在後面單獨介紹。
Mysql:資料庫。Java應用一般選擇Mysql作為資料庫。
Mybatis:資料庫訪問框架,簡化資料庫訪問。
Netty:網路通訊元件。簡化網路程式設計。
log4j:Log for Java的縮寫,一款日誌框架。
junit:Java Unit的縮寫,Java的單元測試框架。
Apache Commons:Apache提供的通用功能的類庫。比如字串處理,集合處理等。
上面列出的是現在使用比較多的框架,一些過時了的比如Structs,Hibernate就不列舉了。框架太多了,一些過時的就不要去學習了,不要迷失在眼花繚亂的框架中。有時間可以慢慢了解。
SpringSpring框架,是目前Java生態中最重要,也是使用最廣的一個框架了。Spring框架由最初提供的一些核心功能,發展到今天,已經是一個非常完整的生態了。
Java是一個大生態,Spring是這個大生態中的另一個大生態。為什麼Spring如此重要,Spring提供了什麼功能呢?
Spring最重要,最核心,最有價值的地方其實就兩點:
IoC:Inverse of Control,控制反轉。
AOP:Aspect Orentied Programming,面向切面程式設計。
什麼是IoC?我第一次接觸IoC時,我是一臉蒙圈的,我問了隔壁搞了一年多Java的哥們,什麼是IoC,他噼裡啪啦和我說了一通,什麼解耦,依賴注入,Bean。完了我說,這個IoC有什麼關係。
IoC是什麼?如果要好理解,先從IoC這三個字母說起,Inverse of Control,控制反轉。
那就要解釋什麼是控制反轉了。我們來看下面這兩段程式碼:
MysqlDB是Mysql資料庫操作實現類
public class UserRepository {
private MysqlDB db;
public void insert(User user) {
db.insert(user);
}
}
IDB是一個介面,可能有Mysql,Oracle,Mondo等實現。
public class UserRepository {
private IDB db;
public void insert(User user) {
db.insert(user);
}
}
這兩段程式碼的唯一區別就是一個使用了MysqlDB,一個使用了IDB。他們都是UserRepository的依賴。UserRepository依賴他們來實現資料庫操作。
使用MysqlDB的程式碼中,UserRepository自己控制它依賴的元件是什麼,是很明確的MysqlDB。注意這裡出現了控制的字眼哦。
使用IDB的程式碼中,UserRepository自己不能控制它依賴的元件是什麼,可能是MysqlDB,可能是OracleDB,也可能是MondoDB。
本來UserRepository依賴誰是它自己控制的,這也是絕大部分其他語言和Java程式碼使用的方式。但是使用IDB的程式碼中,控制權不在UserRepository自己這裡,而是有外部來控制的。這個外部可能是其他類,可能是其他框架,總之,不是UserRepository自己。這就是控制反轉。
所以,控制反轉說的主要是類之間的依賴關係。當一個類將它依賴的一個具體類,變成一個抽象的介面時,這是控制反轉的表現形式。那控制反轉有什麼好處呢?
還是以上面的例子舉例:UserRepository真實想要的功能其實是“儲存資料”,而不是“儲存資料到Mysql”。可能今天使用Mysql,但某天發現數據量大了,需要遷移到Oracle獲取更大的吞吐量,也可能使用Nosql的Mongo實現更靈活的弱Schema儲存。如果使用具體的MysqlDB,程式碼就和MysqlDB耦合了,一旦更換了資料庫,所有依賴MysqlDB的地方的程式碼都需要改。而採用IDB的方式,程式碼是不用修改的。是解耦的。而且使用介面還有個好處是,我們可以基於抽象的介面生成動態代理,來實現更高階的功能。也就是動態給Java類新增功能。
關於IoC下面的圖解釋的比較清楚:
圖一中四個齒輪是互相齧合在一起,在軟體的角度上,就是類互相耦合。
圖二中四個齒輪不是齧合在一起的,而是透過IoC容器連線在一起,是解耦的。
還記得前面引用的那句話嗎?
計算機科學領域的任何問題都可以透過增加一個間接的中間層來解決IoC也是透過引入了額外的IoC容器來解決類之間的耦合問題。
圖一
圖二
AOPAOP:面向切面程式設計。我們可以看上面的圖。向下的三個箭頭是3個業務邏輯處理工程。他們處理了各自不同的邏輯。同時這3個業務處理都有列印日誌和安全的問題。那麼我們可以把這些通用的邏輯提取到一個公共的地方。就是AOP中的切面。日誌和安全是兩個切面,這兩個切面是可以橫切多個業務處理邏輯的。
使用AOP可以將一些公共的程式碼從各個業務類中剝離到切面中,提高系統的可維護性和擴充套件性。
Java進階有了上面這些基礎之後,基本算是Java入門了,開發基本的功能是可以了。接下來是一些進階的推薦:
Java多執行緒程式設計。
Netty網路程式設計。
JVM調優,排查問題。
Spring MVC,Spring Boot。
RPC框架使用:Dubbo,Spring Cloud,gRPC。
訊息中介軟體的使用。可以看看RocketMQ原始碼來學習。
容器:Docker,k8s等。(這個不是Java特有的,但是未來的趨勢,值得學習)
-
6 # It已成往事
做過幾年java開發,主要是客戶端的開發,最近由於工作的性質也在玩java後臺開發,國內的程式設計師職位目前屬於java最多,所以講現在學好java可以無數次的機會拿到高薪,也值得繼續好好的學習,對於一個java程式設計師如何來提升自己的程式設計技能。
1.java程式設計基礎
任何一個程式設計師都離不開程式設計語法,再厲害的框架也得依賴於基礎的程式設計語法,由於java開發整合開發工具的易用性很多程式設計師脫離開IDE就不會程式設計了,雖然我們脫離開IDE直接程式設計的可能性不大,可以在平時彌補的基礎時候嘗試一下,看看是不是常見的程式設計範例或者方法都能記得住,當然程式設計基礎的學習不僅僅是為了瞭解常見的語言語法。
基礎學習還包括常見的程式設計模式的學習,比如多執行緒的程式設計模式總結,單例模式適用在什麼場景,很多人可能覺得這些是高階程式設計類的東西,如果這些套路東西已經掌握的非常熟練,並且直接就可以拿過來使用,就是基礎性的東西了,定位不同產生的效果也會不一樣。
2.java
框架思想
這個話題如果展開會非常大,現在java由於生態鏈發展的非常好,所以各種開源框架也會非常多,很多框架相容性強有很多專門針對解決一方面的問題,在平時專案開發過程中還會因為集合很多功能,可能就會引入很多類庫解決專案中的問題,多個類庫組合在一起是不是會無縫銜接都是要考慮做的事情,這種事情做得多了也就慢慢形成一定的框架組合。
稍微再高階一點就是研究內部如何實現,造輪子的事情不是普通程式設計師隨便都能搞好的事情,雖然不一定人人都能造輪子起碼可以嘗試研究輪子是如何實現的,先從使用輪子開始,稍微層次再深刻一點就定製輪子,對應到專案中來使用。
一個java程式設計師提升能力,主要表現在如何解決問題,解決問題首先包括解決常見的語法錯誤,還有常見專案中遇見的框架問題,以及專案中的記憶體洩漏或者程式效能問題,還包括如何進行技術溝通,如何和客戶溝通拿到具體的需求,以及如何的細節,都是一個程式設計師需要具備的素質。
一個程式設計師首先利用技術解決實際的中的問題,並不能脫離生活而存在,很多程式設計師基本上都有一種內在的清高在裡面,無形之中會推崇技術的重要性,所以java程式設計師提升自己的關鍵不僅僅是技術主要的是從內在上利用技術上改進產品,並且調整自己的心態如何利用積蓄自己的技術,解決實際的問題。
程式設計師平時多研究開源社群,多去琢磨著利用自己的技術做點讓自己服氣的事情,才是真正的程式人生。
回覆列表
1、先學習語言基礎語法、面向物件、IO、執行緒程序這種程式設計基礎。
2、學習linux常用語法、MySQL資料庫等
3、學習高階框架的使用,比如SSM,這三個還是現在java最主流的框架,還有現在企業裡面非常火的,springboot,springcloud,dubbo,這些微服務的框架。
4、建議同步學習前端技術,現在企業裡面,前後端崗位還沒那麼分離,學習前端對你有好處,而且難度也不大。
當然你在學習的時候一定不要太重視理論部分,還是要以動手為主。其實java並沒有那麼簡單,尤其是自學起來,所以如果你要是想很系統的學習,建議還是自己去報個班去學習一下。像現在的一些大的培訓機構,比如中公之類的,都有IT培訓的班。