본문 바로가기

프로그래밍

C++과 JAVA의 차이점


C++과 JAVA의 차이점


C++과 java는 문법적으로 상당히 유사하다. 

java를 설계할 때 C++ 개발자들이 쉽게 배울 수 있도록 만들었기 때문이다. 


하지만 여러 차이점이 있는데, 이는 설계 목표의 차이에서 발생했다. 

java는 보안, 이식성, 빠른 개발에 비중을 두었고, C++은 속도와 C언어와의 하위 호환성에 중점을 두었다.


또한,

java는 가상 머신 바이트 코드로 컴파일하며, 실행시키려면 가상 머신이 필요하지만, 

C++은 각 머신에 맞는 기계어로 컴파일한다. 


그래서 일반적으로 C++이 빠르긴 하지만,

java가 이식성, 보안 면ㅇ에서는 나은 편이다.


C++은 C를 그대로 포함하며 하위 호환성을 유지하기 위해 

프로그래머에게 메모리 관리 제어, 포인터, 전처리기 같은 기능을 컨트롤 하게 한다.


하지만, java에서는 그 외에도 여러 버그를 일으키기 쉬운 기능들을 없애버렸다.

특히, 프로그래머가 손수 메모리를 비우는 방법 대신 가비지 컬렉션을 사용한다.

또한, C++의 연산자 오버로드나 다중 상속같은 기능은 쓸 수 없다. (다중 상속대신 인터페이스로 다중 상속과 유사한 기능을 제공한다.)


이 때문에 빠른 개발이 필요하고, 성능보다는 이식성과 보안이 더 우선시 되는 경우 java를 더 선호하곤 한다.



- java에서는 모든 객체가 reference로 전달 되지만, C++에서는 기본적으로 객체를 값으로 전달한다.


- java에서는 C++에서처럼 자동 casting을 하지 않지만, 최근 버전에서는 제너렉이나 오토박싱 같은 기능이 취가되어 여러 상황에서 자동 casting이 가능하다.


- java에서는 모든 메소드가 가상 메소드이다. 즉, 레퍼런스 유형이 아니라 객체 유형에 따라 메소드 구현이 결정된다. C++에서는 가상 메소드를 별도로 선언해줘야한다.


- java에서는  원시 데이터형의 크기가 정의되어 있지만, C++에서는 구현에 따라 데이터 형의 크기가 달라진다.



기본에 만든 C 코드가 있고, 성능이 매우 중요할 때는 C++를 쓰는 쪽이 유리하지만, 이식성, 보안, 개발 속도 등이 중요한 상황에서는 java와 C#을 선택하는 것이 낫다.





[참고] 프로그래밍 면접 이렇게 준비한다. p.425


'프로그래밍' 카테고리의 다른 글

CGAL 4.8 설치 Eigen  (0) 2016.05.02
CGAL 4.8 설치  (0) 2016.04.26
python  (0) 2014.12.02
폰갭설치하다가  (2) 2014.11.25
노트북에 eclipse를 깔았다.  (0) 2014.11.23