entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Desarrollo de aplicación de escritorio en Java

Hola,

Quiero hacer una aplicación de escritorio y al mismo tiempo una versión para web. La aplicación de escritorio necesito que sea muy rápida en la consulta de base de datos e introducción de datos y al mismo tiempo, que las librerías que calculan temas relacionados, me puedan servir para otra aplicación que voy a hacer, muy parecida, pero en un entorno web.

Me pregunto si eligiendo java estoy en la mejor de las posibilidades. Me han comentado que en el desarrollo de la aplicación web el java es el mas acertado pero que en escritorio va mas bien lento. ¿Sabéis si esto es así? Para mi lo mas importante es que la aplicación de escritorio sea muy rápida. Si me podéis ayudar al respecto, os lo agradecería.

Un saludo.

0voto

bl4z3r comentado

¿Quien te ha dicho que Java es acertado para desarrollo web? No es que este desestimando Java. Solamente me da curiosidad el por que no te nombro otras opciones.

0voto

jlc10 comentado

Hola,
La verdad es que no te sabría decir quien me ha dicho eso y porque no me ha comentado otras opciones.

Lo que quiero hacer es una aplicación de escritorio veloz en la introducción y consulta de datos que tuviese posibilidad de tener una versión en entorno web y que gran parte del desarrollo fuese común ¿Que me aconsejas?

Un saludo, Jose Luis.

3 Respuestas

1voto

bl4z3r Puntos16850

De acuerdo a lo que planteas, lo que necesitas es una solución del tipo empresarial con arquitectura cliente-servidor.

Cuando me refiero a empresarial, es que vas a tener que dividir tu aplicacion en capas y niveles. Con respecto a las capas, estas dependerían totalmente del nivel en la que se encuentra.

Yo lo que propondría es la arquitectura por default que da Microsoft en sus guías.

A nivel de cliente, donde están las PCs de los usuarios, desarrollaría dos tipo de aplicaciones cliente:

  • Una de escritorio donde implementaría el patrón MVP. Esta iría instalada en cada PC.
  • Una aplicacion web con el patrón MVC. Esta seria instalada en un servidor web.

A nivel servidor, en uno o varios servidores, desarrollaría el corazón de la solución empresarial: Una app donde expondría mis servicios, sean de la tecnología que sea: XML, JSON, RPC, WS, etc. y ademas tenga la lógica de negocio del la problemática a resolver y la conexión a base de datos.

La solución tendría que tener, mas o menos, esta estructura.

- Fuentes (carpeta)
  - Cliente (carpeta)
     - Web (carpeta)
        - Modelo (ensamblado/paquete)
        - Vista (ensamblado/paquete)
        - Controlador (ensamblado/paquete)
     - Escritorio (carpeta)
        - Modelo (ensamblado/paquete)
        - Vista (ensamblado/paquete)
        - Presentación (ensamblado/paquete)
  - Servidor (carpeta)
     - Servicio (carpeta)
        - Host (ensamblado/paquete)
        - Interfaz (ensamblado/paquete)
        - Implementación (ensamblado/paquete)
     - Negocio (carpeta)
        - Entidades (ensamblado/paquete)
        - Fachada (ensamblado/paquete)
        - Componentes (ensamblado/paquete)
        - Workflow (opcional) (ensamblado/paquete)
     - Datos (carpeta)
        - Agentes (opcional) (ensamblado/paquete)
        - Componentes (ensamblado/paquete)
   - Transversal (carpeta)
      - Seguridad (opcional) (ensamblado/paquete)
      - Comunicación (ensamblado/paquete)
- Pruebas (carpeta)
  - Cliente (carpeta)
     - Web (ensamblado/paquete)
     - Escritorio (ensamblado/paquete)
  - Servidor (carpeta)
     - Servicio (ensamblado/paquete)
     - Negocio (ensamblado/paquete)
     - Datos (ensamblado/paquete)

De esta manera tendrás todo separado y sera fácil de mantener.
Con respecto al requerimiento de performance, eso dependerá mucho de como programes tu aplicacion y del hardware para procesar las peticiones de los clientes.

Con respecto al lenguaje de programación, todos son validos. Yo solamente recomendaría los mas populares por una cuestión de que siempre va a haber soporte para estos. Ademas, te seria fácil encontrar librerías y documentación relacionada para poder llevar a cabo tu proyecto.

Espero que te sirva. Saludos!

0voto

jlc10 comentado

Muchas gracias, me has aclarado bastante el panorama.

1voto

cobasESP Puntos19650

Para realizar una aplicación web, usa HTML + PHP, es la opcion mas acertada, un servidor java es muy caro y por uno 5 o 6€ al mes tienes un hosting php y hasta algunos hosting por ese precio te regalan el dominio.

En cuanto a la app de escritorio es mas recomendable java ya que es multi plataforma, cualquier SO que soporte java podrá correr tu app sin tener que hacer diferentes versiones, una app de escritorio con java te funcionaria en windows y en mac por ejemplo.

Y para la app de escritorio te recomiendo que uses netbeans, tiene un gestor de ventanas muy cómodo y rápido que te facilitará crear la interfaz gráfica, yo usaba eclipse y una librería externa y siempre me daba fallos hasta que encontré netbeans.

Espero que la info te ayude.

0voto

jlc10 comentado

Hola Cobas, gracias por la "info". Te pongo en situación.

Quiero hacer un ERP con varias áreas donde habrán infinidad de cálculos y donde el PHP creo que sería lento, además el servidor donde se alojaría el código estaría en el cliente final. Por lo tanto tendrían acceso al código fuente.

Quería hacer dos versiones del mismo ERP, una versión con el interfaz en web y otro con el interfaz para escritorio. Me gustaría aprovechar para ambas la parte lógica de la aplicación, y solo cambiar las vistas.

0voto

Gilberto comentado

tiene razon buen respuesta :)

1voto

cobasESP comentado

Pues entonces, yo usaría python, tiene librerías para hacer interfaces gráficas y librerías para crear webs, y tendrías todo el código en python. De hecho existe un ERP llamado Open ERP que tiene licencia GPL y esta totalmente creado en python,tu puedes crear tus librerías para ese ERP, échale un vistazo para que veas de que te hablo.

1voto

Exedore Puntos440

Si necesitas hacer dos versiones de una misma aplicación, yo te recomiendo un esquema orientado a servicios (SOAP / REST), de manera que solo tengas que desarrollar de cara al cliente en los diferentes dispositivos o lenguajes.

Si me preguntas por tecnologia yo me iría por algo como:

Del lado de los servicios.
-Servicios REST (RestController)
Spring MVC (java) puedes montarlo en openshift
-Base de datos Mysql con el driver nativo (JDBC)

Del lado movil.

  • Ionic (Para que puedas usar angular y compilar en todos los dispositivos)

Del lado del cliente escritorio.

De todas maneras si quieres ahorrarte mas trabajo y tu cliente te lo permite. Yo podría sugerir una aplicación html5 (Angular) que sea responsive para los dispositivos móviles.

0voto

Gilberto comentado

buena respuesta,la implementare

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta