Deperecated/JAVA

Java와 C++의 차이점.

누알라리 2019. 12. 15. 00:43

Java 공부를 시작해보려 한다.

부끄럽게도, 게임 개발에 C++이 주로 사용된다는 것에 안주해서 Java 책을 사놓고도 한 번도 제대로 보지 않았다. (반성)

 

시작 전에, 나에게 익숙한 C++과 Java의 차이점에 대해 알고 가려고 글로 정리해본다.

 

*사전지식

  1. C++은 "C with Classes" 를 모토로 절차지향적 언어인 C를 객체 지향적 언어로 발전시킨 것이다.
  2. C++은 객체 지향적 언어로, 다형성, 다중 상속, 정보 은닉의 특징이 있다.
  3. Java는 "Writing Once, Using Everywhere" 을 모토로 만들어진 객체 지향 언어 이다.
  4. C++은 컴파일러를 사용해 플랫폼에 비독립적이고, Java는 인터프리터를 사용하기 때문에 가상머신이 깔려있는 플랫폼에서라면 플랫폼에 독립적이다.
  5. 위의 특성으로 C++은 주로 임베디드 소프트웨어, 속도와 메모리가 중요한 게임 업계에서 많이 쓰이고, Java는 주로 웹서비스, 안드로이드 프로그래밍에 많이 쓰인다.

 

*알게된 것.

토픽 Java C++
설계 목표 보안, 이식성, 빠른 개발 속도, C언어와의 하위 호환성
컴파일 가상머신 바이트 코드 각 머신에 맞는 기계어
기능

빠른 개발을 위해 프로그래머가 손수 메모리를 비우는 방법 대신

가비지 컬렉션을 사용.

C와의 하위 호환성

(C언어는 애초에 Unix 운영체제를 만들기 위해 만들어진 언어로, 하드웨어를 제어할 수 있도록 만들어져 있다.)

을 위해 프로그래머에게

1. 메모리 관리 제어

2. 포인터

3. 전처리기 등

의 기능을 컨트롤 하게 한다.

객체 전달 방식 Call by value만 가능 값, 참조, 포인터 등등 데이터 전달 많다.
자동 Casting 제너렉, 오토박싱 같은 기능으로 자동 Casting 지원 지원.
함수

모든 함수가 가상 함수.

레퍼런스 유형이 아니라 객체 유형에 따라 메소드 구현이 결정된다.

가상 함수를 별도로 선언해 줘야 한다.
데이터형 크기 원시 데이터형의 크기가 정의되어있음. 구현에 따라 데이터형의 크기가 달라진다.
다중 상속 지원 x 지원 o

friend 키워드

(은닉성 파괴)

지원 x 지원 o
Interface 지원

이를 통해 다중 상속 흉내

상수와 가상함수로만 구성되어 있다.

지원 x
메모리 할당 메모리의 Heap 영역에만 할당

Heap, Stack 영역 모두에 할당.

C++엔 NEW 키워드를 통해 hEAP영역에 동적할당,

일반적인 변수는 모두 Stack영역에 할당되었다.

메모리 해제 Heap 영역 메모리 헤제가 가비지 컬렉션에 의해 자동으로 해제 된다. 소멸자를 통해서 프로그래머가 직접 메모리 해제해야 한다.
연산자 오버로딩 지원x 지원o
익명 클래스

인터페이스의 메소드 중 하나만 재정의 하고 싶을 때 사용되는 JAVA의 기능.

클래스의 선언과 객체의 생성이 동시에 이루어 진다.

지원x
바인딩

동적 바인딩

정적 바인딩, virtual 키워드를 이용한 동적 바인딩

 

출처 및 참고

 

1. https://showmiso.tistory.com/252

 

C++과 JAVA의 차이점

C++과 JAVA의 차이점 C++과 java는 문법적으로 상당히 유사하다. java를 설계할 때 C++ 개발자들이 쉽게 배울 수 있도록 만들었기 때문이다. 하지만 여러 차이점이 있는데, 이는 설계 목표의 차이에서 발생했다. j..

showmiso.tistory.com

2. https://preamtree.tistory.com/6

 

[IT 기술면접 준비자료] C++와 JAVA의 비교

C++와 JAVA을 비교하는 것은 대학에서 프로그래밍 언어를 배울 때, 얼핏 배우고 지나갔던 내용이었다. 비슷한 성격(객체지향)을 띄는 언어이지만, 차이점도 극명한 언어이기도하다. 나름의 기준으로 3가지 기준으..

preamtree.tistory.com

3. https://m.blog.naver.com/ws6263/100198938111

 

C++과 Java의 차이점

결론부터 말하면 두 언어는 상당히 비슷하다. 그 이유는 자바를 설계할 때 C++ 개발자들이 쉽게 배울 수 ...

blog.naver.com

 

2019.12.15 뭔가 더 추가해야될거같은데 지금 너무 귀찮다.