Can you summarize the following document?
        
  Java訊息服務是一個在 Java標準化組織(JCP)內開發的標準(代號JSR 914)。2001年6月25日,Java訊息服務釋出JMS 1.0.2b,2002年3月18日Java訊息服務釋出 1.1,統一了訊息域。

  

  JMS由以下元素組成。

  Java訊息服務應用程式結構支援兩種模型:  在點對點或佇列模型下,一個生產者向一個特定的佇列釋出訊息,一個消費者從該佇列中讀取訊息。這裡,生產者知道消費者的佇列,並直接將訊息傳送到消費者的佇列。這種模式被概括為:  釋出者/訂閱者模型支援向一個特定的訊息主題釋出訊息。0或多個訂閱者可能對接收來自特定訊息主題的訊息感興趣。在這種模型下,釋出者和訂閱者彼此不知道對方。這種模式好比是匿名公告板。這種模式被概括為:  使用Java語言,JMS提供了將應用與提供資料的傳輸層相分離的方式。同一組Java類可以通過JNDI中關於提供者的資訊,連線不同的JMS提供者。這一組類首先使用一個連線工廠以連線到佇列或主題,然後傳送或釋出訊息。在接收端,客戶接收或訂閱這些訊息。

  Java訊息服務的API在包中提供。

  使用者用來建立到JMS提供者的連線的被管物件。JMS客戶通過可移植的介面訪問連線,這樣當下層的實現改變時,程式碼不需要進行修改。 管理員在JNDI名字空間中配置連線工廠,這樣,JMS客戶才能夠查詢到它們。根據訊息型別的不同,使用者將使用佇列連線工廠,或者主題連線工廠。

  連線代表了應用程式和訊息伺服器之間的通訊鏈路。在獲得了連線工廠後,就可以建立一個與JMS提供者的連線。根據不同的連線型別,連線允許使用者建立會話,以傳送和接收佇列和主題到目標。

  目標是一個包裝了訊息目標識別符號的被管物件,訊息目標是指訊息釋出和接收的地點,或者是佇列,或者是主題。JMS管理員建立這些物件,然後使用者通過JNDI發現它們。和連線工廠一樣,管理員可以建立兩種型別的目標,點對點模型的佇列,以及釋出者/訂閱者模型的主題。

  由會話建立的物件,用於接收傳送到目標的訊息。消費者可以同步地(阻塞模式),或非同步(非阻塞)接收佇列和主題型別的訊息。

  由會話建立的物件,用於傳送訊息到目標。使用者可以建立某個目標的傳送者,也可以建立一個通用的傳送者,在傳送訊息時指定目標。

  是在消費者和生產者之間傳送的物件,也就是說從一個應用程式創送到另一個應用程式。一個訊息有三個主要部分:  訊息介面非常靈活,並提供了許多方式來定製訊息的內容。

  表示一個單執行緒的上下文,用於傳送和接收訊息。由於會話是單執行緒的,所以訊息是連續的,就是說訊息是按照傳送的順序一個一個接收的。會話的好處是它支援事務。如果使用者選擇了事務支援,會話上下文將儲存一組訊息,直到事務被提交才傳送這些訊息。在提交事務之前,使用者可以使用回滾操作取消這些訊息。一個會話允許使用者建立訊息生產者來傳送訊息,建立訊息消費者來接收訊息。

  要使用Java訊息服務,你必須要有一個JMS提供者,管理會話和佇列。現在既有開源的提供者也有專有的提供者。  開源的提供者包括:  專有的提供者包括:  一個詳盡的JMS提供者對比矩陣可以在這裡看到。  如果你計劃在一個伺服器叢集中執行你的程式,你需要檢查提供者是否實現了對負載均衡和故障恢復的支援。
Java訊息服務(Java Message Service,JMS)應用程式介面是一個Java平臺中關於面向訊息中介軟體(MOM)的API,用於在兩個應用程式之間,或分散式系統中傳送訊息,進行非同步通訊。Java訊息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支援。