[Java] 자바와 C++의 차이

김성록·2023년 10월 27일
0

자바

목록 보기
3/6

Java와 C++

Java와 C++은 문법적으로 상당히 유사하며 객체 지향 언어라는 점에서 공통점이 있지만, 다양한 차이점들이 존재한다. 어떤 차이점들이 있는지 하나씩 살펴보자


차이점

  • 실행 환경

    • Java

      • 자바는 가상 머신 바이트 코드로 컴파일하며, 이를 실행시키기 위해서는 JVM이 필요하다.
      • 자바는 JVM 위에서 간접적으로 실행되기 때문에 운영체제에 독립적이다.
      • 자바는 컴파일, 인터프리트 둘 다 가능하다.
    • C++

      • C++은 각 운영체제에 맞는 기계어로 컴파일한다.
      • C++은 컴파일만 가능하다.
    • 따라서 C++이 자바보다 실행 속도가 빠르다.

  • 프로그래밍 모델

    • Java

      • 자바는 객체 지향 프로그래밍을 지원한다.
    • C++

      • C++은 객체 지향 프로그래밍과 절차 지향 프로그래밍을 모두 지원한다.
    • 절차 지향은 데이터 중심으로 함수를 구현하며, 객체 지향은 기능 중심으로 메서드를 구현하는 차이가 있다. 따라서 자바가 C++보다 유지보수에 유리하다.

  • 상속

    • Java
      • 자바는 클래스를 통한 다중 상속을 지원하지 않는다.
      • 대신에 자바는 인터페이스를 지원하여 이를 통해 다중 상속을 구현해낼 수 있다.
    • C++
      • C++은 다중 상속을 지원한다.
      • C++은 friend 키워드를 지원하여 특정 class에 friend 키워드를 붙여서 클래스 혹은 함수를 선언해 놓으면, 명명된 클래스와 함수는 그 class의 private, protected area에 접근할 수 있다. 하지만 이는 객체의 은닉성을 파괴하므로 특수한 경우 외에 사용을 지양한다.
  • 메모리 처리

    • Java
      • 자바는 객체를 메모리의 Heap 영역에만 할당할 수 있다.
      • 자바는 GC(Garbage Collector)가 사용되지 않는 객체를 자동으로 해체해주어서 자동으로 메모리를 관리한다.
    • C++
      • C++은 new키워드를 사용해 객체를 생성하면 Heap 영역에 객체가 할당되고 일반적인 변수 선언 방식으로 객체를 생성하면 Stack 영역에 할당된다.
      • C++은 소멸자를 통해 프로그래머가 수동으로 메모리 해제를 해주어야 한다.
  • 문법 및 기능

    • Java
      • 자바는 연산자 오버로딩, Goto Statement, 구조체, 포인터, 유니온 등을 지원하지 않는다.
      • 자바는 익명 클래스(Anonymous Class)를 지원한다.
      • 자바는 동적 바인딩(Dynamic Binding)을 택하여 런타임 중 실행 코드가 결정된다.
    • C++
      • C++은 연산자 오버로딩, Goto Statement, 구조체, 포인터, 유니온 등을 지원하지 않는다.
      • C++은 익명 클래스를 지원하지 않는다.
      • C++은 정적 바인딩(Static Binding)을 택하여 컴파일 시 어떤 함수를 호출할 지 결정한다. 하지만 virtual키워드를 통해 동적 바인딩도 지원하기도 한다.
  • 보안성

    • 자바의 보안성이 C++보다 좋다.
    • 자바는 몇 가지 보안 매커니즘을 구현하여 잘못된 프로그램으로 인해 생기는 피해를 막아주도록 설계되어 있기 때문이다.

    언어의 특징과 장단점, 개발 목적을 고려하여 언어를 선택하자

profile
예비 개발자

0개의 댓글

관련 채용 정보