맥 OS X의 개발환경

맥 OS X의 개발환경

강백호 0 678 2001.06.27 03:29
맥 OS X, 알면 알수록 흥미롭다!
맥 OS X의 개발환경

맥 OS X의 이번 릴리즈는 완성된 맥 OS의 발표라기보다 개발을 촉진시키기 위한 출시라는 시각이 있다. 맥 OS X 패키지 안에 개발 툴 CD가 포함되어 있고, 맥 OS X 자체가 개발자를 고려한 기능을 대거 탑재하고 있기 때문에 그런 말이 나올 만도 하다. 여기서는 맥 OS X을 보다 잘 이해하기 위한 입장에서 이의 개발환경을 개략적으로 살펴보기로 한다.


글·김정안
오픈오브젝트 근무중
이메일 : jungan@openobject.net

------------------------------------------------------------------------

맥 OS X은 기존의 맥 OS와 새로운 오픈스텝 기반의 유닉스 운영체계를 결합한 구조를 갖고 있다. 이 때문에 이것의 개발환경으로는 기존 맥 OS의 계통을 잇는 카본(Carbon)과 오픈스텝 기반인 코코아(Cocoa)가 모두 지원된다. 그리고 여기에 자바 2 개발환경이 제공되어 맥 OS X에서는 이 3가지 기반에서 개발작업을 할 수 있다. 그럼, 여기서는 맥 OS X의 개발환경에 대해 살펴보자.

카본 - 코코아 - 자바

카본은 이전 맥 OS의 툴박스 중 엄선된 부분만을 간추린 것이라고 생각하면 된다. 즉 맥 OS가 발전하면서 중복되는 기능이나 불합리한 방식 등을 갖게 되었음에도 불구하고 과거 버전과의 호환성을 위해 어쩔 수 없이 끌어안고 있었던 툴박스 함수들을 과감히 정리하고 그 정수만을 뽑아놓은 것이다. 이러한 카본의 경우 이전 맥 OS의 개발환경과 크게 다르지 않아 기존의 맥용 프로그램 개발자가 접근하기에 매우 용이할 것이다. 하지만 카본은 퀄츠(Quartz)를 일부분만 지원하는 등 맥 OS X의 모든 기능을 완벽하게 이용하지 못하는 단점이 있다.
한편 코코아는 오픈스텝의 프레임웍을 기반으로 한 환경이다. 이 프레임웍은 오브젝티브(Objective) C를 기반으로 한, 매우 잘 짜여진 객체지향 라이브러리다. 코코아는 바로 Foundation Kit과 Application Kit으로 대표되는 프레임웍들로 구성되어 있어 거의 완벽한 애플리케이션 개발환경을 제공한다. 즉 코드워리어의 파워플랜트(PowerPlant)와 같이 데이터와 파일 처리에서부터 버튼과 대화상자 등 사용자 인터페이스에 대한 세부사항에 이르기까지 다양한 클래스들을 제공한다. 이러한 코코아는 사실 맥 OS X에서 실질적인 기반을 이루고 있기 때문에 이 OS에 최적화된 환경이라고 볼 수 있다.
맥 OS X에는 완전한 자바 2 개발 및 운영 환경이 포함되어 자바를 이용한 개발 작업을 할 수 있고, 자바 애플리케이션을 아무런 수정없이 그대로 실행시킬 수도 있다. 이로 인해 그동안 자바 2가 지원되지 않아 자바 개발환경으로는 외면받아오던 맥에 새로운 전기가 마련될 것으로 기대된다. 더구나 AWT로 개발되었을 경우 맥 OS X의 유저 인터페이스인 아쿠아를 별도의 처리없이 그대로 사용할 수 있다는 장점도 있다. 이로써 작년 스티브 잡스가 ‘JavaOne’이라는 자바 개발자 회의에서 ‘맥을 최고의 자바 운영 및 개발환경으로 만들겠다’는 약속을 어느 정도 지킨 셈이 되었다. 그러나 아직 운영체계의 하부에 최적화되지 못한 탓인지 벨로시티 엔진에서 작동됨에도 불구하고 작동속도는 그다지 빠르지 않다.
한편 오브젝티브 C는 C 언어를 기반으로 해 객체지향성을 추가한 개발 언어로, 객체지향 이론의 기본에 가장 충실하다고 평가받고 있다. 그러나 애플의 주장과는 달리 C 언어를 사용할 수 있다고 해도 오브젝티브 C에 적응하기란 쉽지 않다. 구문의 표현 등이 다소 생소하고 자료를 구하기도 쉽지 않기 때문이다(현재 애플 웹사이트에서 오브젝티브 C에 대한 문서는 2개 구할 수 있으나 이것으로는 정보가 턱없이 부족하다). 애플은 이에 대한 대안으로 자바 언어로 다른 개발환경 언어를 어느 정도 대치할 수 있도록 했다. 즉 자바로 코코아 기반의 애플리케이션을 작성할 수 있도록 한 것이다.
참고로 애플이 파워피씨를 처음 채용했을 때 68K 코드와 파워피씨 코드를 함께 지원하다가 나중에는 68K 코드 지원을 중단했듯이 카본 역시 궁극적으로 그 기능이 코코아로 통합되어 언젠가는 사라지게 될 것으로 예측된다.

