Java核心技術(Java白皮書)卷Ⅰ 第一章 Java程序設計概述

         第1章 Java程序設計概述
1.1 Java程序設計平臺
 具備使人賞心悅目的語法和易於理解的語言,與其餘許多優秀語言同樣,Java知足這些要求.
 可移植性
 垃圾收集
 提供大型的庫
  若是想要有奇特的繪圖功能,網絡鏈接功能和數據庫存取功能無需本身動手編寫代碼
 功能齊全的出色語言
 高質量的執行環境,提供龐大的庫。集多種優點於一身
 注:
  白皮書:www.oracle.com/technetwork/java/langenv-140151.html
  11個關鍵術語的論述:http://horstmann/corejava/java-an-overview/7Gosling.pdfhtml

1.2 Java "白皮書" 的關鍵術語
  1)簡單性   2)面向對象  3)分佈式  4)健壯性  5)安全性
  6)體系結構中立  7)可移植性  8)解釋性  9)高性能  10)多線程 11)多態性
 1.2.1 簡單性
  無需深奧的專業培訓就能夠進行的編程系統,而且符合當今的標準慣例
  儘量地接近C++,以便系統更易於理解 Java剔除了C++中許多不多用,難以理解,易混淆的特性(這些特性帶來的麻煩遠遠多於其帶來的好處)
  支持開發可以在小型機器上獨立運行的軟件(基本的解釋器以及類支持大約僅爲40KB)
  再加上基礎的標準類庫和對線程的支持(基本上是一個自包含的微內核)大約須要增長175KB
  因爲不斷的擴展,類庫已經至關龐大
   如今有一個獨立的具備較小類庫的Java微型版(Java Micro Edition),這個版本適用於嵌入式設備
 1.2.2 面向對象
  面向對象設計是一種程序設計技術  它將重點放在數據(即對象)和對象的接口上
   面向對象:始終關注的是所製做的椅子,第二位纔是所使用的工具;
   非面向對象:首先考慮的是所用的工具
  在本質上,Java的面向對象能力與C++是同樣的  旗鼓至關
  Java與C++的主要不一樣點在於多重繼承,在Java中,取而代之的是更簡單的接口概念
  Java提供了更豐富的運行時自省空間
 1.2.3 分佈式
  Java有一個豐富的例程庫,用於處理像HTTP和FTP之類的TCP/IP協議
  Java應用程序可以經過URL打開和訪問網絡上的對象,其便捷程度就好像訪問本地文件同樣
 1.2.4 健壯性
  具備多方面的可靠性
  Java與C++最大的不一樣在於Java採用的指針模型能夠消除重寫內存和損壞數據的可能性
  Java編譯器可以檢測許多在其餘語言中僅運行時纔可以檢測出來的問題
 1.2.5 安全性 相對安全,凡事無絕對
  適用於網絡/分佈式環境
  能夠構建防病毒,防篡改的系統
  防範各類攻擊:
    運行時堆棧溢出。如蠕蟲和病毒經常使用的攻擊手段
    破壞本身的進程空間以外的內存
    未經受權讀寫文件
  Java代碼不論來自哪裏,都不能脫離沙箱
   不可信代碼在一個沙箱中執行,在這裏它不會影響主系統
  安全模型很複雜
   Java瀏覽器插件不信任遠程代碼,除非代碼有數字簽名並且用戶贊成執行這個代碼
 1.2.6 體系結構中立
  很容易地在任何機器上解釋執行
  能夠動態地翻譯成本地機器代碼
  Java虛擬機優勢:
   能夠檢測指令序列的行爲,從而加強安全性
 1.2.7 可移植性
  Java規範中沒有 "以來具體實現" 的地方
  基本數據類型的大小以及有關運算都作了明確的說明
  在Java中,數據類型具備固定的大小,這消除了代碼移植時使人頭疼的主要問題
  二進制數據以固定的格式進行存儲和傳輸,消除了字節順序的困擾
   int爲永遠的32位的整數
   字符串是用標準的Unicode格式儲存的
  做爲系統組成部分的類庫,定義了可移植的接口
  Java庫很好地支持平臺獨立性
   處理文件,正則表達式,XML,日期和時間,數據庫,網絡鏈接,線程等
  不只程序是可移植的,Java API每每也比原生API質量更高
 1.2.8 解釋型
  java虛擬機能夠在任何安裝了jre的環境中運行
  Java解釋器能夠在任何移植瞭解釋器的機器上執行Java字節碼
  連接是一個增量式且輕量級的過程(開發過程變得更加快捷,更加具備探索性)
 1.2.9 高性能
  更加高效的性能
  字節碼能夠(在運行時刻)動態地翻譯成對應這個應用的特定CPU的機器碼 即時編譯器能夠監控常常執行代碼,而且優化這些代碼以提升速度。更爲複雜的優化是消除函數調用(即 "內聯") 知道哪些類已經加載 基於當前加載的類集,若是特定函數不會被覆蓋,就可使用內聯 (必要時,還能夠撤銷優化)
 1.2.10 多線程
  多線程能夠帶來更好的交互響應和實時行爲
  併發性 摩爾定律 更多的處理器
  第一個支持併發程序設計的主流語言
  java提供接口,操做接口以便操做系統多個處理器
 1.2.11 動態性
  庫中能夠自由地添加新方法和實例變量(對客戶端卻沒有任何影響)
  可輕易找到運行時類型信息(十分簡單)
  很是重要的特性
  引入主流程序設計語言中
  注:
   J++ Java 有幾乎相同的編程語言以及虛擬機
   C# Java 有不少類似之處,然而使用的倒是徹底不一樣的虛擬機
