본문 바로가기

코딩일기/Java16

[Java] 추상화와 다형성의 의미 그리고 둘의 차이점 Java에서 추상화와 다형성은 객체지향 프로그래밍에서의 가장 중요한 개념이다. 그래서 이 둘의 개념에 대해서 정확히 알면 나중에 코딩할때와 면접볼때 엄청나게 중요한 역할을 할것이다. 그럼 이제 알아보도록 하자. 추상화란? 추상화는 공통적인것들을 하나로 모아두는것이다. 예를 들어서 설명을 쉽게 하겠다. 고양이 과 동물은 여러 동물이 있다. 사자, 호랑이, 표범, 고양이 등등 이들 모두 다른 동물이지만 고양이과라는 공통적인 특징이 있다. 그래서 고양이과 동물들이 가지는 특징적인 행동들을 조금씩 다른방식이지만 모두 한다. ex) 박스를 좋아한다. 이처럼 프로그래밍에서도 공통되는 특징을 가진 클래스들을 하나로 모아 추상화 하는것이다. 그리고 그 모은것들을 추상클래스 혹은 인터페이스를 통해 만들면 같은 특징을 가.. 2022. 10. 21.
[Java] JVM 구조 및 작동 원리 JVM은 ByteCode를 읽어 들여와서 이해한후 컴퓨터 실행하는 역할을 한다. JVM은 단순하게 JVM으로 구성된것이 아니라 안에 여러 개념들이 합쳐져 있는 상황에서 ByteCode를 읽어들이고 그에 맞는 실행을 하게 된다. 그럼 이제 JVM에 대해 자세히 알아보자. JVM의 구조는 크게 아래와 같다. 위사진을 토대로 자세히 살펴보자. JVM은 읽어 들인 ByteCode를 ClassLoader가 받아온다. ClassLoader에서는 읽어들인 ByteCode에서 사용하는 Class에 대한 메모리들을 생성하고 ByteCode를 Runtime Data Area 적절한 장소에 배치 시킨다. (Class Loader에 대해서 자세히 알고싶다면 아래 링크를 통해 확인해보면 된다.) https://wpioneer... 2022. 10. 14.
[Java] ClassLoader 구조 및 동작 원리 이전에 JVM에 대해서 자세히 설명한적이 있다 거기서 ClassLoader라는 개념이 나오는데 이번에는 ClassLoader에 대한 자세한 설명을 하려고 한다. Class Loader Class Loader는 ByteCode를 읽어서 Class 객체를 생성하는 역할을 한다. Class Loader의 특징은 크게 5가지이다. 1. 계층구조 2. 위임모델 3. 가시성 제한 4. 언로드 불가 5. 이름 공간(Name Space) 이제 이 5가지에 대해서 자세히 알아보자. 1. 계층구조 Class Loader 는 단순하게 클래스 로더 하나로만 이루어져있지 않다. 아래 사진과 같이 계층 구조로 Class Loader 가 이루어져 있다. 각각 계층에 대해서 자세히 알아보자 Bootstrap Class Loader .. 2022. 10. 14.
[Java] Java 동작 원리 여태 자바를 그냥 코드를 짜기만 해봤지 그 안에 자세한 동작에 대해서는 깊게 공부해본적이 없다. 그래서 이번에는 Java가 어떻게 동작해서 컴퓨터 내에서 돌아갈수 있는지에 대해서 알아보려고 한다. 기계는 우리 사람이 하는 언어를 알아들을수가 없다. 그래서 우리는 기계가 사람이 하는 언어를 알아들을수 있게 하기 위해 코딩이라는것을 한다. ex) System.out.println("Hello World"); 하지만 우리가 저렇게 소스코드를 입력을 한다고 컴퓨터가 명령어들을 직접 이해하는것이 아니다. 따라서 우리는 컴퓨터 즉 기계가 알아들을수 있도록 2진수와 같이 컴퓨터가 아는 Byte로 번역을 해줘야 한다. 그 번역하는 과정을 컴파일 이라고 한다. 따라서 아래와 같은 과정을 겪게된다. 그럼 이제 우리가 짠 .. 2022. 10. 13.