visual studio net mac instalar full for code c# .net objective-c cocoa realbasic

c# - net - visual studio mac vs windows



Crear una aplicaciĆ³n multiplataforma de Windows, Mac OS X (21)

Adobe Flex, con las bibliotecas de AIR, hace un buen trabajo al brindarle un entorno de desarrollo único y de alto nivel para este tipo de cosas. He escrito varias utilidades que las personas usan en ambas plataformas indistintamente.

También obtiene una portabilidad razonable para un navegador incluido, si eso le interesa. Pero creo que es una solución bastante buena sin considerar ese beneficio.

Me gustaría crear una aplicación que se ejecute tanto en Windows como en Mac OS X. También me gustaría aprovechar lo mejor de la plataforma que ejecuta para ofrecer en lo que respecta a Frameworks, API, etc. ¿Hay alguna manera de hacerlo? esto sin tener que escribir el código Objective-C y luego el código C #? He estado pensando en C ++ como una alternativa, pero me preguntaba si había algo más. La aplicación estará basada en GUI (aunque aún no sé exactamente qué hará)

-GRAMO.


Como otros han mencionado, definitivamente es posible crear una interfaz gráfica de usuario multiplataforma en Java tanto en Windows como en Mac. Sin embargo, si desea que su aplicación se integre y se comporte de una manera que lo haga sentir como una aplicación diseñada desde cero para la plataforma en la que se ejecuta, realmente debe desarrollar la GUI y la experiencia del usuario para cada versión de la aplicación por separado.

Si analiza qué va a hacer su aplicación y calcula que existe una porción significativa de código / lógica que podría compartirse entre plataformas, entonces escriba esa parte de manera portátil en un idioma que esté disponible en ambos sistemas. C, C ++, Java, Python, Ruby, etc. Si no hay una parte significativa, es decir, la mayor parte del código va a ser para la GUI, entonces hay menos razones para compartir cualquier código.

En el caso de que haya una porción significativa de código común, sugeriría buscar en Python y Ruby como lenguajes de implementación, ya que hay enlaces Cocoa para esos idiomas en la Mac y en Windows con el uso de IronPython e IronRuby podría usar reutilización que código en una aplicación .Net también.


Debe usar las mejores herramientas disponibles para cada sistema operativo.

El código C / C ++ puede separarse de la GUI y usarse en cada programa desarrollado por separado.

Antes de tomar una decisión, eche un vistazo a las aplicaciones multiplataforma que se han desarrollado con kits de herramientas portátiles como Qt o wxWidgets. En mi experiencia, nunca son tan pulidos como sus contrapartes nativas, especialmente en el mac.


Echa un vistazo a Real Studio . Seriamente. Puede escribir una aplicación en Real Studio e implementarla en Windows, Mac OS X y Linux.

Editar: Real Studio ahora es Xojo .



Es bueno que estés pensando en la portabilidad desde el principio; es mucho más difícil "conectarlo" después de los hechos.

Existen varios kits multiplataforma disponibles, pero en mi humilde opinión, a todos les falta un aspecto "nativo" en todas las plataformas admitidas. En la Mac (lo que uso), los defensores de tales kits siempre quieren mencionar que están usando controles nativos. Ese es un buen comienzo, pero no es todo el viaje. Otros asuntos abordados por las Pautas de Interfaz Humana de Apple incluyen cómo se deben organizar los controles, cómo se deben redactar las etiquetas de los botones, qué atajos estándar se deben usar, etc.

Incluso Microsoft tuvo que aprender de la peor manera sobre los peligros de tratar de escribir una GUI multiplataforma, con el desafortunado Word 6.0 para Mac.

En mi humilde opinión, un mejor enfoque es utilizar un diseño MVC , con la capa del modelo escrita en C ++ portátil y estándar, y las capas de vista y controlador usando el kit de herramientas nativo para cada plataforma. Para la versión Mac, Carbon y C ++ en general solían ser una opción interesante que ahora no es compatible, por lo que querría usar Cocoa, usando Objective-C en la vista y Objective-C ++ en sus controladores para cerrar la brecha de idioma. Su versión de Windows también podría compilar su modelo como "C ++ administrado" y usar cualquier lenguaje .NET para controladores y vistas.


Estoy planeando hacer algo similar, y estoy considerando crear una aplicación de Windows C # / .NET y luego portarla a OS X usando Mono. Mi aplicación ya tiene una interfaz de usuario completamente diseñada (a excepción de la barra de título y los botones de esquina), por lo que las diferencias estéticas del sistema operativo no deberían afectarme demasiado.

No estoy seguro de lo que quiere decir al aprovechar lo mejor de cada plataforma en términos de marcos y API, etc. En general, escribir una aplicación multiplataforma significa escribir en un mínimo común denominador, y por lo tanto significa no sacar lo mejor de cada plataforma.


Gracias por todas sus respuestas. He estado investigando y jugando con WPF y CAnimation, etc. Parece que usar un modelo C / C ++ y hacer la GUI individualmente para cada plataforma es la mejor manera de hacerlo. Gracias por toda tu ayuda.


Java o Mono vienen a mi mente. Algunas personas pueden argumentar que los kits de herramientas gráficas de Java no son lo mejor, pero parece ser, al menos para mí, la forma más fácil de portar su aplicación a varias plataformas y evitar dificultades de despliegue.

Mono, por otro lado, podría ser un poco más difícil de portar ya que tendrías que escribir al menos la GUI dos veces si planeas tener widgets nativos (ya sea winforms o GTK para Windows y CocoaSharp para Max) pero podrías escribir el back-end una sola vez y desarrollar una interfaz para cada plataforma.

Como dije, los toolkits de la GUI de Java pueden no parecer "nativos" dentro de OSX o incluso en Windows, pero ciertamente funcionan en ambas plataformas, puedes usar Swing o AWT.

En cuanto a mono, puede usar GTK o Winforms para Windows y OSX pero aún no se sentirán nativos, puede usar CocoaSharp, que son enlaces al marco de trabajo de Cocoa pero no estoy seguro del estado del proyecto (léase: funcionalidad apoyo)


Los chicos de Magnetism Studios escriben sobre Cocotron para construir un ejecutable de Windows con Xcode.

No tengo experiencia con Cocotron, pero si tuviera que escribir una aplicación de Windows, con un historial de desarrollo de Mac, sería lo primero que intentaría.


Mi sugerencia, usa Python. Python se integra con Objective-C y C # (IronPython). Solo evite muchas de las nuevas características del idioma y estará bien.

De acuerdo, no será descuidadamente fácil. Pero yo diría que no debería ser tan fácil. Se vuelve muy evidente cuando los diseñadores no toman en cuenta cómo funcionará su aplicación cuando se transfiere a otra plataforma.


Mientras no estés vinculado a los idiomas, parece que Java es un buen candidato. Emparéjalo con SWT para la GUI, y tendrás una aplicación nativa en cualquier sistema operativo que te guste.


Para completar, ahora vale la pena agregar Unity a la lista.

Sería muy difícil crear una aplicación de aspecto nativo para cualquiera de las plataformas y las herramientas generales de GUI están lejos de ser maduras. Pero no se trata solo de un motor de juego y puedes escribir en C # / Mono, usar un rango decente de libs y desplegar Win y OSX de forma bastante fácil.




Si decides ir con C ++, hay una serie de buenas bibliotecas de GUI multiplataforma que te permitirán evitar tener que duplicar el código GUI para cada plataforma. Por ejemplo:

Hay varios otros proyectos similares, pero esos son algunos de los mejores y más conocidos. Para el resto de su código, cualquier cosa específica del sistema, por supuesto, tendrá que escribirse utilizando un código C ++ por separado para interactuar con las API de Win32 o la API del sistema de OS X cuando sea necesario. Dicho esto, es posible que pueda evitar gran parte del código específico del sistema mediante el uso de bibliotecas extensas como Boost .

Otras sugerencias serían cosas como usar un archivo de configuración en lugar del registro de Windows o un archivo plist en el mac. En lugar de eso, realice un análisis de enfoques independientes de la plataforma siempre que sea posible para minimizar los lugares en los que debe escribir código utilizando las API del sistema.


Si eliges el lenguaje C ++, definitivamente recomendaría Qt para eso. Su aplicación se puede implementar en Windows y Mac según lo solicitado en el OP, pero también en Linux, y ahora, con la última versión en teléfonos inteligentes que utilizan iOs, Windows RT y Android.

Está bien documentado y muy activo en la web (incluido en SO).

El único punto negativo que veo es la herramienta de creador de Qt que, en mi humilde opinión, es menos fácil de usar que las herramientas históricas (como Visual Studio, por ejemplo), pero no estás obligado a usarlo como IDE para el desarrollo de Qt.


Si es un desarrollador de Windows, use las formas de pago Qt o C #; si eres un desarrollador de Mac, puedes probar Cocotron ( http://www.cocotron.org/ ), pero todavía no está terminado al 100%, aunque se han enviado aplicaciones comerciales con él.


También echa un vistazo a fltk , wxWidgets es muy bueno y rico, pero también muy grande ...


Yo segundo Java. Está diseñado como una solución multiplataforma.

Otros han mencionado Adobe Air.

Similar a Adobe Air es Silverlight. Creo que es (o será) completamente multiplataforma.


wxWidgets es una biblioteca multiplataforma de C ++, que es una elección práctica. Pero estoy de acuerdo con Sherm: todas las bibliotecas multiplataforma crean una interfaz de usuario inferior a las aplicaciones nativas.

Cada sistema operativo tiene una semántica de UI diferente (órdenes de botones, etc.), por lo que si bien puedes lograr un buen aspecto, conseguir la "sensación" correcta en cada plataforma a través de una capa de visualización es casi imposible.

Dependiendo de lo que termine haciendo, es posible que encuentre una mejor interfaz web (por ejemplo, incruste un servidor web en su aplicación y envíe páginas HTTP a un navegador). ¡Entonces evitas los problemas de L & F!

Alternativamente, puede decidir que va a tener un L & F completamente no estándar, y buscar algo como wxWidgets o Tcl / Tk.