1.3 Java applet與Internet
 從Internet下載Java字節碼,並在本身機器上運行(在網頁上運行的Java程序成爲applet)
  動態: 利用鼠標進行旋轉,調整焦距等操做
 applet:http://jmol.sourceforge.net
 "現在,要在瀏覽器中使用applet,不只須要必定的水平,並且要付出努力"
1.4 Java的發展史
 語言只是實現目標的工具,而不是目標自己  --Gosling
 Oak --> Java
 萬維網 關鍵 把超文本頁面轉換到屏幕上的瀏覽器
 一處編寫,隨處運行 java

                       Java語言的發展情況
 版本  年份  語言特性  類與接口數量
 1.0  1996  語言自己  211
 1.1  1997   內部類   477
 1.2  1998  strictfp修飾符  1524
  1.3  2000  無   1840
 1.4  2002  斷言  2723
  5.0  2004  泛型類,"for eath"循環,可變元參數, 自動裝箱,元數據,枚舉,靜態導入  3279
 6  2006   無  3793
 7  2011   基於字符串的switch,鑽石操做符,二進制字面量,異常處理改進  4024
 8  2014    lambda表達式,包含,默認方法的接口,流和日期/時間庫  4240


1.5 關於Java的常見誤解
 1.Java是HTML的擴展?
  Java是一種程序設計語言;HTML是一種描述網頁結構的方式。除了用於在網頁上放置Java applet的HTML擴展以外,二者沒有任何共同之處。
 2.使用XML,因此不須要Java?
  Java是一種程序設計語言;
  XML是一種描述數據的方式。
  可使用任何一種程序設計語言處理XML數據,而Java API對XML處理提供了很好的支持。
  此外,許多重要的第三方XML工具採用Java編寫。
 3.Java是一種很是容易學習的程序設計語言?
  像Java這種功能強大的語言大都不太容易學習。 首先,必須將編寫玩具式程序的輕鬆和開發實際項目的艱難區分開來。 Java類庫包含了數千種類和接口以及數萬個函數。幸運的是,並不須要知道它們中的每個,然而,要想Java解決實際問題,仍是須要了解很多內容的。
 4.Java將成爲適用於全部平臺的通用性編程語言?
  從理論上講,這是徹底有可能的。
  但在實際中,某些領域其餘語言有更出色的表現,好比,Objective C和後來的Swift在iOS設備上就有着無可取代的地位。 瀏覽器中的處理幾乎徹底由JavaScript掌控。
  Windows程序一般都用C++或C#編寫。
  Java在服務器端編程和跨平臺客戶端應用領域則頗有優點。
