Categories
Development

Consumer JRE: Leaner, Meaner Java Technology

Desktop Java Application 이 RIA 가 될 수 있도록 Chet Haase 가 열심히 준비중인
Consumer JRE2008년 초에 선보인다고 합니다.

Java SE 6 이 세상에 나온지도 한참 되었지만 아직도 까칠한 사용자들에게 Java로 만들어진 프로그램 설치를 요구하는 것은 어려운 일입니다. 그나마 Windows IE에 MS JVM이 포함되어있던 시절에는 애플릿으로 뭘 하기가 편했었는데.. 요새는 그것마저도 없어졌지요.

2002년에 만들고 거의 업데이트를 안하는 JMSN 를 비롯해 여러가지 자바 swing 어플리케이션들이 고통받고 있습니다. JMSN 요새 로그인 안된다고 생각하시는 분들 많지요? 전 아직도 JMSN 만을 씁니다. 물론 아직도 파일전송 기능은 막혀있지만, 만든 사람이라도 써줘야 프로그램이 덜 슬퍼할 것 같아서요 -_-

Java SE 6 <- 처음 프로그래밍을 시작한 98년부터 Java의 느린 속도를 체험해 버릇해서 그런지 정말 빠릅니다. 빠르면 뭐합니까 (씨익) 설치가 쉽지 않습니다. 개발자인 저도 가끔 설치에 곤욕을 치릅니다. 하물며 사용자는 어쩌라는건지! JRE 크기도 문제지만 저처럼 귀찮은 것 싫어하는 dummy user (?) 들에게는 여전히 어렵습니다.

리눅스에서 Java 어플리케이션을 사용하는 것은 아직도 쉽지 않은 일입니다.
한글 설정.. 왜 이런걸 해야할까요? 저야 우분투에서 JMSN을 사용하는 사람이니 한글 설정이 없이는 어려운 사람중 1人 이니 귀중한 20-30분을 날리며 한글 설정을 하지요. (그런면에서 MacOSX이 자바 지원 젤 잘되는 곳이 아닐까요. UTF-16 의 압박은 빼고요 -_-)
누가 쓰겠습니까! -_-

잡설은 여기까지- 원문을 읽기 귀찮은 분들을 위해 Consumer JRE에 대해 제 의견을 섞어 간단히 요약합니다.

아무리 Desktop 환경에서의 Java 가 좋아졌다고 할지라도 엔드유저에게 자바 어플리케이션을 배포하려고 할 때 개발자 입장에서 아래와 같은 문제들이 여전히 남아있습니다.

  • JRE 감지 – 설치는 되어있나? 버전은 몇인가? 6으로 올려야대나? 그럼 어떻하나?
  • 시작 시간 – 빨라졌다고는 하지만 Cold startup은 눈에 띄게 느리다.
  • JRE 설치본 크기 – 한국은 괜찮겠지만 그래도 10MB.. 덜덜
  • 설치 시간 – Pack200으로 줄인다 한들 설치할 때 잡아먹는 CPU.. ㄷㄷ

2008년 초에 세상에 나올 Consumer JRE 는 아래와 같은 것들이 개선된다고 합니다. Java 7 에 포함되는 내용은 아니구요, Java 6 Update 로 들어간다고 하니 Consumer JRE를 맞이할 시간이 머지 않았음을 알게 해줍니다.

[Quickstarter]
97년 Netscape 에서 Applet 하나 돌리려면.. 제 기억에 40초정도는 컴퓨터가 덜덜덜 거렸습니다. 물론 옛날 얘기이긴 하지만, 최근에도 우리들의 까칠한 사용자들을 만족시키기엔 부족함이 많습니다.
애플릿 때문에 쾌적한 웹서핑 중 브라우저가 덜덜 거리는 것을 보고 싶은 사용자는 아무도 없겠지요.

JVM 을 시작하는 것은 크게 warm startup, cold startup 으로 나눌 수 있습니다.
요즘의 JVM (Java 6과 같은)은 warm startup 은 아주 빠릅니다. warm startup 이라 함은 시스템에서 한번이라도 jvm 이 실행된 과거(-_-)가 있을 경우를 말합니다.

