2011-10-20 6 views
5

Sí, me sorprendió un poco cuando un entrevistador mencionó que usan una GUI de Java-swing para una aplicación C/C++. Tenía curiosidad y le pregunté cómo realmente integran estos juntos, su respuesta fue "a través de mensajes". ¡Interesante! Bueno, soy nuevo en este tipo de enfoque y tengo curiosidad por si las empresas realmente usan este tipo de diseño. Si es así, ¿hay una gran ventaja para este diseño? Es un poco difícil para mí comprender cómo funcionaría este diseño, si tiene alguna referencia, comparta.Una GUI de Java para una aplicación C++: ¿Es este un buen diseño?

Para su información, el producto es una aplicación basada en la copia de seguridad de datos (posiblemente en una plataforma Linux/Unix). Gracias.

CV

+1

Supongo que la única razón por la que lo diseñaron de esta manera fue porque tenían un "chico C/C++" y un "chico Java" para trabajar juntos y ninguno quería desarrollarse fuera de su zona de confort. Me parece un mal diseño. – hspain

+0

No estoy seguro si esta es una pregunta de StackOverflow o [programmers.stackexchange] (http://programmers.stackexchange.com). Creo que esto puede deberse a la experiencia de sus codificadores: pueden estar más cómodos con las GUI de Java, pero están de acuerdo con las "agallas" de C/C++. De todos modos, voto que esta pregunta se mueva a [programmers.stackexchange] (http://programmers.stackexchange.com) como un sitio más apropiado este tipo de pregunta. –

+2

O alguien con cabello puntiagudo escuchó que Java es ideal para UI/Portabilidad (¡probablemente a fines de los 90!) Y obligó a usar Java. O podría ser que los sistemas de fondo dependieran de una gran cantidad de código nativo, por lo que era más fácil simplemente escribir todo como una aplicación C++ independiente. – ObscureRobot

Respuesta

3

Es difícil saber si se trata de un buen diseño sin más información acerca de los requisitos de la aplicación.

Otra cosa a considerar es que a veces los entrevistadores sugieren diseños extraños para ver cómo reaccionan los candidatos. Típicamente haré esto cuando estoy contratando para un puesto que no es una competencia personal mía, pero donde he tenido experiencia (por lo general, estoy aprendiendo cosas). ¡Mi objetivo es ver si el candidato es mejor para resolver el problema que yo! Los malos candidatos aceptarán servilmente mi pobre solución. Los mejores candidatos inmediatamente sugerirán una mejor solución. Los mejores candidatos compararán y contrastarán mi solución débil con su mejor solución y explorarán cuándo cada opción tiene sentido.

Supongo que la interfaz de Java se seleccionó por razones de portabilidad. Yo abogo por una interfaz basada en navegador para lograr esos mismos objetivos, pero tal vez su gente UI/UX realmente amaba Java.

7

No veo nada de malo en eso. Es muy común integrar diferentes componentes a través de mensajes. Creo que generalmente es mejor tener un entorno homogéneo (por ejemplo, todas las aplicaciones escritas en Java en lugar de Java y C++), sin embargo, a menudo es el caso en el que debe integrarse con componentes heredados o de terceros escritos en otros idiomas, ya sea para razones de costo o porque no hay otra opción.

La mensajería es una forma común de hacer esto. Considero HTTP bajo el paraguas de "mensajería", y casi todos los idiomas tienen una biblioteca HTTP, lo que la convierte en una buena opción como un "lenguaje" de mensajería común. Al integrar un sistema muy heterogéneo, hay herramientas/marcos dedicados no solo para integrar componentes, sino también para integrar sistemas de mensajería (por ejemplo, ESBs).

+3

Estoy de acuerdo. ¿Por qué reescribir un sistema que funcione si simplemente puede agregar una GUI que le hable? Esto ocurre bastante a menudo en la industria de servicios financieros, donde un sistema de respaldo heredado recibe una nueva GUI, a menudo en Java, que se comunica a través de mensajes al back-end. De hecho, un porcentaje muy grande de soluciones de banca por Internet e incluso cajeros automáticos funcionan exactamente de esta manera. – Ewald

1

Podría haber limitaciones en cuanto a por qué tienen que llamar a las funciones de C++ en primer lugar y, además, podrían haber tenido requisitos distribuidos del cliente. ¿Cómo desarrollaría una solución, por lo que crearía un sistema de mensajería y esa interfaz con C++ en el lado del servidor? Es una solución de trabajo al final del día. No esperaría que la interfaz de usuario se haya construido en C++ porque el lado del servidor está escrito en C++, a veces es necesario ensamblar diferentes tecnologías para lograr su solución.

1

Es un enfoque viable/aceptable, lo vi utilizado en una empresa muy grande (Fortune 20 si hay tal cosa) cuando trabajé allí como contratista 2005-2006.

cuando pregunté por qué, me dijeron:

  1. Necesita interfaz gráfica de usuario de Linux, Java/Swing es una opción respetable. También creo que tenían algunos desarrolladores de Java que necesitaban trabajo.
  2. Tenían una gran base de código de rendimiento crítico en C++/C.
  3. Ya usaban mensajes extensamente y tenían bibliotecas para eso.
  4. La interfaz de mensajería, aunque es más cara de desarrollar, permite al equipo escribir programas de prueba (como reemplazar la GUI de producción por una secuencia de comandos python).

Dicho todo esto, Qt y GTK/Gtkmm son muy buenos marcos de GUI, ¿por qué no utilizarlos?

Cuestiones relacionadas