C++이란
C언어를 확장하여 만든 객체지향 프로그래밍
C언어의 대부분 특징을 포함하고 있어 시스템 프로그래밍에 적합하다.
클래스, 연산자 중복, 가상함수 등과 같은 특징을 가지고 있다.
C++ 프로그램의 작성 및 빌드
- 소스파일: C++로 작성한 프로그램을 담은 파일, C++ 소스(.cpp, .cxx, .c)와 C++ 헤더 파일(.h)로 이루어짐
- 작성단계
1. 프로그램 작성 (.cpp)
2. 컴파일 (.obj)
3. 링크 (.obj 파일 연결)
4. 실행 파일 (.exe)
5. 실행
JAVA란
https://helloworld-88.tistory.com/3
C/C++ 스타일의 언어와 가상 머신을 구현한 것으로, Write Once, Run Anywhere을 목표로 작성된 객체지향 프로그래밍
JAVA 특징
1. 객체지향 언어
- 캡슐화, 상속성, 다형성 지원
2. 높은 이식성
- 자바 실행 환경(JRE)이 설치된 모든 운영체제에서 실행 가능
3. 컴파일 언어 + 인터프리터 언어
- .java 컴파일하여 바이트 코드로 컴파일로 만든 후, 자바 Runtime이 클래스 파일을 인터프리트하면서 실행
3. 메모리를 자동으로 관리
- 가비지 컬렉션
- 객체 생성시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 자동으로 사용하지 않는 객체 제거
- 개발자가 메모리 관리의 수고를 덜어 핵심 기능 코딩에 집중할 수 있음
4. 멀티 스레드 구현이 쉬움
- 스레드 생성 및 제어와 관련된 라이브러리 API 제공 -> 운영체제에 상관없이 멀티 스레드 구현
5. 동적 로딩 지원
- 필요한 시점에 클래스를 로딩
- 비교적 적은 작업으로 처리할 수 있는 유연한 애플리케이션 장성
6. 분산 환경 지원
- TCP/IP 라이브러리가 기본적으로 포함됨
- HTTP, HTP 프로토콜을 기본적으로 지원
7. 오픈소스 라이브러리가 풍부
- 자바는 오픈소스 언어
- 라이브러리 또한 오픈소스의 양이 방대
- 유지보수를 쉽고 빠르게 진행
C++과 Java의 차이점
C++ | Java | |
특징 | 플랫폼 종속적 언어 모든 플랫폼에서 컴파일 |
플랫폼 독립적 언어 바이트 코드로 컴파일 ▶ 모든 플랫폼 실행 |
컴파일러 | 컴파일러 > 실행 가능한 객체 코드로 컴파일 |
컴파일러 + 인터프리터 > 컴파일 후 바이트 코드 해석 |
과정 | 소스파일(컴파일) ▶ 목적파일(링크) ▶ 실행파일 | 소스파일(컴파일) ▶ 클래스파일(JVM) ▶ 실행파일 |
설계 목표 | 속도, C와 하위 호환성 | 보안, 이식성, 빠른 개발 |
바인딩 | 정적바인딩 | 동적바인딩 |
문법 | 프로그래머에 의해 메모리 관리 제어 기능 | 가비지 컬렉션 |
연산자 오버로딩 | O | X |
다중 상속 | O | X 인스턴스로 비슷하게 사용 가능 |
추상 클래스 | 순수 가상 함수들을 가진 클래스(0으로 초기화) | 반드시 파생되어야 함 자신은 인스턴스화 될 수 없음 |
형변환 | 기본 자료형, 사용자 정의 자료형에 대한 암시적 형변환 허용 | 기본 자료형 사이에 오직 넓은 범위로의 암시적 형변환 허용 그 외: CAST를 통한 명시적 형변환만 가능 |
장점 | 값에 의한 전달 참조에 의한 전달 포인터 전달을 통한 데이터 전달 속도가 빠름 |
웹에 최적화 C++에 기반하지만 규모가 작고, 단순 높은 신뢰성 및 유지보수 편리 |
단점 | 객체지향 개념이 약함 | C++에 비해 속도가 느림 단일 상속 포인터X 바이트 코드 보안 취약 |
'IT > CS' 카테고리의 다른 글
[Container] 가상 머신과 컨테이너(feat. Docker) (0) | 2021.06.01 |
---|---|
[프레임워크] Vue.js (0) | 2021.05.31 |
[DB] 데이터베이스 기초 (0) | 2021.05.27 |
[Java] String vs StringBuilder vs StringBuffer (0) | 2021.04.28 |
[자료구조] Hash (1) | 2021.04.16 |