2010-02-05 8 views
10

Sé que esto es parcialmente subjetivo, pero espero que con suficientes detalles pueda obtener una buena respuesta.¿Está usando Java el lenguaje/plataforma adecuado para desarrollar una aplicación de contabilidad basada en GUI?

Estoy buscando desarrollar una aplicación de contabilidad dirigida a un segmento de mercado específico (piense en Quickbooks, pero ajustado). La mayor parte de la aplicación serán tablas editables que están vinculadas con datos de BD y algunos informes básicos y funcionalidad gráfica.

Debe ser multiplataforma (OS X y Windows).

Se conectará con una base de datos local. (SQLite o Derby o lo que sea)

La velocidad no es un problema "enorme". Debe ser razonablemente receptivo (no estoy familiarizado con la velocidad de Java en comparación con C/C++).

Lo reduje realmente entre C++ con QT y Java. Solo conozco una cantidad muy pequeña de Java, pero trabajo con C++ regularmente. Sin embargo, Java hasta ahora parece ser la mejor solución general y la cantidad de libros/documentación es enorme, lo que es un plus.

  1. ¿Qué tan fácil es la integración con Java GUI y una base de datos? ¿NetBeans facilita este proceso o debería usar Eclipse? Estoy buscando una experiencia similar a C# con Visual Studio.
  2. ¿El problema del redondeo de "Big Decimal" en Java es un problema importante o es fácil de solucionar? (lo siento si me parece inculto sobre el tema, pero realmente no estoy familiarizado con Java)
  3. ¿Hay algún inconveniente real con Java que no pueda estar pensando aquí o alguna razón real fuerte por la que debería usar C++ con QT? ?
  4. Si finalmente quise portar todo o parte de ella a la web, ¿Java en el escritorio facilita la migración posterior?

Respuesta

10

Lo primero que debería decir es "no hay una respuesta correcta aquí".

Java puede hacer exactamente lo que quiere. El kit de herramientas GUI, después de años de reprocesamiento, es muy avanzado.También hay muchas herramientas, marcos y extensiones que puede usar para que la GUI se vea muy avanzada.

Java también tiene un excelente marco de conexión de base de datos. Con las herramientas de Mapeo Relacional de Objetos (ORM) (Hibernate y otros) es muy fácil obtener datos de un DB, colocarlos en Objetos, manipularlos y volverlos a poner en la base de datos. Las herramientas ORM también facilitan la conexión de objetos de datos directamente a la GUI, y usan las reglas en esos objetos para proteger los datos contra la corrupción.

El soporte multiplataforma le ayudará mucho. El único gran inconveniente es tener un tiempo de ejecución de Java en la máquina para los archivos. Hay formas de evitarlo (lo mejor es que un instalador lo coloque allí).

5
  1. no estoy familiarizado con Netbeans, pero que había hecho varias de las aplicaciones Java con acceso a base de datos. Lo encontré bastante fácil incluso cuando estaba usando gvim en lugar de un IDE.
  2. ¿De qué tema "Gran Decimal" está hablando? Todos los lenguajes de computadora tienen problemas con el mapeo entre binario y decimal, pero si sabes lo que estás haciendo, puedes manejarlo independientemente del idioma. Demonios, hice aplicaciones de ingeniería en FORTRAN-H.
  3. Aparte del hecho de que conoce C++ mejor, no hay ninguna razón para no usar Java. Se adapta bien a sus necesidades.
  4. Escribir algo para que eventualmente se pueda transportar a la web es más una cuestión de asegurarse de usar patrones Model-View-Controller y tenga en cuenta que su vista puede terminar siendo algo completamente diferente. Esa es una filosofía de diseño en lugar de un requisito de idioma.
+0

En cuanto al n. ° 2, a lo que me refiero es solo un problema doble que leí. - http://www.javaranch.com/journal/2003/07/MoneyInJava.html – Awaken

+1

Todos los idiomas tienen los mismos problemas con los números de coma flotante. BigDecimal es una solución, no es un problema. –

1

Si necesita Java multiplataforma es una buena apuesta.

Recuerde a efectos contables, utilice un tipo de datos adecuado para los importes. Double/Reals/Floats etc. todos representan esencialmente números como una fracción binaria multiplicada por un exponente, lo que da como resultado errores de redondeo. Para Java BigDecimal se informa que funciona bien.

