본문 바로가기

JAVA27

JVM의 동작 원리와 구조 구체적으로 이해하기 [목차] 1. 가상머신(VM)의 이해 2. JVM의 이해 3. JVM의 동작 원리와 구조(Class Loader, Runtime Data Area, Execution Engine) 위 목차 순서대로 JVM의 전반적인 동작 원리와 구조를 파악해보고자 한다. 1. 가상머신(VM)의 이해 JVM(Java Virtual Machine)이 무엇인지 이해하기 위해서는 당연히 가상머신(VM: Virtual Machine)이 무엇이고 어떻게 동작하는지 이해하고 있어야 한다. 가상머신은 물리적인 컴퓨팅 환경을 소프트웨어로 구현한 것인데, 가상머신은 시스템 가상 머신, 프로세스 가상 머신으로 나눌 수 있다. 시스템 가상 머신 하나의 컴퓨터로 여러 OS를 사용하는 환경을 고립되게 구축할 수 있는데, 이는 OS와 애플리케이션.. 2024. 2. 12.
4. Collections.sort()와 Arrays.sort() 알고리즘 문제를 풀던 중, 한 가지 의문을 해결한 것에 대해 적어 놓으려고 한다. map이라는 클래스를 하나 정의하고 ArrayList 타입의 객체를 생성해서 사용하던 중 Collections.sort()를 사용하려고 했다. Collections.sort() 제네릭 타입에는 map 객체를 넣었는데, 위와 같이 에러가 발생하였다. Integer나 String 등을 넣으면 괜찮은데 왜이럴까? 당연히 String클래스에 equals()를 오버라이딩 한 것과 같은 이유이다. Integer등의 클래스에는 이미 sort()를 사용할 수 있게끔 조건을 만족 시켜 놓았다. 그렇다면 어떤 조건이 있어야 사용이 가능할까? 알아보기 위해서 Collections클래스의 sort()메소드를 살펴 보았다. public static 2023. 1. 17.
3. 예외와 예외처리 에러와 예외 자바에서 에러(Error)와 예외(Exception)은 분명한 차이를 가지는 용어이다. 에러(Error)는 코드로 수정할 수 없는 심각한 오류를 뜻한다. 예외(Exception)는 코드로 수정할 수 있는 미약한 오류를 뜻한다. 즉, 예외는 프로그래머가 코드를 적절하게 작성해주면 방지할 수 있는 영역인 것이다. 예외클래스의 계층구조 예외나 에러와 관련된 최상위 클래스인 Throwable로부터 상속받은 구조이다. Error는 시스템 레벨에서 발생하는 것이다. Exception 클래스들은 외적인 요인으로 인해 발생하는 것들이 대부분이다. (e.g. 파일없음, 프로그래머 실수) 여기서 중요한 점은 RuntimeException인데 해당 예외는 프로그래머의 실수로 발생하는 예외라고 할 수 있다. 그렇.. 2022. 12. 15.
1. 자바 컴파일 과정 예를 들어, C/C++로 작성된 프로그램의 경우 컴파일 환경과 실행 환경이 맞지 않은 경우에는 실행되지 않는 문제가 있었다. 만약 Linux환경에서 컴파일을 해서 나온 실행파일을 윈도우에서 실행 시키면 돌아가지 않는 것이다. - os마다 다른 system call, libraries가 존재하기 때문이다. - cpu제조사마다 각각의 ISA(Instruction Set Architecture)가 존재하기 때문이다. 위와 같은 문제를 해결하기 위해 자바는 OS에 독립적인 특징을 가지게 된다. 바로 JVM(Java Virtual Machine)덕분에 가능하게 되는데, 자바의 컴파일 과정은 아래와 같다. 위 그림을 설명하자면, 우리가 작성한 소스코드(.java)는 컴파일 시, java compiler에 의해 자바.. 2022. 11. 23.