JAVA體系結構簡介


Java基本介紹
php


      JAVA 是一種跨平臺的面向對象的程序設計語言,於1995年由Sun公司推出(2010年被Oracle收購了), JAVA平臺包括三大部分:JavaEE(Java平臺企業版),JavaME(Java平臺微型版),JavaSE(Java平臺標準版)。JavaSE也就是Java基礎,用於開發Java桌面程序之類的,通常學習Java都從JavaSE開始,JavaEE能夠說是Java Web開發,而JavaME是指移動開發和嵌入式開發(如今基本上已經淘汰了這個版本,無用武之地了)。html

      1998年12月,SUN公司發佈了JDK1.2,開始使用Java 2 這一名稱,目前咱們已經基本再也不使用JDK1.1版本,因此咱們平時所說的Java都是指Java2。自Java1.2以後Java版本統稱爲Java2,因此咱們平時對Java Web開發,都叫 J2EE。其實如今隨着JDK版本的不斷髮布,已經去「2」了,還原爲Java EE,可是你們已經叫J2EE叫成習慣了。前端

      本體系介紹,主要以J2EE爲主。java

J2EE 簡單介紹python

 

J2EE是一套全然不一樣於傳統應用開發的技術架構,包含許多組件,主要可簡化且規範應用系統的開發與部署,進而提升可移植性、安全與再用價值。
       J2EE平臺由一整套服務(Services)、應用程序接口(APIs)和協議構成,它對開發基於Web的多層應用提供了功能支持,下面對J2EE中的一些主要技術規範進行簡單的描述(簡單看下,先有個印象就行,先知道這些名詞就行):程序員

1:JDBC(Java Database Connectivity)web

JDBC API爲訪問不一樣數據庫提供了統一的路徑,像ODBC同樣,JDBC開發者屏蔽了一些細節問題,另外,JDBC對數據庫的訪問也具備平臺無關性.spring

2:JNDI(Java Name and Directory Interface)數據庫

JNDI API 被用於執行名字和目錄服務.它提供了一致的模型來存取和操做企業級的資源DNS和LDAP,本地文件系統,或應用服務器中的對象.編程

3:EJB(Enterprise JavaBean)

J2EE技術之因此贏得普遍重視的緣由之一就是EJB.它提供了一個框架來開發和實施分佈式商務邏輯,由此很顯著的簡化了具備可伸縮性和高度複雜的企業級應用程序的開發。EJB規範定義了EJB組件在什麼時候如何與它們的容器進行交互做用。容器負責提供公用的服務,例如目錄服務,事務管理,安全性,資源緩衝池以及容錯性。但這裏值得注意的是,EJB並非實現J2EE的惟一路徑.正是因爲J2EE的開放性,使得全部的廠商可以以一種和EJB平行的方式來達到一樣的目地。

       4:RMI(Remote Method Invoke)

遠程方法請求,RMI協議調用遠程對象上的方法。它使用了序列化的方式在客戶端和服務器之間傳遞數據。RMI是一種被EJB使用的更底層的協議。

.

5:Java IDL/CORBA(通用對象請求代理架構是軟件構建的一個標準 )

在Java IDL的支持下,開發人員能夠將Java和CORBA集成在一塊兒。他們能夠建立Java對象並使之可在CORBA ORB中展開,或者他們還能夠建立Java類並和其它ORB一塊兒展開的CORBA對象客戶。後一種方法提供了另一種途徑,經過它Java能夠被用於將你的新的應用程序和舊的系統集合在一塊兒。

