Program/X-internet

X-internet curl

나이트로 2007. 6. 21. 09:46

  X-Internet 이라는 말은 2000년 IT조사기관인 포레스터리서치(www.forrester.com)가 처음 고안해 낸 개념으로 실행 가능한(eXcutable), 확장 가능한(eXtended) 인터넷이라는 의미로 사용했습니다.

팀 버너스 리가 월드와이드웹(www)을 개발한 89년으로부터 15년도 되지 않아 웹은 인터넷을 점령했고, 인터넷은 세계를 점령했습니다. 그러나 인터넷의 빠른 성장은 웹의 한계도 빨리 가져왔습니다. 웹의 기반인 HTML 언어가 멀티미디어 출력속도나 인터페이스 구현에 확실한 한계를 가지고 있기 때문입니다. ‘느리고, 단순한’ 웹의 한계를 뛰어넘을 대안이 필요했는데, X-Internet 은 그 대안으로 제시된 개념입니다.

부연설명을 드리면 ‘X-Internet’ 이란 실시간 양방향 통신과 유비쿼터스 컴퓨팅, 클라이언트 서버(CS)환경에 버금가는 풍부한 사용자 인터페이스를 웹 상에서 제공하는 기술입니다.

기존 C/S 환경의 풍부한 기능을 Web상에서 구현하고 사용자가 어떤 Device 환경에서도 Application을 구현할 수 있는 신기술이며 이 기술을 통해 사용자는 기존 Web Brower를 이용할 때와 달리 최소한의 데이터 전송으로 네트워크 운영 비용을 낮출 수 있고. 또한 C/S Application과 동일한 기능을 구현해 사용자 경험 및 고객 만족도를 향상시키고 업무생산성도 높일 수 있는 것이 가장 큰 장점입니다.

위에서 언급한 X-Internet의 의미는 아래와 같이 정의되고 있습니다.

1.executable Internet is
Intelligent applications that execute code near the user to create rich, engaging conversations via the Net.

2.extended Internet is
Internet devices and applications that sense, analyze, and control the real world

 

Curl은 미국 MIT(매사츄세츠 공과대학)의 연구 프로젝트에서 시작된 새로운 Web 언어입니다. 서버에 대부분의 처리가 집중되는 기존의 웹 어플리케이션과는 달리 클라이언트측에서 대부분의 처리를 실행하는 「리치·클라이언트」를 실현할 수 있는 점이 최대의 특징입니다. 실현 가능한 어플리케이션을 중심으로 Curl의 전모를 알아 보도록 하겠습니다.

요즘은, 모든 기업이Web 어플리케이션을 이용하고 있다고 해도 과언은 아닙니다. 고객에게 정보를 제공하는 Web 사이트에 머무르지 않고, 사내의 기간계나 정보계는 물론이고 BtoB(기업간 전자상거래)나 BtoC(소비자대상 전자상거래) 등의 다양한 시스템에서 Web 기술이 이용되고 있습니다.

한편, Web 어플리케이션의 과제가 표면화하고 있습니다. 처리가 서버에 너무 집중된다는 것이 가장 큰 문제점으로 거론되고 있습니다. 시스템 관리의 편리성이라는 관점에서 보면「클라이언트 측에는 Web 브라우저만 있으면 된다」라는 것은Web 어플리케이션의 아주 큰 장점입니다만, 그 때문에 클라이언트측의 “표현력이 약하고”, “조작하기 어렵고”, “응답 속도가 느리다” 등의 문제점이 부각되고 있습니다. [그림 1]

[그림1]
⊙ 현재의 Web 어플리케이션 시스템과 Curl을 이용한 Web어플리케이션 시스템비교
     


