<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小閣飛空 一池碧映垂楊路 絳云深處 聽盡瀟瀟雨
    At times , people will simply not come through for you in the way you need.Forgive them and move on.
    posts - 212,comments - 87,trackbacks - 0

          J2EE的13種核心技術(shù):JDBC, JNDI, EJB, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail 和 JAF.
        在早期的c/s應(yīng)用模式下,客戶端程序負(fù)責(zé)數(shù)據(jù)訪問,實(shí)現(xiàn)業(yè)務(wù)邏輯,用合適的樣式顯示結(jié)果,彈出預(yù)先設(shè)定的用戶界面,接收用戶輸入等.c/s結(jié)構(gòu)通常在第一次部署的時(shí)候比較容易,但難于升級(jí)和改進(jìn),而且經(jīng)常基于某種專有的協(xié)議,通常是某種數(shù)據(jù)庫協(xié)議,它使得重用業(yè)務(wù)邏輯和界面邏輯非常困難.更重要的是在web時(shí)代,二層化應(yīng)用通常不能體現(xiàn)出很好的伸縮性,因此很難適應(yīng)internet的要求.
          Sun設(shè)計(jì)J2EE的部分起因就是想解決二層化結(jié)構(gòu)的缺陷。于是,J2EE定義了一套標(biāo)準(zhǔn)來簡(jiǎn)化N層企業(yè)級(jí)應(yīng)用的開發(fā)。它定義了一套標(biāo)準(zhǔn)化的組件,并為這些組件提供了完整的服務(wù)。J2EE還自動(dòng)為應(yīng)用程序處理了很多實(shí)現(xiàn)細(xì)節(jié),如安全、多線程等。
      用J2EE開發(fā)N層應(yīng)用包括將二層化結(jié)構(gòu)中的不同層面切分成許多層。一個(gè)N層化應(yīng)用A能夠?yàn)橐韵碌拿糠N服務(wù)提供一個(gè)分開的層:
      顯示:在一個(gè)典型的Web應(yīng)用中,客戶端機(jī)器上運(yùn)行的瀏覽器負(fù)責(zé)實(shí)現(xiàn)用戶界面。
      動(dòng)態(tài)生成顯示: 盡管瀏覽器可以完成某些動(dòng)態(tài)內(nèi)容顯示,但為了兼容不同的瀏覽器,這些動(dòng)態(tài)生成工作應(yīng)該放在Web服務(wù)器端進(jìn)行,使用JSP、Servlets,或者XML(可擴(kuò)展標(biāo)記語言)和(可擴(kuò)展樣式表語言)。
      業(yè)務(wù)邏輯:業(yè)務(wù)邏輯適合用Session EJBs(后面將介紹)來實(shí)現(xiàn)。
      數(shù)據(jù)訪問:數(shù)據(jù)訪問適合用Entity EJBs(后面將介紹)和JDBC來實(shí)現(xiàn)。
      后臺(tái)系統(tǒng)集成: 同后臺(tái)系統(tǒng)的集成可能需要用到許多不同的技術(shù),至于何種最佳需要根據(jù)后臺(tái)系統(tǒng)的特征而定。
      您可能開始詫異:為什么有這么多的層?事實(shí)上,多層方式可以使企業(yè)級(jí)應(yīng)用具有很強(qiáng)的伸縮性,它允許每層專注于特定的角色。例如,讓W(xué)eb服務(wù)器負(fù)責(zé)提供頁面,應(yīng)用服務(wù)器處理應(yīng)用邏輯,而數(shù)據(jù)庫服務(wù)器提供數(shù)據(jù)庫服務(wù)。
      由于J2EE建立在Java2平臺(tái)標(biāo)準(zhǔn)版(J2SE)的基礎(chǔ)上,所以具備了J2SE的所有優(yōu)點(diǎn)和功能。包括“編寫一次,到處可用”的可移植性、通過JDBC訪問數(shù)據(jù)庫、同原有企業(yè)資源進(jìn)行交互的CORBA技術(shù),以及一個(gè)經(jīng)過驗(yàn)證的安全模型。在這些基礎(chǔ)上,J2EE又增加了對(duì)EJB(企業(yè)級(jí)Java組件)、Java servlets、Java服務(wù)器頁面(JSPs)和XML技術(shù)的支持。

    分布式結(jié)構(gòu)與WebLogic應(yīng)用服務(wù)器

      J2EE提供了一個(gè)框架--一套標(biāo)準(zhǔn)API--用于開發(fā)分布式結(jié)構(gòu)的應(yīng)用,這個(gè)框架的實(shí)際實(shí)現(xiàn)留給了第三方廠商。部分廠商只是專注于整個(gè)J2EE架構(gòu)中的的特定組件,例如Apache的Tomcat提供了對(duì)JSP和servlets的支持,BEA系統(tǒng)公司則通過其WebLogic應(yīng)用服務(wù)器產(chǎn)品為整個(gè)J2EE規(guī)范提供了一個(gè)較為完整的實(shí)現(xiàn)。
      WebLogic服務(wù)器已使建立和部署伸縮性較好的分布式應(yīng)用的過程大為簡(jiǎn)化。WebLogic和J2EE代你處理了大量常規(guī)的編程任務(wù),包括提供事務(wù)服務(wù)、安全領(lǐng)域、可靠的消息、名字和目錄服務(wù)、數(shù)據(jù)庫訪問和連接池、線程池、負(fù)載平衡和容錯(cuò)處理等。
      通過以一種標(biāo)準(zhǔn)、易用的方式提供這些公共服務(wù),象WebLogic服務(wù)器這樣的產(chǎn)品造就了具有更好伸縮性和可維護(hù)性的應(yīng)用系統(tǒng),使其為大量的用戶提供了增長的可用性。

      J2EE技術(shù)

      在接下來的部分里,我們將描述構(gòu)成J2EE的各種技術(shù),并且了解WebLogic服務(wù)器是如何在一個(gè)分布式應(yīng)用中對(duì)它們進(jìn)行支持的。最常用的J2EE技術(shù)應(yīng)該是JDBC、JNDI、EJB、JSP和servlets,對(duì)這些我們將作更仔細(xì)的考察。
      Java Database Connectivity (JDBC)
      JDBC API以一種統(tǒng)一的方式來對(duì)各種各樣的數(shù)據(jù)庫進(jìn)行存取。和ODBC一樣,JDBC為開發(fā)人員隱藏了不同數(shù)據(jù)庫的不同特性。另外,由于JDBC建立在Java的基礎(chǔ)上,因此還提供了數(shù)據(jù)庫存取的平臺(tái)獨(dú)立性。
      JDBC定義了4種不同的驅(qū)動(dòng)程序,現(xiàn)分述如下:
      類型 1: JDBC-ODBC Bridge
      在JDBC出現(xiàn)的初期,JDBC-ODBC橋顯然是非常有實(shí)用意義的,通過JDBC-ODBC橋,開發(fā)人員可以使用JDBC來存取ODBC數(shù)據(jù)源。不足的是,他需要在客戶端安裝ODBC驅(qū)動(dòng)程序,換句話說,必須安裝Microsoft Windows的某個(gè)版本。使用這一類型你需要犧牲JDBC的平臺(tái)獨(dú)立性。另外,ODBC驅(qū)動(dòng)程序還需要具有客戶端的控制權(quán)限。
      類型 2: JDBC-native driver bridge
      JDBC本地驅(qū)動(dòng)程序橋提供了一種JDBC接口,它建立在本地?cái)?shù)據(jù)庫驅(qū)動(dòng)程序的頂層,而不需要使用ODBC。 JDBC驅(qū)動(dòng)程序?qū)?duì)數(shù)據(jù)庫的API從標(biāo)準(zhǔn)的JDBC調(diào)用轉(zhuǎn)換為本地調(diào)用。使用此類型需要犧牲JDBC的平臺(tái)獨(dú)立性,還要求在客戶端安裝一些本地代碼。
      類型 3: JDBC-network bridge
      JDBC網(wǎng)絡(luò)橋驅(qū)動(dòng)程序不再需要客戶端數(shù)據(jù)庫驅(qū)動(dòng)程序。它使用網(wǎng)絡(luò)上的中間服務(wù)器來存取數(shù)據(jù)庫。這種應(yīng)用使得以下技術(shù)的實(shí)現(xiàn)有了可能,這些技術(shù)包括負(fù)載均衡、連接緩沖池和數(shù)據(jù)緩存等。由于第3種類型往往只需要相對(duì)更少的下載時(shí)間,具有平臺(tái)獨(dú)立性,而且不需要在客戶端安裝并取得控制權(quán),所以很適合于Internet上的應(yīng)用。
      類型 4: Pure Java driver
      第4種類型通過使用一個(gè)純Java數(shù)據(jù)庫驅(qū)動(dòng)程序來執(zhí)行數(shù)據(jù)庫的直接訪問。此類型實(shí)際上在客戶端實(shí)現(xiàn)了2層結(jié)構(gòu)。要在N-層結(jié)構(gòu)中應(yīng)用,一個(gè)更好的做法是編寫一個(gè)EJB,讓它包含存取代碼并提供一個(gè)對(duì)客戶端具有數(shù)據(jù)庫獨(dú)立性的服務(wù)。
      WebLogic服務(wù)器為一些通常的數(shù)據(jù)庫提供了JDBC驅(qū)動(dòng)程序∣racle, Sybase, Microsoft SQL Server以及Informix。它也帶有一種JDBC驅(qū)動(dòng)程序用于Cloudscape,這是一種純Java的DBMS,WebLogic服務(wù)器中帶有該數(shù)據(jù)庫的評(píng)估版本。
      以下讓我們看一個(gè)實(shí)例。
      JDBC實(shí)例
      在這個(gè)例子中我們假定你已經(jīng)在Cloudscape中建立了一個(gè)PhoneBook數(shù)據(jù)庫,并且包含一個(gè)表,名為 CONTACT_TABLE ,它帶有2個(gè)字段:NAME 和 PHONE。 開始的時(shí)候先裝載Cloudscape JDBC driver,并請(qǐng)求 driver manager得到一個(gè)對(duì)PhoneBook Cloudscape數(shù)據(jù)庫的連接。通過這一連接,我們可以構(gòu)造一個(gè) Statement 對(duì)象并用它來執(zhí)行一個(gè)簡(jiǎn)單的SQL查詢。最后,用循環(huán)來遍歷結(jié)果集的所有數(shù)據(jù),并用標(biāo)準(zhǔn)輸出將NAME和PHONE字段的內(nèi)容進(jìn)行輸出。
      import java.sql.*;
      public class JDBCExample
      {
      public static void main( String args[] )
      {
      try
      {
      Class.forName("COM.cloudscape.core.JDBCDriver");
      Connection conn = DriverManager.getConnection("jdbc:cloudscape:PhoneBook");
      Statement stmt = conn.createStatement();
      String sql = "SELECT name, phone FROM CONTACT_TABLE ORDER BY name";
      ResultSet resultSet = stmt.executeQuery( sql );
      String name;
      String phone;
      while ( resultSet.next() )
      {
      name = resultSet.getString(1).trim();
      phone = resultSet.getString(2).trim();
      System.out.println( name + ", " + phone );
      }
      }
      catch ( Exception e )
      {
      // Handle exception here
      e.printStackTrace();
      }
      }
      }

      OK。接著我們來看一看JDBC是如何在企業(yè)應(yīng)用中的進(jìn)行使用。
      JDBC在企業(yè)級(jí)應(yīng)用中的應(yīng)用
      以上實(shí)例其實(shí)是很基本的,可能有些微不足道。它假定了一個(gè)2層結(jié)構(gòu)。在一個(gè)多層的企業(yè)級(jí)應(yīng)用中,更大的可能是在客戶端和一個(gè)EJB進(jìn)行通信,該EJB將建立數(shù)據(jù)庫連接。為了實(shí)現(xiàn)和改進(jìn)可伸縮性和系統(tǒng)性能, WebLogic服務(wù)器提供了對(duì)連接緩沖池connection pool的支持。
      Connection pool減少了建立和釋放數(shù)據(jù)庫連接的消耗。在系統(tǒng)啟動(dòng)以后即可建立這樣的緩沖池,此后如故再有對(duì)數(shù)據(jù)庫的請(qǐng)求,WebLogic服務(wù)器可以很簡(jiǎn)單地從緩沖池中取出數(shù)據(jù)。數(shù)據(jù)緩沖池可以在WebLogic服務(wù)器的 weblogic.properties 文件中進(jìn)行定義。(可參考 weblogic.properties 文件中的例子,WebLogic服務(wù)器的文檔中還有更詳細(xì)的參考信息)
      在企業(yè)級(jí)應(yīng)用的另一個(gè)常見的數(shù)據(jù)庫特性是事務(wù)處理。事務(wù)是一組申明statement,它們必須做為同一個(gè)statement來處理以保證數(shù)據(jù)完整性。缺省情況下JDBC使用 auto-commit 事務(wù)模式。這可以通過使用Connection類的 setAutoCommit() 方法來實(shí)現(xiàn)。
      現(xiàn)在我們已經(jīng)對(duì)JDBC有了一些認(rèn)識(shí),下面該轉(zhuǎn)向JNDI了.
    Java Naming and Directory Interface (JNDI)
      JNDI API被用于執(zhí)行名字和目錄服務(wù)。它提供了一致的模型來存取和操作企業(yè)級(jí)的資源如DNS和LDAP,本地文件系統(tǒng),后者在應(yīng)用服務(wù)器中的對(duì)象。
      在JNDI中,在目錄結(jié)構(gòu)中的每一個(gè)結(jié)點(diǎn)稱為context。每一個(gè)JNDI名字都是相對(duì)于context的。這里沒有絕對(duì)名字的概念存在。對(duì)一個(gè)應(yīng)用來說,它可以通過使用 InitialContext 類來得到其第一個(gè)context:
      Context ctx = new InitialContext();
      應(yīng)用可以通過這個(gè)初始化的context經(jīng)有這個(gè)目錄樹來定位它所需要的資源或?qū)ο蟆@纾僭O(shè)你在Weblogic服務(wù)器中展開了一個(gè)EJB并將home接口綁定到名字 myApp.myEJB ,那么該EJB的某個(gè)客戶在取得一個(gè)初始化context以后,可以通過以下語句定位home接口:
      MyEJBHome home = ctx.lookup( "myApp.myEJB" );
      在這個(gè)例子中,一旦你有了對(duì)被請(qǐng)求對(duì)象的參考,EJB的home接口就可以在它上面調(diào)用方法。我們將在下面的"Enterprise Java Beans"章節(jié)中做更多的介紹。
      以上關(guān)于JNDI的討論只是冰山之一角而已。如果要更進(jìn)一步地在context中查找對(duì)象,JNDI也提供了一些方法來進(jìn)行以下操作: 
      將一個(gè)對(duì)象插入或綁定到context。這在你展開一個(gè)EJB的時(shí)候是很有效的。
      從context中移去對(duì)象。
      列出context中的所有對(duì)象。
      創(chuàng)建或刪除子一級(jí)的context。
      接下來,我們要開始關(guān)注EJB了。
      Enterprise Java Beans (EJB)
      J2EE技術(shù)之所以贏得某體廣泛重視的原因之一就是EJB。它們提供了一個(gè)框架來開發(fā)和實(shí)施分布式商務(wù)邏輯,由此很顯著地簡(jiǎn)化了具有可伸縮性和高度復(fù)雜的企業(yè)級(jí)應(yīng)用的開發(fā)。EJB規(guī)范定義了EJB組件在何時(shí)如何與它們的容器進(jìn)行交互作用。容器負(fù)責(zé)提供公用的服務(wù),例如目錄服務(wù)、事務(wù)管理、安全性、資源緩沖池以及容錯(cuò)性。
      EJB規(guī)范定義了3中基本的bean類型:
      Stateless session beans: 提供某種單一的服務(wù),不維持任何狀態(tài),在服務(wù)器故障發(fā)生時(shí)無法繼續(xù)存在,生命期相對(duì)較短。例如,一個(gè)stateless session bean可能被用于執(zhí)行溫度轉(zhuǎn)換計(jì)算。
      Stateful session bean: T提供了與客戶端的會(huì)話交互,可以存儲(chǔ)狀態(tài)從而代表一個(gè)客戶。典型例子是購物車。Stateful session bean在服務(wù)器故障時(shí)無法繼續(xù)生存,生命氣相對(duì)較短。每一個(gè)實(shí)例只用于一個(gè)單個(gè)的線程。
      Entity beans: 提供了一致性數(shù)據(jù)的表示-- 通常存放在數(shù)據(jù)庫中 -- 在服務(wù)器故障發(fā)生后能繼續(xù)存在。多用戶情況下可以使用EJB來表示相同的數(shù)據(jù)。entity EJB的一個(gè)典型例子是客戶的帳號(hào)信息。
      盡管有以上的區(qū)別,所有的EJB還是有許多的共同之處。它們都處理home interface。它定義了一個(gè)客戶端是如何創(chuàng)建與消亡EJB的。可以在bean中對(duì)定義了客戶端方法的遠(yuǎn)程接口進(jìn)行調(diào)用;bean類則執(zhí)行了主要的商務(wù)邏輯。
      描述EJB的開發(fā)已經(jīng)超出了本文的范圍。但是,如果一個(gè)EJB已經(jīng)被開發(fā)了或者從第三方進(jìn)行了購買,它就必須在應(yīng)用服務(wù)器中進(jìn)行發(fā)布。WebLogic Server 5.1帶有一個(gè)EJB Deployer Tool來協(xié)助處理EJB的發(fā)布。當(dāng)你使用EJB Deployer Tool的時(shí)候,你要定義客戶端所用的JNDI名字來定位EJB。Deployer Tool將生成wrapper類來處理和容器的通信以及在一個(gè)jar文件中把被請(qǐng)求的Java類綁定在一起。
      一旦EJB被發(fā)布,客戶端就可以使用它的JNDI名字來定位EJB。首先,它必須得到一個(gè)到home接口的reference。然后,客戶端可以使用該接口,調(diào)用一個(gè) create() 方法來得到服務(wù)器上運(yùn)行的某個(gè)bean實(shí)例的句柄;最后,客戶端可以使用該句柄在bean中調(diào)用方法。
      了解 EJB后,讓我們?cè)賮砜碕SP。
      JavaServer Pages (JSPs)
      我們中間可能已經(jīng)有許多人已經(jīng)熟悉Microsoft的Active Server Pages (ASP)技術(shù)了。JSP和ASP相對(duì)應(yīng)的,但更具有平臺(tái)對(duì)立性。他們被設(shè)計(jì)用以幫助Web內(nèi)容開發(fā)人員創(chuàng)建動(dòng)態(tài)網(wǎng)頁,并且只需要相對(duì)較少的代碼。 即使Web設(shè)計(jì)師不懂得如何編程也可以使用JSP,因?yàn)镴SP應(yīng)用是很方便的。 JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端所請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。
      下面我們來看一個(gè)JSP的簡(jiǎn)單實(shí)例。它只顯示了服務(wù)器的當(dāng)前日期和時(shí)間。雖然,對(duì)語法的具體解釋已經(jīng)超出了本文的范圍,但我們還是可以很直觀地看到,Java代碼被放在符號(hào)的中間,而Java的表達(dá)式則放在符號(hào)之間。
      Date JSP sample
      The current date is .
      您可能有時(shí)候聽說過JHTML。這是JSP以前的一種較老的標(biāo)準(zhǔn)。WebLogic服務(wù)器既可支持JSP,又可支持JHTML。請(qǐng)注意,在缺省狀況下,JSP在WebLogic服務(wù)器中并沒有處于有效狀態(tài)。要使之有效,你可以編輯weblogic.properties文件。如果Web服務(wù)器還沒有處于有效狀態(tài),則要先使之有效。Servlet的情況和JSP是一樣的。
      下面是: Java servlets
      Java servlets
      servlet提供的功能大多與JSP類似,不過實(shí)現(xiàn)的方式不同。JSP通常是大多數(shù)HTML代碼中嵌入少量的Java代碼,而servlets全部由Java寫成并且生成HTML。
      servlet是一種小型的Java程序,它擴(kuò)展了Web服務(wù)器的功能。作為一種服務(wù)器端的應(yīng)用,當(dāng)被請(qǐng)求時(shí)開始執(zhí)行,這和CGI Perl腳本很相似。Servlets和CGI腳本的一個(gè)很大的區(qū)別是:每一個(gè)CGI在開始的時(shí)候都要求開始一個(gè)新的進(jìn)程 -- 而servlets是在servlet引擎中以分離的線程來運(yùn)行的。因此servlets在可伸縮性上提供了很好的改進(jìn)。
      在開發(fā)servlets的時(shí)候,您常常需要擴(kuò)展javax.servlet.http.HttpServlet 類,并且override一些它的方法,其中包括:
      service(): 作為dispatcher來實(shí)現(xiàn)命令-定義方法
      doGet(): 處理客戶端的HTTP GET請(qǐng)求。
      doPost(): 進(jìn)行HTTP POST操作
      其它的方法還包括處理不同類型的HTTP請(qǐng)求 -- 可以參考HttpServlet API文檔。
      以上描述的是標(biāo)準(zhǔn)J2EE Servlet API的各種方法。WebLogic服務(wù)器提供了一個(gè)該API完整的實(shí)現(xiàn)途徑。一旦你開發(fā)了一個(gè)servlet,你就可以在weblogic.properties 中加以注冊(cè)并由此可以在WebLogic服務(wù)器中對(duì)它進(jìn)行配置。
      通過Java servlets,我們已經(jīng)到達(dá)了J2EE主要技術(shù)的末尾了。但J2EE所提供的并不止于這些。下面的段落中我們將簡(jiǎn)要地看一下現(xiàn)存的一些技術(shù),包括RMI, Java IDL和CORBA, JTA, 以及XML,等等。
      Remote Method Invocation (RMI)
      正如其名字所表示的那樣,RMI協(xié)議是在遠(yuǎn)程對(duì)象上調(diào)用一些方法。它使用了連續(xù)序列方式在客戶端和服務(wù)器端傳遞數(shù)據(jù)。RMI是一種被EJB使用的更下層的協(xié)議。
      Java IDL/CORBA
      在Java IDL的支持下,開發(fā)人員可以將Java和CORBA集成在一起。 他們可以創(chuàng)建Java對(duì)象并使之可在CORBA ORB中展開, 或者他們還可以創(chuàng)建Java類并作為和其它ORB一起展開的CORBA對(duì)象的客戶。后一種方法提供了另外一種途徑,通過它Java可以被用于將你的新的應(yīng)用和legacy系統(tǒng)相集成。
      Java Transaction Architecture (JTA)/Java Transaction Service (JTS)
      JTA定義了一種標(biāo)準(zhǔn)的API,應(yīng)用系統(tǒng)由此可以存取各種事務(wù)監(jiān)控。
      JTS是CORBA OTS事務(wù)監(jiān)控的基本的實(shí)現(xiàn)。JTS規(guī)定了事務(wù)管理器的實(shí)現(xiàn)方式。該事務(wù)管理器是在高層支持Java Transaction API (JTA)規(guī)范,并且在較底層實(shí)現(xiàn)OMG OTS specification的Java映像。JTS事務(wù)管理器為應(yīng)用服務(wù)器、資源管理器、獨(dú)立的應(yīng)用以及通信資源管理器提供了事務(wù)服務(wù)。
      JavaMail and JavaBeans Activation Framework
      JavaMail是用于存取郵件服務(wù)器的API,它提供了一套郵件服務(wù)器的抽象類。不僅支持SMTP服務(wù)器,也支持IMAP服務(wù)器。
      JavaMail利用JavaBeans Activation Framework (JAF)來處理MIME-編碼的郵件附件。MIME的字節(jié)流可以被轉(zhuǎn)換成Java對(duì)象,或者轉(zhuǎn)換自Java對(duì)象。由此大多數(shù)應(yīng)用都可以不需要直接使用JAF。
      Java Messaging Service (JMS)
      JMS是用于和面向消息的中間件相互通信的應(yīng)用程序接口(API)。它既支持點(diǎn)對(duì)點(diǎn)的域,有支持發(fā)布/訂閱(publish/subscribe)類型的域,并且提供對(duì)下列類型的支持:經(jīng)認(rèn)可的消息傳遞,事務(wù)型消息的傳遞,一致性消息和具有持久性的訂閱者支持。JMS還提供了另一種方式來對(duì)您的應(yīng)用與legacy backend系統(tǒng)相集成。
      Extensible Markup Language (XML)
      XML是一種可以用來定義其它標(biāo)記語言的語言。它被用來在不同的商務(wù)過程中共享數(shù)據(jù)。XML的發(fā)展和Java是相互獨(dú)立的,但是,它和Java具有的相同目標(biāo)正是平臺(tái)獨(dú)立性。通過將Java和XML的組合,您可以得到一個(gè)完美的具有平臺(tái)獨(dú)立性的解決方案。目前正有許多不同的公司在為Java和XML的組合而努力。如果要了解更多的這方面的信息,可以訪問Sun的Java-XML頁面,或者IBM developerWorks的XML Zone。

    作者Blog:http://blog.csdn.net/feng_sundy/
    posted on 2005-06-13 14:03 瀟瀟雨 閱讀(194) 評(píng)論(0)  編輯  收藏 所屬分類: J2EE

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久亚洲精品无码观看不卡| 国产成人无码免费看视频软件 | 免费国产在线观看| 性盈盈影院免费视频观看在线一区| 亚洲成人免费网址| 84pao强力永久免费高清| 91精品全国免费观看含羞草 | 99热在线日韩精品免费| 又长又大又粗又硬3p免费视频| 免费一级毛片在线播放视频免费观看永久 | 亚洲国产成人久久一区久久 | 水蜜桃视频在线观看免费| 18禁亚洲深夜福利人口| 国产精品亚洲片在线花蝴蝶| 羞羞漫画页面免费入口欢迎你| 老司机午夜在线视频免费观| 免费人人潮人人爽一区二区| 久99久无码精品视频免费播放| 中文字幕久无码免费久久| 免费h视频在线观看| 久久福利资源网站免费看| 成年女人免费v片| 亚洲?V无码成人精品区日韩| 国产精品亚洲玖玖玖在线观看| 亚洲人色婷婷成人网站在线观看| 亚洲av无码不卡| 亚洲国产精品综合久久2007| 亚洲另类无码专区丝袜| 免费大片av手机看片高清| 光棍天堂免费手机观看在线观看| 免费看又黄又无码的网站| 无码高潮少妇毛多水多水免费| 又黄又爽一线毛片免费观看| 亚洲线精品一区二区三区| 亚洲欧洲自拍拍偷午夜色| 亚洲丶国产丶欧美一区二区三区| xvideos永久免费入口| 2020因为爱你带字幕免费观看全集| 永久在线毛片免费观看| 亚洲男同帅GAY片在线观看| 亚洲人成伊人成综合网久久|