페이지

2012년 4월 19일 목요일

Moving from C++ to Java

10년을 C++만 하다가, 최근 몇년을 Sciprt를 하다가 이제서야 Java에 손을 대기 시작했다.

Java의 첫 느낌은 spec이 정말 깔끔하다는 것.
C++에서 복잡하고 모호한 것들을 잘 정리한 언어라는 생각이 들었다.
Eclipse IDE도 괜찮고.

- data types
Java에는 unsigned가 없다.
char는 기본이 2byte & unicode체계다.

- access modifier
public/protected/private 개념은 c++과 동일.
그외에 default가 있다. default는 package내에서만 visible하고 다른 패키지에서는 접근하지 못한다.

- multiple inheritance
Java에선 multiple inheritance는 지원하지 않는다. C++에서 복잡하고 모호했던 부분이었는데 잘 cut한것이란 생각이다.
단 interface는 multiple inheritance 가능.

- interface
C++에선 pure virtual등을 사용해서 했었는데 interface는 더 강력하게 intefacing을 해준다.

- fully Object Oriented
java는 모든 클래스는 강제로 Object를 상속받게끔 되어 있다.
custom Object Serialize는 mfc의 그것과 비교해 너무 쉽지 않은가 말이다.

- thread synchronize
synchronized keyword를 비롯해서
Object에 있는 wait/notify/notifyAll등을 통해 매끄럽게 sync를 지원해주니 개발자로선 편하기만 하다.

- package
c++은 모듈화라고 해봤자 dll단위였는데 이것도 문제가 많이 있었다. dll간의 디펜던시 문제는 아직까지도  문제를 불러 일이키고 있다.
Java는 훨씬더 깔끔하게 package별로 재사용될수 있는 매커니즘을 제공해주고있다.

- deploy
C++ 라이브러리를 제공할때는, dll과 헤더를 보내줘야 한다.
반면 java는 패키지하나면 땡이다. 더구나 그 패키지에 소스 패키지까지 포함 할 수 있다.

Java 매력적인 언어이지 않은가..