Java 環境及專案開啟

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 就可以通用於不同的作業系統,而且不需再針對不同的作業系統重新編譯。

java_compile

物件導向

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,若出現如下畫面,表示安裝設定成功。

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。

java_newproject

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

java_newproject2

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *