IntelliJ JRE 설정 - IntelliJ JRE seoljeong

1.File-Project Structure (Ctrl + Alt + Shift + S) 클릭

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

2. Platform Settings에서 원하는 java 버전으로 바꾸고 이름도 설정

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

3. Project Settings-Project - Project SDK에서 설정했던 java버전 선택

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

** 자바 버전이 바뀌지 않았을 때 -> 프로젝트에서 .idea를 삭제하고 다시 프로젝트를 열어 설정한다

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

기존에 8버전을 쓰다가 11버전으로 변경해야 하는 프로젝트가 생겨서 기록해보는 "버전변경방법"

인텔리제이에서 6곳을 변경해주면 된다

(5곳 - 버전변경선택 / 1곳 - 원하는 JDK선택)

Project Structure창 (단축키 : SHIFT+CTRL+ALT+S)

 * Project

  1) SDK 변경                                 

  2) Language Level 변경     

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

 * Module

  3) Language Level 변경       

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

 * SDKs

  4) 원하는 JDK를 선택한다(JDK는 한 폴더에 모아두는것을 추천!)

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

Project Setting (단축키 : CTRL+ALT+S)  

 * Build,Execution,Deployment  -> Build Tools -> Gradle 

   5) Gradle JVM 변경   

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

   * Build,Execution,Deployment  -> Compiler -> Java Compiler

   6) Project bytecode version 변경       

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

다시 구글링하는일 없게 이번에는 꼭 알아두겠다(다짐👌)                       

1. JVM, JDK, JRE 란

JVM

운영체제는 자바 프로그램을 바로 실행할 수 없는데, 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이것이 JVM(Java Virtual Machine) 이다. 운영체제별로 프로그램을 실행하고 관리하는 방법이 다르기 때문에, JVM은 운영체제가 달라도 동일한 실행 결과가 나오도록 하는 역할을 한다. JVM은 JDK 또는 JRE를 설치하면 자동으로 설치된다. JVM 은 .java 파일을 이해할 수 없기 때문에 javac 컴파일러를 통해 바이트코드 파일로 (.class) 변환해야 한다.  

👇 .class 파일이 JVM에서 어떤 단계를 거쳐 실행되는지 보여주는 그림

IntelliJ JRE 설정 - IntelliJ JRE seoljeong
JVM Architecture
  • Class Loader
    실행할 클래스를 로딩. 인스턴스를 생성해 메모리에 적재해주는 역할을 한다.
    로딩 후 해당 클래스 관련 정보들을 Method Area에 저장한다. 그리고 class 객체를 만들어 Heap에 저장한다.
  • Method Area
    pre-class structure(클래스명, 부모클래스명, 메소드와 변수 정보 등)을 저장하고 있다.
    Method Area는 JVM 당 하나 뿐인 영역이고, 모든 스레드가 공유하는 자원이다.
  • Heap
    객체가 할당될 때 사용하는 영역.
    힙 영역의 객체를, JVM 스택 영역의 변수나 다른 객체의 필드에서 참조한다.
  • JVM Language Stacks
    지역변수와 partial results 들이 저장되는 영역.
    JVM 스택은 각 thread마다 하나씩 존재하며, thread 가 생성될 때 해당 thread에 대한 private JVM stack이 함께 생성된다.
    메소드를 호출할 때마다 JVM 스택에 Frame 을 추가(push)하고 종료되면 해당 Frame을 제거(pop)한다.
  • PC Registers
    현재 실행되고 있는 JVM 명령의 주소를 갖고 있다.
  • Native Method Stacks
    어플리케이션에서 사용되는 모든 native를 포함하고 있다. native는 java 이외의 언어로 작성된 코드를 말한다.
  • Execution Engine
    클래스 내부의 메서드에 포함된 명령들의 실행을 제어한다.
  • Native Method Interface
    코드 실행 중에 java 코드와 native 코드 간의 interface를 제공한다.
  • Native Method Libraries
    native 코드를 실행하는 데 필요한 파일들을 담고 있다.

JDK, JRE

