[dW] Dead like COBOL

Posted 2008. 6. 30. 19:01
자바는 이제 낡고 오래된 기술이라는 이야기가 나온 게 이미 꽤 시간이 흘렀습니다. 책 이름에 "beyond Java"가 붙은 책이 베스트셀러가 되는가 하면, 자바의 대안으로 여러 스크립트 언어들이 활발히 개발되고 있습니다. IBM dW의 Dead like COBOL은 이렇게 위기에 처한 자바의 앞날에 대해 이야기하고 있습니다.

이  글에 별로 새로운 내용은 없습니다. 자바 5에서 이미 한계를 드러낸 프로그래밍 언어 자바만 보지 말고, 자바 플랫폼, 자바 가상 머신, 새로운 자바 플랫폼 언어(그루비, 스칼라 등)에 주목하라는 것입니다. 결론은 자바는 쉽게 없어지지 않을 거라는 것이죠.

저는 개인적으로 자바 가상 머신을 타겟으로 새로 개발되는 여러 언어에 관심이 많습니다. 예전에 스칼라에 대한 글을 쓴 적도 있었는데, 특히 자바와는 패러다임이 다른 함수 언어가 스크립트 언어를 JVM 위에 돌리려는 노력이 지속적으로 이루어지고 있습니다.

자바 as 에스페란토 for JVML

Posted 2008. 4. 30. 00:15
전통적으로 프로그래밍 언어의 외부 인터페이스(외부 함수 호출)는 주로 C로 되어 있었습니다. 자바의 JNI(Java Native Interface)가 대표적이고, 파이썬도 Python/C API를 제공합니다. 함수 언어 OCaml로 C 인터페이스를 제공하고, Haskell도 마찬가집니다.

C는 프로그래밍 언어계의 에스페란토인 셈인데 C가 이렇게 널리 쓰이는 이유는 다음과 같습니다.

1. C는 표준화된 언어이다 (ISO C)
2. C는 운영 체제 구현 언어로 가장 많이 사용된다. 대표적으로, Unix, Windows, MacOS 등이 모두 C로 구현되어 있다.
3. 많은 라이브러리가 C로 구현되어 있다.
4. 대부분의 프로그래밍 언어가 C 인터페이스를 제공하기 때문에, 프로그래밍 언어가 C 인터페이스만 제공하면 다른 언어와 바인딩도 가능하다. 일례로, Pycaml은 OCaml C 인터페이스로 Python/C API를 호출해 파이썬을 바인딩한다.


자바 가상 머신에서 동작하는 언어에서는 자바가 C를 대체하는 새로운 에스페란토가 되고 있습니다. 자바는 앞서 C가 프로그래밍 언어 인터페이스로 많이 사용되는 이유가 모두 맞아 떨어집니다.


1. 자바는 표준화된 언어다 (Java Language Specification)
2. 자바는 자바 플랫폼 구현 언어로 사용된다. 자바 라이브러리는 모두 자바로 작성되어 있다.
3. 많은 라이브러리가 자바로 구현되어 있다.
4. 대부분의 JVML이 자바 인터페이스를 제공하기 때문에, 프로그래밍 언어가 자바 인터페이스만 제공하면 다른 언어와 바인딩도 가능하다.




썬, 자바를 오픈 소스화하다.

Posted 2006. 11. 21. 02:38
한참 블로그에 뜸해 있을 때 썬에서는 자바를 GPLv2 라이센스로 오픈소스화하겠다는 발표를 하였습니다. 썬 홈페이지에는 Sun Opens Java라는 제목으로 개요가 올라와 있고, Santa Clara, CA에서 있었던 자바 오픈 소스 이벤트에서 있었던 Jonanthan Schwartz와 Rich Green의 연설 장면을 웹캐스팅으로 볼 수도 있습니다.

Jonanthan Schwartz는 네트워크 효과(network effect)를 이야기하면서, 커뮤니티의 활성화를 첫 번째 이유로 들고 있습니다. "Volume Drives Value"라는 모토에서도 분명히 알 수가 있군요.

썬이 내세우는 표면적인 이유는 두 가지인 것 같습니다.

1) 최근 발전이 더디어진 자바의 확산 촉진
2) 1)을 통해서 자바의 원래 모토인 "Write once, run everywhere"를 실현.

하지만 썬의 호들갑에 비해서 개발자 커뮤니티에서는 오히려 담담한 것 같은데, 앞으로는 여파에 대해서 좀 더 고민해 봐야겠습니다.

자바 보안 안티패턴(antipattern)

Posted 2006. 11. 20. 23:54
오랜만에 포스팅합니다. 블로그에 글을 안 쓰는 것도 관성이 있는지 한 번 쉬기 시작하니깐, 계속 쉬게 되는군요.

12월 마소 원고 마감이 다가와서, 오늘 또 열심히 달렸습니다. 12월 호의 주제는 "자바 보안 프로그래밍"입니다. 흔히 C/C++ 프로그램에만 보안 문제가 있을 것이라고 생각하는데, 자바 프로그램도 C처럼 버퍼 오버플로나 포맷 스트링 버그는 없어도 다른 유형의 보안 문제들이 존재하고 있습니다. 실제로 자바원(JavaOne) 2006에서 Secure Coding Antipatterns: Avoiding Vulnerabilities라는 세션이 열리기도 하였습니다.

이번 마소 원고는 이 자바원 세션에 소개된 예제를 중심으로 자바 프로그램에는 어떤 보안 문제가 있고 어떻게 해결해야 할지를 다루고 있습니다. 사실 새로운 이야기는 별로 없고, 주로 자바원에서 다루었던 내용을 조금 더 상세히 설명하는 방식으로 했습니다.

자바 보안 안티패턴

[1] 객체가 불변(immutable)한다고 가정한다.
[2] 신뢰하지 못하는 출처(source)에 기초하여 보안 검사를 한다.
[3] 슈퍼 클래스의 변화를 무시한다.
[4] 입력 값 검사(input validation)를 하지 않는다.
[5] public static 필드를 잘못 사용한다.
[6] 생성자에서 발생한 예외(exception)가 객체를 파괴할 것이라 믿는다.

각각의 자세한 내용은 마소 12월 호에서 만나요 :) 미리 궁금하신 분은 웹으로 제공되는 자바원 세션을 직접 들어보시면 됩니다.

일용직 프로그래머

Posted 2006. 8. 30. 21:29
DC 인사이드에 프로그래밍 갤러리에서 가져온 카툰입니다. 일용직이 되어버린 프로그래머의 일상을 멋지게 묘사한 수작이네요. 양극화 시대에서 개발자도 예외일 수는 없는 것 같습니다. 특히 개발 방법과 도구가 발달할수록 중급의 개발자 수요는 점차 줄어들 것 같습니다. 일용직 개발자들과 일부 전문 개발자들만이 살아남는 시대가 곧 올 것 같네요.