객체 지향 프로그래밍은 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.
강아지, 고양이, 토끼, 늑대라는 이름을 가진 객체가 각각 있고 이 객체들을 하나로 묶으려고 할 때, 동물이라는 추상적인 객체로 크게 정의하여 묶는 것을 추상화라고 한다.
public
, private
, protected
)를 활용하여 외부로부터의 접근을 제한하고 객체내에서만 접근이 가능하도록 해줍니다. 이를 정보은닉이라고 합니다.오버라이딩
이라고 합니다 이것 또한 다형성이라고 볼 수 있습니다.오버로딩
이라고 합니다. 오버로딩
또한 다형성이라고 볼 수 있습니다.객체 지향 프로그래밍은 하나의 클래스 내부에 같은 이름의 행위를 여러개 정의하거나 상위 클래스의 행위를 하위 클래스에서 재정의하여 사용할 수 있기 때문에 다형성이라는 특징을 갖게 됩니다.
JVM은 Java Virtual Machine, 즉 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다. JVM은 OS와 Java 애플리케이션 사이의 중개자 역할을 한다. JVM은 자바 바이트코드를 실행할 수 있는 환경을 제공해준다. 이를 통해 자바 바이트 코드가 플랫폼에 독립적으로 어디서든 실행될 수 있게 한다. 즉, JVM 덕분에 OS에 상관없이 어디서든 JAVA 애플리케이션을 실행할 수 있게 된다.
프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받는다.
JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.
자바 컴파일러(javac)가 자바 소스코드(. java)를 읽어 들여 자바 바이트코드(. class)로 변환시킨다.
Class Loader를 통해 class파일들을 JVM으로 로딩한다.
로딩된 class파일들은 Execution engine을 통해 해석된다.
해석된 바이트코드는 Runtime Data Areas에 배치되어 실질적인 수행이 이루어지게 된다.
이러한 실행 과정 속에서 JVM은 필요에 따라 Thread Synchronization과 GC 같은 관리 작업을 수행한다.
이번주 WIL 키워드는
객체지향 프로그래밍
과JVM
이였습니다
그래서 두 가지에 대해서 공부를 해보며 정리했는데객체지향 프로그래밍
은 어느정도 이해했지만JVM
은 아직 감이 안잡히는거 같습니다. 한마디로JVM
은Java
라는 언어가 어느 OS에서든 돌아갈 수 있게 만들어주는 가상머신??? 인거같습니다.