[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개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN