Autor Tema: Desarrollo de aplicación JAVA buscando máximo performance, que framework usar?  (Leído 2545 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aniceto

  • Trade Count: (0)
  • Sv Full Member
  • *
  • Thank You
  • -Given: 26
  • -Receive: 14
  • Mensajes: 564
  • Es que uno de cipote es tonto!
Buen día señores, vengo a pedir opinión en base a su experiencia más que a resolver un problema técnico para tomar la mejor elección.

Tengo un proyecto personal, de desarrollar una aplicación que esté disponible de manera gratuita con una versión de pago que lleve más características como más reportería, manejo de múltiples empresas y múltiples monedas, etc. Quiero desarrollarlo como una aplicación web, es decir trabajar con ella de forma web pero tambien con clientes móbiles que sean mas que todo para ver informacion rapida y sacar reportes (ya sean aplicaciones nativas o aplicaciones web adaptadas al formato de móbiles) en iOS y Android, por tal razón debo de hacer la lógica de negocios bien desacoplada, en forma de web services RESTful preferiblemente. Lo que quiero hacer es algo parecido a Openbravo, no en que sea un ERP sino en el modelo gratis y de pago con más funcionalidades.

El dilema que tengo es que, pensando de manera optimista la aplicación podría llegar a tener muchos usuarios usando la versión gratuita y esperando tener usuarios de pago obviamente, pero como no tengo una estimación pues yo quisiera hacer mi aplicación lo más optimizada posible, es decir que aproveche al máximo los recursos del servidor donde se encuentre alojada y que soporte la mayor carga de usuarios posibles de acuerdo siempre a los recursos.

Bueno, como habran notado por el foro en que lo puse pues esta aplicación deseo hacerla en JAVA ya que es en lo que yo tengo experiencia de varios años, he podido trabajar con algunos frameworks como Struts 1&2 y Seam 2, no puedo Spring pero me parece muy interesante así como otras alternativas. Como servidor de aplicaciones quiero utilizar Jboss 7 u 8 (Wildfly) y como base de datos PostgreSQL 9.3 . En estos momentos poseo un servidor dedicado pero podría moverme a utilizar un PAAS para dicho fin como Openshift. Las características de mi servidor dedicado son:

CentOS 6.5 64-Bit
Intel® Core™ i5 - 4 núcleos
4 GB RAM
300 GB HDD
10TB de ancho de banda mensual

Entonces, mi duda está a nivel de desarrollo respecto a los frameworks que debería utilizar o si no debería utilizar ninguno, es decir hacerlo utilizando puro Servlets y JSP con RESTful web services, o utilizar un framework como Spring MVC, si utilizar o no utilizar Hibernate para trabajar con la base de datos o usar SQL puro (aunque auxiliandome de alguna librería como Apache DBUtils). También considerando utilizar algún framework javascript para trabajar la parte del cliente como AngularJS solo pegandose a los servicios REST. Mi duda sobre usar un framework JAVA como Spring o usar Hibernate para la persistencia es porque me imagino que, aunque brinda muchas posibilidades y facilidad de desarrollo se que eso puede hacer más pesada la aplicación en terminos de rendimiento y consumo de recursos del servidor, y esto pues traducirse a no poder procesar tantos usuarios concurrentes como debería.

Aunque tengo bastante experiencia en JAVA nunca desarrollé una aplicación utilizando simplemente JSP y Servlets o haciendolo de la forma más básica, tuve que aprender de un solo ya usando Struts 1 para mi primer trabajo, entonces no conozco cuales serían los beneficios de trabajar puramente con JSP/Servlets sobre usar un framework, si la ganancia en rendimiento será lo suficientemente significativa como para justificar el no utilizar un framework (porque el no usar un framework también me tocaría hacer varias cosas a patita). El tiempo no es un problema ni el tener que pasar por un proceso de aprendizaje para aprender Spring o algun framework javascript, al final lo que yo quiero lograr es una aplicación que haga buen uso de los recursos, que soporte una gran cantidad de usuarios, robusta y segura.

De antemano gracias.
« Última Modificación: mayo 31, 2014, 11:07:58 am por aniceto »
Aniceto Porsisoca
Soquenla!!

Desconectado JaiMe

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 413
  • Mensajes: 1485
  • λ | h+
Vas en buen camino cuando decís que queres crear una arquitectura RESTful de web services.

Yo recomiendo dar un vistazo a Dropwizard, la cual es una colección ligera de librerías que incluye Jersey (implementa JAX-RS, especificación para RESTful services), Jackson (Serializar POJOs a JSON), Guava (estructuras inmutables optimizadas). No me preocuparia demasiado por optimizar tempranamente y empezaría usando Hibernate. 

Con el FrontEnd recomiendo AngularJS aunque la learning curve es alta.
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado carlosues7

  • Trade Count: (0)
  • Sv Full Member
  • *
  • Thank You
  • -Given: 169
  • -Receive: 99
  • Mensajes: 770
  • A man chooses; a slave obeys
Vas en buen camino cuando decís que queres crear una arquitectura RESTful de web services.

Yo recomiendo dar un vistazo a Dropwizard, la cual es una colección ligera de librerías que incluye Jersey (implementa JAX-RS, especificación para RESTful services), Jackson (Serializar POJOs a JSON), Guava (estructuras inmutables optimizadas). No me preocuparia demasiado por optimizar tempranamente y empezaría usando Hibernate. 

Con el FrontEnd recomiendo AngularJS aunque la learning curve es alta.

X2

Si por alguna razón no te atrae AngularJS también podes utilizar BackBone.js para el FrontEnd, ahora si te preocupa la robustes también podrías probar con JSF.

La combinación JBoss + PostgreSQL como servers de aplicación y DB me parece perfecta.

Por ultimo, en mi opinion, tene en cuenta que los frameworks MVC basados en JavaScript como Angular, Backbone, etc se están volviendo algo populares, pero todavía no tiene el gran soporte y madurez de los frameworks tradicionales, ni tampoco hay IDE's que los soportan de forma natural. Normalmente si trabajas con algún framework de este tipo, es mejor trabarlos con un editor potente de texto como NotePad++ tuneado o SublimeText