半路轉行學習java有前途嗎?
隨著目前大數據、人工智能領域的快速發展,有不少傳統行業的人才開始轉向IT領域,而轉向IT領域一個最常見的選擇就是從編程語言開始學起。
編程語言的選擇有很多,比如Java、PHP、Python等,這些編程語言都有自己特定的應用場景和開發領域。所以,在選擇一門編程語言的同時要對這門編程語言所處的應用領域有一個全面的了解,然后把這個領域所需要掌握的知識梳理出來,形成一個學習脈絡,這樣才能系統的掌握這門編程語言。
Java語言最常見的應用領域是做Web開發、移動互聯開發和大數據開發,下面分別把這三個開發領域所需要掌握的知識結構做一個描述,以方便初學者制定一個系統的學習計劃。
Web開發知識結構Java Web開發總的來說就是三層開發,分別是客戶層(Client Tier)、服務層(Bussiness Tier)、數據層(EIS Tier)。其中客戶層需要掌握的知識主要就是前端開發知識,包括Html、CSS、JavaScript,作為Web開發人員來說,前端開發知識還是應該系統學習一下,尤其是JavaScript更應該深入學習一下,JavaScript的發展前景還是不錯的,而且目前JavaScript也在從前端走向后端。
服務層相對來說比較復雜,也可以把服務層分成多個業務處理層,也就是所謂的N層結構,但是目前服務層的編寫更傾向于分布式服務結合微服務的方式來開發。先說一下傳統Java Web開發技術方案,傳統方案包括JSP、Servlet、JavaBean、JDBC、JTA、JNDI、RMI、JMS、EJB等內容,隨著JavaEE被移交給Eclipse基金會,目前整個Java Web開發方案中,JavaBean的地位被突出出來,其他服務則分別采用了封裝的方式來呈現,尤其是Spring的解決方案。所以說,現在的Java Web開發人員,可能對這些概念已經比較陌生了,因為已經被封裝了。
目前在服務端更多采用了Spring的輕量級解決方案,實際上Spring的解決方案已經有十余年的歷史了,從最初的BeanFactory到ApplicationContext再到今天的SpringBoot+SpringCloud的解決方案,可以說Spring在輕量級的道路上越走越遠,也越走越好。
數據層目前的主流應用依然是關系型數據庫,比如Mysql就是一個必須要掌握的數據庫系統,這部分內容的難度并不高,Java Web開發對存儲過程的編寫沒有過多的要求。隨著大數據技術的發展,NoSql數據庫的使用也將成為一種常態,所以也需要學習一下,比如Redis、Hbase、MongoDb、Neo4j。
移動互聯開發知識結構移動互聯開發有兩種選擇,一種選擇是只做移動端,另一種選擇是移動端和后端都需要做,如果選擇后者,那么就需要先學習Java Web開發,然后再學習移動端開發。一般情況下,做移動互聯開發的程序員也會系統的學習一下Java Web開發,做一個全棧程序員。
移動端的內容包括三個大塊的內容,分別是Android開發、iOS開發和html5開發,當然了如果把WP開發也學習一下就比較完整了。Android開發采用的就是Java語言,所以學習起來還是比較方便的,重點內容集中在Actiity、Intent、Fragment、Service、SQLite等幾個大的內容上,難度不大,但是需要做大量的實驗。
html5的學習是一個重點內容,目前基于html5的場景開發非常多,尤其在移動端更是如此。
大數據開發知識結構大數據開發涉及到的內容非常多,學習大數據開發之前最好把Java Web開發系統的學習一下,這樣在學習大數據開發的時候能更容易一些。曾經有程序員問過我,學習大數據開發需要學習JavaWeb開發嗎?答案是肯定的,學習Java Web開發能更加全面的理解大數據開發,同時能完成項目落地、資源整合,未來Java Web開發的大數據平臺化也是一個大趨勢。
Java做大數據開發需要學習一下hadoop開發生態,包含的內容比較多,比如Spark、Ambari、Avro、Hbase、Hive、Cassandra、Chukwa、Mahout、Pig、Tez、ZooKeeper等內容。
Java做大數據開發還涉及到算法的設計與實現,這些內容都需要一個系統的學習過程。
我使用Java多年,大數據也是我目前的主要研究方向,我會陸續在頭條寫一些關于大數據和Java開發方面的文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收獲。
如果有大數據方面的問題,也可以咨詢我。
謝謝!