2008-11-24 14 views
5

¿Cuál es su opinión sobre si uno debe escribir una aplicación para una plataforma específica o utilizar un enfoque de plataforma cruzada y llegar a más clientes potenciales?¿Desarrollar la aplicación para ejecutar de forma nativa o ir a través de la plataforma?

Sería una aplicación basada en GUI y estoy pensando en usar Java.

La mayoría de las aplicaciones que he utilizado basadas en Java no se ejecutan tan bien como las aplicaciones nativas en las respectivas plataformas.

Las dos plataformas en las que estoy pensando son Windows y Mac.

Si estuviera creando la aplicación solo para mi propio uso, y tuviera que elegir un sistema, elegiría enfocarme en el mac.

Me gustaría escuchar sus ideas.

+0

¿De qué se trata esta aplicación? En términos generales – OscarRyz

+0

En términos muy generales ... el trabajo principal de la aplicación sería ayudar a realizar un seguimiento de las notas de investigación. –

Respuesta

0

¿Por qué no considera la aplicación web?

Puede construir un sitio Web interfaz de usuario rica ejecuta en el navegador que se ejecuta en todas partes y todas las plataformas, Si está familiarizado con Java, puede intentar GWT para el 'Weblication' Mira la demo page of GWT

0

la convierten en una Aplicación Web ? De lo contrario, Java, supongo. Depende de muchas cosas, tipo de aplicación, objetivo, etc.

3

Sugiero desarrollarlo primero para la plataforma con la que se sienta cómodo, y donde pueda hacer uso de todos los trucos de la plataforma; en este caso, esto sería OS X.

Más adelante, si su aplicación es exitosa para Mac, consulte las opciones de portabilidad. Es IMO no vale la pena esforzarse en portar hasta que sea seguro que habrá un gran interés en la aplicación en primer lugar.

4

Requisitos, requisitos, requisitos.

Con toda seriedad, "depende" es la respuesta correcta.

Truly cross platform es un trabajo duro; Trabajar donde usted/sus usuarios estén familiarizados vale algo. Resolver el problema de una manera efectiva es realmente la más alta prioridad.

1

Si su aplicación utiliza un diseño MVC, puede escribir clases de modelo portátiles con C++, controlador nativo y clases de visualización para cada plataforma que desee admitir. Eso le brinda lo mejor de ambos mundos: portabilidad donde sea práctico y una interfaz nativa para la que sus usuarios se lo agradecerán.

1

Estoy de acuerdo con su observación acerca de las aplicaciones Java frente a las aplicaciones nativas, aunque estoy seguro de que un programador Java con experiencia podría hacer que funcione.

La conclusión es que las API de programación para Mac y Windows son las mejores herramientas para construir interfaces en sus respectivos sistemas. Si quieres que tu aplicación funcione sin problemas en un sistema en particular, debes usar la API de ese sistema.

Si es absolutamente esencial contar con una implementación multiplataforma, considere escribir toda la funcionalidad básica (parte no de interfaz de usuario) para su programa en una biblioteca que pueda compilarse para ambos sistemas (C++ es una elección obvia), y luego construir una interfaz de usuario agradable para cada sistema objetivo que pueda realizar llamadas a la biblioteca común.

4

El desarrollo de plataformas cruzadas, en general, está un poco sobrevalorado como una forma de arte. Java es la tecnología líder aquí, pero incluso en este caso, la mayoría de los programadores de Java realmente no son multiplataforma. Hay algunos ejemplos espectaculares de herramientas como Vuze, LimeWire y JRipper que funcionan bastante bien en casi cualquier lugar, pero estas son excepciones, estadísticamente hablando. La mayoría de las aplicaciones de Java, especialmente de la variedad corporativa, están codificadas con una plataforma en mente, y nunca se mueven realmente.

Si desea usar Mac y Windows, considere pasar tiempo en la base de código de Limewire y Vuze. Ambas aplicaciones funcionan extremadamente bien en ambas plataformas.

Definitivamente necesitará dos compilaciones. Una construcción probablemente no funcionará.

1

En mi humilde opinión, esta discusión debe responder a las necesidades del cliente.

La mayoría de las veces, las soluciones de TI ofrecen, la forma en que se genera la solución es solo un detalle para el cliente.

Sin embargo, hacer que el código sea reutilizable podría ser útil en caso de que su primera elección del entorno de desarrollo fuera incorrecta.

muchos otros criterios pueden entrar en el pensamiento. por ejemplo, si su software es para el cuidado de la salud que desea mantener por 10 años, entonces debe seleccionar un sistema operativo compatible por más de 10 años (olvide Windows y Mac). etc.

2

En este día y edad, ¿existe realmente una buena razón para escribir código nativo?

