狠狠撸

狠狠撸Share a Scribd company logo
Java SE 8 技術手冊第 2 章 - 从闯顿碍到滨顿贰
從 JDK 到 IDE
學習目標
? 瞭解與設定 PATH
? 瞭解與指定 CLASSPATH
? 瞭解與指定 SOURCEPATH
? 使用 package 與 import 管理類別
? 初步認識 JDK 與 IDE 的對應
撰寫 Java 原始碼
撰寫 Java 原始碼
撰寫 Java 原始碼
? 副 名是檔 .java
? 主 名與類別名稱必須相同檔
? 注意每個字母大小寫
? 空白只能是半型空白字元或是 Tab 字元
PATH 是什麼?
PATH 是什麼?
PATH 是什麼?
PATH 是什麼?
PATH 是什麼?
? 建議將 JDK 的 bin 路徑放在 Path 變數的最前方
– 因為系統搜尋 Path 路徑時,會從最前方開始,如果路
徑下找到指定的工具程式就會直接執行
? 若系統中安裝兩個以上 JDK 時, Path 路徑中設定
的順序,將決定執行 個哪 JDK 下的工具程式
? 在安裝了多個 JDK 或 JRE 的電腦中,確定執行了
個版本的哪 JDK 或 JRE 非常重要,確定 PATH 資訊
是一定要作的動作
JVM ( java )與 CLASSPATH
JVM ( java )與 CLASSPATH
? 實體作業系統下執行某個指令時,會依 PATH 中的
路徑資訊,試圖找到可執行 案檔
? JVM 是 Java 程式唯一認得的作業系統,對 JVM 來
說,可執行 就是副 名為檔 檔 .class 的 案檔
? 想在 JVM 中執行某個可執行 (檔 .class ),就要告
訴 JVM 這個虛擬作業系統到 些路徑下尋找 案哪 檔
,方式是透過 CLASSPATH 指定其可執行檔
( .class )的路徑資訊
JVM ( java )與 CLASSPATH
JVM ( java )與 CLASSPATH
? 如果在 JVM 的 CLASSPATH 路徑資訊中都找
不到指定的類別 案檔
– JDK7 前會出現
java.lang.NoClassDefFoundError 訊息,
而 JDK7 之後的版本會有比較友善的中文錯誤訊
息
JVM ( java )與 CLASSPATH
? JVM 預設的 CLASSPATH 就是讀取目前資料夾
中的 .class
? 如果自行指定 CLASSPATH ,則以你指定的為
主
JVM ( java )與 CLASSPATH
? 希望也從目前資料夾開始尋找類別 案,則檔
可以使用 . 指定
JVM ( java )與 CLASSPATH
? 程式庫中的類別 案,會封裝為檔
JAR ( Java Archive ) 案,也就是副 名檔 檔
為 .jar 的 案檔
– 使用 ZIP 格式壓縮,當中包含一堆 .class 案檔
? 例如,有 abc.jar 與 xyz.jar 放在 C:lib 底下,
執行時若要使用 JAR 案中的類別 案:檔 檔
JVM ( java )與 CLASSPATH
? 如果有些類別路徑很常使用,其實也可以透
過環境變數設定。例如:
? 在 動啟 JVM 時,也就是執行 java 時,若沒
使用 -cp 或 -classpath 指定 CLASSPATH ,
就會讀取 CLASSPATH 環境變數
JVM ( java )與 CLASSPATH
? 從 Java SE 6 開始,可以使用 * 表示使用資料
夾中所有 .jar 案檔
? 例如指定使用 C:jars 下所有 JAR 案:檔
編譯器( javac )與
CLASSPATH
? 在光 中碟 labs/CH2 資料夾中有個 classes 資料
夾,請將之複製至 C:workspace 中,確認
C:workspaceclasses 中有個已編譯的
Console.class
編譯器( javac )與
CLASSPATH
? 可以在 C:workspace 中開個 Main.java ,如下
使用 Console 類別
編譯器( javac )與
CLASSPATH
編譯器( javac )與
CLASSPATH
管理原始碼與位元碼 案檔
? 來觀察一下目前你的 C:workspace ,原始碼
( .java ) 案與位元碼 案(檔 檔 .class )都放
在一起
? 想像一下,如果程式規模稍大,一堆 .java 與
.class 案還放在一起,會有多麼混亂檔
? 你需要有效率地管理原始 與位元碼 案嗎 檔
編譯器( javac )與 SOURCEPATH
? 請將光 中碟 labs 資料夾的 Hello1 資料夾複製
至 C:workspace 中
? Hello1 資料夾中有 src 與 classes 資料夾, src
資料夾中有 Console.java 與 Main.java 兩個檔
案
編譯器( javac )與 SOURCEPATH
? src 資料夾將用來放置原始碼 案,而編譯好檔
的位元碼 案,希望能指定存放至檔 classes 資
料夾
編譯器( javac )與 SOURCEPATH
? 使用 -sourcepath 指定從 src 資料夾中尋找
原始碼 案,而檔 -d 指定了編譯完成的位元碼
存放資料夾
? 編譯器會將使用到的相關類別原始碼也一併
進行編譯
編譯器( javac )與 SOURCEPATH
? 可以在編譯時指定 -verbose 引數,看到編
譯器進行編譯時的過程
Java SE 8 技術手冊第 2 章 - 从闯顿碍到滨顿贰
編譯器( javac )與 SOURCEPATH
? 實際專案中會有數以萬計的類別,如果每次
都要重新將 .java 編譯為 .class ,那會是非常
費時的工作
? 編譯時若類別路徑中已存在位元碼,且上次
編譯後,原始碼並沒有修改,無需重新編譯
會比較節省時間
Java SE 8 技術手冊第 2 章 - 从闯顿碍到滨顿贰
使用 package 管理類別
? .java 放在 src 資料夾中,編譯出來的 .class 放
置在 classes 資料夾下
? 就如同你會分不同資料夾來放置不同作用的
案,類別也應該分門別類加以放置,檔
? 無論是實體 案上的分類管理,或是類別名檔
稱上的分類管理,有個 package 關鍵字,
可以協助你達到這個目的
使用 package 管理類別
? 用編輯器開啟 2.2.2 中 Hello1/src 資料夾中的
Console.java ,在開頭鍵入下圖反白的文字:
? Console 類別將放在 cc.openhome.util 的分
類下,以 Java 的術語來說, Console 這個類別將
放在 cc.openhome.util 套件( package )
使用 package 管理類別
? 再用文字編輯器開啟 2.2.2 中 Hello1/src 資料
夾中的 Main.java ,在開頭鍵入下圖反白的文
字
? 這表示 Main 類別將放在 cc.openhome 的
分類下
使用 package 管理類別
? 原始碼 案要放置在與檔 package 所定義名稱階層
相同的資料夾階層
? package 所定義名稱與 class 所定義名稱,會結合
而成類別的完全吻合名稱( Fully qualified name )
? 位元碼 案要放置在與檔 package 所定義名稱階層
相同的資料夾階層
? 要在套件間可以直接使用的類別或方法
( Method )必須宣告為 public
原始碼 案與套件管理檔
? 由於 Console 類別使用 package 定義在
cc.openhome.util 套件下,所以
Console.java 必須放在 src 資料夾中的
cc/openhome/util 資料夾
? Main 類別使用 package 定義在
cc.openhome 套件下,所以 Main.java 必須
放在 src 資料夾中的 cc/openhome 資料夾
完全吻合名稱( Fully qualified
name )
? Main 類別是位於 cc.openhome 套件分類
中,其完全吻合名稱是
cc.openhome.Main
? Console 類別是位於 cc.openhome.util
分類中,其完全吻合名稱為
cc.openhome.util.Console
? 如果是相同套件中的類別,只要使用 class
所定義的名稱即可
? 不同套件的類別,必須使用完全吻合名稱
? 由於 Main 與 Console 類別是位於不同的套
件中
完全吻合名稱( Fully qualified
name )
位元碼 案與套件管理檔
? 由於 Console 類別使用 package 定義在
cc.openhome.util 套件下,所以編譯出
來的 Console.class 必須放在 classes 資料夾中
的 cc/openhome/util 資料夾
? Main 類別使用 package 定義在
cc.openhome 套件下,所以 Main.class 必
須放在 classes 資料夾中的 cc/openhome 資料
夾
位元碼 案與套件管理檔
? 在編譯時若有使用 -d 指定位元碼的存放位
置,就會自動建立出對應套件階層的資料夾
,並將編譯出來的位元碼 案放置至應有的檔
位置
使用 import 懶偷
? 每次撰寫程式時,都得鍵入完全吻合名稱,
也是件麻煩的事 …
使用 import 懶偷
? import 只是告訴編譯器,遇到不認識的類
別名稱,可以嘗試使用 import 過的名稱
? import 讓你少打一些字,讓編譯器多為你
作一些事
使用 import 懶偷
? 如果同一套件下會使用到多個類別,你也許
會多次使用 import :
? 你可以更 懶一些,用以下的偷 import 語句
:
使用 import 懶偷
? 懶也是有個限度,如果你自己寫了一個偷
Arrays :
? 若在某個類別中撰寫有以下的程式碼:
使用 import 懶偷
? 底該使用 cc.openhome.Arrays 還是
java.util.Arrays ?
使用 import 懶偷
? 遇到這種情況時,就不能 懶了,你要使用偷
個類別名稱,就得明確地逐字打出來:哪
使用 import 懶偷
? 寫第一個 Java 程式時使用的 System 類別,
其實也有使用套件管理,完整名稱其實是
java.lang.System
? 在 java.lang 套件下的類別由於很常用,
不用撰寫 import 也可以直接使用 class 定
義的名稱
使用 import 懶偷
? 當編譯器看到一個沒有套件管理的類別名稱
,會先在同一套件中尋找類別,如果找到就
使用,若沒找到,再試著從 import 陳述進
行比對
? java.lang 可視為預設就有 import ,沒
有寫任何 import 陳述時,也會試著比對
java.lang 組合,看看是否能找到對應類
別
IDE 專案管理基礎
IDE 專案管理基礎
IDE 專案管理基礎
使用了 個哪 JRE ?
? 因為各種原因,你的電腦中可能不只存在一
套 JRE !
? 在文字模式下鍵入 java 指令,如果設定了
PATH ,會執行 PATH 順序下找到的
第一個 java 可執行 ,這個可執行 所檔 檔 啟
動的是 套哪 JRE ?
使用了 個哪 JRE ?
? 當找到 java 可執行 並執行時,會依照以檔
下的規則來尋找可用的 JRE :
– 可否在 java 可執行 資料夾下找到相關原生檔
( Native )程式庫
– 可否在上一層目錄中找到 jre 目錄
? 在執行 java 指令時,可附帶一個 -
version 引數,這可以顯示執行的 JRE 版本
使用了 個哪 JRE ?
? 如果有個需求是切換 JRE ,文字模式下必須
設定 PATH 順序中,找到的第一個 JRE 之
bin 資料夾是你想要的 JRE ,而不是設定
CLASSPATH
? 如果使用 IDE 新增專案,你使用了 個哪 JRE
?呢
類別 案版本檔
? 如果使用新版本 JDK 編譯出位元碼 案,在檔
舊版本 JRE 上執行,可能發生以下錯誤訊息
…
類別 案版本檔
? 編譯器會在位元碼 案中標示主版本號與次檔
版本號,不同的版本號,位元碼 案格式可檔
能有所不同
? JVM 在載入位元碼 案後,會確認其版本號檔
是否在可接受的範圍,否則就不會處理該位
元碼 案檔
類別 案版本檔
? 可以使用 JDK 工具程式 javap ,確認位元
碼 案的版本號:檔
類別 案版本檔
? System.getProperty(“java.class.v
ersion”) 可取得 JRE 支援的位元碼版本號
? System.getProperty(“java.runtime
.version”) 可取得 JRE 版本訊息
類別 案版本檔
? 在編譯的時候,可以使用 -target 指定編譯
出來的位元碼,必須符合指定平台允許的版
本號
? 使用 -source 要求編譯器檢 使用的語法查
,不超過指定的版本
類別 案版本檔
類別 案版本檔
? 在不指定 -target 與 -source 的情況下,
編譯器會有預設的 -target 值
? JDK8 預設的 -target 與 -source 都是 1.8
? -target 在指定時, 必須大於或等於值 -
source
類別 案版本檔
? 如果只指定 -source 與 -target 進行編譯,會出
現警示訊息,這是因為編譯時預設的 Bootstrap 類別
載入器( Class loader )沒有改變
? 系統預設的類別載入器仍參考至 1.8 的 rt.jar (也就
是 Java SE 8 API 的 JAR 案)檔
? 如果引用到一些舊版 JRE 沒有的新 API ,就會造成
在舊版 JRE 上無法執行
? 最好是編譯時指定 -bootclasspath ,參考至舊
版的 rt.jar ,這樣在舊版 JRE 執行時比較不會發生
問題
類別 案版本檔
? 如果你已經安裝有舊版 JDK 或 JRE ,可以在
執行時使用 -version 引數並指定版本。例
如…
Java SE 8 技術手冊第 2 章 - 从闯顿碍到滨顿贰
類別 案版本檔
? 如果使用 -version 指定的版本,實際上
無法在系統上找到已安裝的 JRE ,則會出現
以下錯誤:
類別 案版本檔
? 那麼在 IDE 中如何設定 -source 與 -
target 對應的選項 ?以呢 NetBeans 為例
…