warm startup은 정말 빠릅니다. 자바 프로그램이 시작될 때 40메가에 육박하는 rt.jar 를 비롯해서 여러가지 파일을 툭툭 건드려야하지만 한번 실행된 후에는 OS가 disk cache를 해주니 메모리에서 바로 읽어올 수 있기 때문입니다. (이 외에도 몇몇 비기가 들어있긴 하지만)

[rath@ns tmp]$ time java test http://rath.myid.net
http%3A%2F%2Frath.myid.net

real 0m0.160s
user 0m0.095s
sys 0m0.031s

java.net.URLEncoder 클래스로 파라미터로 넘어온 문자열을 urlencode 해주는 프로그램을 P4 2.4G 에서 실행한 결과입니다. JVM 시작시간을 합쳐 0.1초 내에 끝났습니다.

이것은 현재 시점에서 얻은 Java 프로그램들의 즐거움일뿐인데, quickstarter가 해준다는 것은 뭘까요? 무엇이 cold startup을 피할 수 있게 해준다는 건가요?

But we can pre-load at some earlier time, such as Windows boot or login time. And we can keep the pages warm in the disk cache as machine and memory conditions allow.

사용자 입장에서는 괜찮겠지만.. 마법을 부리진 않는다는군요. 부팅할 때나 로긴할 때 살짝 살짝 진행하도록 하겠답니다. (씨익)

[Java Kernel]

Java Kernel 은 사용자 PC에 JRE가 설치되어 있지 않은 경우에 빛을 발하게 해줍니다.
JRE 다운로드 및 설치 <- 를 도와주는 부분입니다. 이 시간을 엄청나게 줄여준다고 합니다.
응용프로그램 자신이 ‘어랏 Java 6이 없잖아!’ 하면 스슥 다운로드하고 스슥 깔아준다고 합니다.

이게 무슨 완전 소중한 말입니까. 아래 Java Kernel 이 움직이는 순서를 보세요. 정말 아름답지 않습니까?

  • Download base functionality that every application needs (VM, garbage collector, security, classloader, and enough basic networking functionality to be able to download the rest of the bits)
  • Download additional dependencies that this application specifies
  • Download any “Class not found” exception culprits as needed
  • Download the rest of the JRE in parallel until the entire release exists on the user’s system

[Deployment Toolkit]

이 부분은 어떤 형태로 나오게 될지 참 궁금한 부분 중 하나인데, Java, Javascript 다른 브라우저 플러그인들을 감지하는 작업을 훨씬 쉽게 만들어준다고 합니다.
어떤 형태로 나오게 될지 정말 궁금하네요!

[Installer Improvements]

이 부분은 별로 관심이 없는 부분입니다. 인스톨러 UI가 좀 더 친숙하게 하고 간단하게 됩니다.
Java Kernel 이 들어가도 전체 JRE를 설치할 일은 여전히 필요할테니 분명 가치있는 일이 되겠지만
Consumer JRE 의 다른 개선점들에 비하면 확실히 너무 약합니다.

그래서 그런지, 이 부분은 Consumer JRE 가 발표되는 2008년 초가 아닌, 다음달인 6월에 들어간다고 합니다.

[Graphics Performance on Windows]

대단히 기대되는 부분입니다. 비교적 큰 GUI 프로그램을 만드는 일이 많지 않아 개인적으로 얻는 기쁨이 크진 않지만, SWT에 밀리기만 하던 swing이 다시 한번 도약할 수 있는 기회가 되기를 희망합니다.

We are re-writing the default graphics pipeline on Windows to take advantage of Direct3D for performing everything from simple rectangular fills and copies, which is what you get now by default, to translucency, gradients, arbitrary transformations, and other more advanced 2D operations. Swing applications simple and complex should benefit from much better runtime performance on Windows as a result.

jMonkey engine 으로 만들어진 훌륭한 자바 게임들을 보며 다른 세상 이야기처럼 들리기만 했는데, 많은 성능 향상으로 Java 2D 어플리케이션 시장이 더욱 활성화되기를 기대해봅니다.

Swing 만세!!!

[Nimbus Look & Feel]

새로운 룩앤필이 들어간답니다. Numbus 좋아하시는 분들에게는 엄청난 희소식이 되겠네요.

Jasper Pott’s Blog 에서 Nimbus LNF 를 좀 더 구경해보실 수 있습니다.
프로그래스바가 인상적입니다.