애플이 제공하는 개발환경

맥 OS X 정식버전의 패키지는 3개의 CD로 구성되어 있는데, 그 중 하나가 바로 개발 툴 CD이다. 이처럼 개발 툴 CD를 함께 제공하고 있어 맥 OS X의 이번 릴리즈는 완전한 운영체계의 릴리즈라기보다 개발을 촉진시키기 위한 단계라고 보는 시각도 있다.
개발 툴 CD에는 각종 개발 툴과 예제, 문서들이 포함되어 있다. 이 중 프로젝트 빌더(Project Builder)라는 프로그램은 개발의 중심을 이루는 툴로, 통합 개발환경을 제공하고 프로젝트를 관리하며 소스 수정 및 컴파일, 디버깅을 수행한다. 실제적인 컴파일러 환경은 GNU의 gcc를 기반으로 하고 있어 안정성과 성능을 확보하고 있다. 프로젝트 빌더로 생성할 수 있는 애플리케이션 프로젝트 타입은 다음과 같다.

카본 애플리케이션
기존 맥 OS의 카본 방식 프로그램으로 코딩해주는 프로젝트이다. 여기에서는 C 언어와 C++ 언어를 이용해 코딩한다.

Nib 기반의 카본 애플리케이션
코딩은 기존 맥 OS의 카본 방식으로 이루어지나 인터페이스는 인터페이스 빌더(Interface Builder)에 의해 개발되는 방식을 취한다. 따라서 이 프로젝트는 인터페이스 디자인을 인터페이스 빌더를 이용해 빠르고 편리하게 구성할 수 있어 유용하다.

코코아 애플리케이션
오브젝티브 C를 기반으로 하는 코코아 애플리케이션 개발환경이다. 역시 사용자 인터페이스 디자인은 인터페이스 빌더에 의해 이루어진다.

코코아 도큐멘트 - 베이스드 애플리케이션
도큐멘트를 기반으로 하는 코코아 애플리케이션을 작성한다. 이 프로젝트를 선택하면 기본적인 문서를 처리할 수 있는 코드들이 자동으로 추가되어 구성된다.

코코아 - 자바 애플리케이션
순수 자바(Pure Java) 프로젝트가 아닌 코코아 프로젝트다. 자바 언어로 기술되나 문법만 사용될 뿐 코코아의 내부 프레임웍인 Foundation Kit과 Application Kit으로 개발되고, 인터페이스 디자인은 인터페이스 빌더를 통해 이루어진다.

