Java 簡介
程式的定義
什麼叫程式,其明確的定義如下 :
1. 一行一行往下執行
2. 具人工智慧決策分析的功能 –if
3. 具有重複執行的功能 — 迴圈
純物件導向
物件導向程式有許多種,比如C/C++、Visual C++、Java, C#、Python、PHP。但只有 Java 及 C# 是純物件導向語言。其他語言,甚至是 C++,都不是純物件導向程式。
什麼是純物件導向程式呢? 如果所有程式碼都包含在class{} 之內,才叫純物件導向程式。
Java 技術
Java SE : Java Platform, Standard Edition : 標準開發平台,開發 applet 及應用程式,可執行於 web 及桌上型電腦的程式。
Java EE : Java Platform, Enterprise Edition。廣泛使用於大型企業中,建立伺服器端及客戶端的分散式應用程式,如網路購物程式。Java EE以 Java SE 為基礎,延伸開發出其他的API,支援大工程,高效能的企業軟体。
Java 編譯流程
Java 原始碼完成後按 F6 執行,就會產生一連串的動作。首先啟動 javac 編譯程式,將原始碼編譯成 .class檔, 然後再啟動 java 虛擬機器執行 .class檔。
“java” 這支程式又稱為 Virtual Machine 虛擬機器。每個作業系統都有自已的VM,如此就可以達到真正的跨平台。也就是說程式碼只要在某個系統上編譯一次,其產生的 class/jar 就可以通用於不同的作業系統,而且不需再針對不同的作業系統重新編譯。

物件導向
OOP(Object-Oriented Programming) 於 1967 年的 SIMULA-67 程式語言掘起,後來變成了一門學術科目,並由 C++、Java、Visual C# 等實作其理論。
在 1967 年代,電腦還算是剛起步新產品,Ram 是非常昂貴的產品。然而物件導向理論需消耗大量的記憶体才可實現。所以早期物件導向只是一門非常冷門的理論,它只是某些人為了滿足研究的興趣所產生出來的垃圾。到了現在普通主機板可以安裝 128 G 以上的 Ram,這讓物件導向開始火紅。而且要是沒有物件導向理論,視窗作業系統根本不可能實作出來。
OOP 不同於早期的程序化語言,主要的特性如下
模組化 : 將大工程的程式碼分成小模組,易於分工
資訊隱藏 : 將重要的資訊隱藏,不讓外界得知
重複使用 : 相同的功能的程式碼不需重複撰寫
可任意插拔及易於除錯 : 像樂高一樣可隨意組合,且容易找出錯誤
OpenJDK
JDK 全名為 Java Development Kit (Java 開發套件),也就是執行 Java 時所需要的函數庫,以 .jar 的檔案格式存在。
JDK 1~4 由昇陽 (Sun) 開發,到了 5.0 版被 Oracle 併購。Oracle JDK 8.0 還是免付費,但到了 9.0 開始就要收費,所以業界全都轉用 OpenJDK。
OpenJDK 由網路社群開發,完全免費。Oracle 官方的 JDK 也是以 OpenJDK 為核心,然後加入一些一般人用不到的功能,所以可以完全使用 OpenJDK。
下載 OpenJDK
早期 OpenJDK 由 Adoptium 維護發行,不過後來微軟也加入戰局,所以還是建議從微軟的https://learn.microsoft.com/zh-tw/java/openjdk/download 下載。
OpenJDK 11、17、21 三個版本為 LTS(Long Time Support) 版,其它非 LTS 請不要使用。
安裝 OpenJDK 時,需把「設定或重寫 JAVA_HOME 變量」選擇 「安裝在本機」。

測試
測試是否有安裝成功,請進入 DOS 模式,並執行 java -version,若出現如下畫面,表示安裝設定成功。

IDE
IDE 全名為 Integration Development Environment (整合開發環境)。目前常見的有Eclipse、Netbeans、Intellij IDEA 這三種。
Eclipse 在 2016 年就被業界全面下架,建議請趁早換掉。
NetBeans 是 Oracle 為了取代 Eclipse 所開發的IDE,現今交由 Apache 維護開發。此 IDE 的功能及效能遠比Eclipse好很多。
Intellij IDEA 由 JetBrain 開發,功能又比 NetBeans 更為強悍。
NetBeans
安裝 NetBeans
安裝 NetBeans 前需先安裝 OpenJDK,請先依上述方式安裝 OpenJDK。
下載 NetBeans 的網址為 https://netbeans.apache.org/download/index.html
進入網站後請 Download,選取 netbeans-27-bin.zip (SHA-512, PGP ASC) 版本,此版為免安裝版,下載解壓縮執行 netbeans\bin\netbeans.exe 即可開啟 NetBeans.。
另外也可選取 Installers and Packages,下載後進行安裝。
開啟新專案
Java 程式的撰寫或練習,都是以開啟專案開始,請開啟 NetBeans 由 File/New Project進入, 然後選取 Java with Ant/Java Application。

Project Name : 專案的名稱,首字請用大寫, 如 FirstApp。Project Folder : 請在C: 或 D: 新增一個專門存放 Java 程式的目錄。最後請確保Create Main Class有打勾。

Hello world
每種程式語言的第一個教學,都是要學會如何列印 Hello world。如下代碼紅色部份一定要背起來,相關細節會在後續課程中說明。
若要執行程式碼, 直接按F6即可
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package firstapp; /** * * @author mahal */ public class FirstApp { /** * @param args the command line arguments */ public static void main(String[] args) { System.out.println("Hello, World"); } }
中文亂碼
早期 NetBeans 8.0 在列印中文時都正常,但 NetBeans 27 版在列印中文都會出現亂碼,請在 一開始加入 System.setOut 設定輸出格式,如下代碼所示
package first; import java.io.PrintStream; import java.util.Scanner; public class Test { public static void main(String[] args) throws Exception{ //解決中文亂碼問題 System.setOut(new PrintStream(System.out, true, "UTF-8")); System.out.println("Hello,大家好"); Scanner scanner = new Scanner(System.in); scanner.nextLine(); } }
Main Class
如果專案中有多個 .java 檔,而每個 .java 檔都有 public static void main(String[] args),那麼整個專案會從那個 .java 檔進入呢?! 這時必需指定 Main Class。
請由 Run/Set Project Configuration/Customize/Run,然後指定 Main Class。
命令視窗執行程式
在 NetBeans 按 F6 就可以執行程式,執行後會在專案下產生 build 目錄,然後在 build\classes 下產生 .class 檔。若要在 Dos 下執行這個 .class 檔,可以使用如下指成。
cd build\classes
java first.First #注意,不可以加 .class
Jar
jar 是將多個 .class 壓縮並包裝成一個 .jar 檔,並在 manifest 裏指定 Main-Class。這個 .jar 檔可以用 zip 或 winrar 解開。
在 NetBeans 執行 Run/Build Project,就會自動包裝成 jar 檔,置於專案下的 dist 目錄,這個 jar 檔也可在 DOS 下執行。
cd dist
java -jar First.jar #此時要加 .jar
如果想要在桌面上點二下就可以執行,請在桌面新增 First.bat 檔,內容如下
@echo off
java -jar E:\java\First\dist\First.jar
pause
點選 First.bat 二下即可執行。
包裝成 exe 安裝檔
專案完成並編譯成 .jar 檔後,將 .jar 檔付交給使用者執行。使用者的電腦也必需安裝 OpenJdk,而且需在 DOS 命令視窗下執行如下指令。
java -jar C:\First\First.jar
這對沒學過電腦或程式的人,簡直是要了他們的命。
是否能在桌面上顯示一個圖示,讓使用者按二下就可以執行呢?! 答案當然是可以,不過有點麻煩。我們必需把 .jar 包裝成 .exe 安裝檔,安裝後在開始選單及桌面上顯示圖示,讓使用者可以直接按二下執行。
安裝 Wix toolset
包裝成 exe 檔前,需先安裝 WiX toolset。WiX toolset 是負責將 exe 檔包裝成安裝檔,設定存放位置、開始選單、桌面捷徑等工作。請到 https://github.com/wixtoolset/wix3/releases 下載 wix314.exe 檔,安裝後記得把 C:\Program Files (x86)\WiX Toolset v3.14\bin 路徑加到 「系統path」變數。
本站亦備份一份 WiX,請點選如下網址 : wix314.exe。
編譯成 .class 檔
使如下指令將 .java 檔編譯成 .clsss
javac -d build/classes src/first/First.java
包裝成 .jar 檔
在專案目錄下新增 manifest.txt,內容如下
Main-Class: first.First
#這裏需有一行空白行
請注意,上述的最下面必需包含一個空白行,這是 java 規定的。
再使用如下指令包裝成 jar
jar cfm dist/First.jar manifest.txt -C build/classes .
以上建立 jar 檔亦可由 NetBeans 直接執行 Run/Build Project。
建立 runtime image
runtime image 是把執行 jar 時所需的函數庫及相關 JVM 包裝起來,這樣使用者的電腦就不需要安裝 OpenJdk。
請在專案目錄下使執行如下指令建立 runtime image
jlink --module-path "%JAVA_HOME%\jmods;" --add-modules java.base,java.desktop,java.logging --output custom-runtime
包裝成 .exe 安裝檔
在專案目錄下執行 jpackage 指令包裝成 .exe 檔。請注意如果輸出的結果是在命令視窗中,就一定要加 –win-console,如果沒有加上此選項則會出現 Failed to lunch JVM 的錯誤。
jpackage --name First --input .\dist --main-jar First.jar --main-class first.First --runtime-image custom-runtime --win-shortcut --win-menu --win-dir-chooser --win-per-user-install --java-options -Xmx512m --win-console --dest .\output
安裝
最後執行 dist 目錄下的 First-1.0.exe 進行安裝,就可以在桌面的 First 圖示按二下執行。
通用程式
如何自動判斷是在 NetBeans 輸出還是在 DOS 命令視窗執行呢,可以使用如下代碼自動判斷
package net.ddns.mahaljsp;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test {
public static void main(String[] args) {
try {
if (System.console()==null)//NetBeans 輸出
System.setOut(new PrintStream(System.out, true, "UTF-8"));
}
catch (UnsupportedEncodingException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Hello,大家好");
}
}
Intellij IDEA
安裝 Intellij IDEA
如果使用 Intellij IDEA,不需事前安裝 OpenJDK,可以在安裝 Intellij 後,在第一次開啟專案時選擇下載 ms OpenJDK 21的版本。不過為了統一,還是請先安裝 ms OpenJDK 21,然後再安裝 Intellij IDEA。
請由如下網址 https://www.jetbrains.com/idea/download/?section=windows 下載 Community 版本。安裝時請將所有選項都打勾。

開啟新專案
使用 IntelliJ 開啟新專案,請依下圖設定。在 Build system 可以選擇 IntelliJ 或者 Gradle。IntelliJ 比較簡單但後續需手動管理,Gradle 比較複雜但對專案管理非常方便,所以建議使用 Gradle。

開啟 Main.java 即可按右鍵/Run Main.main()。
如果是大型專案,請設定上方的 Current File/Edit Configurations,選擇 Application,然後依下圖設定。重點是選輸入 Name,然後在 -cp 選擇 xxx.main,最後再選擇 xxx.Main