2008년 초에 Consumer JRE가 발표되기 전에 Desktop 용 자바프로그램 만들기 감각을 다시 찾아야할 것 같습니다. 특히 Java Kernel 너무 좋아요!

Categories
Development

OpenID 관련해 홈피 살짝 개편

아무도 알아채지 못할 정도의 개편을 했습니다.

  • OpenID4Java 0.8 에서 0.9.2 로 마이그레이션
  • 로그인 시, Simple Registration으로 nickname 요청 (optional)
  • trust.url 과 returnTo.url 을 분리

OpenID4Java 를 0.9.2로 바꾸면서 고칠 것은 2개 였습니다.

  • import 구문에서 net.openid. 를 org.openid4java. 로 변경
  • Provider로 redirect 하기 직전 getRedirectUrl 메서드를 getDestinationUrl(boolean)으로 변경

simple registration 으로 요청한 nickname은 사용자가 거절해도 상관이 없으며
OpenID로 로그인 시 nickname을 제공했을 경우, 코멘트를 달 때 ‘이름’ 부분에 자동으로 채워집니다.
홈페이지를 대체할 무엇인가가 필요했는데, sreg 에 site 주소는 없네요 🙁

OpenID에 대한 지식이 짧아서, 인증요청을 만들 때 return_url과 trust_url이 따로 나뉘어있는 사실을 몰랐는데, 알고난 뒤에 생각해보니 이거 없이 어떻게 만들 생각을 했었는지 놀랍기만 합니다 –;

아무튼 분리하게 되어 소스코드가 훨씬 깔끔해졌습니다. return.to.url 은 /openid/verify 로 바꾸고 trust.url 에는 다른 consumer 사이트처럼 http://xrath.com 박았습니다. ㅎㅎ
OpenID4Java 에서는 trust.url을 realm이라고 표현하네요.

그리고 가끔 코멘트 작성 時, 오류페이지가 보이는 경우가 있었는데 (등록은 제대로 됐지만) 성수씨의 리포팅으로 함께 해결되었습니다.

5월에 너무 많은 일을 겪다보니, 홈피 관리에 너무 소홀해진 것 같아 이것 저것 정리하는 시간을 가졌습니다.
날새고 출근합니다~!

Categories
Personal

공개된 MR 파일과 함께 부른 이적의 다행이다

지난주 가수 이적씨가 공개한 ‘다행이다’의 MR을 일주일간 듣다가
MR 반주에 맞춰 노래 부르며 동영상을 찍어봤습니다.

저와 노래방을 함께 가보신 분들이라면 모를까. 제가 상당히 느끼면서 (7) 부르는 스타일이라
소심하게 동영상을 160×120으로 스케일링 했습니다.

@movie:image=http://xrath.com/img/rath_piano_20070505.jpg,movie=http://desk.xrath.com/files/dahaengida_070520.flv,width=160,height=120@

악플은 메일로 보내주세요 :$

== 다행이다 MR은 이적닷컴에 공개되어있습니다. 여기! ==

Categories
Personal

KBS 해피투게더 출연

지난주 금요일인 5월 11일.
KBS 해피투게더 프렌즈에 인기가수 이기찬 친구로 나가게 되어 회사 휴가까지 내고 방송국에 갔습니다.

그리고 그저께인 5월 17일 방송이 나갔습니다.

하하하 -_- 5년넘게 홈피질 블로그질을 하며 유지했던 이미지가 한 큐에 붕괘됐습니다.

[굴욕의 순간]

인생 뭐 있나요. 사실을 숨겨서 좋을 것 하나 없고, 전 그저 사실을 미화시킬 뿐입니다. 매쉬업 포스트에 쓴 것처럼 사실은 숨기지 않되, 새로운 시각을 만들어내서 우울해지지 않을 뿐입니다.

바쁜 블로거들을 위해 태어난 미투데이도 나온 마당에, 저도 바쁜 미투데이인들을 위해
제가 등장한 해피투게더 시청 60분을 투자하기 어려운 분들을 위해 스냅샷 몇장과 2분짜리 FLV를 만들었습니다.

시작은 좋았어요. 저 근엄한(?) 자세

