첫 주차는 JVM과 객체지향이란 어떤 것인지에 대해 공부할 수 있었다.
코드가 어떻게 동작하는지에 대해 더 구체적으로 알 수 있었고,
자바가 왜 객체지향언어라고 불리며 객체지향이란 무엇인지, 흥미롭고 많은 걸 배울 수 있는 시간이었다.
JVM
JVM은 운영체제 위에서 동작하며 운영체제와 하드웨어 간 인터페이스를 제공하는 역할을 한다.
쉽게 말해, Mac이나 Window 등 다양한 운영체제에서 Java를 실행 가능한 환경(가상환경)을 만들어 준다.
또 JVM은 가비지 컬렉션(GC; Garbage Collection)을 통해 자동으로 메모리를 관리해 주기에 매우 효율적이다.
1. 개발자가 작성한 코드가. java 파일로 저장된다
2. 자바 컴파일러가 개발자가 작성한 소스코드(.java)를 바이트코드(.class)로 변환한다.
- 자바 바이트 코드 : JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드
3. 클래스 로더가 바이트 코드(.class)를 불러와서 JVM의 메모리 영역에 저장한다
4. 프로그램 실행을 위해 바이트코드를 인터프리터와 JIT 컴파일러로 전송한다
- 인터프리터 : OS가 읽은 바이트코드를 기계가 실행할 수 있는 기계어로 번역해 주는 변환기
- JIT(Just In Time) : 인터프리터와 함께 쓰이며, 인터프리터의 효율을 높여 기계어로의 빠른 변환을 도움
5. Runtime : 프로그램이 실행 중인 상태이며 HW와 OS가 연결된 상태이다.
- 많은 기능이 존재하며, 힙 영역에서 GC가 일어난다.
객체지향 언어란
자바는 객체지향 언어로써, 절차지향 언어(C언어...)와 큰 차이를 보인다.
절차지향 언어는 데이터를 처리하는 절차를 중심으로 프로그램을 작성하는 반면,
객체지향 언어는 객체를 모델링하고 생성하여 객체들 간 상호작용을 이용하는 언어이다.
객체의 설계도인 클래스, 상위 클래스의 기능을 사용할 수 있게 하는 상속, 동일한 이름을 다른 자료형으로 사용할 수 있게 해주는 다형성, 보안을 위해 외부와의 직접 접근을 통제하는 캡슐화 등 많은 특징을 가지고 있다.
이 밖에도 유지보수성, 재사용성, 확장성, 테스트 용이성 등 다양한 측면에서 이점을 제공하는
객체지향 설계(OOD)의 원칙인 SOLID원칙에 대해서도 자세히 알 수 있게 되었다.
객체지향 설계의 원칙(SOLID) : 유지보수성, 재사용성, 확장성, 테스트 용이성 등 다양한 측면에서 이점을 제공
- Single Responsibility Principle (SRP): 객체는 단 하나의 책임만 가져야 한다
- Open-Closed Principle (OCP) : 코드를 변경하지 않고 기능을 추가할 수 있도록 설계(캡슐화)
- Liskov Substitution Principle (LSP) : 자식클래스는 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다
- Interface Segregation Principle (ISP) : 사용하지 않는 인터페이스의 영향을 받지 않아야 한다
- Dependency Inversion Principle (DIP) : 추상성이 높은 클래스와 의존관계를 맺어야 한다
회고
앞으로 클래스 작성 시 SOLID원칙을 준수할 수 있도록 신경 쓸 것이며,
필요하지 않은 static 사용을 줄여 GC를 최대한 활용할 수 있도록 신경을 써 가면서 작업을 해야겠다.
'TIL, WIL' 카테고리의 다른 글
[WIL] week 5 (0) | 2023.07.16 |
---|---|
[WIL] Week 4 (0) | 2023.07.08 |
[WIL] Week 3 (0) | 2023.07.02 |
좋은 개발자란? 좋은 개발자가 되기 위해서 해야할 것 (0) | 2023.06.30 |
WIL : Week02 (0) | 2023.06.24 |