본문 바로가기

공부/컴퓨터

[PHPSCHOOL] JAVA

반응형
http://phpschool.com/bbs2/inc_view.html?id=87005&code=talkbox2


글쓴이:D.E.A.  JAVA

글들을 읽다가 JAVA 관련 내용이 있어 글을 씁니다.

저도 별 수 없었는지 처음에는 c 에 있던 포인터가 없다는 둥 하는 핑계만 대기 바쁘다가
JAVA 가 아닌 OOP 라는 것의 느낌을 어느 정도 알아가기 시작하니까 저절로 고개가 끄덕여지는
부분들이 생겼습니다.

그 느낌을 그대로 전달해 드릴 수 있으면 좋겠지만 그 역시 아무나 할 수 있는 일은 아닌가 봅니다.
누구를 가르친다는 것, 혹은 시중에 나와 있는 수많은 책들 같은 것을 저술한다는 것이... 이 책은
너무 구리다 하고 쉽게 말하지만 그런 시도조차 못 하는 사람이 여기서 이 글을 쓰고 있네요.

포인터가 없다는 점? 진짜 없지는 않지만 아무튼 직접적인 메모리 주소 접근은 자유롭지 못합니다.
이게 개념없는 사람한테는 좋을 지 몰라도 c 를 상당히 능숙히 다룰 수 있는 사람에게는 정말 답답
하기 그지없게 보일 수 있습니다.

이미 준비되어 있는 수많은 클래스들? 기본 API 에서조차 c 를 배울 때 정말 무슨 소리인지 모르겠고
어디에 쓰는지조차 몰랐던 linked-list 가 이미 훌륭한 클래스로 존재하고 있습니다. 물론 c 에 있어
서는 표준은 아닐 지라도 너무나 방대한 라이브러리들이 존재하고 있는 것 또한 사실입니다.
게다가 JAVA 그 자체는 퍼포먼스에 있어서 불리할 뿐만 아니라 정작 표준(?) API 소스들을 열어 보아도
정작 중요한 부분은 JNI 로 구현되어 있어 그 내막을 알 수가 없습니다. 대표적인 것이
java.lang.Object 겠죠. 실제 JAVA 가 작동되는 양상은 물론 JVM 소스를 보면 알 수 있습니다만...
"그럴 필요가 없다" 라는 것이 대부분의 경우입니다.

JAVA 로 프로그램을 만들건, c 로 만들건 중요한 것은 아닙니다. JAVA 장점, 즉 OOP 의 장점을 100%
활용할 수 있느냐가 중요한 문제입니다. 그런 점에 있어서 JAVA 가 OOP 를 구현하는데 상당한 장점을
제공하기에 JAVA 를 쓴다고 생각합니다.

c 같은 전통의 언어를 쓰더라도 나름대로 정말 잘 모듈화된 설계를 할 수도 있습니다. 퍼포먼스 측면을
생각하면 c 의 손을 들어 줄 수도 있습니다만 솔직히 요즈음 PC 는 그 옛날 악명높던 dos 시절의
640kb 메모리 제한 문제도 없습니다.

중요한 것은...
디자인 패턴이라고 해야 할까요, 대부분의 JAVA 책에서 언급하는 객체지향의 장점... 캡슐화, 재사용성
등 JAVA 로 말하면 JAVA 답게 설계하는 것이 중요한 문제입니다. JAVA interface source 작성 자체는
너무나도 쉽습니다. 아무런 기능도 없는 method 들만 써 넣는 것은 것은 그야말로 초등학생이 아닌
유치원생들도 할 수 있는 일입니다. 그러나 '제대로 된' interface 의 작성, abstract class 의 작성
등은 정말로 어렵습니다. 배우고자 마음먹고 당장 책을 집어들어도 그게 그리 중요한 것인지 바로 알 수
있는 사람은 정말 드물 것입니다. 사람마다 차이가 있겠지만, 당장 코드 몇 줄 짜는 것은 사실 누구나
쉽게 할 수 있지만 제대로 된 객체지향성을 구현할 수 있게 되기까지는 상당한 시일이 걸리며 대부분
어설프게 흉내내다가 그마저도 못 하게 됩니다.

웹 쪽으로 특화시켜서 얘기해 보겠습니다. JSP 나 PHP 나 차이가 없습니다. 둘 다 '스크립트' 언어입니다.
심지어는 그냥 JSP 만 해서는 PHP 보다 단점이 많을 수 있는 경우도 생깁니다. JSP 를 하고자 한다면,
먼저 Servlet(HttpServlet) 를 제대로 이해하고 접근하는 것이 좋습니다. 그렇다고 서블릿만 죽어라고
하다가 JSP 를 해야 한다는 것은 아닙니다. 그렇지만 Servlet 혹은 HttpServlet 을 정말 제대로 이해하려면
'객체지향' 개념 그 자체부터 어느 정도는 이해를 할 수 있어야 비로소 감을 잡을 수 있게 됩니다.
interface, ClassCasting 부터 시작해서 thread 작동 방식 등...이쯤 되면 아무리 허접하더라도 간단한
'웹 서버 프로그램' 을 만드는 것까지 가능한 수준에 도달할 수 있습니다. ( 실제 구현해 보며 좋아할
수 있는 여건이 되는가 하는 문제는 별개입니다. 그럴 수 있는 상황이 오면 정말 행복한 경우겠지요. )

저도 JAVA 가 언제까지 살아남을 수 있을지는 모르겠습니다. 그럼에도 불구하고 JAVA 는 정말 잘 설계된
언어라고 생각하며 실질적으로도 현재까지는 많이 쓰이는, '주류'인 것도 사실입니다. 더 중요한 것은...

사족으로 흘러 버립니다만... ^^;

제 전공이 기초학문이라 그런 것인지 몰라도, 사장이 되어 버리건 말건 이런 '개념' 자체를 창조하는
시도 역시 우리 나라도 이제는 조금씩 해 보아야 할 때가 아닌가 합니다. 실제로 JAVA 처럼 성공한
사례보다 실패한 사례가 더욱 많을 것입니다. 언제까지 우리는 PHP 플머는 허접하다느니 하는 것으로만
싸울 것인지... 코드 몇 줄 짜는 것은 PHP 를 쓰건 JAVA 를 쓰건 똑같습니다. c 란 개념 자체를 만드는
것, SQL 이란 것을 제안하는 것, OOP 란 개념을 만들고 구현하는 것, RSA 암호화 알고리즘 같은 것들을
제안하는 것...
이런 것들 뿐만 아니라 주변에 안경쓰고 있는 사람들 많고 나름대로 우리나라도 좋은 안경테 만드는
곳은 많다고 하지만 '좋은 렌즈' 를 만들 수 있는 곳은 없다고 알고 있습니다.

제로보드란 거... 정말 잘 만든 것 같은데 '제로보드' 가 기술력은 아닙니다. 제로보드를 만드는 데
사용된 PHP 라는 언어가 바로 기술이라고 생각합니다.

그런데... 높으신 분들도 모르지는 않을 것이라 믿고 싶지만 그것보다도 우리 나라의 상황이 아직 그럴
여력이 없다는 슬픈 현실 또한 무시 못하겠더군요. 살다 보니까.
반응형