Programming Language/Java

[Java] Java의 특징

LeeJaeJun 2023. 12. 30. 23:40
728x90
반응형

1. 운영체제에 독립적

 - 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM(Java Virtual Machine)하고만 통신하기 때문이다.

- JVM이 자바 응용프로그램으로 부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달함.

- JVM은 운영체제에 종속적임.

(+) JVM의 2가지 기본 기능은

     1) 자바 프로그램이 운영체제에 독립적이게 하는 것(Write once, run anywhere)

     2) 프로그램 메모리를 관리하고 최적화 하는 것(Garbage Collection 프로세스를 통해 메모리 관리)

 

2. 객체지향언어(Object-oriented programming laguage)

 - 다음과 같은 특징을 가짐.

   1) 캡슐화 : 변수와 함수를 하나의 단위로 묶는 것

       (+) 정보 은닉, 모듈 간 결합도 하락으로 인한 유연함과 유지보수성 상승 등 장점

       (+) 자바에서는 이러한 데이터 번들링이 class를 통해 구현됨

   2) 상속: 상위 클래스의 멤버를 하위 클래스가 이어받을 수 있음

   3) 다형성: 한 객체가 다른 여러 상태와 행위로 재구성될 수 있음

       ex) 오버라이딩(overriding): 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재구성해서 사용하는 기술

             오버로딩(overloading): 매개변수의 유형과 개수를 다르게해 같은 이름의 메서드를 여러 개 가질 수 있게하는 기술

 

3. 자동 메모리 관리 (Garbage Collection)

 - 실행 중인 JVM 내부에서 일어나며 자바 프로그램에서 사용되지 않는 메모리를 지속적으로 찾아내서 제거

 - 자동으로 메모리를 관리하기에 다소 비효율적인 면이 있을 수도 있지만, 메모리를 체크하고 반환하는 일을 자동으로 해주기에 프로그래머가 프로그래밍에 집중 할 수 있음

 

4. 네트워크와 분산처리 지원

 - 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발 할 수 있도록 지원

 

5. 멀티쓰레드(Multi-thread) 지원

 - 자바에서 개발되는 멀티쓰레드 프로그램은 시스템과 관계없이 구현가능하며, 관련된 라이브러리(Java API)가 제공되므로 제공이 쉬움

- 자바 인터프리터가 여러 쓰레드에 대한 스케줄링(scheduling)을 담당

  (+) 멀티쓰레드: 하나의 프로세스 내에서 둘 이상의 쓰레드가 동시에 작업을 수행하는 것

        cf)일반적으로 하나의 프로세스는 하나의 쓰레드를 가지고 작업을 수행함

        - 각 쓰레드가 자신의 속한 프로세스의 메모리를 공유하므로 시스템 자원의 낭비가 적음

        - 하나의 쓰레드가 작업할 때 다른 쓰레드가 별도의 작업을 할 수 있어 사용자와의 응답성도 좋아짐

 

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

 - 동적 로딩: 프로세스가 시작될 때, 그 프로세스의 주소 공간 전체를 메모리에 올려놓는 것이 아니라 필요한 루틴이 호출되는 시점에 해당 루틴을 메모리에 적재하는 방식

- 자바는 동적 로딩을 지원하여 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용 가능

- 또한, 일부 클래스가 변경되어도 전체 어플리케이션을 다시 컴파일하지 않아도 되고, 유연한 애플리케이션을 작성할 수 있음

728x90
반응형

'Programming Language > Java' 카테고리의 다른 글

[Java] 특수 문자 다루기  (0) 2023.12.30
[Java] 출력  (1) 2023.12.30
[Java] 변수  (0) 2023.12.30
[Java] public static void main(String[] args) 분석  (0) 2023.12.30
[Java] JDK와 JRE  (0) 2023.12.30