0. C++의 특징
- 흔히 말하는 객체지향 언어의 특징들을 많이 사용한다.
- 상속성, 캡슐화, 다형성(동적, 정적) 등의 기본적인 객체지향 언어의 특징을 지원한다.
- 그러나 객체 지향 언어와 다르게, 클래스나 객체를 생성하지 않고도 컴파일 될 수 있다.
- 그래서 반객체지향 언어라고도 불린다.
1. C++의 주요한 기능들
1-1 동적과 정적 메모리 할당
- C++에서는 동적, 정적 할당이 둘 다 가능하다. 이는 사용자가 컴파일 시간(static memory allocation)과 실행시간(dynamic memory allocation)에 변수, 객체 등에 메모리를 할당할 수 있게 한다.
- 동적 메모리 할당은 malloc(), calloc(), realloc() 등의 기능으로 구현 가능하다.
1-2 템플릿의 생성
- C++의 템플릿은 제너릭 프로그래밍을 하게 지원한다. 템플릿을 이용해 제너릭 함수, 클래스 등을 만들고 이는 여러 가지 데이터 타입에 대해 특정 기능을 지원을 하게 할 수 있다.
1-3 연산자 오버로딩
- 연산자 오버로딩은 사용자로 하여금 특정 연산자들이 원래 사용되던 기능이 아닌 변형하여 쓸 수 있게 한다.
- 예를 들어 +는 두 숫자를 더하는 것이지만, 연산자 오버로딩을 통해 두 개의 문자열을 합치도록 할 수 있다.
1-4 람다 함수
- [capture](parameters) -> return_type {funcion_body} 의 형태로 제공된다.
1-5 예외 처리
- 에러의 타입을 알기 위해 디버그가 가능하다. C++은 'try', 'catch', 'final'을 이용한다.
2. Java의 특징
- 현실 세계의 문제들을 해결하기 위해, 소프트웨어 애플리케이션을 만든다.
- 적은 구현 종속성을 가지면서, 고급 객체지향 프로그래밍 언어로 설계되었다.
- 자바는 WORA(Write Once Read Anywhere)를 지원한다.
- 즉 컴파일된 자바 코드는 재컴파일 없이 모든 플랫폼에서 실행 가능하다.
- Applets, Servlets, JavaServer Pages 등을 지원하여 개발 용이성을 높인다.
3. C++와 자바의 차이점
비교대상 | C++ | Java |
프로그래밍 모델 | 절차 지향 프로그래밍과 객체지향 프로그래밍을 둘다 지원한다. | 객체지향 프로그래밍만 지원한다. |
플랫폼 종속성 | C++은 플랫폼에 종속적이다. | Java는 플랫폼에 비종속적. Write Once Run Anyewhere |
주요 특징 | 연산자 오버로딩, Goto Statement, 구조체, 포인터, 유니온 등을 지원한다. | Java는 연산자 오버로딩 , Goto statement, 구조체, 포인터, 유니온 등 지원하지 않는다. |
컴파일과 인터프리션 | C++은 컴파일만 가능 | Java는 컴파일, 인터프리트 둘다 가능 |
라이브러리, 코드 재사용성 | C++은 제한적인 라이브러리와 저레벨 함수기능 들을 가진다. C++은 기본적인 시스템 라이브러리 에 대한 직접 호출을 허용한다. |
c++의 비해 많은 라이브러리와 코드 재사용성에 대한 지원이 많다. |
메모리 관리 | C++은 메모리 관리를 수동으로 한다. | Java는 시스템이 메모리를 관리한다. |
전역 범위(Global Scope) | C++은 전역, 네임스페이스 범위를 지원한다. | 자바는 전역 범위에 대한 지원은 없다. |
접근 관리와 객체보호 | 지속적으로 보호되는 유연한 모델이 가능하다. | 자바에서는 번거롭고, 약한 캡슐화를 권장한다. |
4. C++와 Java의 장점
- C++은 성능면에서는 Java보다 뛰어나다. (효율성, 빠른 속도, 동적 메모리 이용)
- 게임 엔진이나, 빈번하게 매매가 일어나는 시스템에서는 C++가 유리하다.
- Java는 사용성의 유연성에 있어서는 C++보다 더 뛰어나다. (소프트웨어 개발 면에서 뛰어남)
5. C++와 Java의 가장 큰 차이점
- C++은 컴파일만 되지만, Java는 컴파일과 인터프리터 둘 다 지원한다.
- C++은 컴파일러가 소스코드를 기계어로 변형하므로, 플랫폼에 종속적이다.
- Java는 코드를 컴파일러에 의해 바이트코드로 변형되고, 자바 인터프리터가 바이트코드를 런타임에 실행시키고 결과를 생성한다.
6. C++가 사용된 애플리케이션들
- MySQL, 게임 개발
- 구글 크롬 브라우저, 파일 시스템, 클러스터 데이터 처리
- Adobe Premiere, 포토샾, 일러스트
- 고급 계산, 그래픽 실시간 물리 실험, 고성능 이미지 처리
- MRI 기계
7. 자바가 사용된 애플리케이션들
- 데스크톱 GUI Application
- 안드로이드, 모바일 애플리케이션 개발
- 자바 애플리케이션들은 SIM 카드, disk players, TV 등에 임베디드 되어 있다.
- Java EE는 API는 큰 기업 소프트웨어의 API, 런타임 환경 제공.
- 네트워크 애플리케이션, 웹 서비스 (인터넷 연결, 웹 개발)
참고자료
https://www.interviewbit.com/blog/difference-between-cpp-and-java/
https://www.geeksforgeeks.org/similarities-and-difference-between-java-and-c/
'C++' 카테고리의 다른 글
[C++] 정렬되지 않은 벡터(vector) O(1)시간으로 요소 삭제하기 (0) | 2022.06.15 |
---|---|
[C++] Pair 개념, 활용, 선언, 초기화, 대소 비교 (0) | 2022.06.13 |
[C++] STL의 개념, 구성요소, 특징, 장단점 (0) | 2022.06.10 |
[C++] 연산자 오버로딩의 개념, 활용, 주의점 (0) | 2022.06.07 |
[C++] 인라인 함수의 장단점, #define 매크로와 차이 (0) | 2022.06.03 |