2
  1. Cualquier cosa con frijoles en el título que evitaría, pero java funciona muy bien con DB y GUI.
  2. No estoy seguro de lo que quiere decir, pero es posible que desee hacer su propia clase de dinero. Apenas me gusta, es un montón de trabajo, y luego se redondeará exactamente como lo desee.
  3. Es mucho más probable que funcione correctamente en Java que en C++, pero si tiene una GUI realmente complicada, la información de la GUI de Java es más fácil de usar que la mayoría de las aplicaciones de C++ para algunos pero más difícil para otros.
  4. No realmente.
+3

NetBeans no tiene nada que ver con JavaBeans. Es uno de los mejores IDE Java disponibles. –

2

Sin concurrencia? ¿Está solo en una base de datos local? Encuentro eso sorprendentemente limitante para un nuevo proyecto de software. Me sorprende que no estés pensando en la GUI del navegador AJAX con el back-end del servicio web.

EDITAR: La velocidad no es un problema y ¿crees que es posible que necesites llevarla a la web? Comience en la web y ahórrese muchos dolores de cabeza.

+0

+1, una aplicación web no es significativamente diferente en términos de complejidad a una aplicación Swing. No tiene sentido hacer ambas cosas. – Pool

+0

Lo que dices definitivamente tiene sentido. Empecé a pensar en ir con una solución PHP/JavaScript/MySQL, pero el mundo web está un paso más lejos de mis áreas de conocimiento, especialmente AJAX y el back-end del servicio web. La seguridad no es algo con lo que esté familiarizado y desde el punto de vista del desarrollo, ahora es más fácil para mí trabajar en una versión de escritorio (trabajo actual y situación horaria). Lo pensaré más sin embargo. – Awaken

+0

Las últimas 2 aplicaciones "Swing" que he hecho han sido diseñadas como híbridas: Swing Client hablando con SOA/Server backends. Facilita el acceso a la web. Definitivamente planifique esto en su arquitectura, incluso si no escribe una 'web' ui. – Kylar

1

Esto puede ser de interés para ti

Ajaxswing

aunque me gustaría que otros declararon desarrollarlo desde cero como una aplicación web.

2

Sugeriría Groovy en lugar de Java. Es una especie de Java ++, en el sentido de que casi todo en Java también está en Groovy, pero Groovy proporciona una serie de beneficios además de eso. El lenguaje Groovy proporciona una cantidad de métodos auxiliares. Hace matemáticas correctamente por defecto (no hay problemas matemáticos dobles).

En cuanto a web vs desktop, puede usar Grails para web y Griffon para escritorio. De nuevo, basado en Groovy.

Para IDE, si elige Groovy, entonces IntelliJ (aunque para hacer web, es costoso), o SpringSource Tool Suite, que es un derivado de Eclipse. Básicamente Eclipse con una cantidad de complementos, incluido Groovy.

+0

La pregunta parece enfocarse en el desarrollo de GUI. ¿Groovy tiene ventajas en Java GUI? – extraneon

+0

No. Es lo mismo, ya que Groovy puede usar todas las mismas bibliotecas. El marco Griffon parece interesante, ya que creo que es una envoltura alrededor del SWT, por lo que puede ser una ventaja. Me imagino que si vas a aprender un nuevo idioma, ¿por qué no aprendes uno más poderoso y más productivo? – Mikezx6r

+0

Griffon es principalmente un envoltorio de Swing, ya que admite ese conjunto de herramientas por defecto. Sin embargo, si también es compatible con SWT y JavaFX si instala los complementos adecuados. – aalmiray

0

Definitivamente recomiendo ir con C++ y Qt. Especialmente si usa Qt Creator o Qt Designer para hacer el diseño de la interfaz de usuario.

Si necesita o simplemente quiere usar Java (o un lenguaje JVM), usaría Qt Jambi. De cualquier manera, Qt es (en mi humilde opinión) una plataforma muy superior, independientemente del idioma utilizado. Si no has hecho ningún desarrollo de Swing o SWT antes, te concedería unas dos horas antes de que te apetezca comer una bala.

7

Obviamente no hay una solución, pero hay ventajas e inconvenientes para ambas soluciones, e incluso hay una tercera solución: Java con Qt.

Primero, mi experiencia con C++ y Qt ya tiene algunos años, por lo que podría no ser tan precisa, y mi interés en el desarrollo de la GUI Java finalizó hace uno o dos años cuando vi las herramientas para el desarrollo. Normalmente trabajo en Java, pero no con Swing.

