---
# System prepended metadata

title: Introduction/Installation
tags: [Java]

---

[toc]

## 前言
你好, 本篇教學先前是為了給高中社課教學使用(2020/2021/2024)。

比較後面/進階的部分寫的不是非常好，因為裡面幾乎只有我自己會的東西，沒學好的自然就不太會寫了，請見諒。

如有任何問題請聯絡:
- mailto:cubing@speedcubing.top

## Introduction
![1000003787](https://hackmd.io/_uploads/ByVqrf42a.png)

## 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**