Java是一種可以撰寫跨平臺應用程式的物件導向的程式設計語言。具有卓越的通用性、高效性、和安全性。廣泛應用於PC,行動電話和網際網路,擁有全球最大的開發者社群。在全球雲端計算和網際網路的背景下,java具備更顯著的優勢就業前景。
廣闊的市場,光明的前景總會讓人嚮往,很多人立志要學習java,從事開發,走上高階大氣的IT道路。
親愛的JAVA醬們: 學習有困難或者想獲取JAVA資料請點選連結加入官方學習2群:JAVA官方學習群號 587372254(←長按可複製)
但是,在學習之前,看到各種程式碼如看天書,又總會聽到很多外行人宣揚著java有多難,絕不是平庸者的選擇。很多人就會因此打退堂鼓,認為自己不夠聰明,肯定學不來。那麼,java程式設計真的是聰明人才能玩的遊戲嗎?
有人曾經做過統計,詢問500多已經參加工作的 Java開發者,“學習java是否困難?”有74%的人認為不難,說難學的僅佔26%,那麼這74%全部都是聰明人,智商比普通人高嗎?顯然不是的。
說到底Java,它只是一種語言,僅此而已。跟我們平時學習母語,英語並無不同,只是他的適用物件是計算機,手機等非生物,但基本的控制結構什麼的,所有的語言都差不多。
學習java只要你掌握了程式設計的本質和邏輯關係,那麼程式語言,開發平臺,編譯工具都不是問題。真正評判你的專業水平的還是你的程式設計思想,語言的機制本身並不會給程式帶來多大的影響。
而且,每個人的難易標準並不相同,習慣說不的人,總會放大困難,給自己設定障礙。
李嘉誠說:“當我騎自行車時,別人說路途太遠,根本不可能達到目的地,我沒理,半道上我換成小轎車;當我開小轎車時,別人說,不要再往前開,前面就是懸崖峭壁沒路了,我沒理,繼續往前開,開到懸崖峭壁我換飛機了,結果我去到了任何我想去的地方“。
說到底,修行還是要靠自己,難不難何必讓別人給你設立標準?只要你想做,下一秒就能開始。不要讓你的夢想毀在別人的嘴裡,因為別人不會對你的夢想負責。
高效學習Java路線圖分享
整理一下學習Java的一個路線圖吧,然後按照這個路線圖來談談我的一些感受。
一、Java核心
這是學習Java的基礎,掌握程度的深淺甚至直接影響後面的整個學習程式。
Java的核心主要包括幾個部分:
1、初級的有語法基礎、物件導向思想。
學習任何一門語言語法都是必須的,因為Java的接近自然語言,也是一種相對比較容易學的語言。同時物件導向程式設計更是其核心思想,要理解其實只要記住一句話就行了,那就是:一切皆是物件。
2、中級的IO流、多執行緒、反射及註解等。
IO流程、多執行緒等是相對比較高階一點的了,通過學習我們會發現這些都很有用而且很有趣。例如我們可以讀取一個Excel檔案、將一個檔案分離,做一個時鐘、使用多個執行緒傳送郵件等等很多有意思的事。另外反射及註解更是後面流行框架SSH等的基礎,在使用中你便會慢慢感受到它的無窮魅力。
3、高階一點的就是設計模式和框架之類了。
要學習好一門語言,僅僅會使用還是不夠的,我們不僅要深入研究其原理,而且還要找到其一些共性的東西,從而減少反覆的勞動,讓程式碼可重用、更可靠且更容易被別人理解。
二、前端Web
現在來說Java最流行的應用還是Web開發。那麼作為Web開發,對於前臺的知識的學習也是必須的,當然並不是一定要按照前端工程師的標準去要求。但是一些基礎的知識也是必須要掌握的,畢竟Web應用是前臺和後臺的一個互動的過程。像HTML、CSS、Javascript等都是基礎的知識,另外作為開發人員對目前最流行的Javascript框架Jquery更是必學不可的。
三、資料庫
有人說,所有的應用無非就是資料的輸入、處理到輸出的過程。期間同時可能還會涉及到資料的儲存問題。對於結構化的資料,我們常用的還是像Oracle、Mysql和PostgreSQL之類的關係型資料庫。同時針對資料庫程式設計還是PL/SQL需要學習。使用Java訪問資料庫的話還有JDBC。那麼對於非結構化的資料以及大資料該如何處理呢?其實這裡也已經有了非常成熟的解決方案了,那便是Hadoop。就Hadoop而言他並不是一種思想,更多是一個實現了Mapreduce模式的框架。
四、J2EE
好了,前面這麼多準備的工作。下面我們進入正題。作為Java開發,CoreJava是核心,而作為JavaWeb開發,我認為Servlet才是核心。Servlet是伺服器端的Java應用程式,但是與普通的Java應用程式不同的是,它是由web伺服器來載入啟動,即我們常說的Servlet,如Tomcat便是servlet容器。另外談到J2EE開發,這裡有一個重要的模型不得不提一下,很多人其實已經想到了,那便是MVC(模型-檢視-控制器)模型。在傳統的web開發中,往往是JavaBean充當模型、JSP做檢視而Servlet作為控制器。
五、框架
說到框架,其實已經提到了著名的MVC模型,SSH(Struts+Spring+Hibernate)就是一個非常好的實現。對於每一個框架的作用,我想就不用多說了,畢竟這裡並不是想寫一本教程。另外還有工作流開發的JBPM,搜尋引擎Lucence及使系統對外提供介面的webservice應用元件等都是應該要掌握的。
六、伺服器
關於伺服器,像tomcat、jboss、weblogic及websphere等便不提了,因為太普遍了。這裡要說的是Nginx,
Nginx ("engine x")是一個高效能的HTTP和反向代理伺服器。其以佔有記憶體少,併發能力強而著稱,連新浪、網易、騰訊這類知名企業也在使用,所以還有什麼理由不去學它呢?
七、工具
這裡主要介紹幾個開發輔助工具。如日誌工具Log4j、測試工具Junit、版本管理工具SVN還有專案管理maven等。另外還有第三方外掛Ectable。
八、專案示例
Springside是以Spring框架為核心的J2EE應用參考示例,是JavaEE中的比較主流的技術選型及最佳實踐的總結與演示,非常值得一看。把它看透了,J2EE就差不多了甚至是比較厲害的了。
說到底,對於技術的學習,有一個規則是通用的,那便是實踐。把學習到的東西馬上用起來做出一個示例來,我認為是一種比較好的學習方法。首先它是對零散知識的一個自然總結,另外通過一些小示例的實踐,可以增加學習的興趣。而且可以通過示例,深入學習其實現的原理,加深掌握的程度且能更快的應用到實際開發中,提高工作效率。