Web 어플리케이션의 개발자에게 있어서는, 여러가지 언어나 툴을 모두 잘 다루어야만 한다는 것은 결코 즐거운 일이 아닙니다. Web 페이지를 만들 때는 HTML이나 XML, 스크립트 언어를 기술하려면 JavaScript, 음성이나 화상을 애니메이션과 같은 동영상을 취급하려면 Flash, 본격적인 프로그래밍을 한다면 Java등을 구분하여 사용해야만 합니다. 프로그래밍의 슈퍼맨으로서 기대를 한 몸에 받는Web 어플리케이션 개발자는 분명 큰 스트레스를 받고 있을 것입니다.

어플리케이션의 “혁신”을 지원

Curl는, 현재 Web 어플리케이션이 갖고 있는 문제점을 한꺼번에 해결할 수 있는 차세대 Web 언어입니다. Curl를 사용하면, 클라이언트 측에서 처리의 대부분을 실행하는 「리치·클라이언트」를 실현할 수 있습니다. 이런 특징을 갖고 있음으로, 종래의 서버 중심형태에서 벗어나, 서버와 클라이언트가 분산 협조하는 새로운 Web 어플리케이션이 실현 가능하게 됩니다.

또한, Curl은 한가지의 언어로 HTML와 같은 텍스트 데이터의 구조화(포맷화)는 물론 멀티미디어·컨텐츠의 작성, 스크립트의 기술, 본격적인 객체 지향 프로그래밍에 이르기까지를 커버하고 있습니다. Web 어플리케이션 개발자는, 지금까지와 같이 여러 언어나 툴을 배우느라 고생을 하지 않아도, Curl 하나만을 습득하면 Web 프로그래밍의 모든 것이 가능한 구조로 되어있습니다.

Curl은 DARPA(미국 국방성 고등 연구 계획국)의 자금원조를 받아, 미국 MIT가 개발했습니다. 1998년에 MIT 출신자가 중심이 되어 「Curl Corporation」를 설립해 연구 성과를 「Surge」라고 하는 명칭으로 제품화하여, 2001년부터 제공하고 있다. 국내에서는 2003년 4월부터 QTI International이 Curl 제품을 판매하고 있습니다

아직 소개된지 얼마 되지 않아, 국내에 있어서의 Curl의 지명도는 아직 낮습니다. 유럽과 미국에서는 다음에 소개하는 독일 Siemens를 비롯하여, 기업 내 업무 어플리케이션으로서의 채용 실적은 이미 많습니다. 최근 일본과 한국에서도 Curl를 사용하여 업무 어플리케이션의 개발을 시작하는 기업이 속속 등장하고 있습니다. 기업들은 Curl에 의해, 종래의 Web 기술에서는 구현이 곤란했던 “혁신적인” 어플리케이션의 실현을 목표로 하고 있습니다.

지금부터는 Curl의 개요와 함께, Curl로 어떠한 Web 어플리케이션을 새롭게 실현될 수 있는지를 소개하기로 하겠습니다.

우선, Curl 를 실행하는 구조를 간단히 설명하기로 하겠습니다.
기본적으로는, 필요한 경우에 서버로부터Curl 어플리케이션(Curl 애플릿)을 다운로드 받아 실행하는 형태를 취합니다. 클라이언트 측에는, Curl의 실행 환경인 「Surge RTE(Run Time Environment)」를 인스톨 해 둡니다. Surge RTE는 Internet Explorer 또는 Netscape의 플러그 인으로서 동작합니다.[그림 2]

[그림2] ⊙ Curl을 이용한 어플리케이션 실행의 흐름
    

Curl 애플릿은, 통상의 Web 페이지와 같은 형태로 Web 브라우저로부터 URL를 지정해 호출할 수가 있습니다. 그러면 지정한 Curl 애플릿이 Web 서버로부터 클라이언트 머신에 다운로드 됩니다. 다운로드된 Curl 애플릿은 순차적으로, Surge RTE의 JIT(Just In Time) 컴파일러에 의해 컴파일 되고 곧바로 실행되어지며, 그 결과는 순식간에 브라우저에 표시됩니다.

