1. 程式人生 > >java詳細學習路線及路線圖(來自大神的總結)

java詳細學習路線及路線圖(來自大神的總結)

 

 

java詳細路線:

 

 

圖片來源:https://blog.csdn.net/hao65103940/article/details/78478472

本文將告訴你學習Java需要達到的30個目標,學習過程中可能遇到的問題,及學習路線。希望能夠對你的學習有所幫助。對比一下自己,你已經掌握了這30條中的多少條了呢?

路線

 

Java發展到現在,按應用來分主要分為三大塊:J2SE,J2ME和J2EE。

 

這三塊相互補充,應用範圍不同。

 

J2SE就是Java2的標準版,主要用於桌面應用軟體的程式設計;

 

J2ME主要應用於嵌入是系統開發,如手機和PDA的程式設計;

 

J2EE是Java2的企業版,主要用於分散式的網路程式的開發,如電子商務網站和ERP系統。

先學習j2se

 

要學習j2ee就要先學習j2se,剛開始學習j2se先建議不要使用IDE,然後漸漸的過渡到使用IDE開發,畢竟用它方便嘛。學習j2se推薦兩本書,《java2核心技術一二卷》,《java程式設計思想》,《java模式》。其中《java程式設計思想》要研讀,精讀。這一段時間是基本功學習,時間會很長,也可能很短,這要看學習者自身水平而定。

 

不要被IDE糾纏

 

在學習java和j2ee過程中,你會遇到五花八門的IDE,不要被他們迷惑,學JAVA的時候,要學語言本身的東西,不要太在意IDE的附加功能,JAVA程式設計在不同IDE之間的轉換是很容易的,過於的在意IDE的功能反而容易耽誤對語言本身的理解。目前流行的IDE有jbuilder,eclipse和eclipse的加強版WSAD。用好其中一個就可以了,推薦從eclipse入手j2ee。因為Jbuilder更適合於寫j2se程式。

 

選擇和學習伺服器使用配置

 

當你有了j2se和IDE的經驗時,可以開始j2ee的學習了,web伺服器:tomcat,勿庸置疑,tomcat為學習web服務首選。而應用伺服器目前主要有三個:jboss、weblogic、websphere。有很多專案開始採用jboss,並且有大量的公司開始做websphere或weblogic向jboss應用伺服器的移植(節省成本),這裡要說的是,學習tomcat和jboss我認為是首選,也是最容易上手的。學習伺服器使用配置最好去詢問有經驗的人(有條件的話),因為他們或許一句話就能解決問題,你自己上網摸索可能要一兩天(我就幹過這種傻事),我們應該把主要時間放在學習原理和理論上,一項特定技術的使用永遠代替不了一個人的知識和學問。

學習web知識

 

如果你是在做電子商務網站等時,你可能要充當幾個角色,這是你還要學習:

 

html,可能要用到dreamwave等IDE。

 

Javascript,學會簡單的資料校驗,資料聯動顯示等等。

 

J2eeAPI學習

 

學習j2eeAPI和學習伺服器應該是一個迭代的過程。

 

先學習jsp和servlet程式設計,這方面的書很多,我建立看oreilly公司的兩本《jsp設計》和《java servlet程式設計》,oreilly出的書總是那本優秀,不得不佩服。

 

學習jdbc資料庫程式設計,j2ee專案大多都是MIS系統,訪問資料庫是核心。這本應屬於j2se學習中,這裡拿出來強調一下。

 

學習jndi api,它和學習ejb可以結合起來。

 

學習ejb api,推薦書《精通ejb》

 

經過上面的這些的學習,大概可以對付一般的應用了。

 

有人說跟著sun公司的《j2ee tutorial》一路學下來,當然也可以。

 

學習ejb設計模式和看程式碼(最重要)

 

設計模式是練內功,其重要性可以這麼說吧,如果你不會用設計模式的話,你將寫出一堆使用了ejb的垃圾,有慢又是一堆bug,其結果不如不用ejb實現(ejb不等於j2ee)

無論學習什麼語言,都應該看大量程式碼,你看的程式碼量不到一定數量,是學不好j2ee的。

目前有很多開源的工程可以作為教材:

 

jive論壇

 

petstore sun公司

 

dune sun公司

 

等等,研讀一個,並把它用到自己的工程中來。

 

J2ee其他學習

 

