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

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

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

     

    其它章節的翻譯參見:

    http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4%E8%AF%B4%E6%98%8E%E4%B9%A6

    =================================================================

    序言

     

    這個文檔鞏固了下面幾個規范的內容:

    JDBC: JavaSQL類庫”

    JDBC 2.1 類庫”

    JDBC 2.0 標準擴展類庫”

    JDBC 3.0 規范”

     

    文檔介紹了JDBC 4.0 類庫的新特征和一些增強的特征。文檔根據不同特征劃分章節,這樣可以更方便了解JDBC 4.03.0的不同之處。

     

    讀者如果想了解JDBC類庫的詳細信息,可以參考JDBC的類庫文檔(Javadoc),該文檔可以由以下鏈接獲得:

    http://java.sun.com/products/jdbc

     

    ==========================================================================

    介紹

     

    1.1 JDBC類庫

    JDBC類庫提供了通過Java語言訪問關系數據庫的能力。Java程序通過JDBC可以執行SQL語句,對獲取的數據進行處理,并將變化了的數據存回數據庫。在分布式異構環境中,我們還可以通過JDBC操縱多個數據源。

     

    JDBC類庫基于X/Open SQL通用語言接口(CLI)ODBC也基于此。JDBC提供了一個使用方便的映射方案:從Java語言到X/Open 通用語言接口和SQL標準的抽象實體及概念的映射。

     

    1997年的產生至今,JDBC類庫已被廣泛的接受和實現。類庫的靈活性使得它可以有很多個具體實現。

     

    1.2 平臺

    JDBC類庫是Java平臺的一部分。4.0版分為兩個包:java.sql javax.sql。這兩個包都包含在JSE(Java桌面版)JEE(Java企業版)中。

     

    1.3 適合讀者

    該文檔主要面向下列產品的開發者:

    1. JDBC驅動程序

    2. 基于數據庫驅動提供三層架構服務的應用服務器

    3. 使用JDBC類庫來提供服務的工具

     

    該文檔想達到以下目的:

    1.對使用JDBC類庫的開發者的一個介紹

    2.作為開發基于JDBC的類庫的起始點

     

    ===============================================================

    目標

     

    2.1 歷史

    2.2 JDBC 4.0 之目標

    ---1.JEEJSE平臺相處融洽

    ---2.SQL:2003一致

    ---3.鞏固前述四個規范

    ---4.提供中立于廠商的通用功能

    ---5.主要只針對SQL類型的數據源

    ---6.提供高層類庫和工具的基礎設施

    ---7.保持簡單

    ---8.加強可靠性、可用性和可伸縮性

    ---9.保持向后兼容性

    ---10.JDBC行集(RowSet)緊密聯系

    ---11.與連接器架構(Connectors)兼容

    ---12.清晰描述JDBC需求

    ==================================================================

    新特性概覽

     

    3.1 變更概覽

    JDBC 4.0 類庫在以下領域注入了變化和新的元素:

    1.自動加載java.sql.Driver

    DriverManager.getConnection方法被修改以利用JSE的服務提供者機制來自動加載JDBC驅動。這樣就不需要調用Class.forName方法了。

    2.類庫使用更容易

    添加了標準JDBC注釋。支持數據集(DataSet),使Java應用調用SQL數據源更加方便。

    3.ROWID數據類型

    添加了java.sql.RowID數據類型,使得JDBC程序可以訪問SQL ROWID

    4.支持本地字符集轉換(National Character Set Conversion)

    添加了一些JDBC類型:NCHAR, NVARCHAR, LONGVARCHAR, NCLOB。對應的方法setNString, setNCharacterStream, setNClob也被添加到PreparedStatement接口中。

    5.增強了對BLOBCLOB的支持

    Connection接口添加了生產BLOBCLOBNCLOB對象的方法。PreparedStatement接口添加了通過InputStream插入BLOB的方法和使用Reader插入CLOBNCLOB的方法。Blob, ClobNClob現在可以通過free方法釋放資源。

    6.SQL/XMLXML支持

    SQL2003引入了用SQL表達XML數據的概念。一些類庫被添加進來以支持應用對這些數據的訪問。

    7.包裝器(Wrapper)模式

    添加了解包JDBC實現的能力,使開發者可以利用在廠商實現中提供的非標準JDBC方法。

    8.加強的SQLException

    添加對JSE鏈式異常的支持。SQLException現在支持Iterable接口,所以我們可以在for-each循環里讀取SQLExceptions。新添加了兩類SQL異常:SQLTransientExceptionSQLNonTransientException。每個類都提供映射到普通SQLState類型值(譯者注:SQLState)的子類。

    9.連接管理

    ConnectionStatement接口得到了增強,以利于對連接狀態的跟蹤,并增加在池環境中管理Statement對象的靈活性。

    10.JDBC類庫的變化

    下面的JDBC接口被修改:

    ---10.1 Connection

    添加了下列方法:createBlob, createClob, createNClob, createQueryObject, isValid, createXML, getClientInfo, setClientInfo

    ---10.2 CallableStatement

    添加了下列方法:getRowId, setRowId, getNClob, setNString, setNCharacterStream, setNClob, getSQLXML, setSQLXML。重載了setClobsetBlob方法。

    ---10.3 DatabaseMetaData

    添加了下列方法:getRowIdLifetime, autoCommitFailureClosesAllResultSets, providesQueryObjectGenerator, getClientInfoProperties, supportsStoredFunctionsUsingCallSyntax. 重載了getSchemas方法。

    ---10.4 PreparedStatement

    添加了下列方法:setRowId, setNString, setNCharacterStream, setSQLXML, isPoolable, setPoolable, setNClob。重載了setClobsetBlob方法。

    ---10.5 ResultSet

    添加了下列方法:getHoldability, getRowId, updateRowID, getNClob, isClosed, updateNString, getSQLXML, updateSQLXML, updateNClob

    ---10.6 Statement

    添加了isClosedgetResultSetHoldability方法。

    ---10.7 DataSource

    添加了createQueryObject方法。

    ---10.8 PooledConnection

    添加了addStatementEventListenerremoveStatementEventListener方法。

    ====================================================================

    概覽

     

    JDBC類庫使得Java程序可以訪問多個數據源,但在大多數情況下,這個數據源是關系數據庫,并且通過SQL訪問。然而,實現JDBC技術的驅動也可以基于其它的數據源,包括遺留文件系統和面向對象的系統。

    JDBC類庫的主要目的就是提供應用程序訪問多種數據源的標準接口。

     

    這一章介紹JDBC類庫的一些關鍵概念,并描述JDBC應用的兩個通用環境及其中的功能實現。

     

    4.1 創建連接

    JDBC類庫中的Connection接口代表了底層數據源的一個連接。

     

    在典型場景中,JDBC應用程序使用兩種機制連接到數據源:

    1.DriverManager --- 這個類在JDBC 1.0中引入,它使用硬編碼的URL來加載驅動。

    2.DataSource --- 這個接口在JDBC 2.0可選包中引入。它優于DriverManager方式,因為它隱藏了數據源的詳細信息。我們通過設置DataSource的屬性來標明它代表的數據源。當getConnection方法被調用時,DataSource對象會返回一個對應的連接。我們可以通過改變DataSource的屬性來使它指向另一個數據源,而不是改變程序代碼。而且,如果DataSource的實現改變了,使用它的應用程序代碼不需要改變。

     

    JDBC類庫也定義了兩個DataSource的擴展,用來支持企業級應用,如下:

    1.ConnectionPoolDataSource --- 支持物理連接的緩存和重用,這樣可以提高應用的性能和可伸縮性。

    2.XADataSource --- 提供可以使用在分布式事務中的連接。

     

    posted @ 2005-09-27 17:18 羅明 閱讀(1226) | 評論 (2)編輯 收藏
     
    第一天找了很久都沒找到,確定了才開始翻譯的,結果今天又發現了,已經有若干高手在翻譯了,http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4%E8%AF%B4%E6%98%8E%E4%B9%A6
    我就不能再插手了,但英文版我還是要看完的,長長知識,ft~
    posted @ 2005-09-27 16:47 羅明 閱讀(749) | 評論 (0)編輯 收藏
     
    Chapter14 - END
    14.批更新(Batch Update)
    ---14.1 批更新概述
    -------14.1.1 Statements
    -------14.1.2 成功的執行
    -------14.1.3 在執行過程中處理失敗
    -------14.1.4 PreparedStatement對象
    -------14.1.5 CallableStatement對象
    15.結果集(Result Sets)
    ---15.1 結果集分類
    -------15.1.1 結果集類型
    -------15.1.2 結果集并發度
    -------15.1.3 結果集持久性(ResultSet Holdability)
    -------------15.1.3.1 決定結果集持久性
    -------15.1.4 設置結果集的類型、并發度和持久性
    ---15.2 創建和操縱結果集
    -------15.2.1 創建結果集對象
    -------15.2.2 移動游標
    -------15.2.3 取值
    -------------15.2.3.1 數據類型轉換
    -------------15.2.3.2 結果集元數據
    -------------15.2.3.3 取NULL值
    -------15.2.4 修改結果集
    -------------15.2.4.1 更新行
    -------------15.2.4.2 刪除行
    -------------15.2.4.3 插入行
    -------------15.2.4.4 給定位置的更新和刪除
    -------15.2.5 關閉結果集
    16.高級數據類型
    ---16.1 SQL數據類型分類
    ---16.2 SQL2003類型映射
    ---16.3 Blob和Clob對象
    -------16.3.1 創建Blob和Clob對象
    -------16.3.2 在結果集中取BLOB和CLOB類型值
    -------16.3.3 訪問Blob和Clob對象數據
    -------16.3.4 保存Blob和Clob對象
    -------16.3.5 更改Blob和Clob對象
    -------16.3.6 釋放Blob和Clob資源
    ---16.4 Array對象
    -------16.4.1 獲取Array對象
    -------16.4.2 保存Array對象
    -------16.4.3 更新Array對象
    ---16.5 Ref對象
    -------16.5.1 取REF值
    -------16.5.2 獲取Ref引用的對象
    -------16.5.3 保存Ref對象
    -------16.5.4 保存Ref引用的對象
    -------16.5.5 元數據
    ---16.6 DISTINCT類型
    -------16.6.1 獲取DISTINCT類型
    -------16.6.2 保存DISTINCT類型
    -------16.6.3 元數據
    ---16.7 結構化類型
    -------16.7.1 獲取結構化類型
    -------16.7.2 保存結構化類型
    -------16.7.3 元數據
    ---16.8 數據鏈接
    -------16.8.1 獲取外部數據的引用
    -------16.8.2 保存外部數據的引用
    -------16.8.3 元數據
    17.定制類型映射
    ---17.1 類型映射
    ---17.2 類轉換
    ---17.3 SQL數據流
    -------17.3.1 取數據
    -------17.3.2 保存數據
    ---17.4 示例
    -------17.4.1 一個SQL結構化類型
    -------17.4.2 SQLData的實現
    -------17.4.3 SQL類型繼承在Java語言中的鏡像
    -------17.4.4 SQL DISTINCT類型映射示例
    ---17.5 轉換組(Transform Groups)的作用
    ---17.6 映射的普遍性
    ---17.7 NULL數據
    18.和連接器(Connectors)的關系
    ---18.1 系統約定
    ---18.2 映射連接器系統約定到JDBC接口
    ---18.3 用連接器的RAR文件格式將JDBC驅動打包
    19. SQL ROWID
    ---19.1 RowId合理(Validity)期限
    ---19.2 取RowId值
    ---19.3 使用RowId
    20.新添的開發利器
    ---20.1 概覽
    -------20.1.1 JDBC注釋(Annotations)
    -------20.1.2 Query接口
    -------20.1.3 BaseQuery接口
    -------20.1.4 DataSet接口
    -------20.1.5 自定義類
    -------20.1.6 QueryObjectGenerator接口
    ---20.2 創建實現Query接口的實例
    -------20.2.1 創建一個Query接口
    -------20.2.2 Query接口的具體實現
    -------------20.2.2.1 Connection.createQueryObject和DataSource.createQueryObject方法
    -------------20.2.2.2 調用Query接口的方法
    -------------20.2.2.3 關閉Query對象
    ---20.3 JDBC注釋(Annotations)
    -------20.3.1 Query注釋
    -------------20.3.1.1 sql注釋成員
    -------------20.3.1.2 readOnly注釋成員
    -------------20.3.1.3 connected注釋成員
    -------------20.3.1.4 allColumnsMapped注釋成員
    -------------20.3.1.5 scrollable注釋成員
    -------------20.3.1.6 參數化的sql注釋成員
    -------20.3.2 Update注釋
    -------------20.3.2.1 sql注釋成員
    -------------20.3.2.2 keys注釋成員
    -------------20.3.2.3 返回影響行數
    -------------20.3.2.4 參數化的sql注釋成員
    -------20.3.3 Column注釋
    -------------20.3.3.1 name注釋成員
    -------------20.3.3.2 uniqueIdentifier注釋成員
    -------20.3.4 AutoGeneratedKeys注釋
    -------20.3.5 Table注釋
    -------------20.3.5.1 name注釋成員
    ---20.4 數據集(DataSet)參數化類型
    -------20.4.1 創建數據集參數化類型實例
    -------20.4.2 操縱數據集
    -------------20.4.2.1 查看數據集
    -------------20.4.2.2 將數據集轉換成行集(RowSet)
    -------------20.4.2.3 創建當前行的一個拷貝
    -------------20.4.2.4 插入行
    -------------20.4.2.5 刪除行
    -------------20.4.2.6 修改行
    -------------20.4.2.7 關閉數據集對象
    -------------20.4.2.8 同步數據集對象
    ---20.5 QueryObjectFactory類
    -------20.5.1 QueryObjectFactory的方法
    -------------20.5.1.1 createDefaultQueryObject方法
    -------------20.5.1.2 createQueryObject方法
    -------20.5.2 管理事務
    21.SQL2003和XML
    22.包裝器(Wrapper)
    附錄A.修正歷史
    附錄B.數據類型轉換表
    附錄C.標量方法(Scalar Functions)
    ------C.1 數字方法
    ------C.2 字符串方法
    ------C.3 時間和日期方法
    ------C.4 系統方法
    ------C.5 轉換方法
    附錄D.JDBC注釋
    ------D.1 AutogeneratedKeys(自動生成關鍵字)注釋
    ------D.2 Query(查詢)注釋
    ------D.3 Update(更新)注釋
    ------D.4 Column(列)注釋
    ------D.5 Table(表)注釋
    附錄E.相關文檔
    英文原文:
    14. Batch Updates 117
    14.1 Description of Batch Updates 117
    14.1.1 Statements 117
    14.1.2 Successful Execution 118
    14.1.3 Handling Failures during Execution 119
    14.1.4 PreparedStatement Objects 120
    14.1.5 CallableStatement Objects 121

    15. Result Sets 123
    15.1 Kinds of ResultSet Objects 123
    15.1.1 ResultSet Types 123
    15.1.2 ResultSet Concurrency 124
    15.1.3 ResultSet Holdability 125
    15.1.3.1 Determining ResultSet Holdability 125
    15.1.4 Specifying ResultSet Type, Concurrency and Holdability 126
    15.2 Creating and Manipulating ResultSet Objects 126
    15.2.1 Creating ResultSet Objects 126
    15.2.2 Cursor Movement 127
    15.2.3 Retrieving Values 128
    15.2.3.1 Data Type Conversions 129
    15.2.3.2 ResultSet Metadata 129
    15.2.3.3 Retrieving NULL values 129
    15.2.4 Modifying ResultSet Objects 129
    15.2.4.1 Updating a Row 130
    15.2.4.2 Deleting a Row 131
    15.2.4.3 Inserting a Row 132
    15.2.4.4 Positioned Updates and Deletes 133
    15.2.5 Closing a ResultSet Object 134

    16. Advanced Data Types 135
    16.1 Taxonomy of SQL Types 135
    16.2 Mapping of SQL2003 Types 137
    16.3 Blob and Clob Objects 137
    16.3.1 Creating Blob and Clob Objects 137
    16.3.2 Retrieving BLOB and CLOB Values in a ResultSet 138
    16.3.3 Accessing Blob and Clob Object Data 138
    16.3.4 Storing Blob and Clob Objects 139
    16.3.5 Altering Blob and Clob Objects 140
    16.3.6 Releasing Blob and Clob Resources 140
    16.4 Array Objects 141
    16.4.1 Retrieving Array Objects 141
    16.4.2 Storing Array Objects 141
    16.4.3 Updating Array Objects 142
    16.5 Ref Objects 142
    16.5.1 Retrieving REF Values 142
    16.5.2 Retrieving the Referenced Value 143
    16.5.3 Storing Ref Objects 143
    16.5.4 Storing the Referenced Value 143
    16.5.5 Metadata 144
    16.6 Distinct Types 144
    16.6.1 Retrieving Distinct Types 144
    16.6.2 Storing Distinct Types 145
    16.6.3 Metadata 145
    16.7 Structured Types 146
    16.7.1 Retrieving Structured Types 146
    16.7.2 Storing Structured Types 146
    16.7.3 Metadata 147
    16.8 Datalinks 147
    16.8.1 Retrieving References to External Data 148
    16.8.2 Storing References to External Data 148
    16.8.3 Metadata 148

    17. Customized Type Mapping 149
    17.1 The Type Mapping 149
    17.2 Class Conventions 150
    17.3 Streams of SQL Data 151
    17.3.1 Retrieving Data 151
    17.3.2 Storing Data 152
    17.4 Examples 153
    17.4.1 An SQL Structured Type 153
    17.4.2 SQLData Implementations 155
    17.4.3 Mirroring SQL Inheritance in the Java Programming Language 159
    17.4.4 Example Mapping of SQL DISTINCT Type 160
    17.5 Effect of Transform Groups 161
    17.6 Generality of the Approach 162
    17.7 NULL Data 162

    18. Relationship to Connectors 165
    18.1 System Contracts 165
    18.2 Mapping Connector System Contracts to JDBC Interfaces 166
    18.3 Packaging JDBC Drivers in Connector RAR File Format 167

    19. SQL ROWID 169
    19.1 Lifetime of RowId Validity 169
    19.2 Retrieving RowId Values 170
    19.3 Using RowId Values 170

    20. Ease of Development 173
    20.1 Overview 173
    20.1.1 JDBC Annotations 173
    20.1.2 Query Interface 174
    20.1.3 BaseQuery Interface 174
    20.1.4 DataSet interface 174
    20.1.5 User-Defined Class 175
    20.1.6 QueryObjectGenerator Interface 176
    20.2 Creating an instance of a Query interface 176
    20.2.1 Creating a Query Interface 176
    20.2.2 Concrete Query Interface implementation 177
    20.2.2.1 Connection.createQueryObject and DataSource.createQueryObject methods 177
    20.2.2.2 Invoking Query Interface Methods 178
    20.2.2.3 Closing a Query Object 178
    20.3 JDBC Annotations 178
    20.3.1 Query Annotation 179
    20.3.1.1 sql annotation element 179
    20.3.1.2 readOnly annotation element 180
    20.3.1.3 connected annotation element 180
    20.3.1.4 allColumnsMapped annotation element 180
    20.3.1.5 scrollable annotation element 182
    20.3.1.6 Parameterized sql Annotation element 182
    20.3.2 Update Annotation 183
    20.3.2.1 sql annotation element 183
    20.3.2.2 keys annotation element 184
    20.3.2.3 Returning an Update Count 184
    20.3.2.4 Parameterized sql Annotation element 184
    20.3.3 Column Annotation 185
    20.3.3.1 name annotation element 185
    20.3.3.2 uniqueIdentifier annotation element 186
    20.3.4 AutoGeneratedKeys annotation 187
    20.3.5 Table Annotation 188
    20.3.5.1 name annotation element 188
    20.4 DataSet Parameterized Type 189
    20.4.1 Creating a DataSet Parameterized Type Instance 190
    20.4.2 Manipulating a DataSet 190
    20.4.2.1 Traversing a DataSet 191
    20.4.2.2 Converting a DataSet to a RowSet 191
    20.4.2.3 Creating a copy of the Current Row 191
    20.4.2.4 Inserting Rows 191
    20.4.2.5 Deleting Rows 193
    20.4.2.6 Modifying Rows 193
    20.4.2.7 Closing a DataSet Object 194
    20.4.2.8 Synchronizing a DataSet 194
    20.5 QueryObjectFactory Class 195
    20.5.1 QueryObjectFactory Methods 195
    20.5.1.1 createDefaultQueryObject method 195
    20.5.1.2 createQueryObject method 196
    20.5.2 Managing Transactions 196

    21. SQL:2003 and XML 197

    22. Wrapper 199

    A. Revision History 201
    B. Data Type Conversion Tables 203
    C. Scalar Functions 211
    C.1 NUMERIC FUNCTIONS 211
    C.2 STRING FUNCTIONS 212
    C.3 TIME and DATE FUNCTIONS 213
    C.4 SYSTEM FUNCTIONS 213
    C.5 CONVERSION FUNCTIONS 214
    D. JDBC Annotations 215
    D.1 AutogeneratedKeys Annotation 215
    D.2 Query Annotation 215
    D.3 Update Annoation 216
    D.4 Column Annotation 216
    D.5 Table Annotation 216
    E. Related Documents 217
    歡迎提出修改意見
    posted @ 2005-09-24 02:40 羅明 閱讀(133) | 評論 (0)編輯 收藏
     

    Chapter14? -? END

    14.批更新(Batch Update)
    ---14.1 批更新概述
    -------14.1.1 Statements
    -------14.1.2 成功的執行
    -------14.1.3 在執行過程中處理失敗
    -------14.1.4 PreparedStatement對象
    -------14.1.5 CallableStatement對象
    15.結果集(Result Sets)
    ---15.1 結果集分類
    -------15.1.1 結果集類型
    -------15.1.2 結果集并發度
    -------15.1.3 結果集持久性(ResultSet Holdability)
    -------------15.1.3.1 決定結果集持久性
    -------15.1.4 設置結果集的類型、并發度和持久性
    ---15.2 創建和操縱結果集
    -------15.2.1 創建結果集對象
    -------15.2.2 移動游標
    -------15.2.3 取值
    -------------15.2.3.1 數據類型轉換
    -------------15.2.3.2 結果集元數據
    -------------15.2.3.3 取NULL值
    -------15.2.4 修改結果集
    -------------15.2.4.1 更新行
    -------------15.2.4.2 刪除行
    -------------15.2.4.3 插入行
    -------------15.2.4.4 給定位置的更新和刪除
    -------15.2.5 關閉結果集
    16.高級數據類型
    ---16.1 SQL數據類型分類
    ---16.2 SQL2003類型映射
    ---16.3 Blob和Clob對象
    -------16.3.1 創建Blob和Clob對象
    -------16.3.2 在結果集中取BLOB和CLOB類型值
    -------16.3.3 訪問Blob和Clob對象數據
    -------16.3.4 保存Blob和Clob對象
    -------16.3.5 更改Blob和Clob對象
    -------16.3.6 釋放Blob和Clob資源
    ---16.4 Array對象
    -------16.4.1 獲取Array對象
    -------16.4.2 保存Array對象
    -------16.4.3 更新Array對象
    ---16.5 Ref對象
    -------16.5.1 取REF值
    -------16.5.2 獲取Ref引用的對象
    -------16.5.3 保存Ref對象
    -------16.5.4 保存Ref引用的對象
    -------16.5.5 元數據
    ---16.6 DISTINCT類型
    -------16.6.1 獲取DISTINCT類型
    -------16.6.2 保存DISTINCT類型
    -------16.6.3 元數據
    ---16.7 結構化類型
    -------16.7.1 獲取結構化類型
    -------16.7.2 保存結構化類型
    -------16.7.3 元數據
    ---16.8 數據鏈接
    -------16.8.1 獲取外部數據的引用
    -------16.8.2 保存外部數據的引用
    -------16.8.3 元數據
    17.定制類型映射
    ---17.1 類型映射
    ---17.2 類轉換
    ---17.3 SQL數據流
    -------17.3.1 取數據
    -------17.3.2 保存數據
    ---17.4 示例
    -------17.4.1 一個SQL結構化類型
    -------17.4.2 SQLData的實現
    -------17.4.3 SQL類型繼承在Java語言中的鏡像
    -------17.4.4 SQL DISTINCT類型映射示例
    ---17.5 轉換組(Transform Groups)的作用
    ---17.6 映射的普遍性
    ---17.7 NULL數據
    18.和連接器(Connectors)的關系
    ---18.1 系統約定
    ---18.2 映射連接器系統約定到JDBC接口
    ---18.3 用連接器的RAR文件格式將JDBC驅動打包
    19. SQL ROWID
    ---19.1 RowId合理(Validity)期限
    ---19.2 取RowId值
    ---19.3 使用RowId
    20.新添的開發利器
    ---20.1 概覽
    -------20.1.1 JDBC注釋(Annotations)
    -------20.1.2 Query接口
    -------20.1.3 BaseQuery接口
    -------20.1.4 DataSet接口
    -------20.1.5 自定義類
    -------20.1.6 QueryObjectGenerator接口
    ---20.2 創建實現Query接口的實例
    -------20.2.1 創建一個Query接口
    -------20.2.2 Query接口的具體實現
    -------------20.2.2.1 Connection.createQueryObject和DataSource.createQueryObject方法
    -------------20.2.2.2 調用Query接口的方法
    -------------20.2.2.3 關閉Query對象
    ---20.3 JDBC注釋(Annotations)
    -------20.3.1 Query注釋
    -------------20.3.1.1 sql注釋成員
    -------------20.3.1.2 readOnly注釋成員
    -------------20.3.1.3 connected注釋成員
    -------------20.3.1.4 allColumnsMapped注釋成員
    -------------20.3.1.5 scrollable注釋成員
    -------------20.3.1.6 參數化的sql注釋成員
    -------20.3.2 Update注釋
    -------------20.3.2.1 sql注釋成員
    -------------20.3.2.2 keys注釋成員
    -------------20.3.2.3 返回影響行數
    -------------20.3.2.4 參數化的sql注釋成員
    -------20.3.3 Column注釋
    -------------20.3.3.1 name注釋成員
    -------------20.3.3.2 uniqueIdentifier注釋成員
    -------20.3.4 AutoGeneratedKeys注釋
    -------20.3.5 Table注釋
    -------------20.3.5.1 name注釋成員
    ---20.4 數據集(DataSet)參數化類型
    -------20.4.1 創建數據集參數化類型實例
    -------20.4.2 操縱數據集
    -------------20.4.2.1 查看數據集
    -------------20.4.2.2 將數據集轉換成行集(RowSet)
    -------------20.4.2.3 創建當前行的一個拷貝
    -------------20.4.2.4 插入行
    -------------20.4.2.5 刪除行
    -------------20.4.2.6 修改行
    -------------20.4.2.7 關閉數據集對象
    -------------20.4.2.8 同步數據集對象
    ---20.5 QueryObjectFactory類
    -------20.5.1 QueryObjectFactory的方法
    -------------20.5.1.1 createDefaultQueryObject方法
    -------------20.5.1.2 createQueryObject方法
    -------20.5.2 管理事務
    21.SQL2003和XML
    22.包裝器(Wrapper)
    附錄A.修正歷史
    附錄B.數據類型轉換表
    附錄C.標量方法(Scalar Functions)
    ------C.1 數字方法
    ------C.2 字符串方法
    ------C.3 時間和日期方法
    ------C.4 系統方法
    ------C.5 轉換方法
    附錄D.JDBC注釋
    ------D.1 AutogeneratedKeys(自動生成關鍵字)注釋
    ------D.2 Query(查詢)注釋
    ------D.3 Update(更新)注釋
    ------D.4 Column(列)注釋
    ------D.5 Table(表)注釋
    附錄E.相關文檔

    英文原文:
    14. Batch Updates 117
    14.1 Description of Batch Updates 117
    14.1.1 Statements 117
    14.1.2 Successful Execution 118
    14.1.3 Handling Failures during Execution 119
    14.1.4 PreparedStatement Objects 120
    14.1.5 CallableStatement Objects 121

    15. Result Sets 123
    15.1 Kinds of ResultSet Objects 123
    15.1.1 ResultSet Types 123
    15.1.2 ResultSet Concurrency 124
    15.1.3 ResultSet Holdability 125
    15.1.3.1 Determining ResultSet Holdability 125
    15.1.4 Specifying ResultSet Type, Concurrency and Holdability 126
    15.2 Creating and Manipulating ResultSet Objects 126
    15.2.1 Creating ResultSet Objects 126
    15.2.2 Cursor Movement 127
    15.2.3 Retrieving Values 128
    15.2.3.1 Data Type Conversions 129
    15.2.3.2 ResultSet Metadata 129
    15.2.3.3 Retrieving NULL values 129
    15.2.4 Modifying ResultSet Objects 129
    15.2.4.1 Updating a Row 130
    15.2.4.2 Deleting a Row 131
    15.2.4.3 Inserting a Row 132
    15.2.4.4 Positioned Updates and Deletes 133
    15.2.5 Closing a ResultSet Object 134

    16. Advanced Data Types 135
    16.1 Taxonomy of SQL Types 135
    16.2 Mapping of SQL2003 Types 137
    16.3 Blob and Clob Objects 137
    16.3.1 Creating Blob and Clob Objects 137
    16.3.2 Retrieving BLOB and CLOB Values in a ResultSet 138
    16.3.3 Accessing Blob and Clob Object Data 138
    16.3.4 Storing Blob and Clob Objects 139
    16.3.5 Altering Blob and Clob Objects 140
    16.3.6 Releasing Blob and Clob Resources 140
    16.4 Array Objects 141
    16.4.1 Retrieving Array Objects 141
    16.4.2 Storing Array Objects 141
    16.4.3 Updating Array Objects 142
    16.5 Ref Objects 142
    16.5.1 Retrieving REF Values 142
    16.5.2 Retrieving the Referenced Value 143
    16.5.3 Storing Ref Objects 143
    16.5.4 Storing the Referenced Value 143
    16.5.5 Metadata 144
    16.6 Distinct Types 144
    16.6.1 Retrieving Distinct Types 144
    16.6.2 Storing Distinct Types 145
    16.6.3 Metadata 145
    16.7 Structured Types 146
    16.7.1 Retrieving Structured Types 146
    16.7.2 Storing Structured Types 146
    16.7.3 Metadata 147
    16.8 Datalinks 147
    16.8.1 Retrieving References to External Data 148
    16.8.2 Storing References to External Data 148
    16.8.3 Metadata 148

    17. Customized Type Mapping 149
    17.1 The Type Mapping 149
    17.2 Class Conventions 150
    17.3 Streams of SQL Data 151
    17.3.1 Retrieving Data 151
    17.3.2 Storing Data 152
    17.4 Examples 153
    17.4.1 An SQL Structured Type 153
    17.4.2 SQLData Implementations 155
    17.4.3 Mirroring SQL Inheritance in the Java Programming Language 159
    17.4.4 Example Mapping of SQL DISTINCT Type 160
    17.5 Effect of Transform Groups 161
    17.6 Generality of the Approach 162
    17.7 NULL Data 162

    18. Relationship to Connectors 165
    18.1 System Contracts 165
    18.2 Mapping Connector System Contracts to JDBC Interfaces 166
    18.3 Packaging JDBC Drivers in Connector RAR File Format 167

    19. SQL ROWID 169
    19.1 Lifetime of RowId Validity 169
    19.2 Retrieving RowId Values 170
    19.3 Using RowId Values 170

    20. Ease of Development 173
    20.1 Overview 173
    20.1.1 JDBC Annotations 173
    20.1.2 Query Interface 174
    20.1.3 BaseQuery Interface 174
    20.1.4 DataSet interface 174
    20.1.5 User-Defined Class 175
    20.1.6 QueryObjectGenerator Interface 176
    20.2 Creating an instance of a Query interface 176
    20.2.1 Creating a Query Interface 176
    20.2.2 Concrete Query Interface implementation 177
    20.2.2.1 Connection.createQueryObject and DataSource.createQueryObject methods 177
    20.2.2.2 Invoking Query Interface Methods 178
    20.2.2.3 Closing a Query Object 178
    20.3 JDBC Annotations 178
    20.3.1 Query Annotation 179
    20.3.1.1 sql annotation element 179
    20.3.1.2 readOnly annotation element 180
    20.3.1.3 connected annotation element 180
    20.3.1.4 allColumnsMapped annotation element 180
    20.3.1.5 scrollable annotation element 182
    20.3.1.6 Parameterized sql Annotation element 182
    20.3.2 Update Annotation 183
    20.3.2.1 sql annotation element 183
    20.3.2.2 keys annotation element 184
    20.3.2.3 Returning an Update Count 184
    20.3.2.4 Parameterized sql Annotation element 184
    20.3.3 Column Annotation 185
    20.3.3.1 name annotation element 185
    20.3.3.2 uniqueIdentifier annotation element 186
    20.3.4 AutoGeneratedKeys annotation 187
    20.3.5 Table Annotation 188
    20.3.5.1 name annotation element 188
    20.4 DataSet Parameterized Type 189
    20.4.1 Creating a DataSet Parameterized Type Instance 190
    20.4.2 Manipulating a DataSet 190
    20.4.2.1 Traversing a DataSet 191
    20.4.2.2 Converting a DataSet to a RowSet 191
    20.4.2.3 Creating a copy of the Current Row 191
    20.4.2.4 Inserting Rows 191
    20.4.2.5 Deleting Rows 193
    20.4.2.6 Modifying Rows 193
    20.4.2.7 Closing a DataSet Object 194
    20.4.2.8 Synchronizing a DataSet 194
    20.5 QueryObjectFactory Class 195
    20.5.1 QueryObjectFactory Methods 195
    20.5.1.1 createDefaultQueryObject method 195
    20.5.1.2 createQueryObject method 196
    20.5.2 Managing Transactions 196

    21. SQL:2003 and XML 197

    22. Wrapper 199

    A. Revision History 201
    B. Data Type Conversion Tables 203
    C. Scalar Functions 211
    C.1 NUMERIC FUNCTIONS 211
    C.2 STRING FUNCTIONS 212
    C.3 TIME and DATE FUNCTIONS 213
    C.4 SYSTEM FUNCTIONS 213
    C.5 CONVERSION FUNCTIONS 214
    D. JDBC Annotations 215
    D.1 AutogeneratedKeys Annotation 215
    D.2 Query Annotation 215
    D.3 Update Annoation 216
    D.4 Column Annotation 216
    D.5 Table Annotation 216
    E. Related Documents 217

    歡迎提出修改意見

    posted @ 2005-09-23 18:43 羅明 閱讀(784) | 評論 (0)編輯 收藏
     

    Chapter9 - Chapter13

    9.事務
    ---9.1 事務邊界和自動提交(Auto-commit)
    ------9.1.1 禁用自動提交模式
    ---9.2 事務隔離級別
    ------9.2.1 使用setTransactionIsolation方法
    ------9.2.2 性能考慮
    ---9.3 保存點(Savepoints)
    ------9.3.1 設置和回滾保存點
    ------9.3.2 釋放(release)保存點
    10.連接
    ---10.1 驅動程序分類
    ---10.2 Driver接口
    -------10.2.1 加載一個實現了java.sql.Driver接口的驅動
    ---10.3 DriverManager類
    -------10.3.1 SQLPermission類
    ---10.4 DataSource接口
    -------10.4.1 DataSource屬性
    -------10.4.2 JNDI類庫和應用移植能力(Application Portability)
    -------10.4.3 用DataSource對象獲得連接
    11.連接池
    ---11.1 ConnectionPoolDataSource類和PooledConnection類
    ---11.2 連接事件
    ---11.3 三層架構中的連接池
    ---11.4 DataSource的實現和連接池
    ---11.5 部署
    ---11.6 用池連接(Pooled Connections)實現語句(Statement)重用
    -------11.6.1 使用池語句(Pooled Statement)
    -------11.6.2 關閉池語句
    ---11.7 ConnectionPoolDataSource類的屬性
    12.分布式事務
    ---12.1 基礎設施
    ---12.2 XADataSource和XAConnection接口
    -------12.2.1 部署一個XADataSource對象
    -------12.2.2 獲得一個連接
    ---12.3 XAResource接口
    ---12.4 事務管理
    -------12.4.1 兩階段提交
    ---12.5 關閉連接
    ---12.6 XAResource接口的局限
    13.語句(Statements)
    ---13.1 Statement接口
    -------13.1.1 創建Statements
    -------------13.1.1.1 設置ResultSet的相關特征
    -------13.1.2 執行Statement
    -------------13.1.2.1 返回ResultSet對象
    -------------13.1.2.2 返回影響行數(Update Count)
    -------------13.1.2.3 使用execute方法
    -------13.1.3 關閉Statement
    ---13.2 PreparedStatement接口
    -------13.2.1 創建PreparedStatement對象
    -------------13.2.1.1 設置ResultSet的相關特征
    -------13.2.2 參數設置
    -------------13.2.2.1 類型轉換
    -------------13.2.2.2 本地字符集轉換(National Character Set Conversions)
    -------------13.2.2.3 使用setObject方法進行類型轉換
    -------------13.2.2.4 設置NULL參數
    -------13.2.3 描述PreparedStatement的輸出和輸入
    -------13.2.4 執行PreparedStatement
    -------------13.2.4.1 返回ResultSet對象
    -------------13.2.4.2 返回影響行數
    -------------13.2.4.3 使用execute方法
    ---13.3 CallableStatement接口
    -------13.3.1 創建CallableStatement對象
    -------13.3.2 參數設置
    -------------13.3.2.1 IN參數
    -------------13.3.2.2 OUT參數
    -------------13.3.2.3 INOUT參數
    -------13.3.3 執行CallableStatement
    -------------13.3.3.1 返回單個ResultSet對象
    -------------13.3.3.2 返回影響行數
    -------------13.3.3.3 返回Unknown或多個結果
    ---13.4 轉義語法(Escape Syntax)
    -------13.4.1 標量方法(Scalar Functions)
    -------13.4.2 日期和時間字符串
    -------13.4.3 外聯結(Outer Joins)
    -------13.4.4 存儲過程
    -------13.4.5 LIKE轉義符
    ---13.5 性能提示(Hints)
    ---13.6 獲取由數據庫自動生成的關鍵字

    英文原文:
    9. Transactions 53
    9.1 Transaction Boundaries and Auto-commit 53
    9.1.1 Disabling Auto-commit Mode 54
    9.2 Transaction Isolation Levels 55
    9.2.1 Using the setTransactionIsolation Method 56
    9.2.2 Performance Considerations 56
    9.3 Savepoints 57
    9.3.1 Setting and Rolling Back to a Savepoint 57
    9.3.2 Releasing a Savepoint 58

    10. Connections 59
    10.1 Types of Drivers 60
    10.2 The Driver Interface 60
    10.2.1 Loading a driver that implements java.sql.Driver 61
    10.3 The DriverManager Class 61
    10.3.1 The SQLPermission Class 63
    10.4 The DataSource Interface 63
    10.4.1 DataSource Properties 64
    10.4.2 The JNDI API and Application Portability 65
    10.4.3 Getting a Connection with a DataSource Object 66

    11. Connection Pooling 67
    11.1 ConnectionPoolDataSource and PooledConnection 69
    11.2 Connection Events 70
    11.3 Connection Pooling in a Three-tier Environment 71
    11.4 DataSource Implementations and Connection Pooling 72
    11.5 Deployment 74
    11.6 Reuse of Statements by Pooled Connections 75
    11.6.1 Using a Pooled Statement 76
    11.6.2 Closing a Pooled Statement 77
    11.7 ConnectionPoolDataSource Properties 78

    12. Distributed Transactions 81
    12.1 Infrastructure 81
    12.2 XADataSource and XAConnection 84
    12.2.1 Deploying an XADataSource Object 85
    12.2.2 Getting a Connection 86
    12.3 XAResource 86
    12.4 Transaction Management 87
    12.4.1 Two-phase Commit 88
    12.5 Closing the Connection 90
    12.6 Limitations of the XAResource Interface 90

    13. Statements 93
    13.1 The Statement Interface 93
    13.1.1 Creating Statements 93
    13.1.1.1 Setting ResultSet Characteristics 94
    13.1.2 Executing Statement Objects 94
    13.1.2.1 Returning a ResultSet object 95
    13.1.2.2 Returning an Update Count 95
    13.1.2.3 Using the Method execute 95
    13.1.3 Closing Statement Objects 96
    13.2 The PreparedStatement Interface 97
    13.2.1 Creating a PreparedStatement Object 97
    13.2.1.1 Setting ResultSet Characteristics 97
    13.2.2 Setting Parameters 98
    13.2.2.1 Type Conversions 98
    13.2.2.2 National Character Set Conversions 99
    13.2.2.3 Type Conversions Using the Method setObject 99
    13.2.2.4 Setting NULL Parameters 100
    13.2.3 Describing Outputs and Inputs of a PreparedStatement
    Object 101
    13.2.4 Executing a PreparedStatement Object 102
    13.2.4.1 Returning a ResultSet Object 102
    13.2.4.2 Returning a Row Count 102
    13.2.4.3 Using the Method execute 103
    13.3 The CallableStatement Interface 103
    13.3.1 Creating a CallableStatement Object 104
    13.3.2 Setting Parameters 104
    13.3.2.1 IN Parameters 105
    13.3.2.2 OUT Parameters 105
    13.3.2.3 INOUT Parameters 106
    13.3.3 Executing a CallableStatement Object 106
    13.3.3.1 Returning a Single ResultSet Object 107
    13.3.3.2 Returning a Row Count 107
    13.3.3.3 Returning Unknown or Multiple Results 107
    13.4 Escape Syntax 109
    13.4.1 Scalar Functions 110
    13.4.2 Date and Time Literals 111
    13.4.3 Outer Joins 111
    13.4.4 Stored Procedures 112
    13.4.5 LIKE Escape Characters 113
    13.5 Performance Hints 113
    13.6 Retrieving Auto Generated Keys 113

    歡迎提出修改意見

    posted @ 2005-09-22 03:01 羅明 閱讀(112) | 評論 (0)編輯 收藏
     

    Chapter9 - Chapter13

    9.事務
    ---9.1 事務邊界和自動提交(Auto-commit)
    ------9.1.1 禁用自動提交模式
    ---9.2 事務隔離級別
    ------9.2.1 使用setTransactionIsolation方法
    ------9.2.2 性能考慮
    ---9.3 保存點(Savepoints)
    ------9.3.1 設置和回滾保存點
    ------9.3.2 釋放(release)保存點
    10.連接
    ---10.1 驅動程序分類
    ---10.2 Driver接口
    -------10.2.1 加載一個實現了java.sql.Driver接口的驅動
    ---10.3 DriverManager類
    -------10.3.1 SQLPermission類
    ---10.4 DataSource接口
    -------10.4.1 DataSource屬性
    -------10.4.2 JNDI類庫和應用移植能力(Application Portability)
    -------10.4.3 用DataSource對象獲得連接
    11.連接池
    ---11.1 ConnectionPoolDataSource類和PooledConnection類
    ---11.2 連接事件
    ---11.3 三層架構中的連接池
    ---11.4 DataSource的實現和連接池
    ---11.5 部署
    ---11.6 用池連接(Pooled Connections)實現語句(Statement)重用
    -------11.6.1 使用池語句(Pooled Statement)
    -------11.6.2 關閉池語句
    ---11.7 ConnectionPoolDataSource類的屬性
    12.分布式事務
    ---12.1 基礎設施
    ---12.2 XADataSource和XAConnection接口
    -------12.2.1 部署一個XADataSource對象
    -------12.2.2 獲得一個連接
    ---12.3 XAResource接口
    ---12.4 事務管理
    -------12.4.1 兩階段提交
    ---12.5 關閉連接
    ---12.6 XAResource接口的局限
    13.語句(Statements)
    ---13.1 Statement接口
    -------13.1.1 創建Statements
    -------------13.1.1.1 設置ResultSet的相關特征
    -------13.1.2 執行Statement
    -------------13.1.2.1 返回ResultSet對象
    -------------13.1.2.2 返回影響行數(Update Count)
    -------------13.1.2.3 使用execute方法
    -------13.1.3 關閉Statement
    ---13.2 PreparedStatement接口
    -------13.2.1 創建PreparedStatement對象
    -------------13.2.1.1 設置ResultSet的相關特征
    -------13.2.2 參數設置
    -------------13.2.2.1 類型轉換
    -------------13.2.2.2 本地字符集轉換(National Character Set Conversions)
    -------------13.2.2.3 使用setObject方法進行類型轉換
    -------------13.2.2.4 設置NULL參數
    -------13.2.3 描述PreparedStatement的輸出和輸入
    -------13.2.4 執行PreparedStatement
    -------------13.2.4.1 返回ResultSet對象
    -------------13.2.4.2 返回影響行數
    -------------13.2.4.3 使用execute方法
    ---13.3 CallableStatement接口
    -------13.3.1 創建CallableStatement對象
    -------13.3.2 參數設置
    -------------13.3.2.1 IN參數
    -------------13.3.2.2 OUT參數
    -------------13.3.2.3 INOUT參數
    -------13.3.3 執行CallableStatement
    -------------13.3.3.1 返回單個ResultSet對象
    -------------13.3.3.2 返回影響行數
    -------------13.3.3.3 返回Unknown或多個結果
    ---13.4 轉義語法(Escape Syntax)
    -------13.4.1 標量方法(Scalar Functions)
    -------13.4.2 日期和時間字符串
    -------13.4.3 外聯結(Outer Joins)
    -------13.4.4 存儲過程
    -------13.4.5 LIKE轉義符
    ---13.5 性能提示(Hints)
    ---13.6 獲取由數據庫自動生成的關鍵字

    英文原文:
    9. Transactions 53
    9.1 Transaction Boundaries and Auto-commit 53
    9.1.1 Disabling Auto-commit Mode 54
    9.2 Transaction Isolation Levels 55
    9.2.1 Using the setTransactionIsolation Method 56
    9.2.2 Performance Considerations 56
    9.3 Savepoints 57
    9.3.1 Setting and Rolling Back to a Savepoint 57
    9.3.2 Releasing a Savepoint 58

    10. Connections 59
    10.1 Types of Drivers 60
    10.2 The Driver Interface 60
    10.2.1 Loading a driver that implements java.sql.Driver 61
    10.3 The DriverManager Class 61
    10.3.1 The SQLPermission Class 63
    10.4 The DataSource Interface 63
    10.4.1 DataSource Properties 64
    10.4.2 The JNDI API and Application Portability 65
    10.4.3 Getting a Connection with a DataSource Object 66

    11. Connection Pooling 67
    11.1 ConnectionPoolDataSource and PooledConnection 69
    11.2 Connection Events 70
    11.3 Connection Pooling in a Three-tier Environment 71
    11.4 DataSource Implementations and Connection Pooling 72
    11.5 Deployment 74
    11.6 Reuse of Statements by Pooled Connections 75
    11.6.1 Using a Pooled Statement 76
    11.6.2 Closing a Pooled Statement 77
    11.7 ConnectionPoolDataSource Properties 78

    12. Distributed Transactions 81
    12.1 Infrastructure 81
    12.2 XADataSource and XAConnection 84
    12.2.1 Deploying an XADataSource Object 85
    12.2.2 Getting a Connection 86
    12.3 XAResource 86
    12.4 Transaction Management 87
    12.4.1 Two-phase Commit 88
    12.5 Closing the Connection 90
    12.6 Limitations of the XAResource Interface 90

    13. Statements 93
    13.1 The Statement Interface 93
    13.1.1 Creating Statements 93
    13.1.1.1 Setting ResultSet Characteristics 94
    13.1.2 Executing Statement Objects 94
    13.1.2.1 Returning a ResultSet object 95
    13.1.2.2 Returning an Update Count 95
    13.1.2.3 Using the Method execute 95
    13.1.3 Closing Statement Objects 96
    13.2 The PreparedStatement Interface 97
    13.2.1 Creating a PreparedStatement Object 97
    13.2.1.1 Setting ResultSet Characteristics 97
    13.2.2 Setting Parameters 98
    13.2.2.1 Type Conversions 98
    13.2.2.2 National Character Set Conversions 99
    13.2.2.3 Type Conversions Using the Method setObject 99
    13.2.2.4 Setting NULL Parameters 100
    13.2.3 Describing Outputs and Inputs of a PreparedStatement
    Object 101
    13.2.4 Executing a PreparedStatement Object 102
    13.2.4.1 Returning a ResultSet Object 102
    13.2.4.2 Returning a Row Count 102
    13.2.4.3 Using the Method execute 103
    13.3 The CallableStatement Interface 103
    13.3.1 Creating a CallableStatement Object 104
    13.3.2 Setting Parameters 104
    13.3.2.1 IN Parameters 105
    13.3.2.2 OUT Parameters 105
    13.3.2.3 INOUT Parameters 106
    13.3.3 Executing a CallableStatement Object 106
    13.3.3.1 Returning a Single ResultSet Object 107
    13.3.3.2 Returning a Row Count 107
    13.3.3.3 Returning Unknown or Multiple Results 107
    13.4 Escape Syntax 109
    13.4.1 Scalar Functions 110
    13.4.2 Date and Time Literals 111
    13.4.3 Outer Joins 111
    13.4.4 Stored Procedures 112
    13.4.5 LIKE Escape Characters 113
    13.5 Performance Hints 113
    13.6 Retrieving Auto Generated Keys 113

    歡迎提出修改意見

    posted @ 2005-09-21 19:00 羅明 閱讀(766) | 評論 (0)編輯 收藏
     
    Chapter1 - Chapter8
    序言
    排版格式
    提交反饋
    1.介紹
    ---1.1 JDBC 類庫
    ---1.2 平臺
    ---1.3 目標聽眾
    ---1.4 鳴謝
    2.目標
    ---2.1 歷史
    ---2.2 目標概要
    3.新特性概覽
    ---3.1 變動概覽
    4.概要
    ---4.1 建立連接
    ---4.2 執行SQL語句和操縱結果
    ------4.2.1 對高級SQL數據類型的支持
    ---4.3 兩層模型
    ---4.4 三層模型
    ---4.5 J2EE中的JDBC
    5.類和接口
    ---5.1 java.sql包
    ---5.2 javax.sql包
    6.服從規則(Compliance)
    ---6.1 定義
    ---6.2 指導原則和要求
    ---6.3 JDBC 1.0 API的服從規則
    ---6.4 JDBC 2.0 API的服從規則
    ---6.5 JDBC 3.0 API的服從規則
    ---6.6 JDBC 4.0 API的服從規則
    ---6.7 決定服從級別
    ---6.8 不贊成使用的API
    7.數據庫元數據(Database Metadata)
    ---7.1 創建DatabaseMetadata對象
    ---7.2 獲取概要(general)信息
    ---7.3 決定要支持的特性
    ---7.4 對數據源的限制
    ---7.5 SQL對象及其屬性
    ---7.6 對事務的支持
    ---7.7 新加入的方法
    ---7.8 經過修改的方法
    8.異常
    ---8.1 SQLException類
    ------8.1.1 對JSE中鏈式異常的支持
    ------8.1.2 察看SQLException
    -----------8.1.2.1 使用ForEach循環體察看SQLException
    ---8.2 SQLWarning類
    ---8.3 DataTruncation類
    ------8.3.1 不出聲地截斷(Silent Truncation)
    ---8.4 BatchUpdateException類
    ---8.5 SQL異常分類
    ------8.5.1 非暫態SQL異常
    ------8.5.2 暫態SQL異常
    英文原文:
    Preface 1
    Typographic Conventions 2
    Submitting Feedback 2
    1. Introduction 3
    1.1 The JDBC API 3
    1.2 Platforms 3
    1.3 Target Audience 4
    1.4 Acknowledgements 4
    2. Goals 7
    2.1 History 7
    2.2 Overview of Goals 7
    3. Summary of New Features 11
    3.1 Overview of changes 11
    4. Overview 15
    4.1 Establishing a Connection 15
    4.2 Executing SQL Statements and Manipulating Results 16
    4.2.1 Support for SQL Advanced Data Types 17
    4.3 Two-tier Model 17
    4.4 Three-tier Model 18
    4.5 JDBC in the J2EE Platform 20
    5. Classes and Interfaces 21
    5.1 The java.sql Package 21
    5.2 The javax.sql Package 26
    6. Compliance 31
    6.1 Definitions 31
    6.2 Guidelines and Requirements 32
    6.3 JDBC 1.0 API Compliance 33
    6.4 JDBC 2.0 API Compliance 33
    6.5 JDBC 3.0 API Compliance 34
    6.6 JDBC 4.0 API Compliance 35
    6.7 Determining Compliance Level 35
    6.8 Deprecated APIs 36
    7. Database Metadata 39
    7.1 Creating a DatabaseMetadata Object 40
    7.2 Retrieving General Information 40
    7.3 Determining Feature Support 41
    7.4 Data Source Limits 41
    7.5 SQL Objects and Their Attributes 42
    7.6 Transaction Support 42
    7.7 New Methods 42
    7.8 Modified Methods 43
    8. Exceptions 45
    8.1 SQLException 45
    8.1.1 Support for the J2SE Chained Execeptions 46
    8.1.2 Navigating SQLExceptions 46
    8.1.2.1 Using a For-Each Loop with SQLExceptions 47
    8.2 SQLWarning 48
    8.3 DataTruncation 48
    8.3.1 Silent Truncation 49
    8.4 BatchUpdateException 49
    8.5 Categorized SQLExceptions 50
    8.5.1 NonTransient SQLExceptions 50
    8.5.2 Transient SQLExceptions 51
    歡迎提出修改意見,謝謝!
    posted @ 2005-09-21 18:36 羅明 閱讀(185) | 評論 (0)編輯 收藏
     
    JDBC 4.0 Specification - 目錄1 (英漢對照)

    /*
    Modified in 2005/9/27 by Andyluo.
    "簡介" change to "序言"
    "目標聽眾" change to "適合讀者"
    "兼容性" change to "服從規則"
    */
    序言 *
    排版格式
    提交反饋

    1.介紹
    ---1.1 JDBC 類庫
    ---1.2 平臺
    ---1.3 適合讀者 *
    ---1.4 鳴謝
    2.目標
    ---2.1 歷史
    ---2.2 目標概要
    3.新特性概覽
    ---3.1 變動概要
    4.概要
    ---4.1 建立連接
    ---4.2 執行SQL語句和操縱結果
    ------4.2.1 對高級SQL數據類型的支持
    ---4.3 兩層模型
    ---4.4 三層模型
    ---4.5 J2EE中的JDBC
    5.類和接口
    ---5.1 java.sql包
    ---5.2 javax.sql包
    6.服從規則(Compliance) *
    ---6.1 定義
    ---6.2 指導原則和要求
    ---6.3 JDBC 1.0 API的服從規則
    ---6.4 JDBC 2.0 API的服從規則
    ---6.5 JDBC 3.0 API的服從規則
    ---6.6 JDBC 4.0 API的服從規則
    ---6.7 決定服從級別
    ---6.8 不贊成使用的API
    7.數據庫元數據(Database Metadata)
    ---7.1 創建DatabaseMetadata對象
    ---7.2 獲取概要(general)信息
    ---7.3 決定要支持的特性
    ---7.4 對數據源的限制
    ---7.5 SQL對象及其屬性
    ---7.6 對事務的支持
    ---7.7 新加入的方法
    ---7.8 經過修改的方法
    8.異常
    ---8.1 SQLException類
    ------8.1.1 對JSE中鏈式異常的支持
    ------8.1.2 察看SQLException
    -----------8.1.2.1 使用ForEach循環體察看SQLException
    ---8.2 SQLWarning類
    ---8.3 DataTruncation類
    ------8.3.1 不出聲地截斷(Silent Truncation)
    ---8.4 BatchUpdateException類
    ---8.5 SQL異常分類
    ------8.5.1 非暫態SQL異常
    ------8.5.2 暫態SQL異常

    英文原文:
    Preface 1
    Typographic Conventions 2
    Submitting Feedback 2

    1. Introduction 3
    1.1 The JDBC API 3
    1.2 Platforms 3
    1.3 Target Audience 4
    1.4 Acknowledgements 4

    2. Goals 7
    2.1 History 7
    2.2 Overview of Goals 7

    3. Summary of New Features 11
    3.1 Overview of changes 11

    4. Overview 15
    4.1 Establishing a Connection 15
    4.2 Executing SQL Statements and Manipulating Results 16
    4.2.1 Support for SQL Advanced Data Types 17
    4.3 Two-tier Model 17
    4.4 Three-tier Model 18
    4.5 JDBC in the J2EE Platform 20

    5. Classes and Interfaces 21
    5.1 The java.sql Package 21
    5.2 The javax.sql Package 26

    6. Compliance 31
    6.1 Definitions 31
    6.2 Guidelines and Requirements 32
    6.3 JDBC 1.0 API Compliance 33
    6.4 JDBC 2.0 API Compliance 33
    6.5 JDBC 3.0 API Compliance 34
    6.6 JDBC 4.0 API Compliance 35
    6.7 Determining Compliance Level 35
    6.8 Deprecated APIs 36

    7. Database Metadata 39
    7.1 Creating a DatabaseMetadata Object 40
    7.2 Retrieving General Information 40
    7.3 Determining Feature Support 41
    7.4 Data Source Limits 41
    7.5 SQL Objects and Their Attributes 42
    7.6 Transaction Support 42
    7.7 New Methods 42
    7.8 Modified Methods 43

    8. Exceptions 45
    8.1 SQLException 45
    8.1.1 Support for the J2SE Chained Execeptions 46
    8.1.2 Navigating SQLExceptions 46
    8.1.2.1 Using a For-Each Loop with SQLExceptions 47
    8.2 SQLWarning 48
    8.3 DataTruncation 48
    8.3.1 Silent Truncation 49
    8.4 BatchUpdateException 49
    8.5 Categorized SQLExceptions 50
    8.5.1 NonTransient SQLExceptions 50
    8.5.2 Transient SQLExceptions 51

    歡迎提出修改意見!

    posted @ 2005-09-21 10:49 羅明 閱讀(729) | 評論 (1)編輯 收藏
     
    JDBC 4.0 Specification - outline(譯文)

    JSR 221
    Early Draft
    June 02, 2005

    JDBC是一個包含在JSE(Java桌面版)和JEE(Java企業版)里的API,它提供幾乎所有SQL數據庫之間的跨DBMS(數據庫管理系統)連接,和對報表和文本文件等表格數據源(tabular data sources)的訪問。通過一個JDBC的驅動程序,我們能聚集處在不同環境中(heterogeneous environment)的企業數據。

    JDBC technology is an API (included in both J2SE and J2EE releases) that provides cross-DBMS connectivity to a wide range of SQL databases and access to other tabular data sources, such as spreadsheets or flat files. With a JDBC technology-enabled driver, you can connect all corporate data even in a heterogeneous environment.

    posted @ 2005-09-21 10:49 羅明 閱讀(630) | 評論 (0)編輯 收藏
     
    JDBC 4.0 Specification - outline(譯文)
    JSR 221
    Early Draft
    June 02, 2005
    JDBC是一個包含在JSE(Java桌面版)和JEE(Java企業版)里的API,它提供幾乎所有SQL數據庫之間的跨DBMS(數據庫管理系統)連接,和對報表和文本文件等表格數據源(tabular data sources)的訪問。通過一個JDBC的驅動程序,我們能聚集處在不同環境中(heterogeneous environment)的企業數據。
    JDBC technology is an API (included in both J2SE and J2EE releases) that provides cross-DBMS connectivity to a wide range of SQL databases and access to other tabular data sources, such as spreadsheets or flat files. With a JDBC technology-enabled driver, you can connect all corporate data even in a heterogeneous environment.
    posted @ 2005-09-20 20:57 羅明 閱讀(117) | 評論 (0)編輯 收藏
     
    網絡日志列表:歷史

    歷史

    posted @ 2005-09-20 13:11 羅明 閱讀(133) | 評論 (0)編輯 收藏
     
    有電腦了,呵呵
    嚇我一跳,居然在MSN Messenger上就能看到我的文章,好在沒有寫過激的內容,罪過罪過,: )
    posted @ 2005-09-16 23:06 羅明 閱讀(113) | 評論 (0)編輯 收藏
     
    音樂列表:往事如風

    往事如風

    posted @ 2005-09-16 18:47 羅明 閱讀(166) | 評論 (0)編輯 收藏
     
    天天對著屏幕的日子
    現在居然還沒有電腦,已經過了一個星期了,公司的辦事效率就這么低嗎?還是新員工太多了,現在還輪不到我們這些實習生。搞得我上次寫三好標兵材料也不知道上哪去寫。我倒還可以,自己有個筆記本,別的同學就沒這么好了,天天只能拿幾本雜志看一下,估計是比我還無聊咯。氣憤ing
    我估計得用Flash做項目了(大哥,不會吧,我們可是軟件學院的學生啊,代碼都沒的編?),但這個項目作畢業設計好像太小了(由于沒有電腦,Team Leader現在還沒有告訴我們項目的詳細情況,不知道做Flash哪方面的應用,如果只是簡單的動畫,那確實太小了),我現在也沒有裝Flash MX,因為被告知不要下載東西,會影響公司和國外總部的一些網絡交流(搞視頻電話怎么就不單獨拉一根線呢,我們這網速已經是4.6k/s了,kick)。現在在看一些Flex的資料,不知能不能用到哦,Flex作為RIA確實挺好的,只是它的類庫怎么就要收錢呢!?見錢眼開的Macromedia最終還是受到了懲罰,被Adobe收購了,hiahia(:) or :()
    現在寫一篇Blog,權當放松一下疲倦的心情,flying...
    還有!是誰說剛畢業盡量去大公司的,給我站出來,pat&kick&push&pull。。。搞得我現在沒有活干,有也是一些簡單的,555
    (不過公司有一點比較好,按規章制度辦事&用英語書面交流)
    posted @ 2005-09-14 23:20 羅明 閱讀(93) | 評論 (0)編輯 收藏
     
    公司給發月餅了
    hoho,有兩大盒呢,
    有誰要月餅啊?:)
    posted @ 2005-09-13 19:14 羅明 閱讀(101) | 評論 (0)編輯 收藏
     
    兩種形式局部變量之內存釋放時間

    函數內定義的局部變量的棧內存在函數結束后就會被釋放,

    但用{}隔開的作用域里定義的局部變量不會在離開作用域時馬上釋放掉

    (見《高質量C++編程指南》P51,7.7杜絕野指針)

    <My Opinion: 局部變量的內存釋放發生于函數結束,與作用域無關>

    posted @ 2005-09-12 21:19 羅明 閱讀(498) | 評論 (0)編輯 收藏
     
    將MFC中的CString轉換成char*

    將CString類型的變量轉化成char*:

    char* keyChar = key.GetBuffer(0); //key為CString類型

    ...

    key.ReleaseBuffer(); //用完CString后記得釋放緩沖

    剛開始用C++,以前都是用的Java,希望Everything will go pretty well!

    posted @ 2005-09-12 21:14 羅明 閱讀(362) | 評論 (1)編輯 收藏
     
    暑假學習Java時寫的一些Blog

    關鍵詞: HSQL DB, Eclipse 3.1, Apache Commons, Swing Hacks

    16:59 2005-7-23

    HSQL DB里,一個Database由四個文件組成:(如數據庫test)

    test.properties

    test.script

    test.log

    test.data

    test.backup

    propertiest文件定義數據庫的基本設置;

    script包含數據庫表和數據庫對象的定義,還有non-cached tables的數據;

    log包含最近對數據庫進行的操作;

    data包含被緩存表(cached tables)

    HSqlDBJDBC方法分為:

    連接相關的方法

    元數據方法

    數據庫訪問方法

    Hsql建立數據庫:

    在一個項目里執行建立數據庫的代碼,生成的數據庫在Workspace對應的項目文件夾下;

    而在一個項目里調用另一個項目的生成數據庫的方法,生成的數據庫在Eclipse Home文件夾下

    Indicate things are happening in the view –only through jobs

    ***getSite().getAdapter(IWorkbenchSiteProgressService.class)***

    Eclipse3.1的一些新特性:

    Open Untitled File

    A text editor can be opened without creating a file first.

    Simply go to File > New > Untitled Text File.

    Text編輯器也開始支持超鏈接了,按住Ctrl鍵,將鼠標放在URL的上面就可以了

    我以前寫過一篇制作和使用庫插件的文章,制作庫插件得花一點時間,但在3.1里做就非常方便了,

    可以直接將第三方庫轉換為庫插件:

    Create a plug-in from existing JAR

    PDE now provides a wizard that creates a plug-in from existing JAR archives.

    This wizard is ideal if you would like to package third-party non-Eclipse JARs as an

    Eclipse plug-in.

    The wizard can be invoked via File > New > Project > Plug-in from existing JAR archives.

    Java SE6Mustang)要提供中文的Doc了,盡管用英文的Doc已經習慣了,但對于大多數程序員來說

    也是一件好事啊。呵呵(見blogExcellence

    18:03 2005-8-3

    Apache Commons Lang中的一些方法

    首字母大寫打印字符串:StringUtils.capitalize(string);

    打印布爾值,用YesNo表示:BooleanUtils.toStringYesNo(true);

    求一個數值數組中的最大值: NumberUtils.max(array);

    打印數組:ArrayUtils.toString(array);

    測試數值是否在某一范圍:

    Range range = new DoubleRange(90,120);

    range.containsDouble(102.5);

    隨機數:RandomUtils.nextInt(100);

    測試字符串是否為數值:NumberUtils.isNumber(string/*eg. 0x3F*/);

    Stringsplit方法有時會得到意外的結果:

    "aaa|bbb|ccc".split("|") 結果:{,a,a,a,}

    "aaa|bbb|ccc".split("\\|")才能得到正確結果,*+也是如此

    6:58 2005-8-6

    w.k. Eclipse3.1垃圾回收后只占18M內存,我現在可以一直開著Eclipse了,呵呵

    11:19 2005-8-7

    找出Java反編譯利器DJ,打算破解IDEA

    9:09 2005-8-8

    暈,發現Eclipse的幫助不能顯示了,顯示找不著org.eclipse.help.internal.webapp.data包,

    找到webapp的插件目錄,發現里面的web-inf目錄是小寫的,里面lib目錄包含的servlet.jar

    剛好包括了org.eclipse.help.internal.webapp.data包,可以肯定是web-inf目錄小寫的緣故,

    但為什么會變成小寫的呢,我的D盤數據通過ghost從俱樂部的機器上拷過來的,以前好像聽說過

    一些軟件不支持大小寫,不出意外的話,就是ghost幫我改的咯。

    16:00 2005-8-10

    看一個項目的源代碼時,如果出現字符方面的錯誤,有可能是Encoding沒有設置好,

    看看Readme要求怎么設(一般要設為UTF-8

    19:30 2005-8-11

    運行程序和瀏覽URL(包括mailto::

    /** Launch default browser on Windows */

    if (GlobalSettings.isWindows())

    {

    Program.launch(localHref);

    }

    19:38 2005-8-11

    mailto:?body=TheEmailBody&subject=TheSubject

    15:14 2005-8-12

    Shell最小化:shell.setMinimized(true);

    18:19 2005-8-18

    JDK5.0文檔,CHM版本的:

    http://www.matrix.org.cn/resource/upload/content/2005_07_30_191519_vorbArhhNZ.chm

    22:47 2005-8-25

    Get Large File Icons

    Not to leave Windows lonely, here is an undocumented class that will let you obtain large desktop icons and other file information. The FileSystemView only provides access to file icons of a "default" size, which usually means 16 by 16 pixels. If you look at your operating system desktop, however, you may see icons that are much bigger, with more detail. There is no standardized way of getting to the larger icons, but on Windows you can use the hidden class called sun.awt.shell.ShellFolder to retrieve larger (32 by 32) desktop file icons. This class is only available in Sun's JVM, so it won't work with other vendors, or on other platforms.

    The code below will take a filename and show the file's large icon in a window.

    public class LargeIconTest {

    public static void main(String[] args) throws Exception {

    // Create a File instance of an existing file

    File file = new File(args[0]);

    // Get metadata and create an icon

    sun.awt.shell.ShellFolder sf =

    sun.awt.shell.ShellFolder.getShellFolder(file);

    Icon icon = new ImageIcon(sf.getIcon(true));

    System.out.println("type = " + sf.getFolderType());

    // show the icon

    JLabel label = new JLabel(icon);

    JFrame frame = new JFrame();

    frame.getContentPane().add(label);

    frame.pack();

    frame.show();

    }

    }

    ShellFolder is a wrapper for the metadata of the selected file. From this object, you can retrieve both the icon and a text description of the file's type. If you run this on an MP3 file, it might print the string "type = MPEG Layer 3 Audio" and show a 32 by 32 pixel iTunes MP3 icon.

    Change the Look and Feel of an App from the Command Line

    Sometimes, Swing applications don't provide a way to change a look and feel at runtime. When using an application like this, you can override the default look and feel with your own setting from the command line using the swing.defaultlaf property.

    java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel

    myapp.MainClass

    You can also use this technique to apply a new look and feel that the original developer never thought of.

    Hacks for the Metal Look and Feel

    There are a variety of undocumented properties that control the look of Metal, Swing's cross-platform look and feel. JTree nodes can have lines connecting children to their parent, but depending on your current setup, the lines may or may not be showing. You can control the lines with a client property called JTree.lineStyle. Add this code after you create your JTree.

    // show the lines in a JTree

    tree.putClientProperty("JTree.lineStyle", "Angled");

    // hide the lines in a jtree

    tree.putClientProperty("JTree.lineStyle", "None");

    One of the big complaints about Metal is that the menus and labels use bold fonts. With another quick undocumented system property, you can turn that off.

    java -Dswing.boldMetal=false myapp.MainClass

    You can also turn on the rollover for JToolBar buttons by using a secret property. A rollover is useful because it gives the user visual feedback that the mouse cursor is over the right place. Given the size of the typical toolbar button, this feedback is essential.

    toolbar.putClientProperty("JToolBar.isRollover",Boolean.TRUE);

    There is a longer (though, by no means comprehensive) list of properties on this wiki page. Swing, and Metal in particular, has lots of undocumented system properties. As you discover them, please add your own comments to the wiki page. Also remember that these are undocumented for a reason, and could easily change or go away in the future. Use them at your own risk.

    Conclusion

    Swing is a powerful toolkit with lots of hidden features that you can use to bring out the best in your application. This article documents just a few interesting techniques. Swing Hacks from O'Reilly covers another 100 hacks to improve your software. None of the techniques I've shown are required features, but they can add a level of polish that will make your apps stand out from the rest. And in a crowded software marketplace, anything that makes your program better than the competition is a good thing.

    posted @ 2005-09-12 21:08 羅明 閱讀(315) | 評論 (0)編輯 收藏
     
    Some rules of C++ programming
    1. Use std::string instead of char * or char []
    2. Use standard containers instead of homegrown containers
    3. Manage your class data to avoid resource leaks and crashes
    4. Use virtual destructors in class hierarchies
    5. Use smart pointers instead of raw pointers
    posted @ 2005-08-26 12:18 羅明 閱讀(493) | 評論 (0)編輯 收藏
     
    Getting started with Java Web Start
    Java Sketchbook: Getting Started with Java Web Start by Joshua Marinacci 08/11/2005 Contents What is Java Web Start? How It Works Deploying "My Pirate!" Add a Description and Icon, and Splash Screen Building Add an Icon Add a Splash Screen Updating an Application Removing an Application Conclusion Resources Many web developers long for a way to build applications with richer interfaces. They would love to build desktop applications with all of the power that client-side Java provides, but don't want to give up the ease of deployment that comes with web apps. How do you launch a program without downloading installers? How to you make it secure and safe to use? How do you update the program without asking your users to go download a new version? These are features that web app developers take for granted and don't want to give up in exchange for a richer interface. It may seem hopeless, but there is an answer: Java Web Start. Java Web Start (JWS) is a technology that lets you deploy a desktop Java application directly from a web page. It provides security, safety, and automatic updates when you roll out new versions. It will even give your program an icon on the desktop. In short, Java Web Start gives you the power of a desktop app with the ease of deployment users expect from a web app. This two-part series will tell you everything you need to know to start using Java Web Start. By the end of part one, you will have a simple running application that can be launched and updated from the web. Part two will cover security, optimized downloads, and how to polish your program to give it a professional shine. What is Java Web Start? Java Web Start is an implementation of the Java Network Launching Protocol (JNLP) specification. It provides a way to launch a desktop Java program from a web link and install it to your users' desktops. Once installed, JWS will check for updates every time the users run your program, ensuring they always have the most recent version installed. In addition to its launch capabilities, Java Web Start also provides a protected sandbox for running untrusted applications. This is similar to the applet sandbox in a web browser. It allows users to run programs from potentially unsafe locations without worrying that the program could delete files, steal information, or replicate itself to other computers. In the age of viruses, worms, and spyware, this is a big concern. With Java Web Start, you can know that both you and your users will be protected. Originally bundled as a separate download, Java Web Start is now included in the JRE. If you have J2SE 5.0 on your computer (or Java 1.4, on Mac OS X) then you already have Java Web Start installed and you can get started right away. While it does introduce a few new APIs (mainly for dealing with the sandbox), you can get started without writing any new code. You just need a JNLP descriptor file. How It Works Java Web Start works by using a special file called the JNLP descriptor, which is a small XML document that describes your application and its needs. This file lists the .jars that make up your program, the starting class with the main method, security settings, and most visibly, a splash screen and an icon. Together, these settings describe how the program is launched and how it looks to your users. Once you've written a JNLP file, you can put it on your web server and make a link to it. When someone clicks on the link, their web browser will download the JNLP file and start the JWS application launcher. JWS will then download all of the .jars that make up your program (along with any other resources like images and icons), install an icon on the desktop (if requested), and then start your program. The next time the user runs the program from the desktop icon, JWS will check for any updated resources before starting the program again. If this all sounds pretty complicated, don't worry. We'll start with a simple example so you can see how it all works. Imagine a virtual pet game where the player raises pirates, leading them on treasure hunts and boarding raids. The program could be called "My Pirate!". This is what its JNLP might look like. My Pirate! Let's go through this one line at a time. The first line contains the XML prolog. This is what tells a parser that what follows will be an XML file. This should be the same for any JNLP file. Next is the jnlp element, with two attributes, one for the href of the jnlp itself and one for the codebase, which says where the .jars and other resources will be downloaded from. Inside the jnlp element are three sections: information, resources, and application-desc. information has purely descriptive content. The title specifies, as you would expect, the name of the program. This title will be used in the JWS control panel, for the name of the desktop icon, and in the platform-specific application manager, like the "Add and Remove Programs" control panel in Windows. The information section can contain other things like icons, a splash screen, or longer descriptions, but the title is enough to get started. The resources section tells Java Web Start which .jars and other resources are required to run your program. These are all relative to the codebase attribute in the jnlp element. For example, the mypirate.jar file must be on my web server at the URL codebase plus href; in other words, http://mypirate.com/downloads/mypirate.jar. The resources section can also contain native libraries, extensions, properties, and other elements, but jar is the most important. The last section, application-desc, specifies some attribute about the application. In this case I have told JWS that the main class of my program is mypirate.Startup. All JNLPs need this section so that JWS will know how to start the program. Without, it JWS would throw an exception the first time I try to run the program. Deploying "My Pirate!" In theory, you can just upload your JNLPs, .jars, and other files to your website and call it a day. In practice, however, it's not that simple. First, you must make sure you upload your files to the same place specified in the codebase attribute of your JNLP. For "My Pirate!" I would have to upload the files to http://mypirate.com/downloads/. Even if I load the JNLP file from somewhere else (generated by a servlet on another server, perhaps), Java Web Start will still load the .jars relative to the codebase specified in the JNLP file. The second common stumbling block is the MIME type. Most web servers don't yet understand how to serve jnlp files. If I just dropped the files into a standard Apache server, the web browser would probably think the file is plain text and show it in a browser window rather than calling Java Web Start. I have to tell my web server to serve any file with a .jnlp extension as application/x-java-jnlp-file. Each web server has its own configuration, but for Apache, you can add a line to your httpd.conf next to the other AddType lines, like this: AddType application/x-java-jnlp-file .jnlp That should be it. If I point my web browser at http://mypirate.com/downloads/mypirate.jnlp, I will see the JNLP downloaded and my program will start. Depending on my particular Java Web Start implementation, it may ask me if I want to keep this JNLP as a permanent application. If I say yes, it will create a program icon on my desktop or hard drive. Add a Description and Icon, and Splash Screen Building A plain JNLP file for my program works, but it's missing a few things. The "Add/Remove Programs" control panel in Windows will list it simply as "My Pirate!" with no further information about who made the program or what it does. It has no splash screen when it starts, and it uses the generic coffee cup icon. In short, it doesn't feel professional. Fortunately, the Java Web Start developers thought of this and provided easy ways to add some polish. Add an Icon To add an icon you must add an element to the information section of your JNLP. The icon element needs an href attribute containing the URL of the icon to use. This icon can be a GIF or a JPEG, or another platform-dependent format (BMP, ICO, PICT). Be sure to test the platforms you are targeting to determine which formats will work. Mustang will improve PNG support to give icons full transparency. My Pirate! The icon will be loaded relative to the codebase, so I upload it to the same location on my web server. Now my application on disk will look like Figure 2 instead of Figure 1. Figure 1. Standard JWS icon Figure 2. Custom pirate icon Add a Splash Screen Java Web Start also supports splash screens. A splash screen is an image that will appear while the program is launching. It provides feedback to let the user know the program hasn't crashed during a potentially long initialization routine. A splash screen also serves as a visual identifier for your program and your company, creating a consistent feel throughout. You can create a splash screen by providing a second icon with its kind set to splash. My Pirate! Which will look like Figure 3: Figure 3. "My Pirate!" splash screen If you don't provide a splash screen, Java Web Start will use another icon element in your application. If there is no icon element at all, then it will generate a splash screen using the description and title of your program. This typically is ugly, however, so I highly recommend you provide your own splash screen. Note: splash screens do not currently work on Mac OS X. Updating an Application Updating your application is very easy. Just recompile your code and upload your new .jars to the web server. The next time one of your users starts the program (either via a link on a website or from an icon on the desktop), JWS will check for the new .jars. If the web server's .jar file timestamps are newer than the .jars on disk, then JWS will download the new .jars, add them to the cache, and then start your program. Java Web Start also provides a way to send out incremental updates, where only the changes to a .jar are downloaded instead of the entire .jar, but that is beyond the scope of this article and is only useful for large (multi-megabyte) applications. For more information on JarDiffs, take a look at the " Mapping Requests to Resources" section of the Java Web Start Download Servlet Guide. Removing an Application Java Web Start makes installing an application super easy, so it's nice that uninstalling is easy, as well. There is a program called the Application Manager that lets you manage the Web Start programs installed on your computer. This is part of the Java Control Panel on Windows and Linux. On Mac OS X, it is an application in the /Applications/Utilities/Java directory. You can also run the javaws program from the command line with no arguments to get to the cache viewer. The manager program shows information about each JWS application and allows you to start, update, or remove them. It also lets you create a desktop icon for a JWS app if you want it to feel more native. Conclusion Java Web Start is a great technology for deploying desktop Java applications without the usual headaches of desktop apps. In the first part of this article you have learned how to create a simple application, launch it from a web page, update it, and how to improve the look of the application with icons and a splash screen. Please join me in the second part, where we will look at the Java Web Start security model, use Pack 200 to decrease download time, and add some extra polish with documentation and file associations. Resources Sample code for this article Sun's Java Web Start home page Java Web Start Developer's Guide and specifications Joshua Marinacci first tried Java in 1995 at the request of his favorite TA and has never looked back. Read more The Java Sketchbook columns. View all java.net Articles. Does Java Web Start address your desktop deployment needs? Showing messages 1 through 35 of 35. Great idea with minor issues 2005-08-12 14:20:33 christian_schlichtherle [Reply | View] Hi Josh, let me stress first that I absolutely love the idea of JWS. I am currently using it for my application TrueMirror. I don't even think the security warning is a big issue. All that you need to overcome this is certificate, full stop. My issues are more practical ones: + I use as my app doesn't need any network. Unfortunately, JWS usually does NOT recognize my updates (not even if do not use this tag). I use DSL to connect to my provider and my shared host is in the same providers network, so I don't have any reason to think that my connectivity is the cause of the issue. Unfortunately, there is no documentation about how JWS actually detects an update, so I have no choice but guessing. So far I could not track down the issue. + I would like to put my app on CD or DVD for distribution, too. Using HTML and JNLP this shouldn't be a problem, but it is (at least on Windows) as you cannot address the current directory (on CD-ROM) in the codebase attribute. + The icon support for transparency is poor. I tried PNG and GIF. but wasn't able to get something professionally looking for my icon (see web site). As you can see this is nothing spectacular to fix, but a cause of daily annoyance... Regards, Christian Still a ways off 2005-08-12 09:33:13 detorres [Reply | View] Funny how every blog on JWS results in JWS bashing. I don't mean to bash it, but I have to agree that it's not working like it should.

    As a developer banking on using it to deploy an app to "real" people, that scares me. My app is deploying correctly for me, but will it work for my users? Only one of the WS links in this thread started for me, and like daniel, the application didn't really work. It will be interesting to see what happens during my beta testing. I'm praying that people are configuring their apps incorrectly. Let it work technically at least. Then I just have to worry about people's reaction to the "scary" dialogs.

    I was hoping JWS would be all I needed for deployment, but I will have to investigate alternate options like InstallAnywhere and EXE packagers.

    I understand what Sun is trying to do with JWS, and it makes sense. But to make it work for the masses, they need to be educated to appreciate what the extra steps are for. I also agree with daniel that a "smooth", non-secure option would be nice to have, but you have to clearly distinguish them so a user looking for a secure app can have confidence that he's not starting a non-secure JWS app.

    (Hey, where's my "preview" button?) Still a ways off 2005-08-12 09:34:39 detorres [Reply | View] I think I'll just stop trying to post to this %)&$ site. This is pathetic. It works different every time I try to post. Participation 2005-08-12 02:19:05 pdoubleya [Reply | View] One question--why is there no forum for community participation in JWS? I mean someplace we can discuss what features should be in place, problems there are, etc. I would love to see that. Two issues that came up recently I sent to the JWS team but got no response--there was a web form I found on a Sun site for JWS. That's OK, just want some way to give feedback. There are a few issues that bother me right now. One is that my testing showed that for Tiger, if two JNLP apps reference the same JAR file (fully-qualified), two copies are pulled down, even though the JAR should be cached, I think. The second issue is that it seems JWS is single-threading the downloads (at least, that's how it looks from the status dialogue). Why not have an option for parallel downloads for certain deployments? Certainly in a corporate environment you can count on the bandwidth. The third is that the JWS console is kind of hidden, at least on Windows. It's really a problem with JNLP apps being in their own class of things. What I want is a quick way to check the cache, flush it, get the latest versions, etc. I would normally expect to do this from add/remove programs, but the JWS apps there appear as normal apps. I end up hunting for the console whenever I need to flush the cache. Sorry, this is really griping as I don't know what exactly I'd prefer. I have to say I have been enjoying JWS as an end-user checking out new demos from people on the web. Cheers, Patrick Participation 2005-08-12 10:41:30 mikeazzi [Reply | View] One question--why is there no forum for community participation in JWS? I got two words for you for an answer: Stanely Ho. This guy has been unbelievable in that rigid, closed, old school, soviet style way with which he has been managing the JWS project. He has consistenly ignored all sorts of pleas, and cries from the community for opening up, and relaxing the JWS process. I can understand why Vic and others are frustrated with him, and wish he would just go away. I think he's doing more harm to JWS overall than good with his attitude. I mean consider this for example: this is a JWS article front and center, and this related discussion has been raging since, but I have yet to see a single response from Stanely, how arrogant is that? I'm sorry, but people like this should either get on with the program, or get out of the way. Unless of course he's no longer on this project, which is fine with me. Participation 2005-08-12 07:30:44 markswanson [Reply | View] I completely agree about the forum idea. The JDNC is a truly great example of how Sun projects can work with the community and most importantly get feedback from the community. I feel the one-way website submission mechanism that currently exists is one of the reasons JWS has been lost in the weeds over the past 5 years. Feedback by definition is a two-way mechanism. wrt single-threading I thought I read they improved that recently but I can't remember which changelog. wrt the cache I agree too. Further, I notice that when my JWS cache gets over some 2GB limit the jardiff/download mechanism starts to exhibit weird behaviour (the initial progressbar stops coming up even though it is downloading jardiffs) and eventually stops working. This would be less likely to happen if JWS managed its cache better and cleaned up obsolete versions of classes. Cheers. Great Features Rely On Server Side Code 2005-08-11 18:19:21 grlea [Reply | View] I really like Web Start. But does anyone else find it just totally useless that the advanced download features of webstart are server-based? I thinking particularly about PACK200 and JarDiffs. In order for them to work, you have to deploy servlets that divert requests for JARs to the pack or jardiff versions (or something like that). This isn't useful in a lot of scenarios, e.g. when publishing an app on java.net or on a hosted site that doesn't allow you to deploy servlets. Why can't Webstart clients just be written to look for these things automatically? Can anyone say whether there was a reason it was done this way? Great Features Rely On Server Side Code 2005-08-11 19:09:01 markswanson [Reply | View] I don't find it totally useless (because I heavily rely on them) but if the question was, "Why can't the JNLP file specify jars from sites other than where the JNLP file was downloaded from in the first place?" then I'd say that's a great question. I can only guess that the JWS developers just didn't want to step too broadly outside of the original Applet security rules. Perhaps they wanted to help minimize the chance of compromized jar files? If so (and it's pure speculation, of course) I think sealed and signed jars would do a much better job of that - and allow jars to be grabbed from anywhere. I'd really like to see a JNLP option that allowed signed/sealed jar files to exist from multiple different locations. An _alternate_ location in case a server was down would provide excellent failover. Apps could still _not_ ask for all-permissions and run in the sandbox. grlea: The WebStart folks have been quite good lately about accepting (and implementing) RFEs from the community. I say write it up and submit it - then post to java.net so we can add our comments and votes to it. I think it has a chance. Cheers. Great Features Rely On Server Side Code 2005-08-11 19:15:52 grlea [Reply | View] if the question was, "Why can't the JNLP file specify jars from sites other than where the JNLP file was downloaded from in the first place?" Sorry, Mark, that wasn't the question, but I guess I wasn't all that clear (and a little defamatory as well.) I guess the question was: What is the reason that Web Start can use PACK200 and JarDiff files, but only if the server has a special process to deliver them? Why can't Web Start have some way to automatically look for PACKed version or JarDiffs before looking at the original JARs? I say write it up and submit it - then post to java.net so we can add our comments A good idea. Thanks. : ) Graham. Great Features Rely On Server Side Code 2005-08-12 07:18:09 markswanson [Reply | View] Just thinking out loud: once the client has the JNLP it should know which jardiffs to ask for. Extra HTTP HEAD requests could easily be made in parallel to see if the pack.gz files were there as well. If the jardiff wasn't available then it could just download the full pack.gz - or fallback to the jar. This, in combination with an alternate address(es) for the server with signed/sealed jars would be a great idea that would help java.net/sourceforge/etc.. projects a great deal. The digital certificate issue bothers me (paying for certs from Verisign that signs certs for companies called "click yes to continue" - but that's a topic for another day. Cheers. a better example 2005-08-11 12:51:29 netsql [Reply | View] http://roomity.com is a bigger webstart app. .V Indeed 2005-08-11 05:08:39 pholthuizen [Reply | View] Amen brother! And it completely replaces the use of MSI for our tailor made applications at our office... Indeed 2005-08-11 06:47:04 danielmd [Reply | View] Let me guess your office consists of engineers :) Has anyone sit down with a non engineer and gave him a use test of java web start, let me tell you I have and most people find the security pop-up a very scary thing, they get confused and don't know what they should do. Java Web Start has so many flaws i will not even start discussing them, i know that efforts are being made to make easier to use in future version of mustang. This kind of application only works well with technically savvy people, if you sit down with a "real" person, and register the reactions you will see that this is not a technology directed to the masses (NOT READY FOR PRIME TIME). No access to file system (what native application does not have access to file system?), scary security digital signature/certificates pop-up, have you ever seen a native application do that? I haven't and until there is a seamless experience between native and web start applications it will not be ready for prime time. Indeed 2005-08-12 07:24:43 pholthuizen [Reply | View] No our office does not consist of engineers, they are plain simple end users who are able to "install" a web start application by selecting it from our intranet and yes they are able to determine which button to click on the security dialog (it's also visible on the intranet as an installation instruction)...

    And you only have to pass the security dialog once...

    Sincerely,
    Patrick Indeed 2005-08-12 09:08:10 danielmd [Reply | View] Let me rephrase that, your deployment environment consist of corporate users, not general public users... i talk about this on the "open letter". If you deploy it to the general public I would love to ear how is that working, how many request for support have you received... Indeed 2005-08-12 21:56:20 pholthuizen [Reply | View] - Indeed I was talking about corporate users where everything works fine. - In the beginning we created the installation instruction to make users press the right button on the security dialog, that was no problem at all as mentioned before. We had more problems with the shortcuts created by web start as some users didn't create them (additional installation instruction line) and didn't know how to get them at a later point, also some users threw them away and didn't know how to recreate them. But that is just a minor issue in my opinion, because after some explanation everything works fine now. - I understand that in a public environment you are not able to make instructions like these and I think you may have problems with exact the same issues as ours but then in a less acceptable manner. -- About the security dialog: I don't think it's much of a problem to have this security dialog as people start to know them through other ways as well (microsoft windows for example). The thing I have with the web start dialog is that it doesn't explain you the type of access the application wants. (isn't this addressed in mustang?) -- About the icon creation: I think more installation options would be nice and also more programmer control in them, for example a repair and uninstall facility in the launch menu and the ability to force the icon creation instead of giving the end user the freedom. Sincerely, Patrick Indeed 2005-08-11 16:23:54 joshy [Reply | View] Java Web Start does have limitations but they are necessary to protect the enduser. It's true that you could just distribute your application as an EXE but that's where all of the spyware and viruses come from. Java Web Start hopes for something better. Please wait for part two where I will cover how to use secure APIs that will protect your users and not require signed access or trigger warning dialogs. Thanks, - Josh Indeed 2005-08-11 07:56:13 markswanson [Reply | View] Unsigned Java Web Start applications are more secure and provide access to the file system, and have no scary popups. For a good example of what can be done check out: http://www.ScheduleWorld.com/ Indeed 2005-08-11 10:12:48 danielmd [Reply | View] do you have another example... it had no clipboard access (could not copy/paste), it still asks for file system access with a pop-up. Indeed 2005-08-11 11:23:51 markswanson [Reply | View] Clipboard access works fine. The popup is a good thing. It is simply asking you to allow filesystem access yes/no. It's different than the scarry all-permission dialog box. This is an important component to running applications securely and folks will learn to appreciate it. Indeed 2005-08-11 13:59:01 danielmd [Reply | View] Clipboard did not work for me, i could not copy paste... and you don't see a native application asking for premission to access the file system, it is an abnormal behavior, it does not provide a semless experience. Indeed 2005-08-11 14:22:22 markswanson [Reply | View] The clipboard works fine - the same way in a normal Java application + extra support for iCalendar objects. Post a specific example if you are sure you have one. Wrt permission - it's better/enhanced behaviour. The 'seamless' experience you are referring to allows applications to install spyware and viruses - essentially walk all over your hard drive and ship the contents out for others to look at. Indeed 2005-08-11 16:20:47 danielmd [Reply | View] Dude what the hell are you talking about? File access does not equal network access (if i block the application with a firewall how is it going to send back anything?)... and file permissions do not equal execute permission it is still possible to install spyware, and all other stuff with java webstart, and since it uses the firewall permissions that you give to javaw it means it is that much easier to create backdoors and trojans. And again, i cannot copy paste so if you can this is already a problem that i am having, the application is not behaving normally in my enviornment, wich in my world makes it not ready for prime time, it does not behave in the proper way. No, that's not how it works 2005-08-11 18:15:15 grlea [Reply | View] it is still possible to install spyware ... it uses the firewall permissions that you give to javaw it means it is that much easier to create backdoors and trojans I'm afraid what you've said there isn't true at all. It's seems that you don't know a lot about Web Start's security model, so can I (politely) suggest you read a bit about Web Start and how it tries to protect users by offering a secure execution environment (that limits both file and network access much more than your firewall does). You may be pleasantly surprised. You may not. At the least, you'll be able to make an informed argument. No, that's not how it works 2005-08-11 19:33:57 danielmd [Reply | View] Your mistake is to think that the security model can't be breached (it has been in the past and there are no doubts that it will be in the future), and sandboxes contrary to popular believe do not fix all security problems. Just like it is breached on native Operating Systems. You accept the reality you are given and can't see past that, if you ever worked in a security lab, or contacted with the security community, you would have known first hand that the java sandbox model has been compromised several times, fortunately nothing very serious ever escaped to the wild, and fixes have always been fast. I worked as a security consultant for 2 years, and i have seen what an exploited applet can do. You really should read this: http://www.securingjava.com/chapter-five/ Security the greatest illusion of all :) it is amazing, people really think that java security can't be breached, simply amazing. Have you learned nothing from Start Wars? Anakin turned Bad ;-) Trust can be a terrible thing. No, that's not how it works 2005-08-11 19:38:35 danielmd [Reply | View] http://sunsolve.sun.com/search/document.do?assetkey=1-26-57740-1 Guess i was telling the truth, hum how about that :) Something positive perhaps? 2005-08-11 19:56:39 grlea [Reply | View] Hi Daniel, You've made a lot of criticisms. Would you like to add something positive to the discussion? You could maybe list some things that you think could be done to fix Web Start. Or suggest something you think people should using instead (and why you think it is better). Graham. Something positive perhaps? 2005-08-11 20:26:41 danielmd [Reply | View] Sure... If you read my comments you will see what I would like from JWS, anyway here it goes again... Make it behave like a normal native application, with access to the filesystem, make it integrate properly with the Native OS (in most cases Windows, the task manager problem should not exist I want a process name not javaws.exe). In theory I love the JWS idea, the implementation is really a disappointment. I don’t know if you already did not due use cases for JWS, if you did I would love to see the results, use cases with hundreds of people with varying computer skill levels and see if they think that JWS is well implemented, and never mind security concerns just focus on the end user experience, and see if they enjoy using it, from my personal experience I don’t, I think it is a pain to give permissions, because in the end if you want any functionality out of it you will have to trust it and then it becomes as insecure as a native application (well almost). Ultimately what I would like is seamless end user experience for the windows platform; it is such a simple request. Indeed 2005-08-11 17:11:04 markswanson [Reply | View] There are simple answers to your questions, and if you would stop being offensive and abusing your "anonymous coward" identity I will explain. mark@ScheduleWorld.com Indeed 2005-08-11 17:52:21 danielmd [Reply | View] What the hell, anonymous? Don’t you see my freaking name (DANIELMD) and offensive are you kidding me... if you want to explain anything do so... but don't try to come up with false arguments. If you think that Webstart is ready for prime time, great if you think that java applications should behave differently than native applications fine, we disagree. Technological Savvy people will have no difficulty, but 90% of the end user population will simply not like the way JWS works, signed or unsigned. I tried your application and i could not do a simple copy/paste, if you think that is OK i don't. Sorry but your application does not work in my system, is this my fault? I tried to copy your comments and paste them it did not work, if you think this is acceptable well Good Luck to ya. Indeed 2005-08-11 18:02:33 joshy [Reply | View] Hi Daniel. This is a technical website and I am sure that we can all be civil and discuss our differences. What features are you missing with Java Web Start? Would deploying your application with one of the many EXE builders accomplish what you desire? Thanks, - Joshua Indeed 2005-08-11 20:02:54 danielmd [Reply | View] Hi Joshua, Keep in mind that I am talking about Windows behavior. I think that JWS is flawed by design, it should behave just like a normal native application on the native OS, I don't like the pop-ups, the signatures, I don't like the lack of integration with the windows task manager, just give filesystem privileges like any normal application. Sorry if I was too offensive i did not realize that people can't handle words like hell, and i truly hate wend people act like they are the owners of the absolute truth, so I snapped. I think java.net is not for me; you guys are just too sensitive and have a closed mindset, always accepting absolute truths 1+1 does not always equal two. All the best, good luck, really liked the article. Indeed 2005-08-11 20:15:01 joshy [Reply | View] Well I hope you won't leave java.net. It's a wide community with lots of room for different viewpoints. JWS was designed to be as secure as an Applet, and more secure than a native application. This was an explicit design choice to address the modern world of on-demand applications that live in an environment of firewalls, spyware, and viruses. There are some tradeoffs, of course. To work with the sandbox you need to use special secure APIs that put more control in the hands of the user. It's a different way of programming that can be frustrating at first but has a lot of benefits. I understand that this approach is not appropriate for all applications. For these cases there are a variety of EXE builders that will let you deploy a java app as a local native application. Some builders even include installers and over the web updating. Incidentally the new version of Java (available to test at https://mustang.dev.java.net/ ) includes a lot of improvments to make webstart apps appear more native. The security screens are improved and feel less scary. There is a new Socket API that will be familar to anyone running the standard Windows firewall (it shows a popup asking for network access just like other native apps). We are also working on better taskbar/icon/process-list support. Please try out the latest builds and give us feedback. We put a priority on requests and patches from the community. Thanks, - Josh About the open letter 2005-08-11 21:50:54 danielmd [Reply | View] Profiles, to make things clear... I am talking in doing something like differentiating JWS by targeted market, just like the JDK branched to J2EE, J2SE, J2ME different targets different needs. The JWS could branch into JWS Corporate, JWS Personal. Indeed 2005-08-11 21:25:00 danielmd [Reply | View] Josh and Java Web Start team, I really hope that you guys can fix the main problems, as a former security consultant JWS makes perfect sense for the corporate environment it is a quick, hassle free way to deploy and update applications, and the JVM sandbox protection space is a much more secure environment than the majority of native operating system. In the corporate environment the IT people can put up a intranet page teaching/training the staff, so people in the corporate environment will find nothing weird about the way JWS works they already have to memorize 11 passwords and face several pop-ups and password request, so a couple more is nothing to them. On the other hand most end users (general public) don't work in a corporate environment, and even after being familiar with the way JWS works will find no advantage on the corporate/security features it brings over a native application. One way to fix this would be to introduce Profiles to the JWS framework, with Profiles you could create a more friendly General Public Profile (that is not signed by a CA, and does not request filesystem access it is granted by default, recognizing system files that it cannot access, it behaves just like a normal native application the same rights the same duties). And a second profile Corporate Profile (that is security conscious, requests for CA signature, has several versions in cache on the server/client, uses a catch-all service for data recovery, maybe use something like virtual partitions ala Solaris Zones/Containers, all sorts of corporate features). I know that currently you have many fine-grain options, but they are all very restrictive, creating two Profiles that have very distinct and different targets would help in making JWS ready for General Consumption (making installers an obsolete technology). Different targets should have different abilities (responsibilities and duties), and in this case the targeted audience is just to diverse, if being consulted I would recommend it with praise to any IT department as an effective way of deploying java applications, but if consulted on using JWS as a Public release target my recommendation would be a fat NO. My view is that as of now JWS is a corporate technology not ready to be used outside of a Corporate environment, so not ready for Prime Time, i hope that in time something like I describe here finds it's way to the source tree, and i will study with attention the new additions and introductions of features. I have watched thru out the years with great expectation the development of JWS (I love the idea, and I really think it would be an effective way to kill many deployment problems inherent to installer technology), I was expecting that the next version would be the one that brought the revolution to the masses, and every time I have been disappointed, still not ready for Prime Time is my conclusion. As of such it needs to be branded for what it is: a corporate technology, a great idea that works very well in a controlled environment, a pain to use outside that environment. In the next version if not Mustang then Dolphin, rethink your target audience, make it general end user friendly, bring the revolution to the masses. It looks like Java will not be open sourced for a very long time so only you the JWS Team have the power to make it happen. - This post is so long I decided to make it an Open Letter to the JWS Team; I hope it is seen as constructive criticism, I wish you all the best.
    posted @ 2005-08-14 20:02 羅明 閱讀(858) | 評論 (0)編輯 收藏
    僅列出標題
    共14頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 
     
    主站蜘蛛池模板: 四虎国产成人永久精品免费| 亚洲精选在线观看| 国产精品69白浆在线观看免费| 一级毛片免费毛片毛片| 色偷偷女男人的天堂亚洲网| 亚洲AV无码国产丝袜在线观看| 免费大片黄手机在线观看| 免费黄色福利视频| 麻豆成人久久精品二区三区免费| 一级毛片大全免费播放下载| 久久亚洲精品无码av| 亚洲三级在线播放| 日韩亚洲AV无码一区二区不卡| 国产成人精品日本亚洲专区61| 亚洲AV无码专区日韩| 国产精品成人免费综合| 久久久久国色AV免费看图片| 久久九九兔免费精品6| 日韩午夜理论免费TV影院| 99久久国产精品免费一区二区| 免费无码又爽又黄又刺激网站| 亚洲国产欧美国产综合一区 | 亚洲精品视频在线观看视频| 久久精品7亚洲午夜a| 91亚洲国产成人久久精品网址 | 国产免费一区二区三区免费视频| 极品美女一级毛片免费| MM1313亚洲国产精品| 国产午夜亚洲精品不卡免下载| 亚洲av无码偷拍在线观看| 亚洲AV无码一区二区一二区 | 免费人成在线观看播放国产 | 免费无码又爽又黄又刺激网站| 男男gay做爽爽的视频免费| 校园亚洲春色另类小说合集| 国产精品自拍亚洲| 最好2018中文免费视频| 亚欧洲精品在线视频免费观看| 中文日本免费高清| 日本免费大黄在线观看| 久久WWW免费人成一看片|