[App 개발] 코코, 카본, 자바
본문
자세하게 설명 해주셨으면 합니다.
windows의 경우 c와 c++만 놓고 보면
windows api를 이용해서 c언어로 프로그래밍을 하고
비쥬얼 씨++에서 api를 클래스화시킨 mfc이용해서 c++로 프로그래밍을 하고
그런데, 맥엔 이름만 그렇게 부르는건지 정확히 이해가 안되는데
카본프로그래밍이라는게 windows api를 이용한 c프로그래밍같은거고
오브젝C를 이용한 코코어 프로그래밍이 mfc처럼 단순히 api를 C++를 이용해 클래스화 시킨것처럼
오브젝C를 이용해 카본을 클래스화 시켜놓은 건가요?
자바를 이용한 코코어 프로그래밍도 가능한걸로 알고 있는데
레이어를 보면 카본, 코코어, 자바가 같은 레이어에 있자나요
그뜻은 완전히 별개라는 의미 인가요?
그렇다면 c용 api가 따로 있고, 오브젝c용 api가 따로 있고 자바용 api가 있는건가요?
그리고 다른 글들 읽어보면, 코어이미지는 카본에선 사용할수없고 코코어에서만 된다는 글이 있던데
그럼 코어이미지는 오브젝트C코코어 와 자바코코어에서 가능 한건가요?
만약 그렇다면 오브젝트C나 자바를 이용하고 싶은데
속도 차이가 어떤가요?
윈도즈에선 자바가 상당히 느린데 맥에선 빠르더라고요.
만약 자바를 이용한 프로그래밍이 오브젝트C를 이용하는것과 속도 차이가 많이 나지 않는다면
자바를 선택하고 싶거든요. (오브젝트C는 완전 맨땅에 해당하는 기분이라서)
그렇치 않다면 오브젝트C를 이용한 코코어 프로그래밍인 선택해야할것 같은데
찾아보니까 C++로 만들어진 클래스를 불러다 쓰는게 가능 하더라고요.
그럼 익숙한 C++로 내부 처리를 하고 인터페이스 쪽만 오브젝트C를 이용하는 것이 가능 한거요?
그리고 유니버셜바이너리로된 프로그램을 만들경우 오브젝트C와 자바, 카본 모두 사용가능 한가요?
제생각엔 맥 프로그래밍에 관심있는 다른 플랫폼 프로그래머들이 많이 알고 싶어하는 이슈일것같습니다.
자세히 설명해주세요~
아 그리고 윈도즈 프로그래밍 할땐 c공부를 하고 그후에 api공부를 해서 c프로그래밍을 하고
그후에 mfc를 공부하는게 나름 정석같은거자나요.
그럼 그와 같은 순서로 맥 프로그래밍을 한다면 어떤 순서로 공부해야하나요?
최신글이 없습니다.
최신글이 없습니다.
댓글목록 5
ash님의 댓글
그리고... 레파드가 나온 이후에도 그런것들이 유효한지... 유효하지 않다면
어떻게 바뀌는것인지 알고 싶습니다
hongjuny님의 댓글
일단 제 일천한 지식의 한계만큼만 해 보겠습니다. ^^
Mac OS X 의 블록 다이어그램에서 보듯이 Carbon 과 Cocoa 와 Java 는 모두 수평 관계에 놓여 있습니다. Cocoa 가 Carbon 의 Wrapper 가 아니기 때문입니다.
그런데, 여기서 중요한 점이 있습니다. Carbon 은 C 이고 Cocoa 는 Obj-C 라고 해서 Carbon 으로 짠다고 하면 반드시 C/C++ 을 써야 하고, Cocoa 를 쓴다고 하면 소스를 몽땅 Obj-C 로 짜야 한다는 법은 어디에도 없습니다.
예를 들어, 제가 짜고있는 이미지 프로세싱 프로그램은 껍데기는 Cocoa 입니다. 하지만, 일단 파일을 열어서 NSImage 로 그림을 받아온 다음에는 포인터를 받아서 저의 하드코어 -_-; C 루틴에 넣거나 다른 과학계산 라이브러리에 넣습니다. 제가 껍데기를 코코아로 쓴 이유는 코코아가 프로그램 껍데기 만드는데 너무 쉽기 때문입니다.
물론 Cocoa 의 내부 루틴이 몽땅 다 Obj-C 로 되어 있지 않습니다. 기반이 되는 Core Foundation, 파일 입출력 등에는 Carbon Core (헉~), 쿼츠 그래픽에는 Core Graphics 을 이용합니다. 이것들은 모두 C 함수로 되어 있습니다.
Core Image 의 경우는 반대로 C 용 API 가 마련되어 있지 않은 경우입니다. 이 경우에는 Obj-C 로 간단한 브릿지 함수를 작성하면 C 에서 호출할 수 있습니다.
요즘은 Carbon 의 기본 루틴으로 간단한 C++ 템플릿까지는 만들어주는 것 같더군요. 하지만 MFC 타입의 클래스 라이브러리는 제공하지 않습니다. 아마 사람들도 별로 바라지 않는 것 같고요.
자바 의 경우는 패스 하겠습니다. ^^; 자바 코코아 루틴은 가짜사과 때문에 조금 보았을 뿐이라...
어쨌든, Carbon 과 Cocoa 는 mutually exclusive 한 관계는 아닙니다. 기본 골격을 잡을 때 어느 쪽이 더 편한지에 따라 선택하면 됩니다. 직관적인 구현을 선호하는 분들이나 기존 CodeWarrior 에 익숙하신 분들은 Carbon 이 훨씬 편할 것이며, 기본 위젯을 조립해서 빨리빨리 프로그램 짜고 싶은 사람에게는 Cocoa 가 훨씬 유리할 것입니다.
레오파드에서도 이 두 가지 기조는 유지될 것이라고 애플이 약속하고 있습니다. 물론 64 비트 공히 지원하며, 유니버설 바이너리도 마찬가지입니다.
물론 Cocoa 를 처음 설계하던 당시에는 "프로그램의 재사용성" 에 대단한 초점을 맞추었으며, 좋은 Cocoa 프로그램이란 이러한 철학에 충실한 프로그램입니다. 하지만, 이쪽 동네 사람들이 표준 만드는 것 좋아라 하면서도 동시에 죽어라 표준 안 지키는 것으로도 유명하죠. "내 표준" 을 만들어서 나 혼자 지키면 지키지, 남의 표준까지 지켜주고 싶지 않은 인생 돗대로 간다 정신의 소유자들이 많기 때문에 (저도 포함해서... ㅠㅠ), 위에서 말씀드린 대로 껍데기는 비록 코코아일지언정 그 속내용은 초절정의 습히드를 달성하기 위해서 인라인을 짜든 뭘 하든 하는거죠. ^,.^
한줄요약: 껍데기만 하나 만만한 것으로 선택하시고, 내부는 마음대로 만드시면 됩니다. -_-;
ash님의 댓글
xcode에 보면 cocoa with java가 보여서... 그쪽도 알고싶었는데ㅠㅠ..
일반적으로 사용하지 않나 보군요..
windows 에서도 mfc를 이용하면서 win32 api를 사용할수 있는 것처럼
코코아로 작업하면서 카본을 불러다 쓰건 어쩌건 그건 작업하는 사람 마음..
그런 뜻인거 같군요.
Object C공부를 해봐야 겠내요
고맙습니다.
ash님의 댓글
그리고 cocoa java사용하는건.. 아쿠아형태의 swing정도라고 생각하면 되나요?? 자바를 사용해도 거본적인건 다 되는거 같던데 코어 이미지 같은건 자바로는 지원 안하겠죠??
송동훈님의 댓글
제가 보기엔 Mac의 개발환경은 windows로 치자면 .NET Framework과 유사한
것 같습니다.
mfc 라이브러리 이런 것보다 더 시스템 차원에서 지원되는 것으로 보입니다.
요즘 새삼 Apple이 여러부분에서 많이 앞선다는 생각이 드는군요..