當你漸漸對j2ee瞭解到一定深度時,你要開始關注當前領域中的一些技術變化,J2ee是一塊百家爭鳴的領域,大家都在這裡提出自己的解決方案,例如structs,hiberate,ofbiz等等,學習這些東西要你的專案和目標而定,預先補充一下未嘗不可,但不用涉及太深,畢竟學習原理和理論是最最重要的事。

 

 

目前常見j2eeAPI

 

JavaServer Pages(JSP)技術1.2

 

Java Servlet技術2.3

 

JDBC API 2.0

 

Java XML處理API(JAXP)1.1

 

Enterprise JavaBeans技術2.0

 

Java訊息服務(JMS)1.0

 

Java命名目錄介面(JNDI)1.2

 

Java事務API(JTA) 1.0

 

JavaMail API 1.2

 

JavaBeans啟用架構(JAF)1.0

 

J2EE聯結器體系結構(JCA)1.0

 

Java認證和授權服務(JAAS)1.0

 

學習上面的某些API要以你的專案而定,瞭解所有他們總之是有好處的。

 

上面印證了大家說的一句話,java語言本身不難學,但是技術太多,所以學java很費勁。回想一下,基本上每個初學者,在剛學習java的時候可能都會問別人這麼一句話,你怎麼知道的哪個方法(api)在哪個包裡的?呵呵,無他,唯手熟爾。

 

1 基礎是王道。我們的基礎要紮實紮實再紮實。

 

以上面的整個流程來看java的技術分支很多,要想完全掌握是絕對不可能的。我們只有從中精通1到2個部分。但是java也是有通性的,所謂萬變不離其宗。java的所有程式設計思路都是“面向物件”的程式設計。所以大家在往更高境界發展以前一定要打好基礎,這樣不管以後是jree還是j3d都有應刃而解的感覺。在這裡強烈推薦“java程式設計思想”.

 

2 所謂打好基礎並不是說要熟悉所有的java程式碼。我說的意思是要了解java的結構。class,methode,object,各種套用import,extend 讓自己在結構上對java有個立體而且整體的瞭解即刻。其實java的學習不用固執於對程式碼的熟悉,1來java本身帶有很多demo,java2d

的所有問題幾乎都有demo的樣例。2來java是開放程式碼,即使沒有demo網路上也有很多高手把自己的程式碼分享。所以不要怕沒有參考,參考是到處都有的。

 

3 最後還有1點經驗和大家分享,對sun的api一定要學會活用,不論是學習還是作為參考api都有很大的幫助,在完全瞭解java的結構的基礎上,不論什麼方法都是可以通過api來找到的.所以不要怕找不到方法,瞭解結構,瞭解api就能找到方法。

 

重點

 

精通:能夠掌握此技術的85%技術要點以上,使用此技術時間超過兩年,並使用此技術成功實施5個以上的專案。能使用此技術優化效能或程式碼,做到最大可能的重用。

熟練:能夠掌握此技術的60%技術要點以上,使用此技術時間超過一年,並使用此技術成功實施3個以上的專案。能使用此技術實現軟體需求並有經驗的積累在實現之前能做優化設計儘可能的實現模組或程式碼的重用。

 

熟悉:能夠掌握此技術的50%技術要點以上,使用此技術時間超過半年上,並使用此技術成功實施1個以上的專案。能使用此技術實現軟體需求。

 

瞭解:可以在實際需要時參考技術文件或幫助檔案滿足你的需要,基本知道此項技術在你運用是所起的作用,能夠呼叫或者使用其根據規定提供給你的呼叫方式。

 

二:基本要求

 

1:html 掌握程度:熟練。原因:不會html你可能寫JSP?

 

2:javascript/jscript:掌握程度:熟悉。原因:client端的資料校驗、一些頁面處理需要你使用指令碼。

 

3:CSS 掌握程度:熟悉。原因:實現頁面風格的統一通常會使用css去實現。

4:java基礎程式設計 掌握程度:熟練。原因:不會java你能寫JSP?開玩笑吧。還有你必須非常熟悉以下幾個包java.lang;java.io;java.sql;java.util;java.text;javax.sevrlet;javax.servlet.http; javax.mail;等。

 

5:sql 掌握程度:熟練。原因:如果你不使用資料庫的話你也許不需要掌握sql。同時你必須對以下幾種資料庫中的一種以上的sql比較熟悉。Oracle,DB2,Mysql,Postgresql.