5.Java只不過是另一種程序設計語言?
  Java是一種很好的程序設計語言,不少程序設計人員喜歡Java賽過C、C++或C#。有
  上百種好的程序設計語言沒有普遍地流行,而帶有明顯缺陷的語言,如:C++和Visual Basic卻大行其道。
  程序設計語言的成功更多地取決於其支撐系統的能力,而不是優美的語法。
  人們主要關注:
   是否提供了易於實現某些功能的易用、便捷和標準的庫?
   是否有開發工具提供商能創建強大的編程和調試環境?
   語言和工具集是否可以與其餘計算基礎架構整合在一塊兒?
  Java的成功源於其類庫可以讓人們輕鬆地完成本來有必定難度的事情。
   例如: 聯網Web應用和併發。Java減小了指針錯誤,這是一個額外的好處,所以使用Java編程的效率更高。但這些並非Java成功的所有緣由。
 6.Java是專用的,應該避免使用?
  最初建立Java時,Sun爲銷售者和最終用戶提供了免費許可。 儘管Sun對Java擁有最終的控制權,不過在語言版本的不斷髮展和新庫的設計過程當中還涉及不少其餘公司。 虛擬機和類庫的源代碼能夠免費得到,不過僅限於查看,而不能修改和再發布。
  Java是「閉源的,不過能夠很好地使用」。  
  根據GPL,任何人均可以獲得專利許可,容許其使用和修改Java,不過僅限於桌面和服務器平臺。
  若是你想在嵌入式系統中使用Java,就須要另一個不一樣的許可,這極可能須要付費。
  不過,這些專利在將來十年就會到期,那時Java就徹底免費了。
 7.Java是解釋型的,所以對於關鍵的應用程序速度太慢了?
  如今Java虛擬機使用了即時編譯器,所以採用Java編寫的「熱點」代碼其運行速度與C++相差無幾,有些狀況下甚至更快。
  今天的計算機速度遠比人們發出抱怨的時候快了不少。
  一個較慢的Java程序與幾年前至關快的C++程序相比還要快一些。
 8.全部的Java程序都是在網頁中運行的?
  全部的Java applet都是在網頁瀏覽器中運行的。
  這也偏偏是applet的定義,即一種在瀏覽器中運行的Java程序。
  大多數Java程序是運行在Web瀏覽器以外的獨立應用程序。
  實際上,不少Java程序都在Web服務器上運行並生成用於網頁的代碼。
 9.Java程序是主要的安全風險?
  儘管距離Java誕生已經20年之久,與其餘經常使用的執行平臺相比,Java仍是安全得多。
 10.JavaScript是Java的簡易版?
  JavaScript是一種在網頁中使用的腳本語言,它是由Netscape發明的,原來的名字叫作LiveScript
  JavaScript的語法相似Java,除此以外,二者無任何關係。
  JavaScript的一個子集已經標準化爲ECMA-262。
  與Java applet相比,JavaScript更緊密地與瀏覽器集成在一塊兒。
  特別是JavaScript程序能夠修改正在顯示的文檔,而applet只能在有限的區域內控制外觀。
 11.使用Java能夠用廉價的Internet設備取代桌面計算機
  當Java剛剛發佈的時候,一些人打賭:確定會有這樣的好事情發生。一些公司已經生產出Java網絡計算機的原型,不過用戶還不打算放棄功能強大而便利的桌面計算機,而去使用沒有本地存儲並且功能有限的網絡設備。固然,現在世界已經發生改變,對於大多數最終用戶,經常使用的平臺每每是手機或平板電腦。這些設備大多使用安卓平臺,這是Java的衍生產物。學習Java編程確定也對Android編程頗有幫助。正則表達式

 

 

 

 

~~~~~~~~~~房上的貓~~~~~~~~~~數據庫

相關文章
相關標籤/搜索