JAVA

[JAVA] 자바는 무엇인가?(자바의 특징)

개발로 먹고 살자 2022. 2. 27. 17:35

자바는 대표적인 객체지향 프로그래밍 언어 중 하나이다.

자바의 창시자는 캐나다의 소프트웨어 개발자인 제임스 아서 고슬링이며

자바의 아버지라고도 불린다.

 

자바의 특징

  • 객체지향언어(OOP)
  • 자동 메모리 관리
  • 운영체제에 독립적
  • 멀티쓰레드 지원
  • 동적 로딩 지원

 

객체지향언어(OOP)

객체지향프로그래밍은 프로그램을 개발하는 기법으로 객체를 만들고

이들을 하나씩 조립, 연결하여 전체 프로그램을 완성하는 것이다.

객체지향 언어의 특징은 추상화, 캡슐화(정보은닉), 상속, 다형성 등이 있다.

 

 

자동 메모리 관리

C, C++ 같은 경우 메모리를 할당하였다면 개발자가 메모리를 직접 제거해주어야 한다.

하지만 JAVA는 JVM이 지속적으로 메모리를 감시하며 더이상 사용하지 않는

메모리를 해제시킨다.

Garbage Collector을 통해 메모리 관리가 자동으로 되기 떄문에 개발자가 신경 쓸 필요가 없다.

 

 

운영체제에 독립적

JAVA는 하드웨어나 운영체제가 아닌 JVM 위에서 돌아가기 때문이다.

별도의 java compiler를 통해 자바 소스 코드를 컴파일한다.

따라서 자바 프로그램은 하드웨어, 운영체제와 무관하게 동작하는 것이다.

 

 

멀티스레드 지원

일반적으로 운영체제에 따라 멀티스레드 구현 방법이 다르다.

C, C++은 운영체제의 도움을 받아 멀티스레드를 구현한다.

하지만 JAVA는 운영체제와 관계없이 스레스 생성 및 제어와 관련된 라이브러리 API를 제공한다.

그로 인해 멀티스레드를 쉽게 구현할 수 있다.

또한 여러 스레드에 대한 스케쥴링을 자바 인터프리터가 담당한다.

 

 

동적 로딩 지원

애플리케이션이 실행될 때 모든 클래스가 로딩되는 것이 아닌 필요한 시점에 클래스를

로딩하여 사용할 수 있다.

동적 로딩은 클래스가 일부 변경되더라도 다시 컴파일하지 않아도 된다는 장점이 있다.

비교적 적은 작업으로 처리할 수 있는 유연성을 제공한다.

그러나 클래스 사용 시 그 때마다 메모리에서 불러오기 때문에 프로그램 실행 속도가

정적 로딩에 비해 느리다. (이 문제를 해결하기 위해 static 키워드를 사용)