6:xml 掌握程度:瞭解 原因:AppServer的配置一般是使用XML來實現的。

7:ejb 掌握程度:瞭解 原因:很多專案中商業邏輯是由ejb來實現的,所以呢„„

8:以下幾種AppServer(engnier) 你需要了解一個以上。

a:)Tomcat b:)WebLogic c:)WebSphere d:)JRun e:)Resin 原因:你的jsp跑在什麼上面啊!

三:選擇要求(因專案而定)

 

1:LDAP 掌握程度:瞭解 原因:LADP越來越多的運用在許可權控制上面。

 

2:Struts 掌握程度:熟練 原因:如果符合MVC設計通常會使用Struts實現C。

3:Xsp 掌握程度:根據需要而定很多時候是不使用的,但在不需要使用ejb但jsp+servlet+bean實現不了的時候Xsp是一個非常不錯的選擇。

 

4:Linux 掌握程度:熟悉 原因:如果你的運用跑在Linux/Unix上你最少要知道rm ,mv,cp,vi,tar gzip/gunzip 是用來做什麼的吧。

 

四:工具的使用 1:UltraEdit(EditPlus)+jakarta-ant+jakarta-log4j; 2:Jubilder4-6 3:Visual Age For Java 4:VCafe

以上的工具你選擇你自己熟悉的吧。不過強烈建議你用log4j做除錯工具。

 

五:成長之路

 

1:html 學習時間,如果你的智商在80以上,15天時間應該夠用了。至少你能手寫出一個頁面來。

 

2:jacascript/jscript學習時間,這真的不好說,比較深奧的東西,夠用的話一個禮拜可以學寫皮毛。

 

3:css 學習時間,三天的時間你應該知道如何使用css了,不要求你寫,一般是美工來寫css。

 

4:java 學習時間,天才也的三個月吧。慢滿學吧。如果要精通,那我不知道需要多少時間了。用來寫

 

jsp,四個月應該夠了。

 

5:sql 學習時間,只需要知道insert ,delete ,update ,select,create/drop table的話一天你應該知道了。

 

6:xml 學習時間,我不知道我還沒有學會呢。呵呵。不過我知道DTD是用來做什麼的。

7:ejb 學習時間,基本的呼叫看3天你會呼叫了。不過是建立在你學會java的基礎上的。

8:熟悉AppServer,Tomcat四天你可以掌握安裝,配置。把jsp跑起來了。如果是WebLogic也夠了,但要使用ejb那不關你的事情吧。SA做什麼去了。

 

9:熟悉Linux那可得需要不少時間。慢慢看man吧。

 

10:Struts如果需要你再學習。

 

目標

 

1.你需要精通面向物件分析與設計(OOA/OOD)、涉及模式(GOF,J2EEDP)以及綜合模式。你應該十分了解UML,尤其是class,object,interaction以及statediagrams。

 

2. 你需要學習JAVA語言的基礎知識以及它的核心類庫(collections,serialization,streams, networking, multithreading,reflection,event,handling,NIO,localization,以及其他)。

3.你應該瞭解JVM,classloaders,classreflect,以及垃圾回收的基本工作機制等。你應該有能力反編譯一個類檔案並且明白一些基本的彙編指令。

 

4. 如果你將要寫客戶端程式,你需要學習WEB的小應用程式(applet),必需掌握GUI設計的思想和方法,以及桌面程式的SWING,AWT, SWT。你還應該對UI部件的JAVABEAN元件模式有所瞭解。JAVABEANS也被應用在JSP中以把業務邏輯從表現層中分離出來。

5.你需要學習java資料庫技術,如JDBCAPI並且會使用至少一種persistence/ORM構架,例如Hibernate,JDO, CocoBase,TopLink,InsideLiberator(國產JDO紅工廠軟體)或者iBatis。

6.你還應該瞭解物件關係的阻抗失配的含義,以及它是如何影響業務物件的與關係型資料庫的互動,和它的執行結果,還需要掌握不同的資料庫產品運茫 熱?oracle,mysql,mssqlserver。

 

7.你需要學習JAVA的沙盒安全模式(classloaders,bytecodeverification,managers,policyandpermissions,

codesigning, digitalsignatures,cryptography,certification,Kerberos,以及其他)還有不同的安全/認證 API,例如JAAS(JavaAuthenticationandAuthorizationService),JCE (JavaCryptographyExtension),JSSE(JavaSecureSocketExtension),以及JGSS (JavaGeneralSecurityService)。

 

