windows cocoa macos

¿Qué tan difícil es conseguir que una aplicación Cocoa se ejecute en Windows?



macos (3)

En el artículo de wikipedia sobre Cocoa dice:

También hay implementaciones de código abierto de las partes principales del marco Cocoa que permite el desarrollo de aplicaciones Cocoa multiplataforma (incluido Microsoft Windows), como GNUstep , Cappuccino y Cocotron .

Sin embargo, cuando observé si la aplicación de Mac Tweetie estaba disponible para Windows, el desarrollador la descartó :

Windows no tiene Cocoa, el entorno de programación en el que se crea Tweetie, como tal, parece una mala posibilidad.

Me gustaría tener una respuesta para señalar a los desarrolladores de Tweetie (y como un recurso para otros desarrolladores de cacao) que les diría:

  • ¿Qué implementación es la más adecuada para ejecutar una aplicación de cacao en Windows?
  • ¿Cuánto trabajo es probable que tome para que la aplicación se ejecute en Windows?
  • ¿Qué tan fácil / difícil es mantener un código base común para Mac y Windows?
  • (¿Alguna otra consideración que me haya perdido?)

Por supuesto, si sería demasiado trabajo, me gustaría saberlo también antes de sugerirlo y potencialmente enviar a alguien más en una búsqueda infructuosa.


Entre GNUstep, Cappuccino y Cocotron, Cocotron es la única opción posible para portar una aplicación de Mac a Windows. Cappuccino es para web y GNUstep solo se ejecuta sobre cygwin o mingw, lo que significa que la GUI no se parece en nada a las aplicaciones nativas de Windows.

Teóricamente es posible crear aplicaciones de ventanas de cacao utilizando Cocotron. Sin embargo, la realidad es que todavía es muy difícil de usar y todavía es bastante limitado en la API de Cocoa.

Por lo tanto, dos posibles soluciones:

  • Intente eliminar los códigos que no son compatibles con Cocotron en la base de códigos original y realice la compilación cruzada. Mantener la base del código común será doloroso.
  • Iniciar una nueva GUI en absoluto, no hay una base de código común. dos opciones aquí
    • Inicie un proyecto multiplataforma con un marco de aplicación cruzado como Qt o Java.
    • Iniciar un proyecto de Windows solamente. Hay muchas opciones aquí, aplicación .Net WinForm, MFC, etc.

Hay compiladores de Windows para Objective-C (el lenguaje de programación usado para escribir aplicaciones de cacao). Sin embargo, Cocoa incluye los marcos para presentar la GUI. Estos marcos visuales son específicos de Mac OS X porque usan solo Windows OS OS y otros controles. Entonces, alguien tendría que volver a implementar los controles en Cocoa para usar los controles de Windows.

Además, estoy bastante seguro de que Tweetie utiliza solo tecnologías Mac OS X como Core Animation. Esto no existe en Windows, por lo que los agradables efectos de animación presentes en las aplicaciones deberían implementarse de una manera completamente diferente.


No olvides

  1. "Las partes principales de los marcos de cacao" no son lo mismo que "la totalidad de los marcos de cacao". Tweetie podría estar usando algo que falta.
  2. Tweetie podría (muy probablemente está) utilizando API de los marcos que no son de Cocoa, como Core Foundation, Core Services, Core Graphics y Core Animation. Un puerto de los marcos de Cocoa solo no incluirá ninguna de estas API, e incluso un marco de emulación de Mac-API más completo no incluirá todos ellos.
  3. Estos marcos están persiguiendo eternamente a Apple. Incluso si se ponen al día, se atrasarán instantáneamente de nuevo a partir del próximo lanzamiento de Mac OS X. Los desarrolladores de Mac ya han postergado el uso de nuevas API en las nuevas versiones de Mac OS X mientras esperan que los usuarios se actualicen a esas nuevas versiones; ahora le está pidiendo a atebits que espere a que el desarrollador de otro marco se ponga al día con Apple nuevamente.
  4. Cualquier segunda implementación de una API existente tendrá errores que la primera implementación no tiene, y viceversa. Estas diferencias causarán problemas de desarrollo y apoyo.
  5. Le está pidiendo a atebits que agregue una tercera plataforma a una aplicación que ya existe en dos. Apoyar una plataforma es mucho trabajo. Soportar dos plataformas es muchísimo trabajo. ¿Apoyando a tres? Ahora te estás metiendo en el territorio de la gran compañía.

Así que, incluso con estos marcos similares a Cocoa, la respuesta es: difícil.