1. JAVA技術體系1.1 Java程序員
·高級特性
反射、泛型、註釋符、自動裝箱和拆箱、枚舉類、可變參數、可變返回類型、加強循環、靜態導入
·核心編程
IO、多線程、實體類、集合類、正則表達式、XML和屬性文件
·圖形編程
AWT(Java2D/JavaSound/JMF)、Swing、SWT、JFace
·網路編程
Applet、Socket/TCP/UDP、NIO、RMI、CORBA
·Java語法基礎
類、抽象類、接口、最終類、靜態類、匿名類、內部類、異常類、編碼規範
·Java開發環境
JDK、JVM、Eclipse、Linux
1.1.1 Java核心編程技術
Java,設計而又很是精巧的語言。學習Java,須從Java開發環境開始,到Java語法,再到Java的核心API。
1.Java開發入門:Java開發環境的安裝與使用,包括JDK命令、EclipseIDE、Linux下Java程序的開發和部署等。
2.Java語法基礎:基於JDK和Eclipse環境,進行Java核心功能開發,掌握Java面向對象的語法構成,包括類、抽象類、接口、最終類、靜態類、匿名類、內部類、異常的編寫。
3.Java核心API:基於JDK提供的類庫,掌握三大核心功能:
A、Java核心編程:包括Java編程的兩大核心功能——Java輸入/輸出流和多線程,以及經常使用的輔助類庫——實體類、集合類、正則表達式、XML和屬性文件。
B、Java圖形編程:包括Sun的GUI庫AWT(Java2D、JavaSound、JMF)和Swing,IBM和GUI庫SWT和Jface;
C、Java網絡編程:Applet組件編程,Socket編程,NIO非阻塞Socket編程、RMI和CORBA分佈式開發。
四、Java高級特性:掌握JDK1.四、JDK5.0、JDK6.0中的Java高級特性,包括反射、泛型、註釋,以及java高級特性——自動裝箱和拆箱、枚舉類、可變參數、可變返回類型、加強循環、靜態導入等。
1.2 JavaEE初級軟件工程師
·JSF框架開發技術
配置文件(頁面導航、後臺Bean)、JSF組件庫(JSFEL語言、HTML標籤、事件處理、)、JSF核心庫(格式轉換、輸入驗證、國際化)
·Javaweb核心開發技術
開發環境(Eclipse、Linux)
三大組件(JSP、JavaBean、Servlet)
擴展技術(EL、JSTL、Taglib)
·網頁開發技術
HTML、XML、CSS、JavaScript、AJAX
·數據庫設計技術
SQL、MySql、Oracle、SQLServer、JDBC
·Web服務器
Tomcat/Jetty/Resin/JBossWeb
·JavaWeb核心技術:
JavaWeb項目開發的全過程能夠分解爲:
網頁開發+數據庫設計——>JavaWeb項目開發,其中,
javaWeb由6項基本技術組成:JSP+JavaBean+Servlet+EL+JSTL+Taglib
而JSF正是將這6種技術進行有機結合的技術框架。
1.3 JavaEE中級軟件工程師
四種經典架構SSH一、SSI一、SSH二、SSI2
·Struts1表現層框架
入門配置、核心組件、標籤庫、國際化、數據檢驗、數據庫開發、Sitemesh集成、集成Hibernate/iBATIS
·Struts2表現層框架
入門配置、核心組件、標籤庫、國際化、數據校驗、Sitemesh集成轉換器、攔截器、集成Hibernate/iBATIS
·Spring業務層框架
入門配置、IoC容器、MVC、標籤庫、國際化、數據校驗、數據庫開發
·Hibernate持久層框架
MySQL、Oracle、SQLServeriBATIS持久層框架
·Web服務器
Tomcat/Jetty/Resin/JBossWeb
1.4 Java高級軟件工程師
·javaWeb開源技術與框架
工做流、規則引擎、搜索引擎、緩存引擎、任務調度、身份認證、報表服務、系統測試、集羣、負載平衡和故障轉移
·JavaWeb分佈式開發技術
JTA(Java事物管理)
JAAS(Java驗證和受權服務)
JNDI(Java命名和目錄服務)
JavaMail(Java郵件服務)
JMS(java信息服務)、WebService(web服務)
JCA(java鏈接體系)、JMS(java管理體系)
·應用服務器
JBossAS/WebLogic/WebSphere
1.5 JavaEE系統架構師
·面向雲架構(COA)
COA、SaaS、網格計算、集羣計算、分佈式計算、雲計算
·面向資源架構(ROA)
ROA、RESI
·面向web服務架構(SOA)
WebService、SOA、SCA、ESB、OSGI、EAI
·Java設計模式
建立式模式:抽象工廠/建造者/工廠方法/原型/單例
構造型模式:適配器/橋接/組合/裝飾/外觀/享元/代理
行爲型模式:責任鏈/命令/解釋器/迭代子/中介者/備忘錄/觀察者/狀態/策略/模板方法/訪問者
·Java與UML建模
對象圖、用例圖、組件圖、部署圖、序列圖、交互圖、活動圖、正向工程與逆向工程
1.6 CTO首席技術官
發展戰略
技術總監
團隊提高
團隊建設
項目管理
產品管理
2. Java技術路線圖
提示:前文對Java技術作了框架性的分析,包括Java SE、Java EE和Java ME,讓讀者瞭解了Java由哪些技術組成。爲了系統地學習這些技術,本文將制定一套完整的Java技術學習路線。
從 前文中咱們已經瞭解到,Java SE中包含了Java的基礎技術,Java EE中包含了網絡應用開發的各類技術,Java ME中包含了移動設備應用開發的各類技術,且Java SE是Java EE和Java ME的基礎,因此對於Java技術的學習,有兩條學習路線:
Java SE→Java EE:主要進行網絡應用開發,是Java技術學習的一條完整路線,是基於Java EE的企業應用開發,是目前Java應用的主要方向。
Java SE→Java ME:主要進行無線應用開發,該技術路線相對簡單一些。
Java SE→Java EE的技術由低到高造成了一個完整的體系,是Java/Java EE工程師成長必備的技術體系,下面咱們就根據Java SEàJava EE的技術體系制定一套完整的學習路線。
2.1 Java EE技術分類
根據Java EE技術的分層,咱們能夠將Java EE技術分爲如下3類。
2.1.1 Web應用技術
JDBC:JDBC(Java DataBase Connectivity)是一個基於標準SQL的數據庫訪問接口,主要用來鏈接數據庫和直接調用SQL命令執行各類SQL語句和存儲過程。JDBC至關與Microsoft平臺中的ODBC。
Servlet:Servlet是Java平臺上的CGI技術。它在服務器端運行,用以動態生成Web頁面。與傳統的CGI和許多其餘相似CGI的技術相比,Java Servlet具備更高的效率,它依靠線程的方式來支持併發訪問。
JSP(EL/JSTL):JSP(Java Server Page)是一種實現普通靜態HTML和動態頁面輸出混合編碼的技術,相似Microsoft ASP、PHP等技術。它藉助內容和外觀表現的分離,使得Web頁面開發能夠方便地劃分給頁面設計人員和程序員。在運行時態,JSP將會被首先轉換成 Servlet,它的效率和功能與Servlet相比沒有差異。
JavaBean:封裝業務邏輯的組件,能夠實現業務組件的重用。
JSF:JSF(JavaServer Faces)是一種專用於構建Java Web應用的頁面組件技術,它集成了Servlet、JSP、JavaBean、EL、JSTL和自定義標籤等各類頁面技術,方便繪製豐富的頁面組件。
2.1.2 企業級應用技術
EJB:EJB定義了一組可重用的組件Enterprise Beans。開發人員能夠利用這些組件,像搭積木同樣創建分佈式應用。EJB爲它的開發人員代管了諸如安全性、遠程鏈接、生命週期管理及事務管理等技術環節,簡化了商業邏輯的開發。
JNDI:JNDI(Java Naming and Directory Interface)用於定位分佈式系統中的各類對象,這些對象包括EJB、數據庫驅動、JDBC數據源及消息鏈接等,還可使用JNDI訪問各類特定的目錄服務,如LDAP、NDS和DNS等。
JMS:JMS消息服務是一組Java應用接口,它提供建立、發送、接收、讀取消息的服務,使得Java應用可以和各類消息中間件進行通訊,這些消息中間件包括IBM MQ-Series、Microsoft MSMQ及純Java的SonicMQ。
JavaMail:提供了一整套模擬郵件系統的抽象類。經過JavaMail,能夠建立郵件或消息應用程序。
JAF:JavaMail利用JavaBeans Activation Framework(JAF)來處理MIME-編碼的郵件附件。MIME的字節流能夠被轉換成Java對象,或者轉換自Java對象。
JTA:JTA提供了Java EE中處理事務的標準接口,它支持事務的開始、回滾和提交。同時在Java EE平臺上提供一個JTS(Java Transaction Service)做爲標準的事務處理服務,開發人員可使用JTA來使用JTS。
JACC:JACC(Java Authorization Service Provider Contract for Containers)在Java EE應用服務器和特定的受權認證服務器之間定義了一個鏈接的協約,以便將各類受權認證服務器插入到Java EE產品中去。
JAAS:JAAS(Java Authentication and Authorization Service)實現了一個Java版本的標準Pluggable Authentication Module(PAM)框架。它可用來進行用戶身份的鑑定,還能經過對用戶進行受權,實現基於用戶的訪問控制。
JCA:JCA(Java EE Connector Architecture)是Java EE體系架構的一部分,它提供了一套鏈接各類企業信息系統(包括ERP、SCM、CRM等)的體系架構,開發商只須要開發一套基於JCA的鏈接適配器,就 可以在任何Java EE服務器中鏈接並使用它。
JMX:JMX(Java Management Extensions)致力於解決分佈式系統管理的問題,它是一種應用編程接口、可擴展對象和方法的集合體,能夠跨越各類異構操做系統平臺、系統體系結構和網絡傳輸協議,開發無縫集成的面向系統、網絡和服務的應用。
2.1.3 Web服務技術
JAX- RPC:經過使用JAX-RPC(Java API for XML-based RPC),已有的Java類或Java應用都可以被從新包裝,並以Web Services的形式發佈。JAX-RPC提供了將RPC參數(in/out)編碼和解碼的API,使開發人員能夠方便地使用SOAP消息來完成RPC 調用,EJB應用也可使用JAX-RPC來包裝成Web服務。
SOA(SAAJ):SAAJ(SOAP with Attachemnts API for Java)是JAX-RPC的一個加強,爲進行低層次的SOAP消息操縱提供了支持。
JAXR:JAXR(Java API for XML Registries)提供了與多種類型註冊服務進行交互的API。JAXR運行客戶端訪問與JAXR規範相兼容的Web Servcices,這裏的Web Services即爲註冊服務。通常來講,註冊服務老是以Web Services的形式運行的。
2.2 Java技術學習路線圖
Java EE技術,從簡單到複雜依次包括:Web應用技術、企業級應用技術、Web服務技術,除了這些技術以外,還有一些開源的框架技術,包括Web框架 Struts/WebWork/Tapstry,業務層框架Spring,持久層框架Hibernate/iBATIS,這些也都是Java EE的應用技術。
這些技術雖然琳琅滿目,可是也是層層遞進,逐步造成了Java EE工程師的學習技術路線。除了Java EE技術以外,還有Java基礎技術、數據庫基礎、網頁開發技術須要在前期進行掌握。在學習了全部的Java基礎、Java EE技術以後,再付諸於實踐,你就達到了架構師的水平,進而走上技術管理的道路,能夠達到技術道路的峯頂——CTO。
爲了層層遞進學習這些技術,咱們爲你們提供了以下的圖片參考。 java
2.3 關於「Java高手真經」
引言:爲了幫助Java工程師的成長之路,咱們編著了「Java高手真經」系列圖書,該系列與Java技術學習路線層層對應,採用「快速原型法」(快速實現可複用的原型系統)進行技術講解,讓讀者邊學邊練,逐步提升。
一、技術體系課程
根據Java技術學習路線圖,咱們爲每一步的技術設置了一個專題課程,以下表所示。 mysql
二、學習目標:瞭解企業流行技術,實戰企業開發過程
大學生(或開發經驗不多的程序員,下同)在畢業後去IT公司面試與就業時,面臨一個問題,就是大學所學的知識與IT公司的知識結構脫節。
目前大學一般開設以下的基本課程:數據庫原理、數據結構、操做系統、離散數學、軟件工程、C語言、Java語言。這些課程都是最基本的課程,經過學習這些課程,大學生可以掌握IT開發的基礎理論知識,顯然在IT公司這些只是最基本的理論知識。
IT 公司要麼是進行產品研發,要麼是進行項目開發,可是都是基於項目實踐的,它要求的技能都是應用型的,例如:Java方面的Struts、 Hibernate、Spring、Eclipse,.NET方面的Visual Studio、ASP、ASP.NET,數據庫方面的Oracle、SQL Server、MySQL等。
由於大學裏學習的知識與IT公司所要求的知識結構處於兩個不一樣的層面,在大學生參加就業面試時,每每出現面試者由於不熟悉IT公司的知識結構,而不可以很好地體現出本身的能力。
所以,咱們就設計了這個系列,在大學畢業生與IT公司之間架起一座橋樑,讓大學畢業生可以在理論知識的基礎上,紮實學習IT公司的應用知識,進行技術與經驗的面試前培訓。
3. Java學習的30個目標
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和framework等來爲你服務。例如 Log4J(logging/tracing),Quartz(scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching),Lucene(full- textsearch),JakartaCommons等等。
21.若是你將要對接或者正和舊的系統或者本地平臺,你須要學習JNI(JavaNativeInterface)andJCA(JavaConnectorArchitecture)。
22.你須要熟悉JINI技術以及與它相關的分佈式系統,好比掌握CROBA。
23.你須要JavaCommunityProcess(JCP)以及他的不一樣JavaSpecificationRequests(JSRs),例如Portlets(168),JOLAP(69),DataMiningAPI(73),等等。
24.你應該熟練掌握一種JAVAIDE例如sunOne,netBeans,IntelliJIDEA或者Eclipse。(有些人更喜歡VI或EMACS來編寫文件。隨便你用什 git