C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[17863] 자바와 모바일의 미래
nansama [nansama] 4202 읽음    2010-03-03 11:33
저는 자바를 좋아하지 않는데요
우선 가상의 하드웨어(JVM)를 위한 코드를 만든다는 점이 양날의 검 같은거라고 봅니다.
다양한 하드웨어에서 호환성을 유지 한다는것 물론 엄청난 매력 이지요
하지만 실제로 native code 에 비해서 느릴수 밖에 없는 구조에서
구글을 포함안 안드로이드 진영이 자바를 선택 한데 대해 약간의 실망감이 없진 않습니다.
C언어는 원래가 시스템 프로그래밍을 위해 고안 되었고 가장 하드웨어에 적합한 언어라는걸
아실 텐데요 저는 이점이 애플이 가진 또 하나의 장점으로 생각 합니다.
애플 아이폰에선 ObjectiveC 라는 C언어에 객체지향성을 가진 플렛폼을 살짝 덧입힌 구조를
채택 하고 있습니다. C언어가 베이스다 보니 다양한 하드웨어구조에 소프트웨어를 맞추기가 어려워
소량의 제품에 완성도를 극대화한 전략을 추구 한다고 여겨 지구요,
아무튼 저도 한때 모바일 개발을 해본 경험상 퀄컴의 BREW가 C언어 베이스었고 SKVM이나 LG자바등
자바 베이스의 개발 하는 것도 봤지만 결과는 BREW가 훨씬 빠르고 효과적이구나 라고 고정 관념에
사로잡혀 있고 그것이 지금도 그다지 깨지지는 않는것 같습니다.
자바로 만든 어플리케이션이 휴대폰도 1Ghz를 넘나드는 지금의 환경에선 문제 되지 않는다라고 생각
하실 수도 있는데요
대부분의 모바일 CPU들은 PSP같은 MIPS 계열 또는 퀄컴 스넵드레곤 같은 ARM 계열 CPU로 양분 할수
있을것 같은데요. MIPS나 ARM 계열의 native code 를 직접 작성 하는것과 java byte code를 생성 해서
그것을 해석 하는 펌웨어를 탑제 하는것 또는 java byte code를 직접 해석하는 기능을 cpu에 내장한
Java Processor ( 실제로 10여가지의 Java Processor가 개발 되었음 )가 시도 되었지만
성능이나 가격 등에서 기존 CPU에 비해 많이 부족한것으로 앏니다.

자바의 컴파일 실행 과정을 살펴보면
-----------------------------------------------------------
outer:
for (int i = 2; i < 1000; i++)
     {
          for (int j = 2; j < i; j++)
          {
             if (i % j == 0)
             continue outer;
          }
          System.out.println (i);
     }
-----------------------------------------------------------
위의 코드를 자바로 컴파일하면 다음의 의미를 가지는 java byte code가 생성 됩니다.
-----------------------------------------------------------
  0:   iconst_2
  1:   istore_1
  2:   iload_1
  3:   sipush  1000
  6:   if_icmpge       44
  9:   iconst_2
  10:  istore_2
  11:  iload_2
  12:  iload_1
  13:  if_icmpge       31
  16:  iload_1
  17:  iload_2
  18:  irem
  19:  ifne    25
  22:  goto    38
  25:  iinc    2, 1
  28:  goto    11
  31:  getstatic       #84; //Field java/lang/System.out:Ljava/io/PrintStream;
  34:  iload_1
  35:  invokevirtual   #85; //Method java/io/PrintStream.println:(I)V
  38:  iinc    1, 1
  41:  goto    2
  44:  return
---------------------------------------------------------------
Java의 어셈블리 코드 같은 것인데요 위의 코드를 ARM 또는 MIPS cpu가 직접 해석 할수 있는
native assembly code로 변경 해서 실행 하는 구조 입니다.
아무래도 성능상 손해를 보게 될 것 같내요

그래서 최근 삼성이 바다라는 이상한 모바일 플렛폼을 만든것에 대해 불만이신 분도 계시겠지만
전 적어도 그것이 C언어 베이스 라는 점으로 인해 지금 당장은 애플이나 안드로이드 진영에 비해
보잘것 없다 해도 애플에 대항할 강력한 삼성의 무기가 될수도 있겠다 생각 했습니다.
잡담이 길었내요,.,.
크레브 [kkol]   2010-03-03 12:30 X
삼성의 바다가 C언어 베이스라고 강력한 무기가 될 수 있겠다는 의견은 쉽게 수긍이 안가는군요 ^^
가능성이란 확률 개념이라면야 모든게 가능하겠지만..
C언어 베이스의 쓰레기가 될 가능성이 크지 않을까요
북한도 리눅스기반 OS 개발(?) 하는데 7년정도 투자했다는 기사를 보면..
그 OS의 정체나 성능을 떠나서
오히려 남한보다 소프트웨어에 대한 인식이 발달된것 같습니다.
Lyn [tohnokanna]   2010-03-03 12:32 X
Objective-C 도 일종의 가상머신 위에서 돌아간다고 봐야할지도..

가비지콜렉터가 돌거든요
Lyn [tohnokanna]   2010-03-03 12:33 X
그리고 C 베이스던 아니던...

바다가 멀티OS를 지원 하려면 방법은 둘중 하나죠... 가상머신이거나 QT같은 중립 라이브러리거나.
Lyn [tohnokanna]   2010-03-03 12:46 X
VM 이라고 언어가 C면 안될 이유는 전혀 없으니..
소지영(몽인) [neonim]   2010-03-03 13:49 X
음...
안드로이드는 JVM이 아닌 DalvikVM을 사용 하고 있습니다.
Register Based의 달빅은 Stack Based의 자바VM과 bytecode도 완전히 다른 VM이라 자바라고 부르기 좀 거시기한 면이 있죠...


해롱해롱 [seaeast2]   2010-03-03 15:18 X
저는 전혀 다르게 생각하고 있습니다.
C와 java의 영역이 엄연히 다릅니다.
현재 PC에서도 자바와 C의 시장은 많이 차이가 납니다. 자바로 고성능 3D게임을 개발한다거나 C로 대규모 기업용 소프트웨어를 만드는건 여러모로 비효율적이죠.

모바일에서도 동일합니다. 각각의 하드웨어에서 필요한 언어를 맞추어서 쓰면 됩니다. 그러므로 자바가 딱히 모바일에서 불리하다는 생각은 들지 않습니다.
깔쌈보이 [handsome]   2010-03-03 16:49 X
언어를 가지고 구분을 짓는게 모바일에 JAVA를 탑재하는 것보다 더 위험한 판단인것 같습니다.
언어는 언어일뿐, 그 언어의 컴파일러와 구동환경이 어떠냐에 따라 많은 차이가 있습니다.
만약 JVM과 같은 VM에서 동작하는 C언어가 있다면 그래도 C언어가 좋다고 할 수가 있을까요?

언어가 문제가 아니고 주어진 컴파일러에 의해 탄생된 결과물들이 어떤 환경으로 구동되느냐에 따라 논의해야 하는게 아닌가 합니다 ^^;
Lyn [tohnokanna]   2010-03-04 00:40 X
C와 Java 는 언어일뿐 그게 Natvie 냐 VM 이냐를 가르는건 아니죠 ㅡ.ㅡ

C++과 Delphi Language(Object Pascal) 은 Native 언어지만..
C++.net, Delphi.net 은 분명 Delphi, C++라이브러리를 쓰고, 코드레벨에서 공유가 됨에도 불구하고 VM에서 돌아가죠..
만약 언어레벨의 확장이 있어서 다른언어라고 한다면... C++Builder 는 C++이라고 할 수 없겟죠. 많은 확장이 들어가 있으니..

물론 VB->VB.net은 호환성이 전혀 없으니 다른언어라고 보지만
김호광 [testcode]   2010-03-04 10:22 X
자바냐 C냐는 중요하지 않습니다 웬만큼 요즘 하드웨어가 좋아져서 그 차이를 가쁜히 뛰어 넘습니다. 바다는 하드웨어 마인드로 마켓플레이스를 만들겠다는 것이라 비판이 많은 겁니다
정영훈 [allinux]   2010-03-04 23:57 X
제가 보기에는 너무 한쪽면만 생각하여 작성한 글이라고 생각합니다.

모바일 플랫폼으로 자바는 불만족스러운데 그 이유가 '성능' 이다라는 논지인데...프로그래밍이라는 행위가 단순히 성능만 좋으면 된다면 저급언어(어셈블리어)로 해야할 것 입니다.
과거부터 지금까지 주류라고 선택받은 언어들를 보면 중요한 것은 성능보다는 생산성이고 지금에 와서는 각 필요에 따라서 언어를 취사 선택하고 있습니다.
즉 하나의 프로젝트에 다수의 언어를 함께 사용하는 하이브리드 환경입니다. 이유는 성능, 생산성 둘 다 적합한 수준에서 트레이드 오프 관계를 해소하겠다는 뜻 입니다.
안드로이드 같은 경우도 개발환경이 두가지로써 네이티브 환경, 자바 환경 둘 다 제공합니다.

결론적으로 장점을 보고 언어를 선택하지 단점을 보고 선택하지 않습니다.
nansama [nansama]   2010-03-05 12:32 X
어떻게 말씀하셔도 자바는 임베디드 시장에 어울리지 않는다고 생각 합니다.
근거로는 http://www.dt.co.kr/contents.htm?article_no=2009071302011860744002 뉴스에 의하면
[개발 언어 조사에서는 여전히 C언어의 강세가 두드러졌습니다. 임베디드 SW 개발에 사용된 언어를 조사한 결과 5개 지역 모두 C언어를 사용하는 비율이 가장 높게 나타났습니다. 미국과 유럽을 중심으로 C++ 언어도 폭넓게 사용되고 있습니다. 반면 현재 기업용 SW 개발에 널리 사용되고 있는 자바는 5개 지역 모두 채 10%가 되지 않았고 특히 미국의 경우 단 1%만이 프로젝트에 이용하는 것으로 조사됐습니다.]
자바가 탄생목적과는 달리 임베디드 환경에서 고전을 면치 못하고 있다고 생각되며 임베디드의 꽃이라 할수 있는 스마트폰 시장에서 안드로이드가 과연 성공할지 지켜봐야 할 것 같습니다.
정영훈 [allinux]   2010-03-06 04:32 X
생각은 자유입니다.
생각과 진실이 합치하는 경우가 가장 이상적일텐데 it쪽은 그렇지 못한 경우도 많이 있으니까요.
저는 개인적으로 windows 가 pc운영체제로 어울린다고 생각하지는 않거든요.

+ -

관련 글 리스트
17863 자바와 모바일의 미래 nansama 4202 2010/03/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.