# Java是什麼呢?要用甚麼IDE好呢?
講師:楊恭佑 老師
***
- 環境設定
- 這門課選用jdk11進行開發
- 關於JDK內的javapath資料夾...
- 由於8/11/16路徑一樣,所以如果沒有指定,會被新裝的版本覆蓋
- 開發者的版本應該盡量等於業主
- 原因是用太新的JDK,如果不小心寫到新功能,會讓業主的電腦當機或功能異常等
## 新增環境變數(以下請小心操作⚠)
- 編輯Path新增自訂內容
- 如果是所有使用者都要能夠開發Java,可以同我一樣選下方的Path進行新增

- Path的解釋
- 電腦所有的啟動路徑
- 補充:電腦資料夾路徑中常見的名詞解釋
- x86:32bit
- amd64或無:64bit
- 回正題:**自己指定版本的方法**
- 在Path中新增`%JAVA_HOME%\bin`並移到最上方
- 解釋:`%內容%`=前面不管任何路徑
- 然後要進行呼叫
- ==再新增一個環境變數==
- 名稱為JAVA_HOME
- 資料夾就選所要使用版本的JDK所在位置
- 設置完功用等同於新增了一個`特定版本路徑/bin資料夾`
- 安全起見才用這個方法,避免砍錯Path的其他路徑
- 來用CMD檢查JDK版本
- `javac -version`檢查編譯器版本
- `java -version`檢查運行板本
- 備註:LTS是長久維護版的意思(正式版)
***
- 程式工作的內容
- 開發
- 維護
***
- JDK的構造與機制:
- lib
- 記憶體控制
- Stack
- 實體記憶體
- C語言也是使用這塊
- 變數來自這裡就叫全域變數
- heap
- Java則是使用這塊
- 是由真實的記憶體Stack切出
- 以Windows這個作業系統而言佔了4G(2.5G為固定部分,剩餘部份供彈性運行)
- JDK則是扣除Stack中作業系統所佔比例,再按百分比進行分割
- VM虛擬機器
- 有這個構造是因為Java是在虛擬機中運行的
- 醜醜的圖例XDrz|||

***
## IDE的選擇
- 業界寫Java大多使用**Eclipse**
- 免費的
- 安裝時應選包含Java Web的選項
- 安裝好後打開可以指定一個作業區資料夾
- IDEA
- 要錢 還很貴
- Netbeans跟VS Code
- 業界比較少人用
- VS Code要裝Java擴充包才方便使用;VS Code寫Web倒是好用
- 補充,程式開發輔助工具:StarUML
- UML統一塑模語言
- 一種軟體的開發流程
- 一些讓eclipse更易用的設定
- 確認是否為UTF-8

- 預設字號為9px,似乎太小了,到這裡改大它

點Basic中最下方Text Font
***
- Java程式語言的結構
除了VM跟Tool以外都是Lib
## Eclipse
- 開新專案
- `內`為課堂指定資料夾名/檔名
- 對著src右鍵按class新增class
- package:`com.xxx.demo`
- demo位置表功能
- 一般網址中確實也呈現了網站的功能
- www:常見的網站
- flie:檔案功能
- 反寫是資料結構考量
- 注意,要全部小寫
- 名稱:`Demo01`
- 勾起"public static..."
- 其實寫到後期不會一直用main method
- 真正的開發不會這樣使用
- 補充軟體的國際化處理
- 分package
- 分語言包
- 撰寫區
- 提示
- 紅線表錯誤
- 黃線表警告
## Java的基本結構
- 註解寫法
- `//`單行:方法內跟外都行,說明功能
- 多行:main上方可以寫,裏面也可以寫,package上方也可以
```java=
/*
*
*/
```
- 文檔註解給修改人員看
```java=
/**
*
*
*class類別外
*method方法外
*/
```
- Javadoc
可以做出說明書網站的功能
- 註解的意義
- 好讀
- 交接
- 名聲
## Eclipse開發Java的好用快捷功能
- 輸入`Syso` 然後鍵盤再`alt+/`
- 會叫出等同C語言print的式子
- Ctrl+shift+f自動排版
- alt+/ todo,TODO這個功能可以儲存未完成的程式跟點子
- 找到這個設定,做一個有版權聲明跟作者資訊的範本吧

```java=
/*
* Copyright (c) 2020, 2022, 公司名稱 and/or its affiliates. All rights reserved.
*
*
*/
${filecomment}
${package_declaration}
/**
*
*
* <br>
* author: 作者名稱<br>
* @since 11.0<br>
*${todo}:<br>
*/
${typecomment}
${type_declaration}
```
- 所有東西若要改名都按用右鍵Refactor→Rename最保險
- `Ctrl+F11`可以快速編譯
- 輸出javadoc前要加上`-encoding UTF-8 -charset UTF-8`才不會亂碼
- 原始工作區配置

- 雖然在不同資料夾,但class的名字最好不要重複