[toc]
## 前言
你好, 本篇教學先前是為了給高中社課教學使用(2020/2021/2024)。
比較後面/進階的部分寫的不是非常好,因為裡面幾乎只有我自己會的東西,沒學好的自然就不太會寫了,請見諒。
如有任何問題請聯絡:
- mailto:cubing@speedcubing.top
## Introduction

## Java 是什麼?
- ~~一杯咖啡~~一門程式語言
- 簡單(助教表示: 你tm在公三小)(講師:屁!只有打字最難)
- 跨平台
- 垃圾回收機制
- 物件導向
- 程式清晰易懂
### 缺點
- 程式碼字元數跟其他語言相比可能有點多
- Memory Usage較多
- 跟C比起來, 性能開銷是有點多的。
...
### 應用
Android Application
Web Backend
~~Minecraft~~
...
---
## JDK/JRE/JVM
- JDK
Java Development Kit,
包含編譯器、一些編譯工具、Library、JRE
主要目的為開發、把程式碼編譯為bytecode
- JRE
Java Runtime Environment,
Java的執行環境,有了這個就可以執行Java程式。
- JVM
Java Virtual Machine,
執行Java程式的時候, 會建立一個JVM,
把byte code轉成machine code並且執行
在不同的環境執行較方便
---
### 編譯/執行流程
#### .java編譯成.class
.java (Main.java)
--JDK--> bytecode (Main.class)
--JVM--> machine code (runtime)
#### 多個.java(專案)編譯成.jar
src
--JDK--> bytecode(.jar)
--JVM--> machine code (runtime)
---
### 只有Java這個程式語言編譯後能在JVM上運行嗎?
否。
例如Kotlin, Scala, Groovy... 編譯後的bytecode也能在JVM上運行
但這篇主要會講"Java程式語言"。
---
## Installation
### 安裝
(跳過版本介紹)
基本上直接去Oracle/openjdk就有了
<!--
### JAVA_HOME (補充)
Windows內會有一個環境變數叫做JAVA_HOME, 值就是Java在電腦的位置
預設應該在C://Program Files/Java
-->
https://www.oracle.com/java/technologies/downloads/
安裝好後, 看看有沒有java指令能用, 看看版本是對的嗎
```shell
java -version
```
## IDE
**Intellij IDEA** -> ***唯一推薦***, 有Community Edition可以用。
**Eclipse** -> 除非你沒有Intellij IDEA, 我是不喜歡啦。
**NetBeans** -> Why?
**Visual Studio Code** -> 兄弟, 冷靜!
## Editor
既然想用editor開發, 那真的是能用都可以。
底下是我有在用的:
**Notepad++** -> 有政治立場的文字編輯器。
**nano**
**vi**