본문 바로가기
Tech/Java

Java의 장단점

by mozzi329 2022. 12. 26.
728x90

📌 알림


해당 글은 공부 목적으로 작성한 글입니다.

 

📌 장점

1. 운영체제에 독립적이다.


JVM에서 동작하기 때문에 특정 운영 체제에 종속되지 않는다.

 

2. 객체지향 언어이다.


캡슐화, 상속, 추상화, 다형성 등 객체지향적인 프로그래밍을 위한 여러 지원을 제공한다. 

 

3. 자동으로 메모리 관리를 해준다.


JVM에서 Garbage Collector(가비지 컬렉터)라고 불리는 Demon Thread(데몬 쓰레드)에 의해 GC(Garbage Collection)가 일어나는데, GC로 인해 별도의 메모리 관리가 필요 없으며, 비즈니스 로직에 집중할 수 있다.

가비지 컬렉터의 동작 원리 (+⍺)

 

4. 오픈 소스이다.


정확히 말하면 OpenJDK가 오픈 소스이다. 많은 Java 개발자가 존재하고 생태계가 잘 구축되어 있다. 덕분에 오픈 소스 라이브러리가 풍부하며 잘 활용한다면 짧은 개발시간 내에 안정적인 애플리케이션을 쉽게 구현할 수 있다.

 

5. 멀티쓰레드를 쉽게 구현할 수 있다.


Java는 스레드의 생성 및 제어와 관련된 라이브러리 API를 제공하며, 해당 라이브러리를 통해 운영체제에 관계없이 멀티 스레드를 쉽게 구현할 수 있다.

 

6. 동적 로딩(Dynamic Loading)을 지원한다.


애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성한다. 또한 유지보수 시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일할 필요가 없다.

 

📌 단점

1. 비교적 속도가 느리다.


JVM에 의해 기계어로 번역되고 실행하는 과정을 거치기 때문에 C나 C++과 같은 컴파일 단계에서 만들어지는 완전한 기계어보다는 속도가 느리다.


(+⍺)
최근에는 하드웨어의 성능 향상과 바이트 코드를 기계어로 변환해주는 JIT 컴파일러 같은 기술의 등장으로 JVM의 기능이 향상되어 속도의 격차가 많이 줄어들었다.

 

2. 예외처리가 불편하다.


유독 Java는 다른 언어와는 달리 프로그래머 검사가 필요한 예외가 등장한다면 무조건 프로그래머가 선언을 해줘야 한다.

(그렇지 않으면 컴파일조차 거부한다)

 

3. JVM에서 실행되기 때문에 더 많은 메모리를 소비한다.


JVM를 거쳐 컴파일되기 때문에 실행 시 더 많은 메모리를 소비한다.

 

4. 코드가 다른 언어에 비해 길고 장황해 가독성이 떨어질 수 있다.


다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편이다.

 

📌 모의 면접


먼저 Java의 장점으로는

운영체제가 아닌 JVM에서 동작하기 때문에 운영체제에 독립적이라는 장점이 있고, 캡슐화, 상속, 추상화, 다형성 등을 지원하여 객체 지향 프로그래밍 언어에 적합합니다. 그리고 Java의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문에 메모리 관리가 용이합니다. 마지막으로 동적 로딩을 지원하여 각 객체가 필요한 시점에 클래스를 동적 로딩하기 때문에 전체 애플리케이션을 다시 컴파일할 필요가 없어 유지보수에 용이합니다.

단점으로는
JVM에 의해 기계어로 번역되고 실행하는 과정을 거치기 때문에 C나 C++과 같은 컴파일 단계에서 만들어지는 완전한 기계어보다는 속도가 느리고 메모리도 많이 소모된다는 단점이 있습니다. 또한 다른 언어에 비해 작성해야하는 코드의 길이가 긴 편이며, 예외 처리 또한 필요한 예외가 있다면 프로그래머가 일일히 선언해줘야한다는 단점이 있습니다.

댓글