java網路編程第三版
第一章 Java網路編程的原因
網路程序的功能
安全性
等等!還有更多!
第二章 基本網路概念
網路
網路的分層
IP、TCP和UDP
Internet
客戶/伺服器模型
Internet標准
第三章 基本Web概念
URI
HTML、SGML和XML
HTTP
MIME媒體類型
伺服器端程序
第四章 流
輸出流
輸人流
過濾器流
閱讀器和書寫器
第五章 線程
運行線程
返回線程中的信息
同步
死鎖
線程調度
線程池
第六章 查找Internet地址
InetAddress類
Inet4Address和Inet6Address
NetworkInterface類
一些有用的程序
第七章 U R L和U R I
URL類
URLEncoder和URLDecoder類
URI類
代理
通過GET方法與伺服器端程序通信
訪問受口令保護的網站
第八章 Swing中的HTM L
組件上的HTML
JEditorPane
解析HTML
coOkie一
第九章 客戶端Socket
socket基礎
用Telnet研究協議
Socket類
Socket異常
Socket地址
示例
第十章 伺服器socket
ServerSocket類
一些有用的伺服器
第十一章安全Socket
保護通信
創建安全客戶端socket
SsLSocket類的方法
創建安全的伺服器socket
SSLSerVerSocket類的方法
第十二章 非阻塞I/O。
一個示例客戶端
一個示例伺服器
緩沖區
通道
就緒選擇
第十三章 UDP數據報和Socket
UDP協議
DatagramPacket類
DatagramSocket類
一些有用的應用程序
DatagramChannel
第十四章 組播socket
何為組播socket?
使用組播socket
兩個簡單示例
第十五章 URLConnection
打開URLConnection
讀取伺服器的數據
讀取首部
配置連接
配置客戶端的請求HTTP首部
向伺服器寫入數據
內容處理器
0bject方法
URLConnection的安全考慮
猜測MIME內容類型
HttpURLCOnnectiOn
緩存
JarURLCOnnectiOn
第十六章 協議處理器
何為協議處理器7
URLStreamHandler類
編寫協議處理器
更多協議處理器示例和技術
URLStreamHandlerFactory介面
第十七章 內容處理器
何為內容處理器7
ContentHandler類
ContentHandlerFactory介面
FITS圖片格式的內容處理器
第十八 章遠程方法調用
何為遠程方法調用7
實現
在運行時載入類
java rmi包
jaVarmiregistry包
javarmiserver包
第十九章 JavaMailAPI
何為JavaMail API?
發送電子郵件一
接收郵件
口令認證
地址一
URLName類
Message類
Part介面
多部分消息和附件
MIME消息
文件夾
……
⑵ javaC/S網路編程看什麼書
<<java網路編程>>
《Java網路編程》第三版會為你介紹Java網路API的最新特性。本書討論了JDK1.4和1.5(現在已命名為J2SE5)中所做的所有修改和增補。本書內容全面,涵蓋了從網路基礎知識到遠程方法調用(RMI)等各方面的內容,書中章節涉及到TCP和UDPsocket、伺服器socket、URL和URI、組播以及特殊用途的API(如JavaMail)等等。本書展示了如何使用JSSE編寫安全的網路應用程序,解釋了如何使用NIOAPI編寫超高性能的伺服器。它還涵蓋了Java對網路代理、Webcookie和URL緩存的支持。
⑶ 想學習網路編程可是沒有基礎,該看什麼書最好
建議報一個培訓班,都是零基礎入學的,這是網路編程的全部課程,要是感興趣的話可以了解一下:
第一階段
1、計算機操作基礎
2、Office辦公自動化
3、計算機組裝與維護
4、C語言
第二階段
1、sql Server2005資料庫設計
2、和高級查詢
3、數據結構
4、C#面向對象程序設計
5、HTML5與CSS3開發
6、JavaScript
7、jQuery高級編程
8、PHP開發
第三階段
APP Development
1、JavaScript特效製作
2、jQuery應用開發
3、HTML5與CSS3開發
4、Java面向對象程序設計
第四階段
JAVAWEB Development
1、產品流程應用
2、移動平台界面設計
3、Oracle資料庫開發
4、JavaWeb應用開發
Mobile APP Development
1、實訓一:WEB前端設計與開發
2、實訓二:J2EE項目開發
⑷ Java書籍推薦有哪些
Java的好書推薦
第一部分:Java語言篇
1.《Java編程規范》 適合對象:初級、中級
介紹:這本書的作者是被譽為Java之父的James Gosling,入門者推薦閱讀,對基礎的講解很不錯。
2.《Java編程思想》 適合對象:初級、中級
介紹:豆瓣給出了9.1的評分,全球程序員廣泛贊譽。有人說這本書不適合初學者,不過小編認為作者並沒有對讀者已有的知識經驗有過多要求,只是要求讀者需要知道基本的程序語言。作者以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念,需要花時間細細研讀。
3.《Java核心技術:卷I基礎知識》 適合對象:初級、中級
介紹:官方機構圖書,備一本總是沒錯的。這本書比較全面也通俗易懂。可以當字典的功能來用,學習入門必備。
4.《Java數據結構和演算法》 適合對象:初級、中級、高級
介紹:這本書目前基本斷貨,足以說明搶手程度。作者主要使用Java語言描述了我們常用的數據結構,值得一看。
5.《Java與模式》 適合對象:中級、高級
介紹:難得一見的國人寫的Java好書。主要講解設計原則以及最為常見的設計模式的實用教材。這本書出現的比較早,是初級到中高級必讀的圖書之一。
6.《SCJP學習指南》 適合對象:初級、中級
介紹:官方考試的必備圖書,對檢驗自己的Java學習情況很有幫助。這本書特別適合學生閱讀,這本書理解透了,找工作面試Java題目不會有任何問題。一些工作多年的工程師都會在里邊遇到一些不會做的題目。
第二部分:中級進階篇
1.《重構:改善既有代碼的設計》 適合對象:中級、高級
介紹:清晰揭示了重構的過程,解釋了重構的原理和最佳實踐方式,並給出了何時以及何地應該開始挖掘代碼以及改善。大師的傑作,讓你明白軟體是一步步改進的,不是一蹴而就的。
2.《XML入門經典》 適合對象:初級、中級、高級
介紹:很多人覺得沒必要買XML書籍,不過我還是覺得推薦一本給你作為工具書,而且看本書可以使得你對XML方方面面有個了解。裡面不少東西還是用到的。
3.《jQuery基礎教程》 適合對象:初級、中級、高級
介紹:從這個開始學習jQuery才是根本,不然以後遇到的很多奇怪問題不知所以然。jQuery個人感覺已經成為目前的javascript標准庫了,插件無數,大大簡化了前端工作。
4.《JavaScript權威指南》 適合對象:初級、中級、高級
介紹:一本從全新視角和層次來介紹JavaScript的參考書,填補了市場的空白。是學習js的必備參考工具書之一。
5.《代碼整潔之道》 適合對象:中級、高級
介紹:講述了一系列行之有效的整潔代碼操作實踐。軟體工程的理想編碼是無數人編出來的代碼像一個人寫的,這本書當作規范就不錯。
第三部分:高級篇
1.《Enterprise JavaBeans 3.0中文版》適合對象:中級,高級
介紹:EJB技術在大型系統中使用,主要有銀行等金融機構。是開發分布式程序的選項之一,不過我不喜歡,其實銀行使用的也不怎麼的。結合JavaEE容器使用,開源的有JBoss,商用的有IBM和Oracle支持。
2.《Java並發編程實踐》 適合對象:中級、高級
介紹:這本書名為《Java並發編程實踐》有些抹殺了它的價值,其中並非只講述了Java的多線程設施,對一般的並發編程的rationale也有相當透徹的闡述。市面上並發編程的書比較少,這一本推薦閱讀。
3.《Hadoop權威指南》 適合對象:中級、高級
介紹:雲計算必備圖書。作為分布式計算的工具,Hadoop目前可以說是市場上唯一成熟的產品,而且大家也都向其看齊。而起雲計算炙手可熱,你搞明白這本書就大概明白了什麼是雲以及怎麼做雲。
4.《Java消息服務》 適合對象:中級、高級
介紹:深入淺出地講解了JMS1.1規范的底層技術、Java類和介面、編程模型及其不同實現等Java消息服務(JMS)和消息傳送機制關鍵技術。講解簡單明了,偏向於如何使用以及設計的一些原則。排版相當不錯。
來源網路老炮java 整理 侵權聯系
⑸ java網路編程包含些什麼
java網路編程通常包括三部分TCP/IP , UDP ,URL ;socket只是其中的一個套接字。web,jsp與上面一點關系也沒有,上面是j2se的內容。下面則是j2ee內容。web是一個服務,而jsp是一種技術。實在找關系的話,web包括了jsp.
⑹ 介紹幾本學習java的書吧,由淺入深分別適合看什麼謝謝
JAVA參考大全.J2SE.5EDITION(世界級程序設計大師作品) Thinking in Java第三版+第四版(中文版+習題答案)
Java資料庫高級編程寶典
Java核心技術第八版(core java 8th)
Java程序設計基礎教程
Java distribute computing
15天學會jQuery
J2EE課程設計指導
JMS簡明教程
JDK1.6 API中文版(CHM格式)
JDK 1.4 Tutorial
JDK6.0 中文文檔
Java Foundation Classes in a Nutshell
《Java Servlet編程(第二版)》英文版
Java Script 高端程序設計(精華)
《Java EE編程技術》源代碼和課件
java核心技術編程第8版
Practical DWR 2 Projects
Java網路編程學習資料
Java線程入門
Java資料庫應用程序編程指南
Spring基礎教程
構建J2EE應用程序
Java深度歷險
EJB3.0實例教程
AJAX In Action(中文版)
Java文檔五百篇
spring框架,技術詳解及使用指導
JAVA2核心技術第1卷.基礎知識
Java高級開發指南
《Tomcat權威指南》英文版
《JSP設計(第三版)》英文版
Java完美編程(第三版)
ExtJS 2.0實用簡明教程
struts2+sping2.0+hibernate3.0
Thinking In Java 4th
Spring Framework 開發參考手冊
Java For Dummies 4e
2008新書_JavaScript and Ajax Tools for..
Cutting Edge Java Game Programming
Java程序設計EJB.XML與資料庫
Java技術教程.基礎篇+源代碼
java案例開發集錦
Java程序設計大學教程試讀+課件
基於AppFuse框架的B2C電子商務系統研究與實現
Professional Ruby on Rails 2008
Swing Extreme Testing
用Java設計文本編輯器MiniEditor
Effective Java, 2nd Edition(新版)
Java2 Api大全完整版(上)
Java語言程序設計-計算機與信息技術專業應用教材
EJB 3 Developer Guide2008
深入淺出Software Development軟體開發
⑺ 誰能給一個java.net包的介紹,謝謝!
軟體包 java.net 的描述
為實現網路應用程序提供類。
java.net 包可以大致分為兩個部分:
低級 API,用於處理以下抽象:
地址,也就是網路標識符,如 IP 地址。
套接字,也就是基本雙向數據通信機制。
介面,用於描述網路介面。
高級 API,用於處理以下抽象:
URI,表示統一資源標識符。
URL,表示統一資源定位符。
連接,表示到 URL 所指向資源的連接。
地址
在整個 java.net API 中,地址或者用作主機標識符或者用作套接字端點標識符。
InetAddress 類是表示 IP(Internet 協議)地址的抽象。它擁有兩個子類:
用於 IPv4 地址的 Inet4Address。
用於 IPv6 地址的 Inet6Address。
但是,在大多數情況下,不必直接處理子類,因為 InetAddress 抽象應該覆蓋大多數必需的功能。
關於 IPv6
並非所有系統都支持 IPv6 協議,而當 Java 網路連接堆棧嘗試檢測它並在可用時透明地使用它時,還可以利用系統屬性禁用它。在 IPv6 不可用或被顯式禁用的情況下,Inet6Address 對大多數網路連接操作都不再是有效參數。雖然可以保證在查找主機名時 java.net.InetAddress.getByName 之類的方法不返回 Inet6Address,但仍然可能通過傳遞字面值來創建此類對象。在此情況下,大多數方法在使用 Inet6Address 調用時都將拋出異常。
套接字
套接字是在網路上建立機器之間的通信鏈接的方法。java.net 包提供 4 種套接字:
Socket 是 TCP 客戶端 API,通常用於連接遠程主機。
ServerSocket 是 TCP 伺服器 API,通常接受源於客戶端套接字的連接。
DatagramSocket 是 UDP 端點 API,用於發送和接收數據包
MulticastSocket 是 DatagramSocket 的子類,在處理多播組時使用。
使用 TCP 套接字的發送和接收操作需要藉助 InputStream 和 OutputStream 來完成,這兩者是通過 Socket.getInputStream() 和 Socket.getOutputStream() 方法獲取的。
介面
NetworkInterface 類提供 API 以瀏覽和查詢本地機器的所有網路介面(例如,乙太網連接或 PPP 端點)。只有通過該類才可以檢查是否將所有本地介面都配置為支持 IPv6。
高級 API
java.net 包中的許多類可以提供更加高級的抽象,允許方便地訪問網路上的資源。這些類為:
URI 是表示在 RFC 2396 中指定的統一資料標識符的類。顧名思義,它只是一個標識符,不直接提供訪問資源的方法。
URL 是表示統一資源定位符的類,它既是 URI 的舊式概念又是訪問資源的方法。
URLConnection 是根據 URL 創建的,是用於訪問 URL 所指向資源的通信鏈接。此抽象類將大多數工作委託給底層協議處理程序,如 http 或 ftp。
HttpURLConnection 是 URLConnection 的子類,提供一些特定於 HTTP 協議的附加功能。
建議的用法是使用 URI 指定資源,然後在訪問資源時將其轉換為 URL。從該 URL 可以獲取 URLConnection 以進行良好控制,也可以直接獲取 InputStream。
下面是一個示例:
URI uri = new URI("http://java.sun.com/");
URL url = uri.toURL();
InputStream in = url.openStream();
協議處理程序
如上所述,URL 和 URLConnection 都依賴於協議處理程序,所以協議處理程序必須存在;否則將拋出異常。此為與 URI 的主要不同點,URI 僅標識資源,所以不必訪問協議處理程序。因此,盡管可能利用任何種類的協議方案(例如,myproto://myhost.mydomain/resource/)創建 URI,但類似的 URL 仍將試圖實例化指定協議的處理程序;如果指定協議的處理程序不存在,則拋出異常。
默認情況下,協議處理程序從默認位置動態載入。但是,通過設置 java.protocol.handler.pkgs 系統屬性也可能增加搜索路徑。例如,如果將其設置為 myapp.protocols,則 URL 代碼將首先嘗試(對於 http 而言)載入 myapp.protocols.http.Handler,然後,如果失敗,則嘗試從默認位置載入 http.Handler。
注意,處理程序類必須為抽象類 URLStreamHandler 的子類。
⑻ java的不同學習階段
Java推薦讀物與源代碼閱讀
1. Java 語言基礎
談到 Java 語言基礎學習的書籍,大家肯定會推薦Bruce Eckel的《Thinking in Java 》,它是一本寫的相當深刻的技術書籍,Java 語言基礎部分基本沒有其它任何一本書可以超越它。該書的作者Bruce Eckel 在網路上被稱為天才的投機者,作者的《Thinking in C++ 》在1995年曾獲 Software Development Jolt Award 最佳書籍大獎,《Thinking in Java 》被評為1999 年Java World「 最愛讀者歡迎圖書 」,並且贏得了編輯首選圖書獎。作者從1986 年至今,已經發表了超過150 篇計算機技術文章,出版了6 本書(其中4本是關於C++ 的),並且在全世界做了數百次演講。他是《Thinking in Java 》、《Thinking in C++ 》、《 C++ Inside & Out 》《Using C++ 》和《Thinking in Patterns 》的作者,同時還是《 Black Belt C++ 》文集的編輯。他的書被讀者稱為「最好的Java 參考書 …… 絕對讓人震驚」 ; 「 購買 Java 參考書最明智的選擇」 ;「我見過的最棒的編程指南 」 。作者的非凡才華,極其跨越語言的能力,使作者被選為Java 發展10年間與Java 關系最密切的10個人物之一。
《Thinking in Java 》講述了Java語言的方方面面,很多Java 語言的老手都評價「這是一本將Java語言講得相當醜陋的書」。該書談及了java 語言的很多細節,每一個方面都是相當深刻的。通過本書你可以看到「醜陋的」java 語言。
網路上關於java 語言講解的視頻很多很多,其中不凡有垃圾。《翁愷 —JAVA 語言 》可能是你學習 java 語言基礎的唯一選擇,該講座基本按照《Thinking in Java 》這本書講解,其中不凡有翁老師的很多有意思的笑話。我很幸運學習就是從此視頻開始的。內容包括30 講,我總共看了3 遍。
不過,對於初學者我不太推薦使用《Thinking in Java 》,我比較推薦 Prentice Hall PTR 的 《Core Java 2 》 國內稱為 《Java 2 核心技術》 ,目前是第七版。網路上大家都可以下載到電子版。 Oreilly 的 《Java in a nutshell 》 也是一個不錯的選擇。讀完以上兩本後,你可以看看翁愷老師的視頻,接著可以研究 《Thinking in Java 》了。
2. Java 數據結構
市面上關於Java數據結構的書本身就很少很少。大致有 APress 的《Java Collections 》 ,Jones 和Bartlett 的《Data Structures in Java 》、《Object-oriented Data Structures Using Java 》以及Prentice Hall 出版的《Data Structures and Algorithms in Java 》 (Dec 19, 2005) 還有一本就是《Data Structures And Algorithms With Object-oriented Design Patterns In Java 》。很幸運我的第一本英文書就是APress 的 《Java Collections 》( 本書在國內可能根本就沒有中文版――只能下載英文版了),很不錯,講得很有條例、很簡單,是一本完完全全Java Collections API 介紹的書籍,其中不凡有擴展 API 的例子。這是我推薦你學習 java 數據結構的唯一一本好書。其它的Jones 和 Bartlett 的那兩本國內好像有一本中文版,想看你也可以看看。
在學習完API 後,你可以看看java.util 包中對應的類了。不過只有在學習過設計模式後你才有可能完全理解整個Java Collections Framework 。 Java Collections Framework 使用了很多著名的設計模式如:迭代器( Iterator )模式、工廠方法模式、裝飾器模式、適配器模式等等。通過研究 java.util 包中數據結構的源代碼,你可以知道臭名昭著的Properties類的設計了,同時可能基本具備設計簡單的數據結構的能力了。
所謂學習無止境,學習完Sun 提供了Java Collections Framework 後,你可以研究Apche 的另一個Java Collections Framework ,很有意思哦。互為補充的兩個Framework 。
在大家學習、研究Java Collections 之前,我提示一下Java Collections 主要包括以下三部分:介面(Interface)、實現(Implemention)和演算法(Algorithm)。
1. 介面主要有 List 、Set 、Queue 和Map 。 List 、Set 和Queue 是Collection 介面的子介面。
2. 實現主要是實現這些介面的具體類。如實現List 介面的ArrayList 、LinkedList 、Stack 和Vector ;實現Set 介面的HashSet 、TreeSet 和 LinkedHashSet ;實現Queue介面的PriorityQueue 、SynchronousQueue等等;實現Map 介面的HashMap 、TreeMap 、Hashtable 、Properties 、WeakHashMap 等等。
3.演算法主要是由Arrays類和Collections類提供的,它是整個Java Collection Framework 演算法的核心。支持各種類型的排序,查找等常用操作。
Java Collections 中包含兩個版本的數據結構,主要是原先的支持同步的數據結構和後來不支持同步的數據結構。
Java Collection Framework 在使用Comparator 和Comparable介面支持排序。同時提供新舊兩個版本的迭代器Iterator 和Enumeraton ,以及它們如何轉換等等。
在java.util 包中的Obserable介面和Observer類是考察者模式的核心。
……
3. Java IO
市面上關於IO的書籍也僅僅只有Oreilly 出版社的兩本,都是Elliotte Rusty Harold 的著作。兩本書的風格基本一致,推薦閱讀是第一版的《 Jvava I/O 》 ,講得比較淺顯,內容相對比較集中,實例也很多。第二版今年5月國外才出版,很有幸我在網路上下載了第二版,講得極其詳細―― 726 頁的大塊頭(我化了兩個星期),這次將NIO和IO和在一起,還包括J2ME 部分的,不過串口、並口通信部分好像類庫支持不夠,自己不能實際操作。
與第一版的《Jvava I/O》一起的Oreilly 還有一本 《Jvava NIO 》 ,也是很不錯的哦。
大家在依次閱讀完《Jvava I/O》以及《Jvava NIO》後,可以研究 java.io 包中的源代碼了。在大家研究源代碼前我給點提示:
Java 的 io 包主要包括:
1. 兩種流:位元組流(byte Stream)和字元流(character stream),這兩種流不存在所謂的誰代替誰、誰比誰高級之說,它們互為補充,只是側重點不同而已。
2. 兩種對稱: 1. 位元組流、字元流的對稱; 2. 輸入、輸出的對稱。
3. 一個橋梁:將位元組流轉變為字元流的InputStreamReader 和OutputStreamWriter 。
其中必須注意:
1. PipedInputStream 和PipedOutputStrem 是兩個比較有趣的類。
2. 支持 Buffered的流是我們經常使用的類。
3. 裝飾器(Decorator)模式在java最著名的應用就是用於io的設計。仔細研究各個Filter流與具體流的關系,多看設計模式的書籍。相信你會有所所獲。
4. 學習好io包,是研究net 包,rmi 包 …… 的基礎哦!
4 . Java 資料庫
資料庫的書籍太多太多了,也是太爛太爛了!這方面的書我基本都研究過,推薦的你就看看 Apress 的《JDBC Recipes A Problem Solution Approach 》 很不錯,國外2005年底才出版(國內好像沒有中文版,不過出了中文版也不一定值得看――國內經常將國外的書翻譯得一塌糊塗、不堪入目)不過我們真的很幸運,網路上有電子版的。值得一看。推薦我看的第一本比較滿意的―― Wiley 出版的 《Java Database Bible》 講得很不錯!Sun 公司自己的關於JDBC API介紹的那一本 《JDBC API Tutorial andRefernece 》 也不錯。我第二本JDBC 的就是研究的這套API 。
不過目前這些書都是一些相對比較浮淺的API 應用的書籍。有機會我會給大家帶來介紹JDBC API 以及JDBC 實現內部細節的書!我盡快努力,同時希望得到大家的支持!
順便給學習 JDBC 的朋友一點提示:
JDBC 的學習和使用主要是這套API ,其使用過程也是極其簡單,下面是使用 JDBC 的一般流程:
1. 載入某個資料庫的驅動(Driver 類),通常使用Class.forName(「驅動的類名「);
2. 連接資料庫――
Connection con = DriverManager.getConnection(url,username,password) ;
3. 得到會話―― Statement stmt = con.createStatement();
4. 執行操作―― Result rs = stmt.executeQuery(「SQL 查詢語句」) ;
5. 處理結果――
while(rs.next()){
String col1 = rs.getString(1);
……
}
簡單吧!整個 JDBC 中可以變化的一般是:
1. 可以由 Connection 對象創建Statement 、PreparedStatement 和CallableStatement 創建三種類型的 Statement 。
2. 可以創建多種類型的ResultSet :支持單向移動和個自由移動;可更新的和不可更新的;支持不同等級的交易的 …..
3. 數據輸入的批處理。
4. 結果集中特殊類型(Blob 、Clob 、Arrary 和Ref 、Struct )列的操作。
5. 這些特殊類型的錄入資料庫。
6. javax.sql 包中特殊結果集(CachedRowSet 、JdbcRowSet 、WebRowSet )的操作。
7. 其它的就是一個DataSource了,也很簡單!一個J2EE中的被管理對象
簡單吧!相信大家很快就會征服JDBC 。
5. Java 網路編程
網路編程―― 一個神秘的、充滿挑戰的方向。不過在談Java 網路編程之前首先感謝Sun 公司的開發人員,因為它們天才的設想,充滿智慧的架構,使廣大java程序員學習java網路編程變得異常簡單。
Java網路編程方面的書,我推薦 O'Reilly 的 《Java Network Programming》 目前已經第三版了,以前的版本市面上肯定有!網路上早有第三版的電子版,國外2004 年出版,706 頁哦!講得很全,比較深入,太深入的可能由於 Sun 有些東西沒有完全公開,所以也就不好講了,有興趣的可以下載看看!第二本還是 O'Reilly 1998 年出版的 《Java distributed computing 》 基礎部分寫得比較詳細,後面的實例還是值得研究的。
在大家閱讀這些書之前,給大家一點提示:
java網路編程其實相對比較簡單,入門也很快很快。java 網路編程主要包括兩個部分:1.Socket ;2.URL 部分。不過第二部分也完全建立在第一部分的基礎上。
1. Socket 包括客戶端的Socket 和伺服器端的ServerSocket 。還有就是DatagramSocket 和DatagramPacket ,它對應於UDP 通信協議。 總之, Socket 部分是建立其它高級協議的基礎。
2. URL 類是一個網路資源定位器,通常和具體的網路協議如 HTTP ,FTP ,Telnet…… 相關。通過該類可以連接網路上的資源,通過其openStream 可以以io包中的流(InputStream )的形式讀取網路資源;通過其OpenConnection 方法,可以打開一個連接,在此連接上可以不僅可以完成讀的操作,還可以完成寫的操作。
Java的網路編程大體包括以上兩部分。網路編程和IO以及多線程部分非常密切,在學習此部分前大家一定對這兩部分了解比較透徹。
學習了以上部分你可以研究java.net 包中的與此相關的源代碼了!研究所有的源代碼還為時尚早。在整個net 包中包含: ContentHandlerFactory 、URLStreamHandlerFactory 、URLStreamHandler 、URLClassLoader 等輔助類,它們構成了 java.net 網路編程的框架,通過研究其源代碼,你不僅可以快速理解java.net 包,還可以為以後擴展該包打下基礎,甚至可以將此思維方式運用到自己的項目中。
到此為止你對java.net 包應該才了解60%,還有一部分你可以使用JDecompiler 之類的反編譯軟體打開你JDK 安裝目錄下 \jdkxxx\jre\lib 目錄中的 rt.jar ,用WinRAR 之類的軟體打開它的sun.net 包,反編譯所有的文件,它是URL類工作的細節。當研究完該sun.net 包,你就會對整個網路編程很熟悉很熟悉了。
一切看起來我們已經對網路編程很精通了。其實不然,剛剛開始而已,要想深入,請繼續吧!網路上很多優秀的網路編程庫甚至軟體可以為我們「添加功力」。如 Apache 的 HttpCore 和 HTTPConnection 是兩個和 HTTP 協議相關庫; JGroups 是研究分布式通信、群組通信的必讀庫;接著我們可以研究 P2P 的軟體包,如 Sun 公司的 JXTA ,它可能是 java 平台點對點通信未來的標准哦!接著你可以研究成熟得不得了,使用極其廣泛得 P2P 軟體 Azureus ! www.sourceforge.net 可以下載到!
千里之行始於足下! Just do it !(目前我也只研究了 net 包,其它的會在不久的將來繼續深入。 Sun 公司因為某些原因沒有公開 net 的其它實現細節,在其允許將其源代碼以文字的形式加以研究,以及允許將其沒有公開的實現寫入書中時,我很希望能出一本 java 網路編程的書籍,以飧廣大讀者!!)
6. Servlet 和JSP
Servlet 、JSP 的書也是滿地都是!值得推薦的也僅僅兩三本。實推Addison Wiley 的 《Servlets and JavaServer pages :The J2EE Technology Web Tier 》 又是一本很厚的哦!國外 2003 年出版、784 頁,講得比較全,例子也很多,特別是第八章Filter ,舉了幾個不錯的例子。其它所有我看到的關於Servlet 和 JSP的書都沒有如此深入的!(可能有我沒有看到而已)。O』reilly 的 《Java Servlet Programming 》 和《 Java Server Pages 》 相對比較好懂一些,可以讀讀!
在大家學習 Servlet 和 Jsp 之前我還是要提醒一下:
本質上說Servlet 就是一個實現Servlet 介面的、部署於伺服器端的伺服器端的程序罷了!它可以象寫其它任何 java 應用程序一樣編寫,它可以操作資料庫、可以操作本地文件、可以連接本地 EJB…… 編寫 Servlet 程序的一般流程為:
1. 繼承一個 HttpServlet 類;
2. 覆蓋其 doGet 、doPost 方法;
3. 在覆蓋方法的內部操作方法參數 HttpServletRequest 和 HttpServletResponse 。
4. 讀取請求利用HttpServletRequest 。利用HttpServletRequest 你可以操作Http 協議的協議頭、可以得到請求的操作方法、可以得到請求的路徑、可以得到請求的字元串、以及和請求客戶相關的信息,更主要的你可以得到Cookie 和 HttpSession 這兩個對象。
5. 利用Cookie 你可以操作「甜心」對象或者將其寫入HttpServletResponse 中。
6. 向客戶輸出信息可以使用HttpServletResponse 。使用HttpServletResponse 可以寫入各種類型的協議頭、可以增加 Cookie 、可以重定向其它 URL 、可以向客戶發送 Http 協議的狀態碼。
7. 利用 HttpSession 在會話內完成你想實現的任何功能。
同時Servlet 還提供了一些事件和事件監聽器(簡單的觀察者模式而已)。還有就是過濾器(Filter )和包裝器( ServletRequestWrapper 、 ServletResponseWrapper )――簡單的流的使用和裝飾器模式的使用。
學習 Sevlet 、JSP 必然要部署到伺服器中,記住通常文件部署的步驟和參數的設置以及在程序中如何使用就可以了。
完全理解 Servlet後,學習jsp相對比較容易了!Jsp 完全建立在Servlet的基礎上,它是為了迎合那些喜歡在Html 文檔中嵌入腳本(如:PHP 之類的網頁編程語言)的程序員的需要罷了!學起來也相當的容易!
一切看起來似乎那麼的風平浪靜,簡單好學!簡單的表象背後有其復雜的機理。要想對Servlet和Jsp徹底研究,你得研究 Tomcat等開源軟體的具體實現。它無非就是一個伺服器,在客戶利用網頁通過HTTP協議向伺服器發送請求後,伺服器將此 HTTP 求轉化為相應的HttpServletRequest對象,調用你編寫的Servlet罷了,在你的Servlet中你肯定操作了此 HttpServletRequest了吧,同時操作了HttpServletResponse了吧,伺服器就將此HttpServletResponse按照 HTTP 協議的要求利用HTTP協議發送給你的瀏覽器了!在伺服器端的Jsp網頁在被客戶請求後,Tomcat 會利用編譯軟體,使用 javax.servlet.jsp包中的模板,編譯此jsp文件,編譯後就是一個Servlet!以後的操作和Servlet完全一樣哦!
在Servlet和Jsp的基礎上出現了,所謂的高級技術:JSTL ,Struts…… 無非就是一些標簽和MVC模式的使用。
繼續前進吧!勝利就在前方!!
7. 多線程
一個看起來很神秘,卻很容易上手、很難精通的方向!
我推薦兩本我感覺很好的書籍。首先是我第一本能上手看的這方面的書, Sams 1998 年出版的 《Java Thread Programming 》 寫得暴好,很容易讀懂,我有空還時常看當時的筆記!要知道怎麼好你自己看吧!第二本OReilly三次出版的 《Java Threads》 最新是2004版,國內好像有中文版,推薦你還是看英文版的吧!書中談到了與多線程相關的N個方向,如IO 、Swing 、Collection 等等。
給大家一點提示吧!java 類庫中與多線程相關的類不是很多,主要有:Thread 、ThreadGroup 以及ThreadLocal和 InheritableThreadLocal 四個類和一個Runnable 介面;關鍵字synchronize 、volatile ;以及 Object 對象的wait 、 notify 、notifyAll 方法!
1 Thread 是多線程的核心類,提供了一系列創建和操作多線程的方法。
2 ThreadGroup 是一個管理Thread的工具類。
3 ThreadLocal 和InheritableThreadLocal 為Thread 提供了一個類似保險箱功能的存儲線程對象的類!
4 Runnable 不用說了吧!
5 synchronize 是同步方法和同步塊的核心哦!多個線程調用此方法時,只有一個線程可以使用此方法,其它方法阻塞,從而保證被操作對象內部狀態完整性。某個線程調用帶有synchronize 的方法或塊時會得到該對象的對象鎖,完成塊中的操作後釋放此對象鎖,從而其它對象可以繼續操作。
6 wait 、notify 、notifyAll 提供了有效的等待/ 通知機制。Java語言中每一個對象都有一個休息室,任何線程在其操作的對象的狀態不滿足的情況下,在該對象的休息室中休息,釋放對象鎖;當其它線程操作該對象後,喚醒休息室中的線程,它們再檢查條件,當條件滿足後,執行相應的操作。
多線程大致就這么多基礎的!簡單嗎!這對於一個真正的程序員應該是不夠的,真正對多線程要有所掌握,請您研究 java.util.concurrent 包吧!大師Doug Lea的作品,原先是一個開源的一致性編程的庫,後來被Sun公司並入java類庫。作者的網站上也有另外一個版本的該類庫!值得研究的好東西 !Hibernation 、 OpenJMS 等開源軟體都使用了此包!
8. 設計模式
談到設計模式很多人多會推薦GOF的那本,該書在Amzon上是五星級的推薦書籍。不過對於學習java沒多久的、特別是 java初學者,我很不推薦這本書。主要是該書的例子基本都是C++的,很多細節沒有講述得足夠清楚。
我給大家推薦的第一本是閻宏博士的《Java 與模式》 它是第一本中國人自己寫的關於設計模式的書籍,寫的比較有趣,融合了很多中華民族的文化和觀念,例子、類圖都比較多,且相對簡單!非常不錯的入門書籍―― 又是大塊頭哦!
其次我推薦 Wiley 出版社出版的 《Pattern In Java 》 一套三本,我才看了第一本,好像第二本不怎麼樣,第三本還不錯!
第三本是中文翻譯版的關於多線程模式的(很難得的中文翻譯版)中國鐵道出版社2003年出版的《Java 多線程設計模式》 ,將多線程模式講得非常淺顯,配有大量的圖例,每章都有習題,最後有答案!我研究多線程模式就是由它開始的!
第四本,今年出版的 Head First 系列的《Head First Design Pattern 》 秉承 Head First 系列圖書的優點,大量的類圖、豐富的實例、有趣的註解,值得購買!
其次在J2EE 方向你可以研究閱讀Addison Wesley 2002 年出版的《Patterns of Enterprise Application Architecture 》 ,眾多大腕的作品,講企業消息集成的!Sun 提供的《J2EE PATTERNS SL500 》也很好!晚了推薦那一本Amzon 4 星半的 《 Holub on patterns 》 大師的作品,提供了,很值得研究的例子,不過對上面四本不是很熟悉的讀者,最好不要讀它!可能會讓你比較累!
我學習設計模式經過一段很曲折的路線,前前後後大約看了20 本,閻宏博士的《Java 與模式》我看了4 遍,還排除我第一次基本沒看懂的看!記得研一時老師給我們講了GOF的那本,作為選修課,我和它們計算機系的碩士、博士們一起,到最後一個班40 - 50 個人,不超過3個人明白,我也沒有明白任何一點(基礎差吧――主要我對C++語言一點都不了解),憑我不伏輸的性格,我認為我對java語言理解還可以,我就借了《Java 與模式》,結果還是基本沒看懂。很有幸的是讀研三時,聽過了上交大饒若楠老師關於Java OOP語言的講座,我懂了組合書籍模式等三種設計模式後,對其它模式有了強烈的興趣和要征服它的願望!工作後我買的第一本就是《Java 與模式》,第一遍花了2個月研究了這個1000多頁的大塊頭,後來第三遍15天左右就可以搞定,筆記記了一大本!從此一發不可收拾。
選對書、埋頭研究。相信很快就會入門的!
學習Java語言8個簡單的部分,這只是我們研究Java語言的開始!這些都懂了充其量一個java程序員而已,後面的路很長很長!我們可以繼續研究資料庫實現的源代碼、Servlet 伺服器的源代碼、RMI 、EJB 、JNDI 、面向方面編程、重構、ANT 工具、Eclipse 工具、Spring 工具、JBoss 、JOnAS 、Apache Geronimo 等J2EE 伺服器!研究了這些你可能會成為一個出色的J2EE Architecture!你可以繼續研究剖析器、編譯器、JNODE( java 寫的操作系統) ……
感謝大家有此耐心,聽我羅羅嗦嗦大半天!感謝大家的閱讀,感謝群里的朋友!這篇文章主要應群里朋友的呼聲――不知道如何選書、不知道從何看起!大半天的功夫完成趕此文章,字句上難免有失誤,同時由於能力有限不凡有錯誤!請閱讀後批評指正!
上面基本是我研究java語言的順序,以上書籍都是我閱讀過的,不存在替任何出版社宣傳的成分!有的方法可能不適合你,假如你能收獲一點,兩點甚至更多,請你不要吝嗇推薦給你的朋友――共同學習!