Backend/개발일기

내 주력 언어의 특징 그리고 그 중 내가 가장 좋아하는 특징

suesoo 2024. 4. 26. 01:53

내 주력 언어의 특징 그리고 그중 내가 가장 좋아하는 특징

내 주력 언어 '자바'의 특징

 

1. 객체 지향 언어(OOP, Object Oriented Programming)

 

자바의 특징으로 가장 먼저 생각나는 특징인 객체 지향적이라는 것이다. 

모든 기능을 객체로 만들어 사용하고 만들어진 객체들을 조합하여 하나의 프로그램으로 만든다.

자바는 숫자나 논리값을 제외하면 거의 객체로 구성되어 있고 Object 클래스에서 모든 클래스를 파생한다. 

설계단계부터 객체를 고려하기 때문에 캡슐화, 상속, 추상화, 다형성이 잘 적용된다.

자바의 이런 객체 지향적 특성은 코드의 재사용성, 생산성이 향상된다.

 

2. 하이브리드 언어

자바는 컴파일 언어인 동시에 인터프리터 언어인 혼합한 형태의 하이브리드 언어이다.

텍스트 소스를 컴파일하여 클래스파일로 만들고 자바 런타임이 클래스 파일을 인터프리트 하며 실행한다.

처음엔 인터프리터 언어로 사용되다가 성능 향상을 위해 컴파일 언어의 장점을 가져와 하이브리드 언어가 되었다고 한다!

컴파일 언어 = 전체 / 인터프리터 한 줄

 

3. 독립적인 플랫폼

자바의 실행 파일은 클래스이므로 JRE(Java Runtime Environmnet: JVM + 표준 클래스 라이브러리)가 설치된

시스템에서는 어떤 운영체제에서 작성된 자바 파일이라도 동일한 실행이 가능하다.

JVM이 해당 플랫폼마다 제공되며 알맞은 기계어로 변환되어 플랫폼에 종속받지 않을 수 있다.

"Write Once, Run Anywhere"로 자바를 표현한다.

 

4. 자동 메모리 관리

자바 이전에 메모리에 생성된 객체를 직접 개발자가 제거해야 했지만 자바는 메모리를 Garbage Collector롤 직접 관리한다.

객체를 생성할 때 자동으로 메모리 영역을 찾아 할당하고, 메모리 사용이 끝나면 Garbage Collector를 통해 사용하지 않는 객체를 제거한다. 개발자가 메모리 관리에 신경 쓰지 않고 코드 작업에 더욱 신경 쓸 수 있는 장점이 있지만 직접 관리하는 것에 비해 비효율적일 수도 있다.

 

5. 멀티 스레드 지원

프로그램이 동시에 여러 작업을 처리하거나 대용량 작업을 빠르게 처리하기 위해 동시다발적으로 병렬 처리를 해주는

멀티 스레드 프로그래밍이 필요하다. 자바는 이러한 멀티 스레드 프로그래밍을 지원하며 스레드 생성 및 제어와 관련된 라이브러리를

제공하기 때문에 실행되는 운영체제와 상관없이 쉽게 멀티 스레드를 구현 가능하고 멀티 CPU 시스템에서 효율이 높다.

 

6. 동적 로딩

자바 애플리케이션이 실행될 때 모든 객체가 실행되지 않고, 해당 객체가 필요한 시점에 클래스를 동적 로딩해 객체를 생성한다.

일부 클래스가 변경돼도 전체를 컴파일하지 않고 적은 작업으로 처리할 수 있다.

 

7. 오픈소스 라이브러리

자바는 사용하는 검증된 라이브러리와 오픈소스가 많다.

이를 이용하여 개발 기간을 단축하고 안정성이 높은 애플리케이션을 쉽게 개발할 수 있다.

 

 

내가 가장 좋아하는 '자바' 특징

처음 자바를 배우며 객체지향을 접했을 때는 이해하기도 힘들고 어려운 개념 중에 하나였지만

프로젝트를 진행할수록 객체지향을 이해하고 활용하면서 자바를 사용하게 된 것 같다.

 

내가 가장 좋아하는 자바의 특징은 객체지향의 4대 특성 중 하나인 캡슐화, 상속, 추상화, 다형성 중 추상화이다!

 

추상화는 코드를 유연하고 재사용이 가능하게 해주는 특성 중 하나이며,

객체에서 공통된 속성과 행위를 추출하고 불필요한 중복을 제거하는 과정이다.

 

자바에서 추상화를 구현할 수 있는 문법은 추상 클래스와 인터페이스가 있는데 객체 지향적 설계에 있어서 인터페이스는

객체의 역할만을 정의하여 객체들 간의 관계를 유연하게 연결해 주고 어떤 객체가 수행해야 하는 핵심적인 역할을 규정하고

실제적인 구현은 해당 인터페이스의 구현 객체에서 프로그램을 설계한다. 

 

이러한 점은 애플리케이션을 개발하면서 코드 중복을 최소화하고 유지보수성, 유연성과 확장성을 높아지게 해 주고 코드를 단순하게 만들어 줘 이해하기 쉽고 간결한 코드가 되어 협업할 때도 장점을 많이 느꼈다!

프로젝트를 진행할 때 추상화를 고려하면서 설계하고 코드를 진행하는 것이 당연해졌고 편리함을 느껴 객체지향적 특성 중에 가장 좋다고 느낀 것 같다!

 

 

 

'Backend > 개발일기' 카테고리의 다른 글

나는 왜 개발자가 되고 싶을까  (0) 2024.04.24
수료!  (0) 2023.04.10
DAY 117  (0) 2023.04.07
DAY 116  (0) 2023.04.06
DAY 115  (0) 2023.04.05