Dicho esto, la principal diferencia entre Java y C++ parece ser la implementación. Java siempre depende del entorno Java instalado, y C++ es un poco más autónomo. Daría una ligera preferencia a C++ a ese respecto si puede administrar la implementación en dos plataformas.

En cuanto al desarrollo de GUI, las herramientas de Qt fueron muy buenas y solo han mejorado. El marco también coincide con el proceso de GUI muy de cerca, y es un ajuste natural para ese tipo de trabajo. Swing parece ser un poco más bajo nivel, y requiere una buena cantidad de código repetitivo. Y no conozco ninguna herramienta de desarrollo realmente buena, aunque escuché cosas buenas de la mantis.

Si cree que Java es el camino a seguir para la implementación o la lógica de back-end, pero las herramientas de GUI para Qt son demasiado buenas para ignorarlas, consulte la pregunta sobre Java Swing or Java Qt. Vale la pena leerlo.

En su caso particular iría con C++/Qt ya que tiene experiencia con C++, y no es del todo trivial construir correctamente una aplicación Java Swing.

1

Bueno, si conoce bien C++, esa es la razón número uno para hacerlo. QT es un kit de herramientas muy bueno y será mucho más productivo con eso que con Java (ya que conoce bien C++). También las posibilidades de que hagas una mejor aplicación son mayores debido a esa experiencia.

Entonces, a menos que esté desesperado por obtener experiencia con Java (y hoy en día eso no es tan grande como solía ser), quédese con C++/QT y desarrolle algunas habilidades multiplataforma.

Personalmente, si fuera a buscar una nueva aplicación desde cero, y quisiera aprender algo nuevo, sería una aplicación web con algunas novedades de HTML5/js. Las características de la web de lujo son más propensas a ser el futuro de las aplicaciones sobre los clientes de escritorio gruesas (y amigables en más plataformas móviles).

2

Estoy desarrollando una herramienta de GUI en Java usando NetBeans, y no tuve ningún problema hasta el momento. No confíe totalmente en el editor de GUI de NetBeans, solo lo uso para diseñar mis cuadros de diálogo y paneles. Experimenté que si usa MVC, es mucho más fácil usar el editor de GUI de NetBeans. Entonces puede dejar totalmente la parte de diseño en NetBeans. Mire en el nuevo SwingSet3 demo, y decida si los controles Java Swing serán suficientes para usted o no (en términos de apariencia y controles GUI disponibles). Además, eche un vistazo a SwingX components algunos de ellos son realmente increíbles y bonitos, como ShadowBorder, TitlePanel, etc. Definitivamente, le sugiero que use JXTable para sus tablas en lugar de JTable. Dada la popularidad de Java, no creo que el problema de BigDecimal ya no se haya abordado. En cuanto a DB, Java viene con su propia característica completa JavaDB, que es realmente pequeña en tamaño - solo 2.5 MB. Esto será útil si no quiere instalar DBMS pesados ​​como MySQL. Este también será otro nivel de abstracción en mi humilde opinión: sus clientes casi no verán ningún DB externo que se utilice. Nunca se deje engañar por que ser portátil significa que su software Java funcionará automáticamente en diferentes plataformas. Definitivamente necesitará más esfuerzos, pero si trabaja en su diseño inicial y crea su software manteniendo las diferentes plataformas (no solo sistema operativo, escritorio, web, etc.) en la parte posterior de su cabeza, será fácil ajustarlo un poco. poco para que sea totalmente portátil. Ve MVC manera, no va a doler. Mis 2 centavos.

0

Para responder a la pregunta 2, Java puede ser un poco difícil de resolver con números de punto flotante, pero ha mejorado mucho a partir de las versiones 1.5 y 1.6. Si baja por la ruta de Java, asegúrese de tener la versión más reciente disponible.

Los problemas involucrados se explican bastante bien en este artículo: http://www.ibm.com/developerworks/java/library/j-math2.html.

0

Como algunos otros han señalado, una aplicación web podría funcionar bien. Creo que RubyOnRails es muy productivo y puedes ejecutarlo en JRuby en ambas plataformas o con cualquier Ruby nativo. Tendría que buscar seguridad pero no debería ser un gran problema.

Si no conoce Java también puede consultar Mono. Puede crear aplicaciones de WindowsForms con él y ejecutarlo tanto en Mac como en Windows, o si usa la ruta web y utiliza ASP.NET en Mono. Sigo pensando que RubyOnRails te dará un tiempo de desarrollo más corto que ASP.NET, pero es una opción.

Cuestiones relacionadas