Language/Java

2. 코드 동작 원리

BlackWhale 2024. 6. 12. 21:49

1. Hello.java 동작 시키기

1) 맥 터미널(iTerm)에서 vsCode 실행시키
- 명령 팔레트 실행 시키기
- path 검색 후 , 셀 명령: PATH에 'code' 명령 설치를 선택
- 터미널에 code . 입력 시 vsCode 실행 됨
- 특정 디렉토리에서(소스 저장할 디렉토리) code Hello.java 입력 시 vsCode 실행과 Hello class의 자바 파일이 생성

public class Hello{
	public staticc void main(String[] args){
    	System.out.println("Hello");
    }
}

- 위와 같은 코드 작성 후 저장

2) 자바 파일 컴파일 하기
- 소스가 저장된 디렉토리에서 javac Hello.java 명령어를 통해 컴파일
- 컴파일이 성공하면 오류 메세지가 없이 Hello.class 파일이 생성
- ls -la 명령어로 파일 확인
- JVM으로 Hello.class를 실행(이때 확장자는 입력하지 않음), java 명령이 JVM을 의미
   -> java Hello
출력 : Hello


2. Hello.java 코드 분석하기

public class Hello{ // 클래스
	public staticc void main(String[] args){ // 메인 메소드
    	System.out.println("Hello");
    }
}

1) class
- public class로 정의된 Hello 클래스
- public class의 클래스 이름과 파일이름은 같아야 함(대문자로 작성): Hello.java
- 클래스는 필드(Field)와 메소드(Method)를 가질 수 있음

2) main 메소드
-  프로그램을 실행시키기 위한 필수 main 메소드
- Java 프로그램이 컴파일되고 실행되려면 위의 메인 메소드가 있어야 함, 프로그램 시작점
- 함수가 아님, 메소드라고 칭해야 함


3. System.out.println("Hello") 분석하기

1) System과 out, println()이란?
- System.out은 System이 가지고 있는 out이라는 의미
- out.println은 out이 가지고 있는 println이라는 의미
- println 뒤에 괄호가 붙는데, 이는 println가 메소드라는 의미
- out은 괄호가 붙지 않는데, 이는 out이 필드라는 의미
- out이 가지고 있는 println메소드의 역할은 괄호 안의 내용을 출력
- 즉, "Hello"가 출력 (이때, 큰따옴표 안의 내용이 출력됨) -> 큰따옴표까지 포함하여 문자열(String)이라고 함
- System은 클래스이고, 클래스는 대문자로 시작


4. 컴파일 하기

1) 컴파일 과정
- 컴파일을 하기 위해 javac라는 프로그램이 필요, 자바 컴파일러(Compiler)
     -> javac Hello.java
- 터미널에서 위의 명령을 입력시 Hello.java라는 파일을 읽어들여 컴파일
- 컴파일 성공 시 Hello.class 파일이 생성, 컴파일 실패 시 오류메시지 출력됨
- Hello.class 파일을 바이트(byte) 파일이라고 말함
- Hello.java는 에디터로 열어보면, 사람이 읽을 수 있는 말로 되어 있지만, Hello.class는 사람이 알아볼 수 없는 말로 되어 있음
※ cat Hello.java 명령어는 Hello.java 파일의 내용이 화면에 출력

2) 기계어와 컴파일
- cpu는 2진수로 구성된 명령어(기계어) 집합 가지고 있음, 기계어로 명령을 내리는 것은 쉽지 않음
- 사람이 이해할 수 있는 코드를 기계가 알아들을 수 있는 형태로 바꾼 후 실행
- C언어의 경우 컴파일을 하게 되면 바로 기계가 알아들을 수 있는 이진수로 된 코드로 바로 바뀜
  -> 문제 : cpu의 종류가 다양하여 서로 호환이 안됨
- 자바는 한 번 만들어진 프로그램이 cpu에 상관없이 여러 컴퓨터에서 실행됨
  -> javac Hello.java 명령어로 소스코드와 기계어 중간 형태의 바이트(byte) 코드가 만들어 짐
  -> JDK을 다운로드 받으면 JVM이 각각의 cpu, 운영체제 별로 존재하여 바이트 코드를 실행함
  ->  JVM이 바이트 코드를 한 줄씩 읽어가면서 실행, 이런 것을 인터프리터(Interpreter) 방식이라 함


레퍼런스

  • 혼공자 - 한빛미디어
  • tcpshcool.com
  • 부부개발단 - 즐거운 자바 강좌

 

'Language > Java' 카테고리의 다른 글

6. 문자타입  (0) 2024.06.12
5. 타입 변환  (0) 2024.06.12
4. 변수와 연산(2)  (0) 2024.06.12
3. 변수와 연산(1)  (0) 2024.06.12
1. Java 란?  (0) 2024.06.11