다행히 기찬이가 두번째로 찾아줬답니다. 저 때 표정관리 하느라 힘들었어요.

“반갑다 친구야” 를 외치고 나온 제 중학교 졸업앨범 사진이 나갔습니다.

그리고 맨 첫번째 사진에 나온 것처럼 굴욕을 -_-… 만끽했고 유재석씨가 직업을 물어봤습니다.

훌륭한 MC 유재석씨는 ‘컴퓨터 프로그래밍을 해요’ 에서 질문을 그치지 않았답니다.
“어떤 프로그램을 만드시나요?” 의 질문에.. 기찬아.. -_-

아무튼 두번째로 찾아줘서 여유로운 미소를 날리며 ‘찾은 친구’ 자리에 앉았습니다.

아래는 rainygirl님이 소개해주신 곰인코더로 편집한 2분짜리 동영상입니다. 즐감하세요 :$

@movie:image=http://xrath.com/img/ht20070517_front.jpg,movie=http://desk.xrath.com/files/happytogether.flv,width=480,height=360@

Categories
Personal

매쉬업에 대한 고찰과 긍정적인 사고방식

바쁜 블로거를 위해 태어난 미투데이로 포스트 꺼리를 미루지 않게 되고
어디에 써야할지 분류하기 애매한 장문의 내용들은 스프링노트에 적다보니
내 블로그 (원래 홈피였는데 언제.. 내 홈피가 블로그가 됐지 -_-) 포스트 rate 이 형편없어졌다.

샤워하고 잔다는 게, 샤워하면서 매쉬업에 대한 생각이 들면서 이런 것들은 RSS로 출판해도 된다고 판단되어 간만에 블로그에 포스트 날리기로 결심.

어디선가 본 내용인데, 어떤 행동에 대한 이유를 설명할 수 있는 것은 언제나 그 행동이 완료된 후라는 말이 있었다.
최근에 본 책인데, 최근에 찝쩍댄 책이 너무 많아서 -_- 정확히 책 제목을 기억할 수 없음을 안타깝게 느낀다.
대부분의 상황에서 이유가 결과를 만들지 않고 결과가 이유를 만든다는 것에 전적으로 동의하는 편이다.

언젠가부터 내 즐거운 회사, 놀이터 미투데이, 프리버즈의 힘으로 내게 ‘매쉬업 개발자’ 라는 태그가 붙었다.

원래 매쉬업 개발을 그리 좋게 보지 않았다. 위키피디아에서 매쉬업을 설명할 때도 꼭 web application 이란 용어가 들어가있기 때문이었다.
내가 웹개발을 잘하는 것도 아니고.. 웹 어플끼리 서로 묶는거는 옛날에 crawl & html parse 한거 뿐-_-?
최근 웹 2.0에 대해 조금 공부를 해서 그런지 문득 머리속에 Data Driven과 Hackability 같은게 떠오르지만, 내 생각이 아닌 것을 블로그에 포스팅하는 것은 내 블로그 RSS 구독자에게 스팸을 날리는 일이 될 것만 같아 자제하겠다.

난 원래 사건, 단어, 상황들을 그 상황이 일어나게 된 의도/계기와 상관없이 다른 사건, 단어, 상황에 끼워맞추는 것에 대단히 익숙하다. 특별한 이유가 있었던 것은 아니고 어렸을때부터 그랬다. 그런 행동들은 보통 주위 사람들로부터 “쟤 뭐야”, “무슨 말을 하는건지.. (진정 해석이 불가능)”, “캭캭 재밌네” 등의 반응을 불러온다.

이러한 정신(?)은 흔히 사람들이 말하는 ‘긍정적인 사고방식’을 손쉽게 조합할 수 있게 해준다.
고등학교 3학년때 수능공부하기 싫어서 읽었던 뇌내혁명을 보면서부터 처세/자기관리/철학 등의 책에 관심을 가지기 시작했는데, 뇌내혁명의 핵심은 “플러스 사고를 가지라” 는 것이다. 그 책에서 “플러스 사고를 가지라”를 독자들에게 품어주기 위해 사용하는 미끼는 건강이다. 그때도 지금처럼 무한체력에 관심이 많았기 때문에 난 쉽게 낚였다.

