2Java 프로그램의 실행구조

-1강은 자바의 전체적인 개요에 대해 설명

-2강은 실행구조에 대해 살펴본다.

 

2-1 환경변수 설정

1.환경변수란

JDK, JRE 환경변수를 설정하는 이유

-코딩을 한 것들이 java.exejavac.exe 경로 안에 있어야 코드작성한것들이 실행된다.

그래서 일일이 설정을 하지 않고, 어떠한 javac.exe, java.exe를 다른 디렉토리에서도 실행 할 수 있도록 하기 위해

환경변(Path)bin 경로를 세팅/등록 한다.

 

JDK->bin에 하기 파일들이 있다.

java.exe

-> 컴파일 되어서 클래스파일이 나오고 자바프로그래밍을 구동 시켜주는 JVM구동 명령

javac.exe

-> 컴파일러로 이용 되는 파일

 

 

환경변수(Path) bin 경로를 세팅/등록 하기위해 해야할 것들

a. JAVA_HOME 환경변수 추가

자바가 어디에 설치되어 있는지 시스템변수에 생성

내컴퓨터->속성->시스템속성->환경변수->변수생성 및 편집(java가 있는폴더까지 경로설정)

 

세팅1

 

b. Path환경변수에 JDK bin 디렉토리 추가

*자바가 어디에 있는지 알고 있는 상태에서 추가할 것

 

세팅2

 

*자바가 제대로 설치 되었고 환경변수가 잘 설정 되었는지 확인 하는 방법

window + r 로 실행파일을 실행시키고 cmd를 입력하여

command 창에서 java -version을 입력하면

하기와 같이 확인 할 수 있다.

 

 

2-2 Java 컴파일러와 JVM

java 소스 작성부터 프로그램 실행까지의 순서/원리

1. java 소스 (개발자가 공수하는 파트)
xxxxx.java 파일 -사람이 이해할 수 있는 소스코드/파일
(자바문법에 맞게 만들어진 소스코드. 기계는 이해할 수 없음.
그래서 기계가 저 확장자 파일을 이해할 수 있도록 전환해야 함->compile)

2. java compiler으로 바이트 코드 파일을 만듬
(javac.exe : 확장자 파일을 이해할 수 있도록 하는 실행)
이클립스에서는 소스코드 작성후 저장버튼을 누르면 자동으로 .class라는 확장자라는 파일이 만들어진다. 그것이 밑에 java application.class(자바의 기술을 응용해서 만든 application)

3. 바이트 코드 파일(xxxx.java에서 xxxxx.class로 바뀐다.)
(xxxxx.class : 소스코드 작성후 저장버튼을 누르면 자동으로 javac.exe가 컴파일해주면서 만들어진다)

4. java.exe : JVM 구동
(java application class파일을 java virtula machine이 읽어서 적혀 있는대로 컴퓨터를 동작시킨다)

5. 기계어로 바뀌어서 실제로 컴퓨터에서 실행(기계어로 바뀐 것이 컴퓨터에서 실행)
*기계에서 실행이 되었다라는 것을 LINK되었다라고 표현한다.
LINK 될 때(PC에서 하는 일)
-메모리로딩/실행준비/실행결정/초기화 => 실행

 

 

2-3 Java 프로그램 실행

a.자바소스코드 작성 단계까지 수작업

public class Mainclass {

public static void main(String[] args){

#jvm이 작동될 때 제일 먼저 찾는 main method

System.out.println("Hello Java World!!");

}

}

 

b.compile해주기 위한 수동작업(javac.exe가 클래스파일을 만들어줌)

c.파일출력

*환경변수 편집을 통해

javac.exe, java.exe를 다른 디렉토리에서도 실행 할 수 있도록 하기 위해

환경변(Path)bin 경로를 세팅/등록을 해주어야 함.

 

=>이 수작업을 이클립스틀 통해서 모두 자동으로 가능하다.

 

 

2-4 이클립스 사용의 정점

컴파일, 디버깅 그리고 실행까지 쉽게 할 수 있다.

 

2-5 가비지 컬렉터

c계열 프로그램

-개발자가 직접 메모리를 관리해야 하고

메모리를 잘못 관리하면 메모리 누수가 발생하고 타프로그램 동작이 멈출 수 있음.

 

java프로그램

-개발자가 메모리에 접근할 수 없고

가비지 콜렉터가 불필요한 메모리를 회수해서 메모리를 최적화함.

 

*나같은 경우에는 잘 빠뜨리는 느낌이라 메모리누수가 발생할 것 같은 느낌이어서

 c계열 프로그램이 안맞을 수도 있을 것 같다..

'신입개발자로 취업하기까지 > JAVA' 카테고리의 다른 글

20200304 4-3강 형 변환  (0) 2020.06.14
20200304 4-2강 Java기본자료형  (0) 2020.06.14
20200304 4강 기본자료형  (0) 2020.06.13
20200304 3강 변수  (0) 2020.06.13
20200303 1강-자바프로그래밍이란  (0) 2020.06.08

+ Recent posts