Archive for the ‘Pragmatics’ Category.

ApplicationDomain 사용하기

ApplicationDomain이란 클래스, 함수, 상수 등의 정의를 저장해두는 공간입니다. 간단히 기본을 복습해봅시다.

  1. 하나의 AD 안에서 클래스, 함수, 상수의 정의는 고유한 문자열로 구분되는데, 이 문자열은 패키지+클래스(함수) 명입니다.
  2. 하나의 AD에 A라는 클래스 정의가 로딩된 경우 이 AD가 유효한 기간 동안 이 AD내의 클래스로부터 생성된 인스턴스도 유효합니다.
  3. 만약 실행 중인 어플리케이션에서 A라는 클래스로부터 생성된 인스턴스가 하나도 없고 미래에도 생성되지 않는다면 AD안의 클래스 정의도 삭제할 수 있습니다.

하지만 이 정도를 이해했다고 GC를 일으키는 AD구조를 사용할 수 있다고 생각하지는 않습니다. 정말 실전에서 AD의 GC를 바란다면 더욱 깊이 생각해봐야 합니다.
Continue reading ‘ApplicationDomain 사용하기’ »

시작점 클래스에 대해

시작점 클래스란 어플리케이션에서 최초에 시스템이 실행하는 클래스를 말합니다. 진입 클래스라고 하고 자바의 키워드 그대로 메인 클래스라고도 자주 부르죠.

만일 시작점이 되는 클래스가 없다면 모든 OOP언어는 최초에 클래스를 실행시킬 방법이 없습니다. 따라서 크게 두 가지로만 클래스를 분리하라 하면 시작점 클래스와 그 외의 클래스로 나누는 것이 타당합니다.

시작점 클래스가 특별한 이유는 모든 클래스는 결국 또 다른 클래스에 의해 생성되거나 사용시점이 정해지는데 비해 시작점 클래스는 시스템이 실행시키고 초기화한다는 점입니다. 이러한 특성 때문에 시스템이 어떻게 시작점 클래스를 호출하는지, 그 당시 주어진 상황은 무엇인지 등을 매우 상세히 이해해야 합니다.
Continue reading ‘시작점 클래스에 대해’ »

플래시 프로젝트 생성하기

이전 글에 이어서 이번에는 프로젝트를 생성하는 부분만 보다 깊이 생각해보겠습니다.

프로젝트를 생성하는 것에 대해서는 다양한 주제가 있습니다. 어쩌면 개발할 때 무엇을 프로젝트로 해야 하는지 정확하게 이해하지 못해서 개발이 엉망이 경우가 많습니다. 이러한 문제를 해결하고 프로젝트에 대한 바른 개념과 사용을 해보자는 취지에서 개인적인 생각을 적어가 보겠습니다.

프로젝트란?

보통 어떠한 단어가 갖는 의미는 사전적인 의미라고 불리는 일반적인 의미가 있습니다. 하지만 모든 단어는 특정 상황에서 별도로 해석됩니다. 여기서 말하려고 하는 프로젝트를 정확하게 표현하자면 ‘빌더에서 플래시 관련 어플리케이션 또는 라이브러리를 개발할 때 생성해야 하는 이클립스 프로젝트’ 라는 거의 고유명사에 가까운 단어입니다. 따라서 머릿 속에 한 가득 자리 잡은 일반명사로서의 프로젝트는 완전히 잊어 주세요.

그럼 질문을 바꿔볼까요.

  • 언제 이클립스에서 프로젝트를 만들어야 할까?
  • 어떤 종류의 프로젝트로 만들어야 할까?
  • 다른 프로젝트와의 관계 설정을 어떻게 해야할까?

이런 식의 질문을 해결하는 게 이클립스 프로젝트를 이해하는 중심이 될 듯합니다.
Continue reading ‘플래시 프로젝트 생성하기’ »

플래시 어플리케이션 개발하기

개발자라면 모두 자기 만의 프로젝트관리 방법이 있을 거라 생각합니다. 이번에 다룰 주제는 하나의 어플리케이션을 개발하기 위해 어떻게 준비하고 진행해야 하는가? 에 대한 내용입니다. 개인적인 경험을 정리한 것이므로 절대적인 기준 같은걸 설명 드리거나 일반론을 말씀 드리는 건 아닙니다. 단지 어떻게 하는 게 효율적이고 안정적인 어플리케이션 작성에 도움이 되었다 라는 저의 요령 같은 걸 공개한다고 생각해주시면 되겠습니다. 꼭 제 글이 아니라도 보다 쾌적하고 생산성 높은 작업을 위해 한번 쯤 프로젝트의 실질적인 프로세스를 생각해보시는 건 언제나 큰 도움이 될 듯합니다.

