Java Gossip学习笔记 (二)

From Gossip@caterpillar

語言技術:Java Gossip(二)

在學習Java的過程中,您會接觸到很多框架( Framework),而第一步就是從J2SE的框架開始學習,框架讓您不用重新打造您需要的功能元件,它也是經驗的集成,即使您要重新打造,參考框架的實作方式,就可以讓您獲得不少寶貴的經驗。

事實上以下的每個主題區都有專書介紹,這邊所介紹的內容,都只是某個主題的入門,若有進階的應用需求,查閱相關書籍是必要的。


物件容器(Container)
    物件容器可以幫您持有對象,在Java中分作兩大類:Collection 與 Map。前者可持有各自獨立的物件,後者持有成對的key-value物件。
  • Collection 類
Collection 類包括了 List 類與 Set 類,List 以放置物件至容器中的順序來排列物件,Set 類不接受重覆的物件,並有自己的一套排序規則。
    • ArrayList
    • LinkedList
    • HashSet
    • TreeSet
    • EnumSet
  • Map 類
在將物件存入 Map類時,需要配合一把key,您要取回物件時就是根據這把key,Map中的key是唯一的,Map擁有自己的排序機制。
    • HashMap
    • TreeMap
    • EnumMap

輸入輸出(I/O)
    為了要將程式運行結果儲存下來,以供下一次開啟時使用,檔案輸入輸出是一個應用程式所必備的,藉由檔案的輸入輸出,也可以一同瞭解Java的I/O處理。
  • 檔案處理
File類別是檔案的抽象表示,也是處理檔案輸入輸出時所必備的。
    • File
    • RandomAccessFile
  • 位元串流
電腦中的資料都是以 0 與 1 的方式來儲存,如果您要在兩個裝置之間進行資料的存取,當然也是以 0 與 1 位元的方式來進行,Java將資料目的地與來源之間的流動抽象化為一個串流(Stream),而當中流動的則是位元資料。
    • InputStream、 OutputStream
    • FileInputStream、 FileOutputStream
    • BufferedInputStream、 BufferedOutputStream
    • DataInputStream、 DataOutputStream
    • ObjectInputStream、 ObjectOutputStream
    • SequenceInputStream
    • PrintStream
    • ByteArrayInputStream、 ByteArrayOutputStream
    • PushbackInputStream
  • 字元串流
Reader、 Writer等是處理字元串流(Character Stream)的相關類別,簡單的說,就是對串流資料以一個字元(16bit)的長度為單位來處理(0~65535、0x0000-0xffff),並進行適當的字元轉換處理。
    • Reader、 Writer
    • InputStreamReader、 OutputStreamWriter
    • FileReader、 FileWriter
    • BufferedReader、 BufferedWriter
    • PrintWriter
    • CharArrayReader、 CharArrayWriter
    • PushbackReader

執行緒(Thread)
    一個執行緒是進程(Process)中的一個執行流程,一個進程中可以同時包括多個執行緒,CPU會分配時間片段來處理這些子流程,這使得一個程式可以像是同時間處理多個事務。
  • 執行緒入門
想要實作執行緒功能,只要實作Runnable介面,單就表面上來看,執行緒並不困難。
    • 實作 Runnable 介面
    • Daemon 執行緒
    • 執行緒生命周期
    • 執行緒的加入(join)
    • 執行緒的停止
    • ThreadGroup
  • 同步化(synchronized)
您只要實作 Runnable介面,就可以實作執行緒功能,入門是簡單的,但資料一被共用,事情就變得複雜。
    • 執行緒的同步化
    • wait ()、notify()
    • 容器類的執行緒安全(Thread-safe)
  • JDK 5.0 新增類別
來看看 JDK 5.0 為多執行緒新增的幾個好用類別。
    • UncaughtExceptionHandler
    • Lock 與 Condition
    • BlockingQueue
    • Callable 與 Future
    • Excutors

反射(Reflection)
    反射機制允許執行時期動態檢視與操作類別,一般應用程式開發較不常用到,但是在一些框架或檢視工具程式中,就經常使用到反射機制。
  • 檢視類別
