태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
BLOG main image
Not so Simple World (251)
이생각 저생각 (92)
이클립스 RCP (10)
Books (15)
잊기전에 회고 (7)
Better SW Development (83)
node.js (OctoberSkyJs) (32)
[뭘, 이런걸 다?] (12)
bảng giá máy tính xách tay
bảng giá máy tính xách tay
Beer Brewing Tutorials
Beer Brewing Tutorials
harga alat kesehatan spirometri
harga alat kesehatan spirometri
air max pas cher
air max pas cher
veste parajumpers
veste parajumpers
«   2020/06   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
972,575 Visitors up to today!
Today 0 hit, Yesterday 13 hit
rss
tistory 티스토리 가입하기!
Recent Entries
2010. 10. 25. 23:28
JAVA 7은 나올때가 한 참 지났다. 왜 이리 오래 걸리는건지 이해가 잘 안가지만, 그래도 이젠 유저들의 숫자가 어마어마하고 다양한 집단의 다양한 이권이 왔다갔다 하는 상황이라는 걸 따져보면 조금은 답답한 마음이 누그러 들기도 한다.

현재 자바는 성공한 젊은 벤처기업 SUN에서 노련한 장사꾼 오라클의 손으로 넘어가 있는 상태다.

잠깐! 말을 이어가는데 짤라서 미안한데, SUN이 젊은 벤처라고? 아니지 않나?

음.. 어떻게 생각할런지 모르겠지만, 외국에선 SUN은 성공한 젊은 벤처기업의 이미지가 짙다. 구글이나 페이스북, 유투브, 플리커등의 인터넷 서비스 벤처와는 또 다른 의미로 벤처기업이 맞다. 자, 하려는 이야기는 이게 아니니까 이건 잠깐 넘어가자.

어디까지 이야기 했더라? 아! 맞다! 현재 자바는, 취미가 요트와 비행기 수집인 세계 6대 부자에 성격이상한 낭비벽 래리 앨리슨의 손에 있다. 오라클의 그 간의 행보를 보건데, 비싼 돈 주고 썬을 인수했는데, 핵심 자산 중 하나인 자바를 그냥 놔둘리 없다. 아마 이런저런 눈치를 보고 있을 것이 분명하다. 자바를 버전7로 올리는것 보다는 자바가 어떻게 하면 돈이 될지를 사람시켜 파고 있을지도 모르겠다.