Sí. Los idiomas y las bibliotecas disponibles no permiten una programación excelente. En el mejor de los casos, permiten escribir código que funciona bien en todas las plataformas, pero nunca sobresalen.

Elija uno y concéntrese en él. Concéntrese en esa audiencia (encontrará que las audiencias son diferentes en sus gustos y deseos de todos modos).

Una vez que tienes una aplicación, las personas claman por el otro lado, y justo antes de que alguien haga una competencia, evalúa el costo/beneficio de portar tu producto finamente ajustado y bien diseñado.

Si intenta 'servir a dos maestros', tomará decisiones de diseño basadas en lo que es más fácil para ambas plataformas, y ese no es un buen proceso de diseño.

-Adam

0

he tenido buena suerte con plataformas Java utilizando SWT. Esto le dará una buena apariencia nativa en cualquier SO, y no hay muchos problemas que requieran ningún código JNI. Con un poco de suerte, deberías poder distribuir exactamente la misma base de código para ambos objetivos, y debería funcionar.

Dicho esto, debe evaluar si realmente necesita la funcionalidad multiplataforma. Por lo menos, requerirá que pruebe la capa de GUI de su aplicación en cada sistema operativo (diseños de prueba, presentación, etc.). Con una aplicación grande, esto se vuelve engorroso muy rápidamente.

En cualquier caso, la elección de un lenguaje multiplataforma desde el principio le dará flexibilidad en el futuro. Si tuviera que escribir código nativo desde el principio, no sería trivial transferir el código a otra plataforma. Probablemente iría acompañado de varios errores, y también requeriría un puerto de todo el código de prueba para la nueva plataforma. Te encontrarás con problemas de sincronización con nuevas características, correcciones de errores, etc.Con Java, puede escribir pruebas JUnit que se ejecutarán en ambos sistemas operativos, y cualquier error o característica nueva se propagará a ambas versiones automáticamente.

Realmente depende de su aplicación específica. Si está anticipando una base de usuarios en ambos sistemas operativos, entonces eso debería dictar su elección de idioma.

6

me gustaría utilizar Qt y sí, definitivamente Destino de la plataforma de la Cruz ...

La razón principal no es, de hecho, lo que creo que es (al ser multiplataforma por sí mismo), pero en realidad que, al dirigirse múltiples plataformas de su El código de algunas raras y mágicas razones tiende a terminar con una mejor calidad de código. He visto esto suceder innumerables veces en mis propios proyectos. Cada vez que agrego una nueva plataforma, la calidad del código aumenta y el código se vuelve más limpio ...

Además, todas las aplicaciones serias deben tener la menor cantidad posible de "dependencias", ya que multiplataforma significa que tiene menos dependencias. .;)

Entonces, como una "prima" que llegue a su aplicación para ejecutarse en múltiples plataformas ...

+1

Creo que el código es más "Limpio" porque necesita escribir en estándares ya que algunas plataformas, principalmente Mac OS X y Linux son muy estrictas con su tolerancia a la desviación de los estándares –

1

depende de cuánto tiempo desea pasar de la aplicación. La forma más rápida es Java, de lo contrario puede construir su modelo con C++ y hacer un código de GUI por separado usando MFC y Cocoa.

0

Es posible obtener una bonita aplicación Java para ejecutar en Windows, Linux y Java - mira SBCommander por ejemplo - y ten en cuenta que puedes ejecutarla y mirar la UI incluso si no tienes el hardware que se supone que debe controlar

Por otro lado, una cosa que he encontrado muy difícil de hacer es escribir una aplicación multiplataforma que se ve y se comporta como una aplicación nativa en cada plataforma; hay demasiadas suposiciones diferentes sobre cómo debe comportarse una aplicación.

0

Realmente depende de quiénes serán sus usuarios. No vaya multiplataforma solo porque puede. Es necesario que haya una necesidad real independientemente de la herramienta. Y las pruebas van a consumir bastante tiempo. Aún deberá realizar pruebas exhaustivas en ambas plataformas.

Uso REALbasic para crear una amplia variedad de aplicaciones de escritorio multiplataforma desde una única base de código y me ha funcionado bien a mí y a mis clientes.

0

A menudo encuentro que los desarrolladores de PC intentan sacar provecho del mercado de Mac (algunos lo hacen con éxito). A su vez, desarrollan la aplicación en la arquitectura "multiplataforma" descrita anteriormente (Java, o algún Qt framework, etc.). El resultado suele ser una aplicación de aspecto espantoso con soporte deficiente de integración del sistema operativo y la reacción negativa de la comunidad comienza en los comentarios.

Mi consejo, transpórtalo. Haga un buen trabajo, comprenda su mercado antes de deshacerse de su producto multiplataforma en su enfoque de marketing de bombas de alfombra.

Cuestiones relacionadas