即使您拿到一個類別並對它一無所知,但其實它本身就包括了許多資訊,從 Class 開始,您可以獲得這個類的許多訊息。
    • 簡介 Class
    • 從 Class 中獲取資訊
    • 簡介 ClassLoader
    • 自訂 ClassLoader
  • 生成與操作
使用反射機制,您可以於執行時期動態載入類別並生成物件,操作物件上的方法甚至改變類別成員的值。
    • 生成物件
    • 呼叫方法
    • 修改成員值
    • 生成陣列

metadata
    metadata 簡單的說就是資料的資料(Data about data),J2SE 5.0 中對 metadata 的支援是 Annotation,目的在對程式碼作出說明以利分析工具使用。
  • Annotation
Annotation 對程式運行沒有影響,它的目的在對編譯器或分析工具說明程式的某些資訊,您可以在package、class、method、field等上加上 Annotation。
    • 限定 Override 父類方法 - Override
    • 標示方法為 Deprecated - Deprectated
    • 抑制編譯器警訊 - SuppressWarnings
    • 自訂 Annotation 型態
  • meta-annotation
在定義 Annotation 型態的時候,為 Annotation 型態加上 Annotation 並不奇怪,這為處理 Annotation 型態的工具提供資訊。
    • 告知編譯器如何處理 annotaion - Retention
    • 限定 annotation 使用對象 - Target
    • 要求為 API 文件的一部份 - Documented
    • 子類是否繼承父類的 annotation - Inherited

資料庫(JDBC)
    JDBC是用於執行SQL的Java API,它將資料庫存取的API與SQL陳述分開,實現資料庫無關的API介面,藉由JDBC統一的介面,開發人員只要專注於SQL陳述,而可以不必理會底層的資料庫驅動程式與相關介面。
  • 簡介 JDBC
  • 連接資料庫
  • 連接資料庫 - JDBC 4.0
  • Statement、 ResultSet
  • Statement 批次處理
  • PreparedStatement
  • 將檔案存入資料庫
  • 將檔案存入資料庫 - Oracle 9i
  • ResultSet 游標控制
  • ResultSet 新增、更新、刪除資料
  • ResultSetMetaData 類別
  • 交易(Transaction)

捨遺補缺
    前面都是有系統的介紹某個主題,然而整個 J2SE 要詳細說明是不可能的,這邊就隨時補充一些可能使用到的工具類別。
  • 屬性設定、訊息綁定
您可以將一些屬性設定獨立於一個.properties檔中,由程式讀取,若要修改屬性則直接修改.properties檔案即可。也可以將訊息另外定義在一個文字檔案中,而不是寫死在程式中,日後想要更改訊息時,只要更改文字檔案內容,而不用重新編譯程式。
    • 使用 Properties
    • 使用 ResourceBundle
    • 國際化訊息
  • 日期、時間
表面上看來,要取得系統的時間只要使用 Date 類別就可以了,但查閱 Date 後,發現很多方法都被標示為 Deprecated?
    • 使用 Date、DateFormat
    • 使用 Calendar
    • 使用 Calendar - JDK6
  • 記錄(Logging)
如果您只是要作一些簡單的文件記錄,可以考慮內建在JDK 中的Logging API,好處是它從JDK 1.4之後就成為J2SE的一員。
    • 簡介 Logging
    • Logging 的層級
    • Handler、 Formatter
    • 自訂 Formatter
    • 自訂 Handler
    • 自訂 Filter
    • Logger 階層關係
  • 工作排程
如果您想要排定任務在某些時間點運行,那麼您可以使用標準 API中的Timer與TimerTask。
    • TimerTask 與 Timer
    • Fixed-delay Execution 與 Fixed-rate Execution

視窗程式
  • 文字編輯器製作
  • 製作 Executable JAR
  • 啟動畫面與工具列圖示 - Java SE 6
 

你可能感兴趣的:(java,ClassLoader,jdbc,J2SE,logging,deprecated)