TIL, WIL

WIL : Week01

KJihun 2023. 6. 17. 16:22
728x90

첫 주차는 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