그런데 사실 IT시장에서 유독 두드러지는 원리인 강자독식의 관점에서 놓고 봤을때, 지금은 자바로 돈을 어떻게 만들어 보겠다는 생각보다는 시장자체를 더욱 견고하게 만들어 버리는편이 낫다.

 내가 만약 돈 좋아하는 앨리슨이라면 자바에 다음과 같은 세 개의 기능을 추가해서 당장 대대적인 홍보와 함께 자바 7을 내놓을 것이다. 이름하여 악당의 자바7 (Villain's Java 7) 이다!

1. Objective-C와 C#에 있는 Properties 기능
class TimePeriod{
    private double seconds;
 public double Hours
{
 get { return seconds / 3600; }
 set { seconds = value * 3600; }
}
}
class Program{
 static void Main(){
TimePeriod t = new TimePeriod();
t.Hours = 24; // setter 자동 호출. 3600 곱하기가 일어나서 저장된다.
System.out.println("Time in hours: " + t.Hours); // getter 자동 호출
}
}
[C# 예제 변형]

 2. 왠만한 스크립트 랭귀지들이 가지고 있는 cloure기능
var printMessage = function (s) {
 
var f = function () {
    
console.log(s + ' was pressed.');
    }

    return
f;
}

buttonA.onClick = printMessage('A');
buttonB.onClick = printMessage('B');
buttonC.onClick = printMessage('C');
[클로저의 여러가지 사용방법 중 한가지. 함수형 언어와 명령형 언어의 중간 선택]

3. Meta Programming 강화를 위한 일급함수 기능 (= 함수 그 자체를 변수처럼 할당하거나 인자로 넘길 수 있는 기능)
f( x ) {
    return x + 3
}

g( function, x ){
    return function(x) * function(x)
}


print g(f, 7)

Python 예제 변형. print g(f, 7) 결과로 100 이 찍힌다.

왜 이런 기능을 추가하는 것이 악당의 자바7이란 말인가? 나쁘지 않지 않나?

현재 판도를 보면 그렇지 않다. 한동안 자바가 숨죽이고 있는 동안 다른 대안언어들이 자신만의 색깔을 찾아나가고 있는 상황이기 때문이다. LISP계열, JVM위에서 돌아가는 언어들(Clojure, Scala, Groovy), RUBY, Python 등등이 살짝 살짝 세력을 높여가고 있는 추세이다. 그 세력 증가에는 자바에서 벗어난 자바개발자들이 상당수 차지한다. 지루하고 답답하고, 새로운 공기와 기능을 찾아서!

크게 장사를 하려면 시장이 크고 그 안의 사람이 많아야 한다. 지금 당장 자바로 돈을 벌려고 하면 엄청나게 욕을 먹을 테니 우선은 자바 시장을 더 키워놓는 것이 중요하다. 핵심자사인 JVM과 자바를 적극 활용해서 플랫폼안의 개발자수를 늘릴 필요가 있다.

따라서 시장을 지배하고 다른 언어들을 죽이고자 한다면 위 기능 세 개만 추가하면, (논란은 있겠지만) 왠만한 대안 언어들은 다들 대안이 채 되기도 전에 힘을 잃을 것이다.

JUnit이 한동안 버전업이 없는 동안, TestNG가 좋은 기능을 여럿 소개했지만, JUnit4로 넘어오면서 TestNG의 좋은 기능 대부분의 기능을 흡수한 JUnit은 현재 자신만의 수성을 이뤄냈다.

마찬가지로 위 세가지 기능을 추가한다면 자바는 왠만한 언어들을 고사시키고 더더 세를 늘려 살아 남을 것이다.

다음은 왜 세가지 기능을 꼽았는지에 대한 이유다.


1. Objective-C와 C#에 있는 Properties 기능
getter, setter를 직접 만드는 건 구시대 적이다. 귀찮다. 많은 언어들이 Properties기능을 지원해 주고 있다. getter 나 setter가 있으면 해당 메소드를 통하고, 없다면 다이렉트로 변수에 접근한다. 자바빈을 만들때도 아주 편리하다. C의 구조체를 사용하던 사람들에게도 환영받을만 하다.

 2. 왠만한 스크립트 랭귀지들이 가지고 있는 closure기능
자바 유저들을 루비, JRuby, Groovy들의 유혹으로부터  격리시킬수 있다. 그리고 자바가 이들로 부터 매번 공격받던 부분 중 커다란 부분 하나가 해소될 수 있다. 게다가 이미 JAVA5부터 지원해 주고 있는 enhanced for loop와 함께 쓸수 있게 만든다면, 루비의 블럭(block)을 거의 유사하게 만들어 낼 수 있을 것이다.

3. Meta Programming 강화를 위한 일급함수 기능
많은 함수형 언어들의 장점으로 내세우는 기능들을 무색하게 만들수 있다. .net은 이미 람다계산(Lamda Calculus)을 지원해 주고 있다. 언어가 복잡해 지고 어렵고는 크리티컬하게 중요한 문제가 아니다. 사람들이 이 기능을 얼만큼 쓸건지도 고민할 필요 없다. 단지 지원한다는 것만으로도 다양한 응용 방법을 찾아낼 것이고, 함수형 언어들이 타격을 받을 것이다. 특히 스칼라는 직격에 가까울 것이다. 커링(curring)이나 트레이트(trait)를 배우기 위해 고생했던 사람들이라면 이정도로도 충분히 자바에 만족을 느낄 것이다.

한마디로 요약하면, 프로그램 언어 시장 청소 및 자바언어 사용자를 더더욱 견고하게 끌어들이기. 시장에서 정상의 자리를 유지하기가 목표인 것이다. 추가된 세 가지 기능만으로도 그간 자바에 불만을 느끼고 새로운 언어를 찾아 다니던 대안 언어 탐험가들에게 홈커밍데이를 만들어 줄 계기가 될 것이고, 자바는 여러 대안언어들의 킬러 랭귀지가 될 것이다. (못된 자바가 되겠지. evil java?)

현재의 자바도 복잡하다고 뭐라 하는 사람이 많지만, 안쓰면 그만이다. 기능이 많은데 안쓰는 거랑, 없어서 못쓰는 거랑은 또 다르다. 새로운 전자제품에 내가 쓸 수 있는 기능이 더 많아서라기 보다는 단지 기존 제품에 없는 다양한 기능이 더 많다는 이유만으로도 새 제품은 내 손안의 물건보다 매력적으로 보이는 법이다. 

내막을 아는 사람들에겐 욕을 먹겠지만 괜찮다. 그렇게 많이는 모를 것이다. 단지 더 많은 자바 개발자를 위해 새 기능을 추가했을 뿐 아닌가?  시장 경제란 원래 잔인하다는 점도 위안이 된다.

얼마전 자바원에서 오라클에서 JAVA 7을 놓고 이런저런 이야기가 오고간걸 안다. 하지만 아직도 자바 7은 어떻게 나올지 모르겠다. 그냥 재미 차원에서, 악당의 자바 7이 된다면 어떤 모습으로 만들까 하고 생각해 봤다.

:)


자바지기 | 2010.10.26 10:14 | PERMALINK | EDIT/DEL | REPLY
정말 제시한 세가지 기능만 추가하더라도 자바에 불만을 가지는 많은 개발자들이 만족하면 살텐데 말이야. 나도 최근에 Scala를 공부하고 있는 것이 다른 언어의 새로운 개념을 이해하고 활용해 보고자하는 욕심이 많으니 만약 자바에 도입이 된다면 좀 더 적극적으로 활용할 수 있지 않을까 생각되네..

재미있는 글이었다.
doortts | 2010.10.27 14:00 | PERMALINK | EDIT/DEL
와우! 100만년만의 형님 댓글이네요!

2차 클베 무사오픈했다는 글은 봤습니다.
그리고 스칼라 스터디도 하신다니, 역시 열정이!!!

조만간 객원으로 한번 놀러 갈게요.
그때 뵈요
Favicon of http://blog.outsider.ne.kr Outsider | 2010.10.26 14:12 | PERMALINK | EDIT/DEL | REPLY
제가 래리 앨리슨이라면...



맥북에어랑 아이패드를 사고 싶;;;(응?)
Favicon of http://blog.doortts.com doortts | 2010.10.27 14:01 | PERMALINK | EDIT/DEL
요트와 비행기 수집이 가능한 캐릭터 치군, 넘 약한데~
Favicon of http://blog.outsider.ne.kr Outsider | 2010.10.27 14:41 | PERMALINK | EDIT/DEL
요트랑 비행기는 별로 필요가 없어서요 ㅎ
나무귀신 | 2010.10.27 15:11 | PERMALINK | EDIT/DEL | REPLY
제시된 기능들은 이미 몇년 전부터 Java진영에서 이야기가 나오고 있는 것들.
Java7에 대한 동향을 확인하심이.

closure는 java7에 포함하기로 했다가 java8로 넘어갈 기세임.
Favicon of http://blog.doortts.com doortts | 2010.10.27 17:34 | PERMALINK | EDIT/DEL
네. 알고 있습니다. 그럼에도 몇년째 지지부진하니 답답하다는 생각이 들곤 합니다. 어떨때는 차라리 스티브잡스식의 진행방식도 나쁘진 않다는 생각이 들 정도로 말입니다.

방문해 주시고 의견 남겨주셔 감사합니다.
좋은 하루 되세요. :)
Favicon of http://nephilim.tistory.com nephilim | 2010.10.31 12:48 | PERMALINK | EDIT/DEL | REPLY
상상을 해본 건 알겠는데, "청소 대상인 비주류 언어"들을 공부하면서 많은 걸 배운 입장에서, 당신 말대로 된다고 해도 자바에게 양분이 된 많은 내용들을 제공한 여러 언어들, 그런 다양성들이 단지 "시장 경제의 잔혹함"에 쫓겨난 거라고, "주류가 독점하니 철거민 쫓겨나듯 쫓겨나야지!" 이런 판단은 슬프지 싶어.