자바 프로그램을 개발하기 위해서는 Java SE의 구현체를 설치해야 한다. Java SE 구현체에는 JDK와 JRE 두 종류가 있다.

  • JDK(Java Development Kit) : 개발환경과 실행환경을 제공. JVM, 라이브러리 API, 컴파일러 등 개발도구들로 구성
  • JRE(Java Runtime Environment) : 실행환경만 제공. JVM, 라이브러리 API 로 구성. 자바 프로그램을 실행만 한다면 JRE만 설치하면 된다.

2. Java 개발 환경 setting

1. JDK 설치

https://jdk.java.net/archive/

Archived OpenJDK GA Releases

Archived OpenJDK General-Availability Releases This page is an archive of previously released builds of the JDK licensed under the GNU General Public License, version 2, with Classpath Exception. WARNING: These older versions of the JDK are provided to he

jdk.java.net

1) 위 경로에서 알맞은 버전의 JDK 다운받기

2) 압축 풀고

3) 아래 경로로 압축 푼 폴더 이동

sudo mv jdk-11.0.2.jdk /Library/Java/JavaVirtualMachines/

4) 설치 확인

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

2. Intellij 설치

(과정 생략)

3. IntelliJ 에서 single java 파일 실행하기

java로 헬로월드 찍어보자

3-1. Project 생성

New Project -> Project SDK 버전 선택 -> Next

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

프로젝트 이름, 경로 설정 후 -> Finish

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

프로젝트 생성 완료

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

3-2. Package 생성

src 폴더 우클릭 -> New -> Package -> Package 명 입력 후 OK

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

3-3. Java Class 생성

src 폴더 우클릭 -> New -> Java Class -> Class 명 입력 후 Class 더블 클릭

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

클래스 생성 완료

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

클래스 코드 작성

public class MyClass {
    public static void main(String[] args) {
        System.out.println("Hello World!!");
    }
}
  • 자바 실행 프로그램은 반드시 class 블록과 main 메서드 블록으로 구성되어야 한다.
  • 메서드 블록은 단독으로 작성될 수 없고, 항상 class 블록 내부에서 작성되어야 한다.

3-4. 어플리케이션 실행

메뉴 -> Run -> Run 클릭

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

클래스 선택

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

터미널에 Hello World !! 가 출력된 모습

IntelliJ JRE 설정 - IntelliJ JRE seoljeong

4. 여러 개의 Java 버전 관리하기

  • java 8 설치
$ brew install --cask adoptopenjdk8
  • 설치된 JDK 들 확인
$ /usr/libexec/java_home -V
IntelliJ JRE 설정 - IntelliJ JRE seoljeong
  • 기본 JDK 설정
# 1.8 버전으로 변경
$ export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

# 11 버전으로 변경
$ export JAVA_HOME=$(/usr/libexec/java_home -v 11)
  • 변경된 JDK 확인
$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
  • IntelliJ 에서 Java 버전 관리하기

메뉴 -> File -> Project Structure -> Platform Settings -> SDKs

아래처럼 직접 추가해줘도 되고, 위에서 JAVA_HOME 환경변수 바꾼 후 intelliJ 종료 후 재실행하면 자동으로 들어온다.

IntelliJ JRE 설정 - IntelliJ JRE seoljeong
IntelliJ JRE 설정 - IntelliJ JRE seoljeong

💡 Java 8 API document

https://docs.oracle.com/javase/8/docs/api/

Java Platform SE 8

docs.oracle.com


출처

  • 이것이 자바다
  • https://www.studytonight.com/java/component-of-java.php

Understanding JVM, JDK and JRE | Studytonight

Java JVM, JDK and JRE In this tutorial we will cover what Java Virtual Machine is, and what is JRE and JDK. Java virtual Machine(JVM) is a virtual Machine that provides runtime environment to execute java byte code. The JVM doesn't understand Java typo, th

www.studytonight.com

  • https://www.geeksforgeeks.org/jvm-works-jvm-architecture/

How JVM Works - JVM Architecture? - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

IntelliJ JRE 설정 - IntelliJ JRE seoljeong