More Related Content

What's hot (20)

颁贬1:闯补惫补平台概论
颁贬1:闯补惫补平台概论颁贬1:闯补惫补平台概论
颁贬1:闯补惫补平台概论
Justin Lin
?
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
?
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
?
闯痴惭の骋颁アルゴリズムとチューニング
闯痴惭の骋颁アルゴリズムとチューニング闯痴惭の骋颁アルゴリズムとチューニング
闯痴惭の骋颁アルゴリズムとチューニング
佑哉 廣岡
?
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Justin Lin
?
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
?
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
?
Introduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCIntroduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoC
Funnelll
?
颁贬06:继承与多型
颁贬06:继承与多型颁贬06:继承与多型
颁贬06:继承与多型
Justin Lin
?
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなどJakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
オラクルエンジニア通信
?
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Serhat Can
?
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
NTT DATA Technology & Innovation
?
Java Spring Framework
Java Spring FrameworkJava Spring Framework
Java Spring Framework
Mehul Jariwala
?
Spring AOP
Spring AOPSpring AOP
Spring AOP
Tata Consultancy Services
?
Chapter 1. java programming language overview
Chapter 1. java programming language overviewChapter 1. java programming language overview
Chapter 1. java programming language overview
Jong Soon Bok
?
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVMJava Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
shamnasain
?
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
オラクルエンジニア通信
?
Rac rac one_node説明資料
Rac rac one_node説明資料Rac rac one_node説明資料
Rac rac one_node説明資料
Hiroki Morita
?
Tomcat
TomcatTomcat
Tomcat
Venkat Pinagadi
?
Jdk,jre,jvm
Jdk,jre,jvmJdk,jre,jvm
Jdk,jre,jvm
Kritika Goel
?
颁贬1:闯补惫补平台概论
颁贬1:闯补惫补平台概论颁贬1:闯补惫补平台概论
颁贬1:闯补惫补平台概论
Justin Lin
?
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
?
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
?
闯痴惭の骋颁アルゴリズムとチューニング
闯痴惭の骋颁アルゴリズムとチューニング闯痴惭の骋颁アルゴリズムとチューニング
闯痴惭の骋颁アルゴリズムとチューニング
佑哉 廣岡
?
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Justin Lin
?
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
?
Introduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCIntroduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoC
Funnelll
?
颁贬06:继承与多型
颁贬06:继承与多型颁贬06:继承与多型
颁贬06:继承与多型
Justin Lin
?
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなどJakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
オラクルエンジニア通信
?
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Serhat Can
?
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
NTT DATA Technology & Innovation
?
Chapter 1. java programming language overview
Chapter 1. java programming language overviewChapter 1. java programming language overview
Chapter 1. java programming language overview
Jong Soon Bok
?
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVMJava Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
shamnasain
?
Rac rac one_node説明資料
Rac rac one_node説明資料Rac rac one_node説明資料
Rac rac one_node説明資料
Hiroki Morita
?