그리고 언어가 복잡해지고 어렵고는 크리티컬하게 중요하지 않다면(정말?) 함수를 first class로 다루면 한 번쯤 고려하게 되는 커링은 있으면 왜 안되는거여? 그리고 루비의 mix-in을 모방한 트레이트는 함수가 first class인 것과 무슨 상관인지 궁금해 지는군. 결국 그들도 글의 주장대로라면 추가해놓고 안쓰면 그만인거 아니여? 더구나 복잡해지고 어렵고가 크게 중요하지 않다면(guy steele의 OOPSLA 발표라도 드밀고 싶군) 더더욱! 근데 그거 생각보다 중요한 문제일텐데 말이지~

closure나 function type이 있음 좋다고는 다 생각하지만, 정말 자바에게 있어야만 하는지? 그렇다면 어떻게 있어야 하는지는 생각보다 어렵고 신중해야 할 문제라는 생각이 들어. (이 문제는 "있어야 했고 있으면 좋은" 기능인 Generic이나 Autoboxing 때문에 더 골치가 아프기도 하다는... 개인적으로는 BGGA가 그대로 들어왔다면 '새로운 자바는 외계어에요~'가 대세였을거라는 생각이 듬) 더구나 함수형 언어의 특징 도입은 향후에도 많은 영향을 미치는 big decision이라 그냥 봐도 어려워. 기다리는 입장에서 답답한 건 맞지만. 전혀 별개의 기능을 그냥 갖다 놓으면 되는 건 아님!