코코아 - 자바 도큐멘트 - 베이스드 애플리케이션
도큐멘트를 기반으로 하는 코코아 애플리케이션을 작성한다. 이 프로젝트를 선택하면 기본적인 문서를 처리할 수 있는 자바 코드들이 자동으로 추가되어 구성된다.

자바 애플리케이션
순수 자바 애플리케이션을 개발할 수 있는 프로젝트이다. 물론 프로젝트 빌더를 통해야만 자바 애플리케이션을 개발할 수 있는 것은 아니지만, 이를 통하면 통합된 환경에서 작업할 수 있으므로 편리하다.

기타
커널 기능을 확장시키거나 입출력 인터페이스를 관장하는 I/O 킷의 드라이버를 작성할 수 있다. 또한 기본적인 프레임웍들이 제공되지만, 독자적인 프레임웍을 작성해 여러 애플리케이션에서 이용할 수 있도록 할 수도 있다. 이것은 기존 맥 OS의 Shared Library에 해당하는 기능이다. 이처럼 프로젝트 빌더는 맥 OS X에서 개발할 수 있는 거의 모든 종류의 프로젝트를 제공하고 있다.
한편 인터페이스 빌더는 코코아 애플리케이션이나 Nib 기반의 카본 애플리케이션을 개발할 때 사용하는데, 이를 이용하면 유저 인터페이스에 해당하는 윈도우와 각종 컨트롤, 메뉴 등을 디자인하고 테스트할 수 있다. 인터페이스 빌더에 의해 RAD(Rapid Application Development)가 달성된다고 해도 과언이 아닐 만큼 이것의 기능은 매우 막강하고 직관적이다. 특히 자동 가이드 라인 기능은 이전에 컨트롤 위치 때문에 느꼈던 불편을 해소해준다. 또한 각 언어별로 다른 인터페이스 셋을 작성할 수 있어 다국어를 동시에 지원하는 애플리케이션을 개발할 수도 있다. 예를 들어 한국어와 영어 인터페이스를 동시에 가질 수 있고, 사용하는 언어에 따라 메뉴와 대화상자, 메시지 등이 모두 해당 언어로 표현된다. 인터페이스 빌더는 기존의 맥 OS 개발용으로 가장 광범위하게 사용되던 코드워리어의 Constructor라고 생각하면 쉽게 이해할 수 있을 것이다.
개발환경에서는 프로젝트 빌더와 인터페이스 빌더가 가장 중심적인 툴이지만 이외에도 디버깅과 코드 참조 등 다양한 유틸리티 성향의 개발 보조 툴들이 제공된다.

기타 개발환경

애플이 제공하는 개발환경 이외에도 맥 OS X은 BSD 유닉스 기반이고 기본 컴파일 환경으로 GNU의 gcc를 사용하고 있어 수많은 유닉스 기반의 개발환경들이 포팅되고 있다. 즉 각종 언어환경과 PHP 및 Perl 등의 인터넷 기반 언어환경들이 속속 포팅되고 있는 것이다. 따라서 아마 수개월 내에 엄청난 양의 소프트웨어들이 맥 OS X용으로 출시될 것이다. 그러나 이러한 툴들은 유닉스 기반 프로그램을 그대로 옮겨놓은 것들이어서, 사용자 인터페이스 측면에서 보면 맥 OS X 애플리케이션답다고 보기는 어렵다. 하지만 맥 OS용으로 막강한 성능을 발휘하던 MPW가 나중에는 이따금씩 특수한 목적에서만 사용되었던 것처럼 써드파티에서 애플의 개발 툴보다 더욱 향상된 개발환경을 제공할지는 아무도 장담할 수 없다.
여기에서는 맥 OS X 환경에 적용된 개발환경을 간략히 소개하겠다.