Curl를 사용하면, 스탠드 어론의 데스크탑 어플리케이션과 같은 수준으로, 복잡한 데이터 처리나 조작을 할 수 있어 고도의 표현력을 요구하는 프로그램을 다운로드 가능한 형태로 작성할 수 있습니다. 더욱이 애플릿은 파일 사이즈가 작아 네트웍의 트래픽 절감에 큰 도움이 됩니다. 애플릿 사이즈가 작은 이유는 실행에 필요한 기능의 대부분을 Surge RTE가 제공하기 때문입니다. Curl 애플릿의 사이즈는 일반적으로 수십 KB, 좀 크다 하더라도 100 KB를 약간 넘는 정도입니다.

어플리케이션의 실행에 필요한 애플릿이나 데이터를 서버로부터 받고나면, 그 후의 데이터 가공이나 표시는 클라이언트 측만으로 실행할 수 있습니다. 이렇게 하면 응답속도가 빨라져, 사용자의 Waiting Time이 대폭 절감하게 됨으로, 업무 생산성이 향상됩니다. 서버와의 통신량이 적게 되므로, 네트워크의 부하도 경감효과도 큽니다.

다운로드한 Curl 애플릿은, 필요에 따라서 서버와 통신을 더 할 수도 있습니다. 서버로부터 데이터를 단계적으로 취득하는 것도 가능합니다. 통신 프로토콜로는 인터넷에서 주로 사용되는 HTTP나 HTTPS 는 물론이고, Web 서비스의 SOAP등도 사용할 수 있습니다.

Curl을 설치하고 실행하는데 있어서 필요한 서버와 네트워크는 Curl만이 특별히 요구하는 고유의 사양이 없기 때문에, 별도의 하드웨어나 서버 어플리케이션의 추가 없이 기존의 Web 시스템을 그대로 활용하여 필요한 부분을 단계적으로 Curl로 구축해 나갈 수 있습니다.

XML 데이터를 주고 받거나 Web 서비스를 사용하는 것으로, Curl 애플릿을 Java나 .NET등으로 작성한 서버·어플리케이션과 제휴하여 사용하는 것도 용이합니다. 이와같은 구조로 움직이기 때문에, 기존의 「서버 중심형」이 아니고, 「서버와 클라이언트의 분산 협조형」 Web 어플리케이션을 실현할 수 있는 것입니다.

하나의 언어로 모두 커버

앞에서도 잠깐 언급했던 대로, Curl은 하나의 언어로 Web 어플리케이션의 개발을 모두 커버할 수 있다는 것이 큰 특징입니다. [그림 3]은 다른 Web 언어들 (Tool도 포함)과 Curl의 비교를 보여줍니다.

[그림3] ⊙ Curl을 이용한 어플리케이션 실행의 흐름

HTML

Java
Script

Flash

Java,
C++

Curl

Text의 구조화(포멧화)와 레이아웃

O

O

빠르고 Interactive한 개발

O

O

O

실행시의 코드 작성

O

O

O

스크립트

O

O

O

2차원/3차원 그래픽스 및 애니메이션

O

O

O

복수 서버와의 통신

O

O

O

XML/SOAP에 의한 Web 서비스와의 연계

O

O

Web 언어의 주류라 할 수 있는 Java와 비교하면, Curl이 초심자에게 있어 문턱이 낮은 언어라 할 수 있으며, GUI의 표현력이 높고, 한편 프로그램(또는 애플릿) 코드를 컴팩트하게 할 수 있습니다. 어플리케이션의 종류에 따라 다소 차이는 있겠지만, 같은 기능의 어플리케이션을 Java와 Curl로 개발하여 비교한 경우, Curl의 코드·사이즈가 Java의 10분의 1 정도가 되었다고 하는 보고가 많습니다. Java는 기본적으로 서버측의 언어라 할 수 있습니다.

클라이언트측의 툴이라고 하면, 미국 매크로 미디어의 Flash를 떠올리는 사람이 있을지도 모릅니다. Flash는 HTML이나 JavaScript와 함께 사용해야만 하는 경우가 많고, 객체 지향 언어로서의 기능도 불충분한 점이 있습니다. 장표와 같은 디자인의 입력 폼이나 3 차원 컨텐츠를 사용하는 어플리케이션도 실현하기 어렵습니다. Curl은 Java나 C++와 동등한 객체 지향 언어이며, 한편 위와같은 어플리케이션의 구축에도 충분히 사용할 수 있습니다.