단지 실무적인 내용을 정리하는 글이다 보니 다른 글처럼 초보자에 대한 깊은 배려는 없을지도 모릅니다 ^^;

 

Continue reading ‘플래시 어플리케이션 개발하기’ »

API에 대해

API의 의미

API 란 Application Programing Interface 입니다. 왜 구지 이걸 따로 설명해야하는지 처음엔 인식하지 않고 있었는데, 직원 교육을 시키다보면 이 개념을 이해하지 못해서 여러 가지 문제가 생긴다는 사실을 알게 되었습니다. 그래서 API 에 대해 보다 깊히 생각해보도록 하겠습니다. 일단 저 API는 3개의 단어가 약자로 구성되어 있습니다. 그 의미를 하나씩 확인해봅시다.

  1. Application – 이 때 어플리케이션이란 완성된 프로그램을 의미합니다. 또한 동시에 프로그래밍을 해야하는 입장(개발자)에서는 플랫폼을 의미하기도 합니다(근데 그러면 플랫폼도 설명해야하는구나..)
  2. Programming – 프로그래밍은 우리가 흔히 개발이라고 부르는 프로그래밍이죠. 단지 그냥 프로그래밍이 아니라 어플리케이션 프로그래밍 이란 겁니다. 1번에서 정의한 의미를 그대로 연결하여 설명하면 이미 완성된 프로그램을 프로그래밍 하는 것이란 뜻이 됩니다.
  3. Interface – 인터페이스란 일반적으로 공개되어 사용할 수 있는 부분을 의미합니다. 당연히 이 때의 의미는 어플리케이션 측에서 제공하는 프로그래밍용 인터페이스란 뜻으로 전부 연결하여 해석해드리면 완성된 프로그램을 프로그래밍하기 위해, 완성된 프로그램 측이 공개하고 있는 부분 이라는 뜻입니다.

위의 설명을 제대로 따라오셨다면 머리 속에 가상머신 같은 단어가 안 떠오르시나요?

이러한 개념을 좀 더 구체적으로 인식하기 위해 플래시 플레이어의 사례를 들어보겠습니다. 일단 플래시 플레이어는 윈도우상에서 작동하는 WIN32 어플리케이션 임에 의의를 제기하실 분은 안 계실 겁니다. 따라서 플래시 플레이어를 하나의 어플리케이션이라고 합시다.

그런데 플래시플레이어가 완성된 어플리케이션임에도 불구하고 그 어플리케이션 위에서 구동되는 swf 라는게 존재합니다. swf 를 제작하는 행위를 어플리케이션 프로그래밍 이라고 합시다. 그렇다면 이 때 어플리케이션 프로그래밍용 인터페이스는 뭘까요?

아마 머릿 속에 액션스크립트가 떠오르시겠지만, 엄밀하게는 swf 파일 포멧 규격입니다. 즉 swf 파일 포멧 규격대로만 작성한다면 어플리케이션인 플래시 플레이어는 이를 구동해줍니다. 따라서 구지 액션스크립트로 swf 를 만들 필요도 없고 mxmlc로 컴파일할 이유도 없습니다.
예를 들어 sswf 프로젝트에서는 g++을 이용해 c++로 swf를 작성할 수 있게 해줍니다. 저도 CDT에서 즐겨 사용하고 있습니다만 아직까지 플10 API를 지원하지 않아 좀 아쉽습니다.
어디 이 뿐인가요, 제가 몇 번인가 언급했던 apparat 에서는 Java 를 통해 swf 를 생성할 수 있게 해줍니다.
그 외에도 haxe야 워낙 유명하니 제가 따로 소개드릴 필요도 없겠죠. 여하튼 플래시 플레이어의 API는 바로 swf 규격입니다. 원래 스펙공개야 여기에서 하고 있지만 사실 더 쓸모있는 문서는 이쪽이겠죠.

Continue reading ‘API에 대해’ »