다운로드 사이트 (오라클)
https://www.oracle.com/kr/java/technologies/javase/jdk11-archive-downloads.html
다운로드 방법 링크
https://crazykim2.tistory.com/478
*cmd로 윈도우 비트 확인하는 방법
cmd > systeminfo
변수이름 (불러올때 이름) :
JAVA_HOME
변수값 (주소값) :
C:\Program Files\Java\jdk-11.0.15\bin
+ 내가 다르게 진행한 점
%JAVA_HOME%뒤에 bin을 찾을수있게 넣어줌.
환경 변수(environment variable)란?
환경 변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.
OS(ex) 윈도우, 리눅스 등)의 환경변수는 시스템의 실행 파일이 놓여 있는 디렉터리의 지정 등
OS 상세서 동작하는 응용소프트웨어가 참조하기 위한 설정이 기록된다.
응용소프트웨어는 시스템콜(system call)이나 OS의 표준 API 등을 통하여 간단히 값을 얻을수록 되어있다. 쉽게 이야기해서
각자 깊숙이 있는 응용프로그램을 쉽게 꺼내쓰기 위해서 미리 변수로 등록해 놓는 것을 말한다.
Java 환경변수 설정이 필요한 이유
윈도우의 경우 [제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정]으로 들어가서
환경변수를 눌러 주면 관련해서 환경변수를 필요에 따라 추가, 수정, 제거를 수행할 수 있다.
운영체제는 하드웨어를 사용할 수 있게 해주는 프로그램이다.
운영체제가 아닌 프로그램(어플리케이션)도 운영체제를 거쳐 결국 하드웨어를 통해 동작하게 되는 것인데, 운영체제가 없으면 하드웨어를 사용할 수 없으니 어플리케이션도 사용이 불가능해지는 것이다.
환경 변수를 설정하는 것은 운영체제가 컴퓨터의 어떤 경로에서든지 파일을 인식하도록 하는 것이다.
즉 자바 환경 변수를 등록하는 것은 컴퓨터의 어떤 경로에서든 운영체제가 자바를 인식하도록 하는 것이다.
근데 환경 변수를 설정할 때 jdk의 bin 디렉토리 경로까지 등록한다. 그 이유는 bin에 실행파일이 있기 때문이다.
어떤 특정 프로그램을 정상적으로 실행시키려면 많은 파일들이 필요할텐데,
그 많은 파일들이 적용된 프로그램을 실행시키는 파일은 한개이다.
자바에서는 그 실행 파일이 bin에 있기 때문에 환경변수를 bin 경로까지 설정하는 것이다.
실행파일은 보통 .exe, .com, .bat 확장자로 끝난다고 한다.
추가적으로, javac 명령어는 .java 파일을 .class 파일로 변환시켜주는 컴파일러이다.
그리고 java 명령어는 컴파일된 .class 파일을 실행하는 명령어이다.
javac Hello.java를 입력하면 Hello.class 파일이 만들어질 것이고,
파일 확장자를 뺀 클래스 이름을 자바 명령어로 입력하면 (java Hello) 클래스 파일이 실행될 것이다.
Viscode에서 Extension Pack for Java를 설치해주어야 한다.
Eclipse Keymap 설치 후 파일에서 ctrl+shift+o 누르면 import 자동생성
아래 글 원본 : https://hyoje420.tistory.com/7
환경변수
환경변수를 건드려야 할 상황이 생긴다면 신중하게 해야한다.
때에 따라서 프로그램의 정상적인 동작을 보장받지 못할 수 있기 때문이다.
그래서 우리가 주로 개발환경을 설정해야할 때 변경하는 환경변수는 Path나 CLASSPATH정도가 되겠다.
환경변수에도 두가지가 존재한다.
사용자 변수 - OS내의 사용자 별로 다르게 설정가능한 환경변수
시스템 변수 - 시스템 전체에 모두 적용되는 환경변수
다른 사용자에게 영향을 미치느냐 미치지 않느냐에 따라서 환경변수를 변경할때도 주의를 기울이도록 해야한다.
시스템 변수는 다른 사용자에게도 영향을 미치기 때문이다.
그렇다면 set명령어를 통하여 어떤 환경변수가 있는지 확인할수있다.
수많은 환경변수가 존재한다. 각각의 역할이 있지만, 이 중 우리가 주목해야할 환경변수는 Path이다.
Path
위의 이미지에서 Path라는 것에 주목해보자.
Path에는 다양한 경로가 문자열로 저장되어 있다. 이 경로들은 어떤 의미를 가지고 있을까?
우리는 GUI환경에서 프로그램을 시작할 때 어떤 특정한 파일들의 바로가기를 통해서
그 파일의 원래 위치에 찾아가지 않아도 접근을 할 수 있다.
CLI환경에서도 마찬가지이다. 콘솔창에서는 프로그램을 실행시킬 때 명령어들을 사용한다.
명령어들도 일종의 프로그램이기 때문에 어딘가에 저장이 되어있을 것이다.
이 프로그램들을 실행시킬 때마다 매번 실재 저장된 위치를 입력하기는 힘들것이다.
그래서 CLI환경에서도 이런 기능을 가능하게 해주는 것이 Path 환경변수이다.
GUI환경에서 바로가기를 설정하는 것과는 살짝 다른 맥락이지만 그래도 목적이 유사하기에 비교를 한다.
먼저 특정 프로그램의 경로를 한번 알아보도록 하자.
어떤 프로그램의 위치를 찾고싶을때 사용하는 명령어는 where이다. ipconfig의 위치를 알아보자.
위의 결과로 볼 수 있듯이 ipconfig.exe는 C:\Windows\System32에 저장되어 있다.
우리가 ipconfig 명령어를 아무 위치에서나 사용할 수 있는 이유는 C:\Windows\System32 경로가 Path 환경변수에 저장되어있기 때문이다.
그래서 우리는 자주쓰는 프로그램의 경로를 Path에 등록시켜두면 그 경로에 존재하는 프로그램을 어떠한 장소에서든 실행시킬 수 있도록 해주는 것이다.
Path 설정
쉽게말하자면 , 자바명령어를 어디서라도(어느 폴더라도) 사용할 수 있게 설정하는 것
우리는 자바 컴파일러나 클래스 파일 로더 등을 아무 위치에서나 사용하고 싶다면
Path에 이 프로그램들이 있는 경로를 지정해줘야 한다는 결론을 얻을 수 있다.
자바의 프로그램들을 사용하기 위해서는 jdk폴더 안에 있는 bin폴더를 Path에 등록시켜주면 된다.
javac를 정상적으로 콘솔창에서 실행시킬 수 있는 것을 볼 수 있다.
이렇게 정상적으로 사용이 가능한데, JAVA_HOME은 굳이 왜 만들어서 Path에 상대주소로 입력해주는 걸까?
JAVA_HOME=C:\Program Files\Java\jdk-10.0.1
이 환경변수에는 jdk의 경로를 지정해준다. 이 경로는 Path에 javac를 사용하고자 할때, %JAVA_HOME%\bin과 같이 상대주소로 사용하게 해준다. 이렇게 설정하면 자바의 경로가 변경되면 Path값 대신 JAVA_HOME을 변경해주면 되고, jdk의 경로가 필요한 모든 곳에서 이 값을 사용할 수 있다. 이는 CLASSPATH 설정값에도 사용되기도 한다. 과거부터 프로그래머들이 통상적으로 이런 이름을 사용했다고 한다.
대표적으로 자바기반으로 서버를 구축할 때 사용되는 WAS인 톰캣(Tomcat)에서 내부적으로 JAVA_HOME 환경변수를 사용하므로, 여러 이유로 jdk의 경로는 필수적으로 잡아줄 필요가 있다.
CLASSPATH=.;C:\Program Files\Java\jdk-10.0.1\lib\tools.jar
JVM은 CLASSPATH의 경로를 확인하여 라이브러리 클래스들의 위치를 참조하게 된다.
그러나 J2JDK 버전부터는 \jre\lib\ext 폴더에 필요한 클래스 라이브러리들을 복사해 놓으면 사용가능하여 특별한 경우가 아니면 설정을 하지 않는다.
java버전관리
1.두가지 버전의 자바를 설치합니다
2.c드라이브에 JAVA폴더 만들어 두어 버전관리를 합니다
편리하게 관리하기 위해 폴더명에 java와 버전정보만 간결히 기입합니다.
3.시스템 환경변수 JAVA_HOME 을 편집합니다. (존재하지 않는다면 새로 생성)
4.원하는 버전을 설정합니다.
변수이름에 JAVA_HOME을 작성, 이용할 버전이 설치된 JAVA폴더의 PATH값을 설정해줍니다.
자바 8을 사용할 경우 C:\java\java8
자바 11을 사용할 경우 C:\java\java11
5.Path설정
Path에 설정한 JAVA_HOME을 추가해주어야 합니다.
시스템 변수리스트에서 Path 을 편집합니다.
맨뒤에 세미콜론
%JAVA_HOME%\bin 을 작성해줍니다.
6.버전을 확인해줍니다.
CMD 창에 java-version 입력 후 설정 확인
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 객체 지향 OOP ! 개념 이해 추가 정리 ☑ (0) | 2022.06.14 |
---|---|
[JAVA] 자바 객체와 클래스 ! 개념 이해 추가 정리 ☑ (0) | 2022.06.13 |
[JAVA] 22-06-13 자바의 시작과 Scanner ☑ (0) | 2022.06.13 |
[JAVA] 22-06-13 자바 변수와 데이터 타입 ☑ (0) | 2022.06.13 |
[JAVA] 22-06-13 자바란? ☑ (0) | 2022.06.13 |