6:JSP(Java Server Pages

JSP頁面由HTML代碼和嵌入其中的Java代碼組成.服務器在頁面被客戶端所請求之後對這些Java代碼進行處理,而後將生成的HTML頁面返回給客戶端瀏覽器.

      7:Java Servlet

Servlet 是一種小型的Java程序,它擴展了web服務器的功能.做爲一種服務器的應用,當被請求時開始執行,這和CGI Perl腳本很類似.Servlet提供的功能大多和JSP相似,不過實現的方式不一樣.JSP一般是大多數的HTML代碼中嵌入少許的Java代碼,而servlet所有由java寫成而且生成HTML。

      8:XML

XML是一種能夠用來定其它標記語言的語言.它被用來在不一樣的商務過程當中共享數據.XML的發展和java是相互獨立的,可是,它和java具備的相同目標是平臺獨立性。

9:JMS

MS是用於和麪向對象消息的中間件相互通訊的應用程序接口.它既支持點對點的域,有支持發佈/訂閱類型的域,而且提供了下列類型的支持:消息傳遞,事務型消息的傳遞,一致性消息和具備持久性的訂閱者支持.JMS還提供了另外一種方式來對新系統和舊後臺系統相互集成。

10:JTA

JTA定義了一種標準API,應用程序由此能夠訪問各類事務監控。

     11:JTS

JTS是CORBA OTS事務監控的基本實現.JTS規定了事務管理的實現方法.該事務管理器是在高層支持java Transaction API規範,而且在較低層次實現OMG OTS specification 和Java印象.JTS事務管理器爲應用程序服務器,資源管理器,獨立的應用以及同窗資源管理器提供了事務服務。

     12:JavaMail

JavaMail是用於存取郵件服務器的API,它提供了一套郵件服務器的抽象類.不只支持SMTP服務器,也支持IMAP服務器.

     13:  JPA(Java Persistence API)

JPA經過JDK 5.0註解或XML(標準通用標記語言的子集)描述對象-關係表的映射關係,並將運行期的實體對象持久化到數據庫中。

J2EE經常使用框架

 

Spring Framework【Java開源J2EE框架】

Spring是一個解決了許多在J2EE開發中常見的問題的強大框架。Spring提供了管理業務對象的一致方法而且鼓勵了注入對接口編程而不是對類編程的良好習慣。Spring的架構基礎是基於使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器做爲構建完關注全部架構層的完整解決方案方面是獨一無二的。Spring提供了惟一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率而且減小了可能的錯誤。Spring的數據訪問架構還集成了Hibernate和其餘O/R mapping解決方案。Spring還提供了惟一的事務管理抽象,它可以在各類底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其餘企業事務--若是你須要--還能實現你本身的 aspects。這個框架足夠強大,使得應用程序可以拋開EJB的複雜性,同時享受着和傳統EJB相關的關鍵服務。Spring還提供了能夠和IoC容器集成的強大而靈活的MVCWeb框架。

Struts【Java開源Web框架】

Struts是一個基於J2EE平臺的MVC框架,主要是採用Servlet和JSP技術來實現的。因爲Struts能充分知足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標籤和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再本身編碼實現全套MVC模式,極大的節省了時間,因此說Struts是一個很是不錯的應用框架。

    Hibernate 【Java開源持久層框架】

Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了很是輕量級的對象封裝,使得Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。Hibernate能夠應用在任何使用JDBC的場合,既能夠在Java的客戶端程序實用,也能夠在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate能夠在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。

    WebWork 【Java開源Web框架】

WebWork是由OpenSymphony組織開發的,致力於組件化和代碼重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,WebWork2.x前身是Rickard Oberg開發的WebWork,但WebWork已經被拆分紅了Xwork1和WebWork2兩個項目。Xwork簡潔、靈活功能強大,它是一個標準的Command模式實現,而且徹底從web層脫離出來。Xwork提供了不少核心功能:前端攔截機(interceptor),運行時表單屬性驗證,類型轉換,強大的表達式語言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。WebWork2創建在Xwork之上,處理HTTP的響應和請求。WebWork2使用ServletDispatcher將HTTP請求的變成Action(業務層Action類),session(會話)application(應用程序)範圍的映射,request請求參數映射。WebWork2支持多視圖表示,視圖部分可使用JSP,Velocity,FreeMarker,JasperReports,XML等。在WebWork2.2中添加了對AJAX的支持,這支持是構建在DWR與Dojo這兩個框架的基礎之上。

JDiy 【Java極速開發框架. 開源】

JDiy是一款java極速開發框架,無需ORM,極少的代碼即可以完成數據庫的CRUD(增刪改查);

可同時用於javaEE或者javaSE開發環境;完美支持各大主流數據庫,如:MySQL, SQL Server, Oracle, DB2, PostgreSQL, SQLite;

同時JDiy內置一套精簡而不失強大的智能開發平臺(開發者登陸後,爲所欲爲地零代碼生成網站管理系統)

JFinal【Java極速WEB+ORM框架】

jfinal是基於 Java 語言的極速 WEB + ORM 框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful。在擁有Java語言全部優點的同時再擁有ruby、python、php等動態語言的開發效率!主要特色。1.MVC架構,設計精巧,使用簡單 。2.遵循COC原則,零配置,無xml。 3.首創Db + Record模式,靈活便利 。4.ActiveRecord支持,使數據庫開發極致快速。 5.自動加載修改後的java文件,開發過程當中無需重啓web server 。6.AOP支持,攔截器配置靈活,功能強大。 7.Plugin體系結構,擴展性強。 8.多視圖支持,支持FreeMarker、JSP、Velocity。 9.強大的Validator後端校驗功能。 10.功能齊全,擁有struts2的絕大部分功能。 11.體積小僅218K,且無第三方依賴。

    Quartz 【Java開源Job調度】

Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它能夠與J2EE與J2SE應用程序相結合也能夠單獨使用。Quartz能夠用來建立簡單或爲運行十個,百個,甚至是好幾萬個Jobs這樣複雜的日程序表。Jobs能夠作成標準的Java組件或EJBs。Quartz的最新版本爲Quartz 1.5.0。

 

 

     Velocity 【Java開源模板引擎】

Velocity是一個基於java的模板引擎(template engine)。它容許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。當Velocity應用於web開發時,界面設計人員能夠和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員能夠只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣爲web站點的長期維護提供了便利,同時也爲咱們在JSP和PHP以外又提供了一種可選的方案。Velocity的能力遠不止web站點開發這個領域,例如,它能夠從模板(template)產生SQL和PostScript、XML,它也能夠被看成一個獨立工具來產生源代碼和報告,或者做爲其餘系統的集成組件使用。Velocity也能夠爲Turbine web開發架構提供模板服務(template service)。Velocity+Turbine提供一個模板服務的方式容許一個web應用以一個真正的MVC模型進行開發。

IBATIS 【Java開源持久層框架】後來更名MYBATIS
使用ibatis提供的ORM機制,對業務邏輯實現人員而言,面對的是純粹的Java對象,這一層與經過Hibernate 實現ORM 而言基本一致,而對於具體的數據操做,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發者編寫具體的SQL語句。相對Hibernate等「全自動」ORM機制而言,ibatis 以SQL開發的工做量和數據庫移植性上的讓步,爲系統設計提供了更大的自由空間。做爲「全自動」ORM 實現的一種有益補充,ibatis 的出現顯得別具意義。

Compiere ERP&CRM 【Java開源ERP與CRM系統

Compiere ERP&CRM爲全球範圍內的中小型企業提供綜合型解決方案,覆蓋從客戶管理、供應鏈到財務管理的所有領域,支持多組織、多幣種、多會計模式、多成本計算、多語種、多稅制等國際化特性。易於安裝、易於實施、易於使用。只須要短短几個小時,您就可使用申購-採購-發票-付款、報價-訂單-發票-收款、產品與訂價、資產管理、客戶關係、供應商關係、員工關係、經營業績分析等強大功能了。

  還有不少不少優秀的框架 如: Activiti(開源的工做流引擎),Lucene(開源全文搜索引擎)等等。

 
Java IDE

    當今最流行的是EclipseMyeclipse、IntelliJ、Jbuilder、Jdeveloper、Netbeans、JCreator等。

Eclipse是開源免費的,Myeclipse是在Eclipse基礎上作的一個商業版,要收費的。Jbuilder這些也是要收費的,由於Eclipse免費,因此Eclipse是使用量最多的。

因爲Java的開源,使得Java枝繁葉茂,可是一樣也帶來了,Java體系的龐大甚至是臃腫。因此想要學習Java,須要一條清晰的學習路線。



從J2EE學習路線圖來深度瞭解Java體系


     下面是傳智播客的Java學習路線圖(本人從傳智播客的視頻中學到過不少東西~因此不介意有打廣告的嫌疑哈),從下圖中,咱們對java的技術體系就有個清晰的認識了。

clipboard

  • J2SE部分,是java的基礎知識,這也是很是重要的部分,面向對象,IO操做,多線程,網絡編程,反射機制等。
  • JDBC, java基礎以後,咱們要進行數據庫的操做,經過JDBC操做各類主流數據庫。
  • WEB開發基礎,想作web開發,首先得有必備的WEB基礎知識儲備,如Html,Css,DOM,Javascript,Jquery等前端知識。還有Http協議等,這些跟java自己關係不是太大。
  • Java Web開發,具有了Java基礎,以及Web基礎以後,咱們就能夠學習Java Web開發,主要是JSP,Servlet等Java Web技術,Tomcat等Java Web容器。
  • SSH框架,Java Web學會了以後,咱們會使用一些主流的成熟框架來幫助咱們更加方便,快捷的開開發J2EE項目。框架裏會集成不少的設計模式。
  • 不一樣業主場景的下的主流框架或技術,如SOA,WebService ,Activiti工做流,Lucene全文搜索。

   這是傳智播客2014年最新的Java學習路線圖: http://java.itcast.cn/subject/javastudypath/index.shtml?j2,從這些路線圖中,咱們能夠把握當前主流的框架和技術。

J2EE架構的演變

 

     一 Model1 模型架構

在Model1模型中,是以JSP爲中心,這種模型中JSP既要作頁面顯示,又要結合業務邏輯處理服務端過程,簡單說就是Model1開發沒有Servlet,JSP中既有HTML代碼又有邏輯代碼。JSP頁面的交互經過頁面裏的連接完成。

clipboard[1]

其實咱們一般把Model1做爲一個基礎來學習J2EE的開發流程。 這種架構太簡單,簡單到沒有架構,通常都是入門學習才這麼作。

  二 Model2 模型架構

        Model2對JSP的任務進行分離,將獲取參數,調用邏輯這些和頁面顯示無關的轉到Servlet處理,JSP只作顯示便可。

clipboard[2]

  這就是MVC的應用,Model2模型就是MVC模型,Asp.Net MVC 中的mvc也是應用的Model2模型。好處天然不用多說,結構清晰,解耦。

三 MVC+三層架構

在實際的開發過程當中一般還會把其中的業務邏輯再進行分離,分出持久層(數據訪問),目的仍是爲了劃分職責,造成咱們經常使用的三層架構:

表示層:JSP/Servlet

業務邏輯層:業務邏輯處理

持久層:主要包裝持久化邏輯

clipboard[3]

      這個框架已是一個比較成熟的架構了~ Servlet對於MVC中的C,JSP/Html對應MVC中的V,而他們又能夠做爲 三層架構中的展現層,後面是業務邏輯層,持久層。 習慣上扔稱之爲MVC架構。

上面提到的是架構的演變,架構的演變過程當中,也產生了一些主流的開源框架,如經典的SSH,提出一種開發J2EE 企業級Web應用的輕量級解決方案。這些優秀的框架能夠說是對架構各個層的具體封裝實現。

SSH框架集成介紹

 

Struts :

Struts 是開源軟件。使用Struts的目的是爲了幫助咱們減小在運用MVC設計模型來開發Web應用的時間。若是咱們想混合使用Servlets和JSP的優勢來創建可擴展的應用,struts是一個不錯的選擇。

            Struts 是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,並在2004年3月成爲ASF的頂級項目。它經過採用JavaServlet/JSP技術,實現了基於Java EEWeb應用的MVC設計模式的應用框架,是MVC經典設計模式中的一個經典產品。

Struts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合併的全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構差異巨大。Struts 2以WebWork爲核心,採用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器可以與ServletAPI徹底脫離開,因此Struts 2能夠理解爲WebWork的更新產品。雖然從Struts 1到Struts 2有着太大的變化,可是相對於WebWork,Struts 2的變化很小。

           如今在使用的大部分都是 Struts 2。

    Spring   :

Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著做Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而建立的。Spring使用基本的JavaBean來完成之前只可能由EJB完成的事情。然而,Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用均可以從Spring中受益。簡單來講,Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。

Hibernate

Hibernate是一個開放源代碼的對象關係映射框架,它對JDBC進行了很是輕量級的對象封裝,使得Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。 Hibernate能夠應用在任何使用JDBC的場合,既能夠在Java的客戶端程序使用,也能夠在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate能夠在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。

SSH的集成搭建,請自行百度、谷歌嘗試,不一樣的版本總會遇到不一樣的錯誤。集成搭建只是會有各類問題,目前可能仍是我對他們的深刻學習不夠。


 

其餘相關優秀的開源產品


Spring MVC
          傳統的web架構的view 表現層使用struts做爲表現層。可是若是試用下spring自帶的MVC,會發現spring 在通常場合徹底能夠取代struts。從某些角度來講,spring的mvc設計的更加合理,有興趣的話不妨嘗試下單個的spring的MVC。Spring MVC 大有要取代Struts 2地位的意思。如今Spring MVC的使用愈來愈主流。

Spring Data JPA

         Spring開源組織給咱們帶來了很是優秀的持久化框架。

Velocity
Velocity是一個基於java的模板引擎(template engine)。它容許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。 當Velocity應用於web開發時,界面設計人員能夠和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員能夠只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣爲web站點的長期維護提供了便利,同時也爲咱們在JSP和PHP以外又提供了一種可選的方案。 Velocity的能力遠不止web站點開發這個領域,例如,它能夠從模板(template)產生SQL和PostScript、XML,它也能夠被看成一個獨立工具來產生源代碼和報告,或者做爲其餘系統的集成組件使用。

     FreeMarker

FreeMarker容許Java servlet保持圖形設計同應用程序邏輯的分離,這是經過在模板中密封HTML完成的。模板用servlet提供的數據動態地生成 HTML。模板語言是強大的直觀的,編譯器速度快,輸出接近靜態HTML頁面的速度。

Log4J

     Log4j是Apache的一個開放源代碼項目,經過使用Log4j,咱們能夠控制日誌信息輸送的目的地是控制檯、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;咱們也能夠控制每一條日誌的輸出格式;經過定義每一條日誌信息的級別,咱們可以更加細緻地控制日誌的生成過程。最使人感興趣的就是,這些能夠經過一個配置文件來靈活地進行配置,而不須要修改應用的代碼。

     JFinal 
     JFinal 是基於Java 語言的極速 web 開發框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful。在擁有Java語言全部優點的同時再擁有ruby、python等動態語言的開發效率。

    太多太多了.....

目前的主流架構

    1 struts2 + spring + hibernate  
國內比較經典的架構,也是國內最多見的一種架構。

    2 Spring MVC + Spring + (Spring Data JPa +hibernate

這是如今比較流行的架構,Spring MVC 大有取代struts2 的架勢。

 

項目包依賴管理工具Mavan,Ant

       如今基本是都是使用Mavan,Ant使用的已經很少

       Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明肯定義的項目對象模型來描述你的項目,而後Maven能夠應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。


Java Web 容器

      tomcat ,jetty, websphere,jboss,weblogic 等等

Web 服務器

       Apache , IIS,Nigx 等

源代碼管理工具
      SVN,GIT

在Java體系裏面發現一個很奇怪的問題,一些框架或者技術百度出來的,解釋根本看不懂,看來仍是一頭霧水,不知道這卻是是啥,應用場景在哪... Java中的名詞,術語,技術簡稱太多太多了...

問:

   1 什麼是Javabean ?什麼是EJB (Enterprise JavaBean)? 他們之間有什麼區別與聯繫?EJB究竟是什麼?

   2 架構與框架,之間的區別與聯繫?

   3 JSP+Servlet + Hibernate 與SSH架構聯繫?

   4 MyBatis 與 hibernate 比較

參考資源:(參考資料只是參考,並不表明文章的正確性)

http://baike.baidu.com/subview/29/12654100.htm

http://baike.baidu.com/view/395208.htm

http://baike.baidu.com/view/1507.htm

http://blog.csdn.net/akkzhjj/article/details/37667261

http://blog.163.com/shanqing_shuixiu@yeah/blog/static/16531922920105282211813/

http://fenghuangwanghui.blog.163.com/blog/static/131807008201245101352761/

http://blog.csdn.net/alli0968/article/details/4231237

http://www.cnblogs.com/chehaoj/archive/2010/12/09/1901049.html

http://www.cnblogs.com/MyITHome/archive/2012/08/31/2665917.html

http://blog.csdn.net/jojo52013145/article/details/5783677

http://blog.csdn.net/songanling/article/details/22454973

http://www.cnblogs.com/sharpxiajun/p/3936268.html

http://www.cnblogs.com/luxh/archive/2012/08/31/2665421.html

http://java.itcast.cn/subject/javastudypath/index.shtml?j2

相關文章
相關標籤/搜索