여하간 자바에 있음 좋지! 그러면서 청소도 하고 (응?) 그런데 Joshua Bloch이 closure 논쟁을 언급하면서 다음과 같은 말도 했더라구.

"We should keep in mind that there is already a fine programming language for the JVM the offers both of these things, and Java interoperability to boot: Scala"

무조건 끌어 안는게 능사만은 아니라는 거지. 그리고 스칼라가 (마냥 좋은 것도 아니지만) 쓸데없이 많은 기능들을 믹서기에 넣고 생각없이 그들을 섞은 건 아니라구, 어차피 비주류인데 쫓겨나면 그만이지! 보다는 다양성을 존중해주길. 불만 많은 악당의 이름을 빌린 상상이더라도 말이야. 비주류이지만 자바의 다음 행보에 많은 참고가 되고는 있잖아.

아프다더니 함수형 언어 들입다 공부했군! 글(상상)이 자극적이기에 댓글도 길었어. 글고 건강 좀 챙기라고.
Favicon of https://doortts.tistory.com doortts | 2010.10.31 18:56 신고 | PERMALINK | EDIT/DEL
여어~ 이봐~ 혹시, 나한테 따지는건 아니지? :)

나도 자바7이 그렇게는 안나왔으면 좋겠다는 뜻이야. '공생'과 '다형','다문화'가 공존했으면 하거든.
하지만 현재 자바가 고도의 경제 전략적인 집단 손에 들어갔으니 걱정스러워서 말야.

:) 안부인사 고마워~ 얼릉 나아서 또 객원으로 놀러갈게~

ps. 의사말로는 '대상포진'이 재발했었다고 하더라구. 고생이 심했겠다면서 의사가 나한테 위로를...-,-;;;
Favicon of http://nephilim.tistory.com nephilim | 2010.10.31 20:06 | PERMALINK | EDIT/DEL
(사실 처음 읽고서는 이해를 잘못했음..)

그냥 글 자체에 하고 싶은 이야기를 좀 해보려 하던 거였는데,
경계를 넘나들었나 보군. 젝일슨 몰입도가 높다고!
Name
Password
Homepage
Secret