웹오브젝트
웹오브젝트(WebObjects)는 EOF(Enterprise Object Framework)를 기반으로 DB와 웹서버와의 연동 기능을 제공하는 웹 애플리케이션 서버 솔루션이다. 기존에는 맥 OS X 서버와 윈도우즈 NT, 솔라리스, HP/UX에서만 사용할 수 있었으나 이젠 맥 OS X에서도 사용할 수 있게 되었다.

코드워리어
코드워리어는 기존의 맥 OS 환경을 위한 개발 툴로 많이 사용되었다. 제작사인 메트로웍스사는 코드워리어로 이미 카본 프로그램을 개발할 수 있는 환경을 제공하고 있으며 조만간 맥 OS X용 코드워리어도 발표할 예정이라고 한다. 대다수의 개발자들은 파워플랜트에 익숙한데, 이 코드워리어가 파워플랜트를 이용한 개발을 지원할 예정이어서 기존 개발자가 이 프로그램에 쉽게 적응할 수 있을 것이다.

J 빌더
PC 계열에서 인기있는 순수 자바 개발환경인 Borland사의 J 빌더도 맥 OS X용으로 포팅될 예정이다. 맥 OS X이 자바 2 개발환경을 제공하면서 이외에도 많은 자바 관련 개발 툴들이 속속 개발 혹은 포팅될 것으로 보인다.

리얼베이직
리얼베이직(REALbasic)은 프로그램을 간단하게 만들어낼 수 있는 도구로, 카본 기반의 애플리케이션을 작성할 수 있는 환경을 제공한다. 현재는 베타 상태지만 조만간 정식버전이 릴리즈될 것으로 기대된다.

Forte
Forte는 썬마이크로시스템즈사가 개발하고 무상으로 공급하는 순수 자바 통합 개발 윈도우다. 특이한 사항은 프로그램 자체가 순수 자바로 작성되어 있어 맥 OS X에서 수정없이 그대로 실행시킬 수 있다는 것이다. 이후 발표될 버전도 순수 자바 코드를 유지할 예정이어서 맥 OS X에서 그대로 사용할 수 있을 것이다.

표준의 지원

과거 애플은 독불장군식의 고집으로 분야마다 독자적인 규격을 정의하고 그 기술의 사용을 고집해왔었다. 그 결과 퀵타임과 같은 기술은 성공을 거두었으나, 퀵드로우 GX나 퀵타임 3D, 파워톡(PowerTalk) 등은 실효를 얻지 못하고 결국 맥 OS 환경에서마저 외면받게 되었다.
하지만 맥 OS X은 3D 부분에서 오픈 GL을 지원하고 네트웍 부분에서 BSD 네트웍을 채택했다. 그리고 유닉스로는 POSIX를 따르고 있으며, 애플이 최적화한 것이기는 하지만 퀄츠를 통한 화면 표시와 프린팅에 PDF를 채택하고 있다. 모두 업계 표준으로 널리 사용되는 기술을 채택한 것이다. 이것은 그만큼 타 플랫폼으로의 전환이 용이하고, 또한 맥만의 특이한 규약을 배우기 위해 노력하거나 타 플랫폼에서 사용할 수 없는 소비적인 학습을 하고 있다는 우려를 불식시킬 수 있게 해준다. 또한 맥 OS X은 하부 구조에 해당하는 다윈을 오픈소스로 개발자들에게 공개해 운영체계를 보다 보편적으로 이끌어나갈 수 있는 토대를 마련하기도 했다.

마치며

이상으로 간략하게 맥 OS X의 개발환경을 살펴보았다. 맥 OS X의 등장은 맥환경에 매우 큰 전환을 가져다줄 것이다. 왜냐 하면 다양한 업계 표준을 지원하여 개발 역시 매우 폭넓고 활발하게 이루어질 것으로 기대되기 때문이다. 우리나라에서도 이를 계기로 맥 OS X 개발자들이 많아지기를 바란다.


◈ 강백호 ─ 맥마당에서 발췌했습니다~

Comments