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 |