자, 이제 Curl 프로그램의 소스코드를 잠시 소개하도록 하겠습니다.[그림 4]

[그림4] ⊙ Curl의 소스코드
 : 텍스트 표시에서부터 객체지향 프로그래밍까지 하나의 언어로 구현 가능합니다.

① [Hellow World!]를 표시
   {curl 2.0 applet}
   {curl-file-attributes chracter-encoding = “euc-kr”}
      Hellow World!

②큰문자를 표시
   {Bbold Hellow World!}
       또는
    {text font-weight=“bold”. HellowWorld!}

③이탤릭 큰문자 표시
   {bold {italic Hellow World!}}

④레이아웃을 기술
   {Hbox
         {Frame width = 1in, height = 1in,
           background = “green”, vorigin = “top” },
         {Frame width 1in, height = 1in,
           background = “blue”. vorigin = “center”}}

⑤for 루프문
  {for x:int = 0 to 8 step 2 do
        {message.add x}}

⑥독자 클래스 정의
   {define-class public Adder
        {field total:int = 0}
        {field max-limit:int = 100}
        {field min-limit:int = -50}
        {method {add x:int}:void
            set setlf.total = self.total + x}}

①은 「Hello World!」라고 하는 캐릭터 라인을 브라우저상에 표시하는 코드입니다. 선두의 두 줄은 Curl의 개발 환경인 Surge IDE가 자동적으로 붙이는 선언으로, 개발자는 표시하고 싶은 텍스트만을 쓰면 됩니다.

Curl에서는, 여러가지 처리나 정의를 모두 다음의 구문을 기본으로 하여 구축합니다.
{처리명 인수 1, 인수 2,…, 처리 대상}

[그림 4]에서 알 수 있듯이, Curl의 프로그램은 기본의 문장(식)을{ }즉 curly bracket(중괄호)로 둘러쌓습니다. Curl 이라고 하는 명칭은 여기서 유래되었습니다.
텍스트를 굵은 글씨(bold)로 표시하는 경우는 ②에 쓴 것처럼 하면 됩니다. 여러 가지 처리를 한번에 실시할 때는, nesting해서 기술할 수 있습니다. 이탤릭체로, 굵은 글씨로 표시하고 싶을 때는 ③과 같이 씁니다.

Web 페이지의 레이아웃을 기술할 때는, 컨테이너로 불리는 오브젝트를 생성하는 처리를 사용하여, 그 안에 배열할 컨텐츠를 기술합니다. ④가 그 예로서, HBox는 그 안의 컨텐츠(이 경우는 Frame를 2개)를 가로방향으로 배열하는 컨테이너입니다. 조건 분기나 반복등의 제어도, 같은 형태의 구문으로 기술합니다. for 루프의 구문을 ⑤에 나타냅니다. 또한⑥은 객체 지향 클래스를 독자적으로 정의한 예입니다.

이 외에도 , Curl은 사용자의 조작성을 높이기 위한 여러 GUI 컨트롤 부품을 준비하고 있습니다. 이 부품을 사용해 개발할 때는, 소스·코드를 직접 입력하여 만들 수도 있고, Curl의 개발 환경인 「Surge IDE」가 제공하는 VLE(Visual Layout Editor) 툴을 사용할 수도 있습니다.[그림 5]

[그림5] ⊙VLE(Visual layout Editor)의 화면
 : Curl 애플릿을 Visual Basic과 유사하게 작성합니다.

    

VLE를 이용하면, 마이크로소프트의 개발 툴인 Visual Basic등과 같이, 화면상에서 비주얼로 부품을 Copy and Paste 하면 Curl의 소스코드를 자동 생성하는 형태로서의 개발이 가능하게 됩니다.