8.你需要學習Servlets,JSP,以及JSTL(StandardTagLibraries)和可以選擇的第三方TagLibraries。

9.你需要熟悉主流的網頁框架,例如JSF,Struts,Tapestry,Cocoon,WebWork,以及他們下面的涉及模式,如MVC/MODEL2。

 

10.你需要學習如何使用及管理WEB伺服器,例如tomcat,resin,Jrun,並且知道如何在其基礎上擴充套件和維護WEB程式。

 

11.你需要學習分散式物件以及遠端API,例如RMI和RMI/IIOP。

 

12.你需要掌握各種流行中介軟體技術標準和與java結合實現,比如Tuxedo、CROBA,當然也包括javaEE本身。

 

13.你需要學習最少一種的XMLAPI,例如JAXP(JavaAPIforXMLProcessing),JDOM(JavaforXMLDocumentObjectModel),DOM4J,或JAXR(JavaAPIforXMLRegistries)。

14. 你應該學習如何利用JAVAAPI和工具來構建WebService。例如JAX-RPC(JavaAPIforXML/RPC),SAAJ (SOAPwithAttachmentsAPIforJava),JAXB(JavaArchitectureforXMLBinding),JAXM (JavaAPIforXMLMessaging), JAXR(JavaAPIforXMLRegistries),或者JWSDP(JavaWebServicesDeveloperPack)。

 

15.你需要學習一門輕量級應用程式框架,例如Spring,PicoContainer,Avalon,以及它們的IoC/DI風格(setter,constructor,interfaceinjection)。

 

16. 你需要熟悉不同的J2EE技術,例如JNDI(JavaNamingandDirectoryInterface),JMS (JavaMessageService),JTA/JTS(JavaTransactionAPI/JavaTransactionService), JMX (JavaManagementeXtensions),以及JavaMail。

 

17.你需要學習企業級 JavaBeans(EJB)以及它們的不同元件模式:Stateless/StatefulSessionBeans,EntityBeans(包含 Bean- ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者 Message-DrivenBeans(MDB)。

18.你需要學習如何管理與配置一個J2EE應用程式伺服器,如WebLogic,JBoss等,並且利用它的附加服務,例如簇類,連線池以及分散式處理支援。你還需要了解如何在它上面封裝和配置應用程式並且能夠監控、調整它的效能。

 

19.你需要熟悉面向方面的程式設計以及面向屬性的程式設計(這兩個都被很容易混淆的縮

 

寫為AOP),以及他們的主流JAVA規格和執行。例如AspectJ和AspectWerkz。

 

20. 你需要熟悉對不同有用的API和frame work等來為你服務。例如Log4J(logging/tracing),Quartz (scheduling),JGroups(networkgroupcommunication),JCache (distributedcaching), Lucene(full-textsearch),JakartaCommons等等。

 

21.如果你將要對接或者正和舊的系統或者本地平臺,你需要學習JNI (JavaNativeInterface) and JCA (JavaConnectorArchitecture)。

 

22.你需要熟悉JINI技術以及與它相關的分散式系統,比如掌握CROBA。

 

23.你需要JavaCommunityProcess(JCP)以及他的不同JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。

 

24.你應該熟練掌握一種JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜歡VI或EMACS來編寫檔案。隨便你用什麼了:)

 

25.JAVA(精確的說是有些配置)是冗長的,它需要很多的人工程式碼(例如EJB),所以你需要熟悉程式碼生成工具,例如XDoclet。

 

26.你需要熟悉一種單元測試體系(JNunit),並且學習不同的生成、部署工具(Ant,Maven)。

27.你需要熟悉一些在JAVA開發中經常用到的軟體工程過程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。

 

28.你需要能夠深入瞭解加熟練操作和配置不同的作業系統,比如GNU/linux,sunsolaris,macOS等,做為跨平臺軟體的開發者。

 

29.你還需要緊跟java發展的步伐,比如現在可以深入的學習javaME,以及各種java新規範,技術的運用,如新起的web富客戶端技術。

 

30.你必需要對opensource有所瞭解,因為至少java的很多技術直接是靠開源來驅動發展的,如java3D技術。(BlogJava-Topquan's Blog)

原文連結:https://blog.csdn.net/javaniuniu/article/details/51858593