Viewers also liked (20)

Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
?
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
?
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
?
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
?
Java SE 8 技術手冊第 7 章 - 介面與多型
Java SE 8 技術手冊第 7 章 - 介面與多型Java SE 8 技術手冊第 7 章 - 介面與多型
Java SE 8 技術手冊第 7 章 - 介面與多型
Justin Lin
?
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Java SE 8 技術手冊第 17 章 - 反射與類別載入器Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Justin Lin
?
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
?
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
?
Java SE 8 技術手冊第 13 章 - 時間與日期
Java SE 8 技術手冊第 13 章 - 時間與日期Java SE 8 技術手冊第 13 章 - 時間與日期
Java SE 8 技術手冊第 13 章 - 時間與日期
Justin Lin
?
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
?
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
?
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
?
进阶主题
进阶主题进阶主题
进阶主题
Justin Lin
?
3D 之邏輯與美感交會 - OpenSCAD
3D 之邏輯與美感交會 - OpenSCAD3D 之邏輯與美感交會 - OpenSCAD
3D 之邏輯與美感交會 - OpenSCAD
Justin Lin
?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Justin Lin
?
從 REPL 到 IDE
從 REPL 到 IDE從 REPL 到 IDE
從 REPL 到 IDE
Justin Lin
?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Justin Lin
?
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
?
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
Justin Lin
?
Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論
Justin Lin
?
Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
?
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
?
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
?
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
?
Java SE 8 技術手冊第 7 章 - 介面與多型
Java SE 8 技術手冊第 7 章 - 介面與多型Java SE 8 技術手冊第 7 章 - 介面與多型
Java SE 8 技術手冊第 7 章 - 介面與多型
Justin Lin
?
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Java SE 8 技術手冊第 17 章 - 反射與類別載入器Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Justin Lin
?
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
?
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
?
Java SE 8 技術手冊第 13 章 - 時間與日期
Java SE 8 技術手冊第 13 章 - 時間與日期Java SE 8 技術手冊第 13 章 - 時間與日期
Java SE 8 技術手冊第 13 章 - 時間與日期
Justin Lin
?
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
?
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
?
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用APIJava SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
?
3D 之邏輯與美感交會 - OpenSCAD
3D 之邏輯與美感交會 - OpenSCAD3D 之邏輯與美感交會 - OpenSCAD
3D 之邏輯與美感交會 - OpenSCAD
Justin Lin
?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Justin Lin
?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Justin Lin
?
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
?
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
Justin Lin
?
Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論
Justin Lin
?