손쉽게 조합된 경우는 내게 정말로 많다. 주위 친구들도 이런 나를 신기하게 보는 경우가 많고, 최근에는 ‘넌 참 긍정적으로 생각할 수 있어서 좋겠쑤’ 라는 말을 많이 듣는다. 이런 말을 들으면 내 입장에서는 ‘이것은 긍정적으로 생각한게 아니라 실제로 그런거야’ 라는 말이 부글부글 끓긴 하지만, 아무튼 긍정적으로 해석하는 것은 본인에게 대단히 즐거운 일이다.

안좋게 보면, 진실(진실이란게 세상에 존재하는지 참 궁금하다만)을 왜곡하는 궤변가의 가능성도 짙고 타인과 무엇인가를 진지하게 토론할 때 서로의 시각이 현저히 다른 것으로 인한 어려움도 겪게 된다. 최근 MBTI::INFP 사람들이 주위에 많아져서 다행이지만, 심할 경우 이런 긍정적인 사고방식은 극심한 외로움과 타인에 대한 소심함(배려라는 가면을 쓰고)이란 side effect 를 부르기도 한다.

물론 일반적인 서로 다른 상황/사건/단어를 끼워맞추는 일은 긍정적인 사고방식이란 아름다운 면만을 가지고 있지는 않다. 좋은 일이 생겼을 때도 부정적으로 생각할 수 있게 해준다. 합리화의 달인이 된다 -_-
그럼 이쯤에서 나의 예제를 짚고 넘어간다.

– 소심해서 물건값도 깎지 못하는 나는 사고자하는 타겟 제품을 고르고 ‘얼마에요?’, ‘만원이요’, ‘주세요’, ‘네’ 로 끝낸다. 이것에 불편함을 느끼지 않는다. 바이어는 ‘나’고, 나는 물건값을 깎아야 하는 상황을 두려워하고, 깎을 경우 근거없는 죄책감이 엄습하여 그 이후 몇시간동안 정서적으로 불안해질 것이며 또한 물건값을 깎는 동안 시간을 소비해야 한다. 정서적 데미지와 낭비되는 시간을 고려할 경우 깎지 못한 5천원(예를들어)은 너무나도 그 값이 싸다. 시간을 구입한 거 아닌가?

– 2001년 어느날, 2년간 만들었던 수많은 소스코드들이 담겨있던 파티션을 날렸다. 짜증이 안났다고 하면 쌩그짓말-_-이고 형용할 수 없는 쇼크에 30분정도 패닉상태에 빠졌다가 사고를 바로 잡았다. “소스코드 그깟거 가지고 있어봐야 성장에 방해만 될뿐이야.”

– 내가 어떤 프로그램의 초안을 만들었을 때, 주위 사람들 모두가 ‘그게 뭐야’ 라고 피드백을 줬다. (무플 아닌게 어디야-_-) 그러고나서 완성했을 때 ‘와 정말 좋아요’ 라는 말을 듣는 것만큼 기분 좋은 일이 없다. 사람들이 쉽게 생각할 수 없었던 새로운 가치를 만들었다는 그 사실이 가장 기쁘다. 그러다보면 초안의 평가가 절하되었을때 더욱 전투력이 불탈 수 있다.

– 남들 다 하는 것을 나도 할 때면 불안해진다. 개미떼가 싫어 -_-

– 프로그램에서 버그가 생기면 좋아한다. 내가 만든 프로그램이 나에게 피드백을 줬잖아!

– 소스코드를 다 갈아엎어야 할 때 즐거워진다. 이 쪽팔린 소스코드들, 드디어 리팩토링할 명목이 생긴거다.

– 최근 지나친 약속과 스케쥴로 과음도 하고 바빠져 책읽기를 소홀히 했다. 그럴때마다 쇼펜하우어의 ‘다독은 자해다’ 를 떠올리게 되고 독서때문에 잠시 잃었던 균형을 되찾는다.

그러고보니 서로 연관성이 없는 것들에게 자주 노출되다보면 알아서 매쉬업러블 -_- 한 사고구조가 확립되는 것 같다. 무엇이 필요해서 이것 저것을 매쉬업하기보다, 이것 저것들을 보다보니 의도하지 않은, 필요로 했다는 것을 인지하지 못했었던 새로운 무엇이 떠오르는 그런 것.