| 특징 | Java | C++ |
|---|---|---|
| 플랫폼 독립성 | JVM을 통해 플랫폼 독립적 실행. "Write Once, Run Anywhere" | 컴파일된 네이티브 코드로, 플랫폼에 종속적 |
| 메모리 관리 | 가비지 컬렉션으로 자동 메모리 관리 | 프로그래머가 직접 메모리 할당과 해제를 관리 (new, delete) |
| 포인터 | 포인터가 없으며 참조(reference)를 사용 | 포인터를 사용하여 메모리 주소를 직접 다룬다 |
| 성능 | JVM에서 실행되므로 C++보다 상대적으로 성능이 떨어질 수 있음 | 네이티브 코드로 실행되므로 성능이 뛰어남 |
| 컴파일 및 실행환경 | 링크 과정 없이 컴파일러가 바로 바이트 코드 생성 | 직접 기계어로 컴파일되어 운영 체제에서 실행(컴파일 + 링크) |
| 멀티스레딩 | 내장된 멀티스레딩 지원 | C++11부터 멀티스레딩을 표준 라이브러리로 지원하지만 복잡 |
| 라이브러리 | 표준 라이브러리가 풍부하고 일관성 있음 | 표준 라이브러리는 강력하지만 복잡한 시스템 개발에 주로 사용 |
| 예외 처리 | 예외 처리가 강제되고, 예외를 명시적으로 처리해야 함 | 예외 처리는 선택적이며, 필요에 따라 사용 |