Similar to Java SE 8 技術手冊第 2 章 - 从闯顿碍到滨顿贰 (20)

Java SE 7 技術手冊投影片第 02 章 - 从闯顿碍到滨顿贰
Java SE 7 技術手冊投影片第 02 章 - 从闯顿碍到滨顿贰Java SE 7 技術手冊投影片第 02 章 - 从闯顿碍到滨顿贰
Java SE 7 技術手冊投影片第 02 章 - 从闯顿碍到滨顿贰
Justin Lin
?
从闯顿碍到滨顿贰
从闯顿碍到滨顿贰从闯顿碍到滨顿贰
从闯顿碍到滨顿贰
Justin Lin
?
CH02:从闯顿碍到滨顿贰
CH02:从闯顿碍到滨顿贰CH02:从闯顿碍到滨顿贰
CH02:从闯顿碍到滨顿贰
Justin Lin
?
闯补惫补类加载器
闯补惫补类加载器闯补惫补类加载器
闯补惫补类加载器
Fu Cheng
?
2. java introduction
2. java introduction2. java introduction
2. java introduction
netdbncku
?
专案啟动与环境设定
专案啟动与环境设定专案啟动与环境设定
专案啟动与环境设定
Shengyou Fan
?
Ant
AntAnt
Ant
Medivh2011
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]
yiditushe
?
如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala
javatwo2011
?
beidakejian
beidakejianbeidakejian
beidakejian
hanxuebing
?
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
?
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
Justin Lin
?
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
?
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
?
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章  - 通用APIJava SE 7 技術手冊投影片第 12 章  - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
?
[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3
ArBing Xie
?
Io 1
Io 1Io 1
Io 1
Medivh2011
?
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programming
ted-xu
?
笔补肠办补驳别安装与使用
笔补肠办补驳别安装与使用笔补肠办补驳别安装与使用
笔补肠办补驳别安装与使用
Shengyou Fan
?
Java SE 7 技術手冊投影片第 02 章 - 从闯顿碍到滨顿贰
Java SE 7 技術手冊投影片第 02 章 - 从闯顿碍到滨顿贰Java SE 7 技術手冊投影片第 02 章 - 从闯顿碍到滨顿贰
Java SE 7 技術手冊投影片第 02 章 - 从闯顿碍到滨顿贰
Justin Lin
?
从闯顿碍到滨顿贰
从闯顿碍到滨顿贰从闯顿碍到滨顿贰
从闯顿碍到滨顿贰
Justin Lin
?
CH02:从闯顿碍到滨顿贰
CH02:从闯顿碍到滨顿贰CH02:从闯顿碍到滨顿贰
CH02:从闯顿碍到滨顿贰
Justin Lin
?
闯补惫补类加载器
闯补惫补类加载器闯补惫补类加载器
闯补惫补类加载器
Fu Cheng
?
2. java introduction
2. java introduction2. java introduction
2. java introduction
netdbncku
?
专案啟动与环境设定
专案啟动与环境设定专案啟动与环境设定
专案啟动与环境设定
Shengyou Fan
?
千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7千呼萬喚始出來的 Java SE 7
千呼萬喚始出來的 Java SE 7
Justin Lin
?
Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]
yiditushe
?
如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala
javatwo2011
?
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
?
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
Justin Lin
?
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
?
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
Ching Yi Chan
?
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章  - 通用APIJava SE 7 技術手冊投影片第 12 章  - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
?
[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3[圣思园][Java SE]Io 3
[圣思园][Java SE]Io 3
ArBing Xie
?
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programming
ted-xu
?
笔补肠办补驳别安装与使用
笔补肠办补驳别安装与使用笔补肠办补驳别安装与使用
笔补肠办补驳别安装与使用
Shengyou Fan
?

More from Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
?
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
?
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
?
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
?
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
?
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
?
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
Justin Lin
?
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
?
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
Justin Lin
?
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
Justin Lin
?
14. 进阶主题
14. 进阶主题14. 进阶主题
14. 进阶主题
Justin Lin
?
13.并行、平行与非同步
13.并行、平行与非同步13.并行、平行与非同步
13.并行、平行与非同步
Justin Lin
?
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
?
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
Justin Lin
?
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
Justin Lin
?
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
Justin Lin
?
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
?
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理
Justin Lin
?
6. 類別的繼承
6. 類別的繼承6. 類別的繼承
6. 類別的繼承
Justin Lin
?
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
Justin Lin
?
Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
?
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
?
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
?
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
?
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
?
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
?
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
?
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
Justin Lin
?
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
Justin Lin
?
13.并行、平行与非同步
13.并行、平行与非同步13.并行、平行与非同步
13.并行、平行与非同步
Justin Lin
?
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
?
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
Justin Lin
?
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
Justin Lin
?
8. open() 與 io 模組
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
?
6. 類別的繼承
6. 類別的繼承6. 類別的繼承
6. 類別的繼承
Justin Lin
?
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
Justin Lin
?

Java SE 8 技術手冊第 2 章 - 从闯顿碍到滨顿贰

  • 2. 從 JDK 到 IDE 學習目標 ? 瞭解與設定 PATH ? 瞭解與指定 CLASSPATH ? 瞭解與指定 SOURCEPATH ? 使用 package 與 import 管理類別 ? 初步認識 JDK 與 IDE 的對應
  • 5. 撰寫 Java 原始碼 ? 副 名是檔 .java ? 主 名與類別名稱必須相同檔 ? 注意每個字母大小寫 ? 空白只能是半型空白字元或是 Tab 字元
  • 10. PATH 是什麼? ? 建議將 JDK 的 bin 路徑放在 Path 變數的最前方 – 因為系統搜尋 Path 路徑時,會從最前方開始,如果路 徑下找到指定的工具程式就會直接執行 ? 若系統中安裝兩個以上 JDK 時, Path 路徑中設定 的順序,將決定執行 個哪 JDK 下的工具程式 ? 在安裝了多個 JDK 或 JRE 的電腦中,確定執行了 個版本的哪 JDK 或 JRE 非常重要,確定 PATH 資訊 是一定要作的動作
  • 11. JVM ( java )與 CLASSPATH
  • 12. JVM ( java )與 CLASSPATH ? 實體作業系統下執行某個指令時,會依 PATH 中的 路徑資訊,試圖找到可執行 案檔 ? JVM 是 Java 程式唯一認得的作業系統,對 JVM 來 說,可執行 就是副 名為檔 檔 .class 的 案檔 ? 想在 JVM 中執行某個可執行 (檔 .class ),就要告 訴 JVM 這個虛擬作業系統到 些路徑下尋找 案哪 檔 ,方式是透過 CLASSPATH 指定其可執行檔 ( .class )的路徑資訊
  • 13. JVM ( java )與 CLASSPATH
  • 14. JVM ( java )與 CLASSPATH ? 如果在 JVM 的 CLASSPATH 路徑資訊中都找 不到指定的類別 案檔 – JDK7 前會出現 java.lang.NoClassDefFoundError 訊息, 而 JDK7 之後的版本會有比較友善的中文錯誤訊 息
  • 15. JVM ( java )與 CLASSPATH ? JVM 預設的 CLASSPATH 就是讀取目前資料夾 中的 .class ? 如果自行指定 CLASSPATH ,則以你指定的為 主
  • 16. JVM ( java )與 CLASSPATH ? 希望也從目前資料夾開始尋找類別 案,則檔 可以使用 . 指定
  • 17. JVM ( java )與 CLASSPATH ? 程式庫中的類別 案,會封裝為檔 JAR ( Java Archive ) 案,也就是副 名檔 檔 為 .jar 的 案檔 – 使用 ZIP 格式壓縮,當中包含一堆 .class 案檔 ? 例如,有 abc.jar 與 xyz.jar 放在 C:lib 底下, 執行時若要使用 JAR 案中的類別 案:檔 檔
  • 18. JVM ( java )與 CLASSPATH ? 如果有些類別路徑很常使用,其實也可以透 過環境變數設定。例如: ? 在 動啟 JVM 時,也就是執行 java 時,若沒 使用 -cp 或 -classpath 指定 CLASSPATH , 就會讀取 CLASSPATH 環境變數
  • 19. JVM ( java )與 CLASSPATH ? 從 Java SE 6 開始,可以使用 * 表示使用資料 夾中所有 .jar 案檔 ? 例如指定使用 C:jars 下所有 JAR 案:檔
  • 20. 編譯器( javac )與 CLASSPATH ? 在光 中碟 labs/CH2 資料夾中有個 classes 資料 夾,請將之複製至 C:workspace 中,確認 C:workspaceclasses 中有個已編譯的 Console.class
  • 21. 編譯器( javac )與 CLASSPATH ? 可以在 C:workspace 中開個 Main.java ,如下 使用 Console 類別
  • 24. 管理原始碼與位元碼 案檔 ? 來觀察一下目前你的 C:workspace ,原始碼 ( .java ) 案與位元碼 案(檔 檔 .class )都放 在一起 ? 想像一下,如果程式規模稍大,一堆 .java 與 .class 案還放在一起,會有多麼混亂檔 ? 你需要有效率地管理原始 與位元碼 案嗎 檔
  • 25. 編譯器( javac )與 SOURCEPATH ? 請將光 中碟 labs 資料夾的 Hello1 資料夾複製 至 C:workspace 中 ? Hello1 資料夾中有 src 與 classes 資料夾, src 資料夾中有 Console.java 與 Main.java 兩個檔 案
  • 26. 編譯器( javac )與 SOURCEPATH ? src 資料夾將用來放置原始碼 案,而編譯好檔 的位元碼 案,希望能指定存放至檔 classes 資 料夾
  • 27. 編譯器( javac )與 SOURCEPATH ? 使用 -sourcepath 指定從 src 資料夾中尋找 原始碼 案,而檔 -d 指定了編譯完成的位元碼 存放資料夾 ? 編譯器會將使用到的相關類別原始碼也一併 進行編譯
  • 28. 編譯器( javac )與 SOURCEPATH ? 可以在編譯時指定 -verbose 引數,看到編 譯器進行編譯時的過程
  • 30. 編譯器( javac )與 SOURCEPATH ? 實際專案中會有數以萬計的類別,如果每次 都要重新將 .java 編譯為 .class ,那會是非常 費時的工作 ? 編譯時若類別路徑中已存在位元碼,且上次 編譯後,原始碼並沒有修改,無需重新編譯 會比較節省時間
  • 32. 使用 package 管理類別 ? .java 放在 src 資料夾中,編譯出來的 .class 放 置在 classes 資料夾下 ? 就如同你會分不同資料夾來放置不同作用的 案,類別也應該分門別類加以放置,檔 ? 無論是實體 案上的分類管理,或是類別名檔 稱上的分類管理,有個 package 關鍵字, 可以協助你達到這個目的
  • 33. 使用 package 管理類別 ? 用編輯器開啟 2.2.2 中 Hello1/src 資料夾中的 Console.java ,在開頭鍵入下圖反白的文字: ? Console 類別將放在 cc.openhome.util 的分 類下,以 Java 的術語來說, Console 這個類別將 放在 cc.openhome.util 套件( package )
  • 34. 使用 package 管理類別 ? 再用文字編輯器開啟 2.2.2 中 Hello1/src 資料 夾中的 Main.java ,在開頭鍵入下圖反白的文 字 ? 這表示 Main 類別將放在 cc.openhome 的 分類下
  • 35. 使用 package 管理類別 ? 原始碼 案要放置在與檔 package 所定義名稱階層 相同的資料夾階層 ? package 所定義名稱與 class 所定義名稱,會結合 而成類別的完全吻合名稱( Fully qualified name ) ? 位元碼 案要放置在與檔 package 所定義名稱階層 相同的資料夾階層 ? 要在套件間可以直接使用的類別或方法 ( Method )必須宣告為 public
  • 36. 原始碼 案與套件管理檔 ? 由於 Console 類別使用 package 定義在 cc.openhome.util 套件下,所以 Console.java 必須放在 src 資料夾中的 cc/openhome/util 資料夾 ? Main 類別使用 package 定義在 cc.openhome 套件下,所以 Main.java 必須 放在 src 資料夾中的 cc/openhome 資料夾
  • 37. 完全吻合名稱( Fully qualified name ) ? Main 類別是位於 cc.openhome 套件分類 中,其完全吻合名稱是 cc.openhome.Main ? Console 類別是位於 cc.openhome.util 分類中,其完全吻合名稱為 cc.openhome.util.Console
  • 38. ? 如果是相同套件中的類別,只要使用 class 所定義的名稱即可 ? 不同套件的類別,必須使用完全吻合名稱 ? 由於 Main 與 Console 類別是位於不同的套 件中 完全吻合名稱( Fully qualified name )
  • 39. 位元碼 案與套件管理檔 ? 由於 Console 類別使用 package 定義在 cc.openhome.util 套件下,所以編譯出 來的 Console.class 必須放在 classes 資料夾中 的 cc/openhome/util 資料夾 ? Main 類別使用 package 定義在 cc.openhome 套件下,所以 Main.class 必 須放在 classes 資料夾中的 cc/openhome 資料 夾
  • 40. 位元碼 案與套件管理檔 ? 在編譯時若有使用 -d 指定位元碼的存放位 置,就會自動建立出對應套件階層的資料夾 ,並將編譯出來的位元碼 案放置至應有的檔 位置
  • 41. 使用 import 懶偷 ? 每次撰寫程式時,都得鍵入完全吻合名稱, 也是件麻煩的事 …
  • 42. 使用 import 懶偷 ? import 只是告訴編譯器,遇到不認識的類 別名稱,可以嘗試使用 import 過的名稱 ? import 讓你少打一些字,讓編譯器多為你 作一些事
  • 43. 使用 import 懶偷 ? 如果同一套件下會使用到多個類別,你也許 會多次使用 import : ? 你可以更 懶一些,用以下的偷 import 語句 :
  • 44. 使用 import 懶偷 ? 懶也是有個限度,如果你自己寫了一個偷 Arrays : ? 若在某個類別中撰寫有以下的程式碼:
  • 45. 使用 import 懶偷 ? 底該使用 cc.openhome.Arrays 還是 java.util.Arrays ?
  • 46. 使用 import 懶偷 ? 遇到這種情況時,就不能 懶了,你要使用偷 個類別名稱,就得明確地逐字打出來:哪
  • 47. 使用 import 懶偷 ? 寫第一個 Java 程式時使用的 System 類別, 其實也有使用套件管理,完整名稱其實是 java.lang.System ? 在 java.lang 套件下的類別由於很常用, 不用撰寫 import 也可以直接使用 class 定 義的名稱
  • 48. 使用 import 懶偷 ? 當編譯器看到一個沒有套件管理的類別名稱 ,會先在同一套件中尋找類別,如果找到就 使用,若沒找到,再試著從 import 陳述進 行比對 ? java.lang 可視為預設就有 import ,沒 有寫任何 import 陳述時,也會試著比對 java.lang 組合,看看是否能找到對應類 別
  • 52. 使用了 個哪 JRE ? ? 因為各種原因,你的電腦中可能不只存在一 套 JRE ! ? 在文字模式下鍵入 java 指令,如果設定了 PATH ,會執行 PATH 順序下找到的 第一個 java 可執行 ,這個可執行 所檔 檔 啟 動的是 套哪 JRE ?
  • 53. 使用了 個哪 JRE ? ? 當找到 java 可執行 並執行時,會依照以檔 下的規則來尋找可用的 JRE : – 可否在 java 可執行 資料夾下找到相關原生檔 ( Native )程式庫 – 可否在上一層目錄中找到 jre 目錄 ? 在執行 java 指令時,可附帶一個 - version 引數,這可以顯示執行的 JRE 版本
  • 54. 使用了 個哪 JRE ? ? 如果有個需求是切換 JRE ,文字模式下必須 設定 PATH 順序中,找到的第一個 JRE 之 bin 資料夾是你想要的 JRE ,而不是設定 CLASSPATH ? 如果使用 IDE 新增專案,你使用了 個哪 JRE ?呢
  • 55. 類別 案版本檔 ? 如果使用新版本 JDK 編譯出位元碼 案,在檔 舊版本 JRE 上執行,可能發生以下錯誤訊息 …
  • 56. 類別 案版本檔 ? 編譯器會在位元碼 案中標示主版本號與次檔 版本號,不同的版本號,位元碼 案格式可檔 能有所不同 ? JVM 在載入位元碼 案後,會確認其版本號檔 是否在可接受的範圍,否則就不會處理該位 元碼 案檔
  • 57. 類別 案版本檔 ? 可以使用 JDK 工具程式 javap ,確認位元 碼 案的版本號:檔
  • 58. 類別 案版本檔 ? System.getProperty(“java.class.v ersion”) 可取得 JRE 支援的位元碼版本號 ? System.getProperty(“java.runtime .version”) 可取得 JRE 版本訊息
  • 59. 類別 案版本檔 ? 在編譯的時候,可以使用 -target 指定編譯 出來的位元碼,必須符合指定平台允許的版 本號 ? 使用 -source 要求編譯器檢 使用的語法查 ,不超過指定的版本
  • 61. 類別 案版本檔 ? 在不指定 -target 與 -source 的情況下, 編譯器會有預設的 -target 值 ? JDK8 預設的 -target 與 -source 都是 1.8 ? -target 在指定時, 必須大於或等於值 - source
  • 62. 類別 案版本檔 ? 如果只指定 -source 與 -target 進行編譯,會出 現警示訊息,這是因為編譯時預設的 Bootstrap 類別 載入器( Class loader )沒有改變 ? 系統預設的類別載入器仍參考至 1.8 的 rt.jar (也就 是 Java SE 8 API 的 JAR 案)檔 ? 如果引用到一些舊版 JRE 沒有的新 API ,就會造成 在舊版 JRE 上無法執行 ? 最好是編譯時指定 -bootclasspath ,參考至舊 版的 rt.jar ,這樣在舊版 JRE 執行時比較不會發生 問題
  • 63. 類別 案版本檔 ? 如果你已經安裝有舊版 JDK 或 JRE ,可以在 執行時使用 -version 引數並指定版本。例 如…
  • 65. 類別 案版本檔 ? 如果使用 -version 指定的版本,實際上 無法在系統上找到已安裝的 JRE ,則會出現 以下錯誤:
  • 66. 類別 案版本檔 ? 那麼在 IDE 中如何設定 -source 與 - target 對應的選項 ?以呢 NetBeans 為例 …