자바도 이제 어느 정도 역사를 가진 언어가 된것 같습니다. 지금 와서 자바에 대해 포스팅 한다는 것이 많이 늦은 감이 있지만 그래도 제가 공부했던 언어 중 하나이고 여전히 자바를 사용하는 곳들이 많다고 생각되기 때문에 다시 한번 정리 하는 차원에서 포스트를 시작해 보려 합니다.

먼저 이번 포스트에서는 자바와 C언어를 비교해 보겠습니다!!

 자바와 C 언어는 어떤 차이가 있을까요? 


■ 1. 메모리를 접근하는 방식에 차이가 있습니다.


   C 언어 pointer를 이용해서 메모리에 접근합니다. 하지만 이 pointer를 사용해서 부트영역을 건드린다면 치명적인 오류가 발생합니다.

   자바 : reference를 사용합니다.

  
C언어는 100번지에 직접 물건을 전달하려 하는데 실수로 101번지에 배달하면 오류가 발생하지만 Java는 우체국을 통해 보내서 주소가 다를 경우 수취인 불명으로 반송되는 정도로 생각하면 좋을 것 같습니다.


■ 2.

   C 언어 : 관련된 데이터를 하나로 모으기 위해 구조체(Structure)나 공용체(Union)를 사용합니다.

   자바 : 클래스(Class) 개념을 사용합니다.


■ 3. 구성 단위

   C언어 : acb.c 형태의 소스파일, abc.h 형태의 헤더파일 등 파일 단위로 되어 있어 #include를 사용해 문서에 포함합니다.

   자바 : 클래스(Class) 단위로 되어 있어 import를 사용해 포함 시킵니다.


■ 4. 타입(type) 정의

   C언어 : 구조체 등을 사용해 새로운 타입의 정의가 가능합니다.

   자바 : 타입을 정의할 수 없습니다.

■ 5. goto

   C언어 : goto 를 사용합니다.

   자바 : goto라는 예약어는 있지만 사용하지 않습니다.

goto를 사용하면 로직이 복잡해진다고 하네요.


■ 6. 형변환 (casting 캐스팅)

   C언어 : 자동 형변환을 합니다.

   자바 : 자동으로 형변환을 하지 않고 오류를 발생시킵니다.

C언어의 경우 int a = 3.14 라고 정의할 경우 a를 자동으로 3으로 캐스팅합니다. 만약에 이것이 314를 3.14로 잘 못 쓴 것이라면 오류를 찾아내기가 어렵습니다. 자바에서는 이런 사용자의 실수를 방지하기위해 형검사를 엄격하게 한다고 합니다.


■ 7. 상속 (Inheritance)

   C++ 다중 상속이 가능합니다.

   자바 : 단일 상속만 가능합니다.

다중 상속이 가능할 경우 상속한 각각의 부모에 같은 변수 명이 있는 경우 그 변수가 어디서 온 것 인지 알기 어렵다고 합니다.


■ 8.

   C언어 파일 단위 이기 때문에 마음에 드는 부분을 가져다 쓸 수 없고 배껴야합니다.
abc.c → 컴파일(Compile) → abc.obj → 빌드(Build) → abc.exe 과정을 거쳐 최종적으로 바이너리 파일이 됩니다.
그래서 플랫폼에 종속적입니다.  예를 들면 UNIX에서 만든 abc.exe 는 WINDOWS에서는 실행이 안 됩니다. 라이브러리가 다를 수 있기 때문입니다. 

   자바 클래스(Class) 단위의 객체 지향언어이고, interpreter방식 입니다.
abc.java → 컴파일 → abc.class → interpreter(자바가상머신) → 각 플랫 폼에 맛게 실행 하는 방식으로 
바이너리가 아닌 바이트 코드의 클래스 파일을 읽으면서 자기 플랫폼에 맞게 실행됩니다. 즉 플랫폼에 독립적입니다.


[출처] http://kkoseul.tistory.com/52


'프로그래밍 개론' 카테고리의 다른 글

C, C+, JAVA, C#의 차이  (0) 2015.11.20
전세계 사람들과 함께하는 공유 개발, 오픈소스(Open Source)  (0) 2015.11.20
EMS (Enterprise Management System)  (0) 2015.11.06
My Batis  (0) 2015.11.06
Model1, Model2  (0) 2015.11.06
블로그 이미지

532

처음 프로그래밍을 시작한 개발자들은 Hello World!를 기억 할 것이다. Hello world가 Hell World가 될 줄 몰랐던 한 개발자의 이야기. 게시글의 출처를 표기하며, 출처를 남기지 않고 펌을 하는것에 대해 법적 책임을 묻지 않습니다.

,