MacApp
MacAppMacApp은 클래식 Mac OS를 위한 Apple Computer의 객체 지향 애플리케이션 프레임워크입니다.1985년에 출시된 이 제품은 1991년 버전 3.0에서 오브젝트 파스칼에서 C++로 전환되어 시스템7의 새로운 기능의 대부분을 지원하게 되었습니다.MacApp은 Adobe[1] Photoshop과 SoftPress [citation needed]Freeway를 포함한 다양한 주요 애플리케이션에 사용되었습니다.Microsoft의 MFC와 Borland의 OWL은 모두 MacApp 컨셉에 직접 기반을 두고 있습니다.
10년이라는 기간 동안, 그 제품은 거의 개발되지 않은 기간이 있었고 그 후 활동이 활발해졌다.이 기간 동안 Symantec의 Think Class Library/Think Pascal은 훨씬 더 고성능 통합 개발 환경(IDE)에서 더 단순한 모델을 제공하면서 MacApp의 강력한 경쟁자가 되었습니다.
Symantec은 1990년대 초반 PowerPC 플랫폼으로의 이행에 대한 대응이 느렸고, Metrowerks가 1994년에 CodeWarrior/PowerPlant 시스템을 처음 선보였을 때 Mac의 주요 개발 플랫폼인 MacApp과 Think를 빠르게 대체했습니다.심지어 애플은 1990년대 중반 코플랜드 시대에는 코드워리어(CodeWarrior)를 주요 개발 플랫폼으로 사용했다.
MacApp은 2000년에서 2001년 사이에 MacOS [2]X의 Carbon 시스템으로 전환하기 위한 시스템으로 잠시 유예되었습니다. 그러나 2001년 6월 WWDC(Worldwide Developers Conference)에서 버전을 시연하고 나서, 그 해 10월에 모든 개발이 취소되었습니다.
역사
파스칼 버전
MacApp은 Larry Tesler가 주도한 객체 지향 애플리케이션 프레임워크를 설계하기 위한 애플의 첫 번째 노력인 Lisa Toolkit의 직계 후손입니다.Toolkit의 엔지니어링 팀에는 Larry Rosenstein, Scott Wallace 및 Ken Doyle이 포함되어 있습니다.툴킷은 파스칼 [3][4]언어에 객체 지향 기술을 추가한 Clascal로 알려진 사용자 지정 언어로 작성되었습니다.
처음에 Mac용 개발은 Lisa Workshop에서 크로스 컴파일러를 사용하여 수행되었습니다.Mac 판매가 Lisa 판매를 효과적으로 종료함에 따라 Mac용 새로운 개발 플랫폼을 구축하기 위한 노력이 시작되었습니다.Lisa Programmer's Workshop은 1985년에 Macintosh Programmer's Workshop, 즉 MPW가 되었습니다.이 과정의 일환으로 Clascal은 Object Pascal로 업데이트되었고 Lisa Toolkit은 [4]MacApp이 된 제품에 대한 설계 노트를 제공했습니다.
애플리케이션 프레임워크 없이 Mac 프로그램을 작성하는 것은 쉬운 일이 아니지만, 그 당시 객체 지향 프로그래밍 분야는 여전히 비교적 새로운 분야였고 많은 개발자들에게 다소 의심스러운 것으로 여겨졌습니다.초기 프레임워크는 크고 느리며 일반적으로 융통성이 없는 이 의심을 확인하는 경향이 있었습니다.
MacApp은 아마도 이 용어의 모든 면에서 진정으로 사용 가능한 최초의 프레임워크였을 것입니다.컴파일된 애플리케이션은 크기와 메모리 설치 공간 면에서 상당히 합리적이었고, 개발자들이 이를 꺼릴 만큼 성능이 나쁘지 않았습니다.첫 번째 릴리스에서는 "너무 단순"했지만 많은 후속 버전이 주요 문제를 신속하게 해결했습니다.1987년경, 이 시스템은 유용한 도구로 성숙했고, 많은 개발자들이 주요 프로젝트에 그것을 사용하기 시작했다.
MacApp 2.0은 1989년에 출시되었습니다.개선점 중에는 UI 요소의 상호작용을 단순화하고 멀티인더를 [5]지원하는 것도 있었습니다.1992년 [6]애플이 MPW Pascal 지원을 중단한다고 발표했을 때 이 버전은 System 7 지원도 없이 업데이트되지 않았고 Pascal 개발자들은 자체적으로 MacApp 2.0을 PowerPC에 [6][7]포팅하지 않았다.
C++ 버전
1980년대 후반, 시장은 C++로 옮겨갔고 1989년 Apple C++ 컴파일러의 베타 버전이 MacApp 2.0 릴리즈에 [5]등장했습니다.동시에, 애플은 많은 새로운 기능을 갖춘 시스템 7을 출시하기 위해 많은 노력을 기울였다.Object [8]Pascal 대신 C++를 사용하는 완전히 새로운 버전의 MacApp 3.0으로 전환하기로 결정했습니다.이 움직임은 유즈넷과 다른 포럼에서 Object Pascal과 C++의 지지자들 사이에 길고 뜨거운 토론의 대상이 되었다.그럼에도 불구하고, 3.0은 1991년 출시된 후 개발 제품군인 MPW가 구식이 되어가고 있음에도 불구하고 합리적인 지지를 얻는데 성공했다.그 후, 애플은 개발자 툴 그룹 전체의 규모를 축소해, MacApp과 MPW의 인원을 부족하게 했다.
이러한 인원 감축의 이유 중 하나는 애플이 개발을 위해 거의 항상 일종의 크로스 플랫폼 시스템의 형태로 "차세대 위대한 플랫폼"을 도입하려고 시도한 오랜 역사 때문이다.그들의 첫 번째 시도는 Mac과 Windows에서 실행되는 Symantec과 협력하여 만든 클래스 라이브러리인 Bedrock이었습니다. 이 라이브러리는 결국 양 당사자 모두 상대방과의 작업을 포기하면서 오래도록 중단되었습니다.문제의 원인 중 하나는 OpenDoc의 창설을 들 수 있습니다.OpenDoc은 Bedrock과 직접 경쟁하는 크로스 플랫폼 시스템으로 개발되었습니다.Bedrock을 OpenDoc [9][10]플랫폼으로 포지셔닝하려는 시도가 있었지만, 이에 대한 결과는 없었습니다.
이러한 개발이 진행되는 동안 MPW와 MacApp은 대부분 무시되었습니다.이러한 개발자 자원을 새로운 프로젝트에 투입하여 보다 빨리 시장에 투입하는 것이 더 중요했습니다.그러나 Bedrock이 실패하여 OpenDoc이 미온적인 반응을 얻었을 때, Mac은 이제 거의 10년이 지난 도구들로 남겨졌고 제3자의 신제품들과 경쟁할 수 없었다.1990년대 초반까지 경쟁 프레임워크는 MacApp의 진정한 경쟁자로 성장했습니다.처음에는 Symantec의 TCL이 팔로워를 획득했지만, 그 후 Metrowerks의 PowerPlant가 시장 전체를 장악했습니다.
미련의 죽음
MacApp의 핵심 개발자들은 1990년대 내내 낮은 활동 수준에서 이 시스템에 대한 작업을 계속했습니다.애플의 "공식" 크로스 플랫폼 프로젝트가 모두 무산되자, 1996년 말, 팀은 크로스 플랫폼 버전의 MacApp을 제공할 것이라고 발표했습니다.
곧이어 애플은 NeXT를 인수하여 OpenStep이 코코아라는 이름으로 애플의 주요 개발 플랫폼이 될 것이라고 발표했다.코코아는 이미 크로스 플랫폼이었고, 그 당시에 이미 약 6개의 플랫폼으로 포팅되어 있었으며, MacApp보다 훨씬 더 발전되어 있었습니다.이로 인해 기존 맥 프로그래머들은 자신들의 프로그램이 "벌금 상자"로 보내져 사실상 포기되었다고 항의했다.
WWDC'98에서 스티브 잡스는 코코아로의 이주에 대한 부정적인 피드백은 카본 시스템의 도입을 통해 다루어지고 있다고 발표했다.Carbon을 사용하면 기존 Mac 프로그램을 새로운 운영 체제에서 일부 변환 후 기본적으로 실행할 수 있습니다.Metrowerks는 자사의 PowerPlant 프레임워크를 Carbon으로 이식할 것이라고 발표했지만, MacApp에 대해서는 애플에 의한 유사한 발표는 없었다.
이 기간 동안 Apple의 행동에 점점 더 실망하는 충성스러운 MacApp 사용자들의 핵심이 남아 있었습니다.1990년대 후반, 코코아가 도입되었을 때, 이것은 제품을 완전히 폐기하는 것으로 확대되었다.상황이 너무 안 좋아서 MacApp 사용자 그룹은 애플 직원이 회의실을 거부하는 것을 피하기 위해 WWDC '98에서 가명으로 회의를 열기까지 했습니다.
이러한 지속적인 지원은 Apple 내부에서 주목받았고, 1999년 말, 이 지원을 계속해온 멤버들로 구성된 "새로운" MacApp 팀이 새로운 버전을 출시해야 했습니다.OpenStep에서 도입된 많은 새로운 Mac OS 기능을 위한 얇은 C++ 래퍼 레이어인 새로운 Apple Class Suite(ACS)와 Project Builder에서의 빌드 지원이 포함되어 있습니다.MacApp 3.0 Release XV는 2001년 8월 28일에[11] 출시되어 많은 사람들이 기뻐했습니다.그러나 10월에 다시 한번 제품이 완전히 중단되었고, 기존 버전의 MacApp에 대한 지원은 공식적으로 종료되었습니다.
Carbon 호환 PowerPlant X는 2004년에야 출하되었으며, 오늘날 Cocoa는 MacOS와 iOS 프로그래밍에 거의 보편적으로 사용되고 있습니다.
현재의 MacApp
MacApp은 2001년 Apple이 지원을 중단한 이후 프레임워크를 유지하고 강화한 전담 개발자 그룹에 의해 존속되고 있습니다.MacApp은 Carbon Events, Unicode Text, MLTE 제어, DataBrowser 제어, FSRef, XML 구문 분석, Custom Controls, Composite Window, Drawer Window, HIView Window 및 Custom Window를 완전히 지원하도록 업데이트되었습니다.MacApp에는 HIObject 및 HIView용 C++ 래퍼 클래스도 있습니다.또한 MacApp-2를 기반으로 하는 Pascal 버전은 Mac OS X 및 Xcode로 이식되었습니다.긴 유니코드 파일 이름과 자동 바이트 스왑 기능이 있는 스트리밍된 문서를 특징으로 합니다.
MacApp은 Xcode IDE를 지원합니다.실제로 WWDC 2005에서는 Apple이 Intel CPU로의 전환을 발표한 후 단일 개발자가 유니버설 바이너리를 지원하기 위해 MacApp 및 MacApp 예제 앱을 업데이트하는 데 48시간이 걸렸습니다.
묘사
- 이 설명은 MacApp 3.0을 기반으로 합니다. MacApp 3.0은 이전 2.0보다 더 발전된 기본 모델을 가지고 있으며 여러 가지 면에서 차이가 있습니다.
Mac OS 자체에는 매우 간단한 이벤트 처리 시스템이 있습니다.운영 체제에서 응용 프로그램으로 전달되는 이벤트 구조에는 "keypress" 또는 "mouse click"과 같은 이벤트 유형 및 위치 및 유지 중인 수식 키 세부 정보만 있습니다.이 간단한 정보를 사용자가 수행한 동작(예: 메뉴 명령 클릭)으로 디코딩하는 것은 응용 프로그램에 달려 있습니다.이를 디코딩하는 것은 어려울 수 있습니다.화면상의 오브젝트 목록을 실행하고 이벤트가 해당 범위 내에서 발생했는지 확인합니다.
MacApp은 명령 패턴을 사용하여 이 문제에 대한 솔루션을 제공했습니다. 이 패턴에서는 사용자 작업이 이벤트 세부 정보가 포함된 개체에 캡슐화된 다음 적절한 개체로 전송되어 수행됩니다.이벤트를 "적절한 객체"에 매핑하는 논리는 전적으로 프레임워크와 실행 시간 내에서 처리되어 이 작업의 복잡성을 크게 줄였습니다.기본 OS 이벤트를 가져와서 의미론적으로 더 높은 수준의 명령어로 변환한 다음 명령을 적절한 개체로 라우팅하는 것이 MacApp 내부 시스템의 역할입니다.
MacApp은 모든 프로그램에서 요구하는 이 코드를 작성자가 작성하지 않아도 될 뿐만 아니라 부차적인 효과로 코드를 명령어, 사용자 대면 작업 및 해당 핸들러로 완벽하게 분리하여 작업을 수행했습니다.예를 들어, "녹색으로 전환" 및 "빨간색으로 전환" 명령을 사용할 수 있습니다. 이 명령어는 모두 단일 기능으로 처리됩니다.ChangeColor()명령어와 핸들러를 깔끔하게 분리한 프로그램은 애플 용어로는 팩터링으로 알려져 있습니다.
프로그램 팩터링은 시스템 7 이후 Mac OS 버전에서 특히 중요했습니다.System 7은 원래 Mac OS의 이벤트 시스템을 OS에서 특정 애플리케이션으로뿐만 아니라 애플리케이션 간에 전송할 수 있는 훨씬 풍부한 시스템으로 확장한 Apple Events 시스템을 도입했습니다.이는 AppleScript 시스템과 결합되어 스크립팅 코드에서 이벤트를 생성할 수 있게 되었습니다.MacApp 3.0에서는 Apple Events가 사용자 직접 작업에 의해 시작된 것과 동일한 명령어로 디코딩되어 개발자가 Apple Events를 직접 처리하기 위해 코드를 많이 작성할 필요가 없었습니다.이는 MacApp 2.0을 비롯한 이전 시스템을 사용하는 개발자들에게 큰 문제였으며, 이러한 분리 기능이 없어 Apple Event 지원이 종종 누락되었습니다.
또한 MacApp은 애플리케이션 프레임워크로서의 역할을 유지하기 위해 기본 Mac GUI 대부분을 포함하는 여러 개의 사전 롤된 개체를 포함했습니다. 즉, Windows, 메뉴, 대화 상자 및 유사한 위젯이 모두 시스템 내에 표시되었습니다.안타깝게도 애플은 일반적으로 "실제"에서 사용할 수 있는 시스템을 제공하는 대신 기존 내부 Mac OS 코드 위에 경량 포장지를 제공했습니다.예를 들어,TTEView클래스는 표준 텍스트 에디터 위젯으로 제공되었지만 기본 TextEdit 구현은 매우 제한적이었고 애플은 종종 이 클래스를 프로페셔널 애플리케이션에 사용하지 말아야 한다고 언급했습니다.그 결과 개발자들은 종종 이러한 요구를 충족시키기 위해 애드온 개체를 구입하거나 자체 개발해야 했습니다.전문적인 품질의 GUI 개체 집합이 없는 것은 MacApp의 가장 큰 문제 중 하나입니다.
이 문제는 MacApp R16 릴리스에서 해결되었습니다.MacApp R16은 모든 MacApp GUI 개체에 대해 표준 Carbon 컨트롤을 사용합니다.예를 들어 Carbon은 완전한 유니코드 텍스트와 긴 문서 지원을 위해 다국어 텍스트 엔진(MLTE)을 도입했습니다.R16에서는, 오리지날은TTEView클래스가 에 의해 대체되었습니다.TMLTEViewMLTE 컨트롤을 사용합니다.
주목할 만한 사용자
Adobe Photoshop은 원래 Object Pascal에서 MacApp 1.1.1로 작성되었으며 나중에 Photoshop 2.5용 C++ 및 MacApp 3.0으로 이식되었습니다.MacApp이 애플에 의해 취소된 후, 유지보수는 Photoshop 개발팀에 의해 내부적으로 인계되어 PowerPC로 이식되고 Windows 플랫폼 포트와 [1]공유되도록 전환되었습니다.
레퍼런스
- ^ a b Mark, Dave (December 1997). "Sean Parent: The Photoshop Development Process". MacTech. Vol. 13, no. 12. pp. 42–44.
- ^ Turner, Mark (March 2001). "Carbon: An Essential Element of MacOS X". MacTech. Vol. 17, no. 3. pp. 58–61.
- ^ Williams, Gregg (December 1984). "Software Frameworks". Byte. Vol. 9, no. 13. pp. 124–127, 394–410.
- ^ a b Loeb, Laurence H. (December 1988). "Program Extenders". Byte. Vol. 13, no. 13. pp. MAC 53-MAC 60.
- ^ a b Poole, Lon (April 1989). "C++ and MacApp 2.0". Macworld. Vol. 5, no. 4. p. 91.
- ^ a b Arnold, Brian; McCarthy, Guy (November 1995). "MacApp Pascal Rides again". MacTech. Vol. 11, no. 11. pp. 30–31.
- ^ Arnold, Brian (February 1996). "MacApp 2 for PowerPC in Object Pascal". MacTech. Vol. 12, no. 2. pp. 25–32.
- ^ Knepper, Chris (February 1991). "Approaching MacApp 3.0". MacTech. Vol. 5, no. 2.
- ^ Damore, Kelley; Quinlan, Tom (December 6, 1993). "Bedrock not as solid as Apple originally planned". InfoWorld. Vol. 15, no. 49. p. 8.
- ^ Daly, James (December 20, 1993). "Apple, Symantec rethink role Bedrock will play". Computerworld. Vol. 27, no. 51. p. 69.
- ^ "New Mac OS X Related Releases". MacTech. Vol. 17, no. 2. February 2001. p. 24. 일부 기능과 함께 MacApp 15d3에 대해 설명합니다.
외부 링크
- MacApp 프로그래머 가이드 - Inside Macintosh 시리즈의 전체 설명서