2009-04-26 7 views
26

W wikipedia article on Cocoa ona mówi:Jak trudno jest uruchomić aplikację Cocoa w systemie Windows?

Istnieją również implementacje open source głównych częściach ram Cocoa, który pozwala cross-platform (w tym Microsoft Windows) rozwój aplikacji kakao, takie jak GNUstep, Cappuccino i Cocotron.

Kiedy jednak spojrzałem czy aplikacja Mac Tweetie był dostępny dla Windows deweloper mieli ruled it out:

Windows nie ma kakao, środowiska programowania, który jest wykonany w Tweetie, jako taka, wydaje się marną możliwością.

chciałbym mieć odpowiedź wskazać deweloperom Tweetie (i jako źródło informacji dla innych programistów kakao), które je Tell:

  • których realizacja jest najbardziej odpowiednia dla uzyskania kakao aplikacja działająca w systemie Windows?
  • Ile pracy potrzeba, aby aplikacja działała pod Windowsem?
  • Jak łatwe/trudne jest utrzymanie wspólnej podstawy kodu dla systemów Mac i Windows?
  • (wszelkie inne względy Tęskniłam?)

oczywiście jeśli byłoby to zbyt dużo pracy chciałbym wiedzieć, że zbyt przed sugerując go i potencjalnie wysyłanie kogoś na bezowocne poszukiwania.

+5

Dlaczego spadki? To ważne pytanie, nawet jeśli odpowiedź brzmi "nie". –

+6

Poważnie, to pytanie dostaje biczowanie bez powodu. –

+1

+1 Zastanawiało mnie to samo. – Zifre

Odpowiedz

1

Istnieje Windows compilers for Objective-C (język programowania używany do pisania aplikacji kakao). Jednak Cocoa zawiera ramy do prezentacji GUI. Te ramy wizualne są specyficzne dla systemu Mac OS X, ponieważ korzystają tylko z okien systemu Windows i innych elementów sterujących. Tak więc ktoś musiałby ponownie wdrożyć elementy sterujące w kakao, aby używać kontrolek systemu Windows.

Również jestem dość pewny, że Tweetie używa tylko Mac OS X technologii, takich jak Core Animation. To nie istnieje w systemie Windows, więc ładne efekty animacji obecne w aplikacjach musiałyby zostać zaimplementowane w zupełnie inny sposób.

+0

Co z implementacjami szkieletu kakao z cytatu wikipedia w moim pytaniu? –

+0

A jeśli istnieją kompilatory Objective-C dla systemu Windows, co to jest? proszę podać linki. –

+0

dodano link, aby uzyskać więcej informacji na temat kompilowania obiektu c na systemie Windows. – zpesk

4

Wśród gnustep, cappuccino i Cocotron, Cocotron możliwe jest tylko wybór do portu aplikacja Mac do okien. Cappuccino jest dla sieci, a GNUstep działa tylko na cygwin lub mingw, co oznacza, że ​​GUI nie przypomina rodzimych aplikacji Windows.

Teoretycznie jest możliwe zbudowanie okna kakao aplikacji przy użyciu Cocotron. Jednak rzeczywistość jest nadal bardzo trudna w użyciu i wciąż jest dość ograniczona w API Cocoa.

Dlatego dwa możliwe rozwiązania:

  • starają się usunąć kody, które nie są obsługiwane przez Cocotron w oryginalnej bazie kodu i zrobić cross kompilacji. Utrzymanie wspólnej podstawy kodowej będzie bolesne.
  • Uruchom nowy GUI, bez wspólnej podstawy kodu.dwie opcje tutaj:
    • Rozpocznij projekt między platformami z krzyżowym środowiskiem aplikacji, takim jak Qt lub Java.
    • Rozpocznij projekt tylko dla systemu Windows. Istnieje wiele możliwości tutaj, aplikacji .NET WinForm, MFC, itp
+0

brzmi jak strona wikipedia jest niepoprawna i wymaga edycji. –

+0

Trzecia opcja to wdrożenie potrzebnych elementów w Cocotron i wniesienie ich do projektu, jest to open source. Oczywiście może się to różnić złożonością, ale ludzie robili to już dla rozsądnych kawałków. Im więcej osób to robi, tym mniej każdy musi zrobić. Jeśli znasz już kakao i masz już napisaną aplikację, to ilość pracy, która mogłaby się zmienić i funkcje, które poświęcisz dla innej platformy GUI, może być więcej pracy niż tylko wdrożenie potrzebnych elementów w Cocotron. Coś, o czym trzeba pamiętać, oczywiście YMMV. –

11

Nie zapomnij:

  1. „Główne elementy ram kakao” nie jest taka sama jak "Całość ram Cocoa". Tweetie może używać czegoś, czego brakuje.
  2. Tweetie może (bardzo prawdopodobnie) używać API z frameworków innych niż Cocoa, takich jak Core Foundation, Core Services, Core Graphics i Core Animation. Port samych frameworków Cocoa nie będzie zawierać żadnego z tych interfejsów API, a nawet bardziej kompletny framework emulacji Mac-API nie będzie obejmował ich wszystkich.
  3. Te ramy są wiecznie ścigające Apple. Nawet jeśli nadrobią zaległości, będą natychmiast w tyle za następnym wydaniem Mac OS X. Programiści Maca już odkładają korzystanie z nowych interfejsów API w nowych wydaniach Mac OS X, czekając, aż użytkownicy uaktualnią te nowe wersje; teraz zadajesz pytania do ataku , a także czekaj, aż programista innych frameworków ponownie nadrobi Apple.
  4. Każda druga implementacja istniejącego API będzie zawierała błędy, których nie implementuje pierwsza implementacja i na odwrót. Różnice te spowodują problemy z rozwojem i wsparciem.
  5. Pytasz atuty, aby dodać trzecią platformę do aplikacji, która już istnieje na dwóch. Wspieranie jednej platformy to dużo pracy. Wspieranie dwóch platform to piekielnie dużo pracy. Wspieranie trzech? Teraz wchodzisz na terytorium dużej firmy.

Tak więc, nawet z tymi kakaowymi strukturami, odpowiedź brzmi: Trudno.

+0

RE: punkt 2. Cocotron mówi: "Obejmuje to AppKit, Foundation, Objective-C runtime i wspierające API, takie jak CoreGraphics i CoreFoundation" –

+0

Jest to druga połowa ostatniego zdania, ponieważ nadal brakuje ważnych struktur, takich jak jako usługi podstawowe (w tym usługi uruchamiania, między innymi) i książkę adresową. –