220920 정리

서이·2022년 9월 20일

수업정리

목록 보기
1/17

STS 3.9.11 설치
설치후 환경설정

Window > Preferences > General > Workspace
Window > Preferences > Web > HTML, CSS, JSP Files


 자바 소스코드(.java) -> 자바 컴파일러(javac) -> 자바 바이트코드(.class)

 컴파일러가 자바소스코드를 읽어들여 자바 바이트 코드로 변환(Class Loader를 통해 class 파일들을 JVM으로 로딩한다, JVM만 있으면 바이트코드(.class)가 실행됨)

		    윈도우 자바 가상머신 → 윈도우에서 실행

바이트코드 <

        	리눅스 자바 가상머신 → 리눅스에서 실행
            

 처음 자바는 파일이름.java로 저장이 되고 자바 컴파일러인 javac에 의해 파일이름.class 바이트 코드로 변환이 되는데 이 바이트 코드 상태에서는 자바가상머신이 있는 어느 플랫폼에서나 실행이 가능하게 되는 것이다.

 .class의 바이너리 코드가 생성된 다음 인터프리터(해석기)가 있는 자바가상머신에서 실행되기 때문에 느리다는 단점은 있지만 다른 플랫폼에서 수정없이 알아서 실행해준다.


 자바는 플랫폼에 독립적으로(이식성이 좋다) 설계되어 기존 프로그래밍 언어가 가지는 플랫폼 종속성을 가지지 않는다.

 자바는 자바 가상 기계 (JVM)만 있으면 OS나 H/W 상관없이 언제나 어디서든 동일한 실행 결과를 기대할 수 있다.


 Q.  자바는 어떻게 플랫폼 독립성을 보장 할 수 있는가?

  자바 플랫폼 독립성을 가능하게 하는 것은 자바 가상기계와 바이트 코드 때문이다. Hello.java 소스를 컴파일 하여 Hello.class 파일을 만드는 과정을 보면 , 바이트 코드는 자바 가상 기계에서만 실행되는 기계어로 어떤 CPU와도 관계없는 바이너리코드(바이너리 코드는 컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드를 의미한다)이다.

 자바 컴파일러는 자바 소스 프로그램을 컴파일하여 바이트 코드로 된 클래스 파일을 생성한다. 이 클래스 파일은 어떤 운영체제를 탑재하든 CPU의 종류가 무엇인든 간에 JVM만 있으면 바로 실행이 가능하다. JDK는 자바 클래스 파일을 디어셈블 하여 바이트 구조를 볼 수 있는 도구를 제공한다.


 Q. 자바 가상기계(JVM) 에 대해서 설명?

 JVM 은 자바 가상기계로 소프트웨어다. 서로 다른 플랫폼에서 자바 프로그램이 실행되는 동일한 환경을 제공한다.

 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체(CPU, OS 종류와 무관하게 실행가능)
즉 OS위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 OS가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 함

  Q.  JDK와 JRE의 차이에 대해서 설명?

 JDK는 Java Development kit로 자바 개발자에게 무료로 배포하는 소프트웨어이고 자바 컴파일러 등의 개발 도구와 JRE(Java Runtime Enviroment) 로 구성 되어 있습니다. JRE는 자바 응용프로그램이 실행될 때 필요한 소프트웨어들로 개발자가 아닌 일반 사용자의 경우 JRE만 필요합니다. JDK가 사용자 디렉터리에 설치되면 bin 디렉토리에 주요한 개발 소프트웨어가 들어 있다.
(JVM : 자바 가상머신으로 프로그램이 실행되는 환경인 JRE가 설치되어 있어야함)



환경변수

  • 시스템 부팅 시, OS가 환경변수 편집을 읽어들인다.
  • 환경변수에 설정되어 있는 경로 → bin 폴더 → javac.exe가 실행된다.
  • cmd에 java --version 을 하게 되면 java.exe가 실행된다.
  • 환경변수 등록 목적은 언제 어디서든 실행시켜주기 위해서이다.

변수 선언
메모리 할당을 의미


변수 선언 후의 메모리

int num;
num = 256;

메모리에 주소가 존재
메모리 관리 주체 : OS
JVM : OS에 메모리 요청하는 역할

컴퓨터에서 실수에 오차가 생기는 이유

double num = 0.1;

for(int i = 0; i < 1000; i++) {
	num += 0.1;
}
		
System.out.println(num);

해당 코드를 실행시켰을 때, 100.09999999999859 해당 결과가 나온다. 이러한 오차가 나는 이유는 실수를 이진수로 표현해서 나오는 오차이다.

profile
작성자 개인이 잊을 때마다 보라고 정리한 글

0개의 댓글