Foros del Web » Programación para mayores de 30 ;) » Java »

Opiniones para el futuro

Estas en el tema de Opiniones para el futuro en el foro de Java en Foros del Web. Hola a todos, estoy terminando una aplicación de sistema de ventas con Java Swing, mi intención es ir añadiendo funcionalidades y que sea visualmente atractiva, ...
  #1 (permalink)  
Antiguo 22/12/2015, 15:21
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 7 meses
Puntos: 0
Opiniones para el futuro

Hola a todos, estoy terminando una aplicación de sistema de ventas con Java Swing, mi intención es ir añadiendo funcionalidades y que sea visualmente atractiva, me gusta cuidar el diseño (suelo desarrollar aplicaciones web aunque sea en local por este motivo), pero he de reconocer que me gustan mas la programación de escritorio que la web. una vez dicho esto quiero realizarles una serie de preguntas para que me orientéis. Nunca me había parado a ver JAVAFX, (he leído un par de manuales por encima y le encuentro semejanzas a la programación de java en android, por el tema del xml para la interfaz gráfica y demás).

1 - ¿Tiene mas futuro JavaFX o Swing?
2 - Entiendo que independientemente de la forma en que esté programada la aplicación, Javafx consume más recursos que swing y será mas "lenta" en la ejecución. ¿es correcto?si es así ¿es mucha la diferencia?.
3 - Doy por hecho que javafx es mas portable para diferentes dispositivos que swing ¿es buena opción para aplicaciones de escritorio?
4 - Por cual os decantaríais y porqué ( Basándoos en la aplicación que estoy realizando).
5 - Y por último y no menos importante, ¿la curva de aprendizaje de jafa fx es muy pronunciada?, ¿hay recursos para aprender de forma autodidacta, partiendo de la base que soy principiante en java (lo estudié en el instituto, pero laboral-mente no he ejercido con java).?

Un saludo y gracias

Última edición por maurikius1983; 22/12/2015 a las 15:28
  #2 (permalink)  
Antiguo 22/12/2015, 16:09
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 9 meses
Puntos: 52
Respuesta: Opiniones para el futuro

Si querés crear aplicaciones de escritorio (para Windows, ya que ese SO domina el 95-98% del mercado mundial de computadoras de escritorio), te conviene usar C# (o mejor aún, F#) y WPF. Olvidate de java. JavaFX es básicamente una imitación bastante rudimentaria de WPF.
  #3 (permalink)  
Antiguo 23/12/2015, 01:32
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Opiniones para el futuro

Buenas,

El escritorio no es mi dominio y yo hasta hace poco no apostaba mucho por estas tecnologias, pero recientement he tenido que hacer un front en javaFX para un proyecto personal y me ha sorprendido la tecnologia, asi como la comunidad activa y positiva que hay alrededor.

En respuesta a tus cuestiones:
1- Sin duda JavaFX. Swing esta lamentablemente abandonado por Oracle y ya no va a evolucionar. Esto no quiere decir que no sea estable ni valido aun para hacer nuevas aplicaciones.
2 - JavaFX es mas eficiente que swing ya que para su renderizado hace uso intensivo del pipeline de la GPU, por lo que descarga al procesador. Te recomiendo que te bajes aqui unos ejemplos y los pruebes para ver si te va bien: http://www.oracle.com/technetwork/ja...s-2158687.html
3 - Es sobre todo para el escritorio pero efectivamente facilmente portable a otros dispositivos como los smartphones: http://gluonhq.com/open-source/javafxports/
https://www.youtube.com/watch?v=FSQrVJrGp9E
4 - Si ya has hecho como dices la aplicacion, yo continuaria con Swing. Para nuevas aplicaciones puedes probar a comenzar con Java FX. A ver si te encuentras comodo.
5 - Si ya sabes Swing, JavaFX no deberia ser en absoluto dificil. La creacion de las interfaces es muy sencilla gracias al JavaFX Scene builder, que las genera automaticamente y se integra muy bien con IDEs como Netbeans, IntelliJ o Eclipse. Aunque esta herramienta ya no esta mantenida por Oracle, la comunidad la sigue evolucionando: http://gluonhq.com/open-source/scene-builder/

En fin, te invito a echarle un vistazo a este blog como punto de partida: http://fxexperience.com/
O este: https://dlemmermann.wordpress.com/

Algunos ejemplos muy recientes de desarrollos en JavaFX:
https://dlemmermann.wordpress.com/20...urator-caliop/
https://dlemmermann.wordpress.com/20...-optimization/

Un saludo
__________________
If to err is human, then programmers are the most human of us

Última edición por Profesor_Falken; 23/12/2015 a las 01:37
  #4 (permalink)  
Antiguo 23/12/2015, 01:53
 
Fecha de Ingreso: noviembre-2015
Mensajes: 23
Antigüedad: 9 años
Puntos: 2
Respuesta: Opiniones para el futuro

Sobre si tiene más futuro JavaFX o Swing, JavaFx es el sucesor de Swing, por lo que si se hacen cambios o mejoras las realizaran en JavaFx y Swing queda relegado a mantenimiento y retrocompatibilidad.
Sobre el tema del rendimiento, creo que no es más lento, pero de todas formas es irrelevante ya que muchas aplicaciones no tienen una excesiva sobrecarga de elementos UI como para que sea apreciable o un dato a tener en cuenta. Por otro lado JavaFx utiliza aceleración por hardware que en cuestiones de 3D va muy por delante.
Sobre portabilidad, JavaFx soporta multitouch y gestos por ejemplo, en una tablet con windows 10 sería mejor que Swing, pero ninguno de los dos es la solución para android y iphone.
Entre Swing y JavaFx me decantaría por JavaFx sin ninguna duda, puedes hacer la aplicación más agradable visualmente mediante CSS, dispones de las gráficas, se incluye 3D, puedes generar un ejecutable para el sistema operativo que no sea un jar...

Pero como dice agleiva, la alternativa de usar C# y WPF es muy interesante si te enfocas en Windows.
  #5 (permalink)  
Antiguo 23/12/2015, 13:47
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Opiniones para el futuro

Agradezco vuestras respuestas, las dudas quedan solventadas, voy a ir portando poco a poco a JavaFX.

Sobre C# y WPF siempre me ha llamado la atención, he tocado en alguna ocasion C# en UNITY 3D (por ocio) y Windows Phone con XAML (soy usuario de lumia 1520 y he portado de android alguna aplicacion que tenía realizada), en las vacaciones miraré algo.

PD: De momento me quedo con JavaFX, entiendo que no hay tanta diferencia con WPF.

Muchas gracias a todos.

Última edición por maurikius1983; 23/12/2015 a las 14:08
  #6 (permalink)  
Antiguo 30/12/2015, 09:17
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 9 meses
Puntos: 52
Respuesta: Opiniones para el futuro

Cita:
Iniciado por maurikius1983 Ver Mensaje
De momento me quedo con JavaFX, entiendo que no hay tanta diferencia con WPF.
En realidad la diferencia es sustancial: WPF soporta el patrón de diseño MVVM, que es una evolución del patrón MVC, basada en el patrón Presentation Model de Martin Fowler, creada específicamente para WPF.

El patrón MVVM es tan productivo, y permite generar código tan limpio y mantenible que luego de convertirse en el patrón de diseño preferido para desktop, el mundo web comenzó a tratar de replicarlo constantemente. Así nacieron los frameworks como Angular, Knockout, Backbone, Ember, etc, etc...

El soporte de JavaFX para MVVM es nulo, con lo cuál los proyectos en esa tecnología resultan, por definición, en más cantidad de código, menor productividad, y menor mantenibilidad. Esto sin mencionar que aún las últimas versiones del lenguaje java son terriblemente rudimentarias y requieren muchísimo más código para hacer cualquier cosa comparado con lenguajes modernos como C# y F#.
  #7 (permalink)  
Antiguo 30/12/2015, 16:32
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Opiniones para el futuro

Cita:
Iniciado por agleiva Ver Mensaje
En realidad la diferencia es sustancial: WPF soporta el patrón de diseño MVVM, que es una evolución del patrón MVC, basada en el patrón Presentation Model de Martin Fowler, creada específicamente para WPF.

El patrón MVVM es tan productivo, y permite generar código tan limpio y mantenible que luego de convertirse en el patrón de diseño preferido para desktop, el mundo web comenzó a tratar de replicarlo constantemente. Así nacieron los frameworks como Angular, Knockout, Backbone, Ember, etc, etc...

El soporte de JavaFX para MVVM es nulo, con lo cuál los proyectos en esa tecnología resultan, por definición, en más cantidad de código, menor productividad, y menor mantenibilidad. Esto sin mencionar que aún las últimas versiones del lenguaje java son terriblemente rudimentarias y requieren muchísimo más código para hacer cualquier cosa comparado con lenguajes modernos como C# y F#.
Muchas gracias por la info, como estoy de vacaciones estoy mirando cosilla y a raiz de tu comentario empecé a buscar info para el desarrollo WPF, pero hay algo que me frenó, es respecto a Visual c# Express y su licencia, para que sean de uso comercial hay que comprar la licencia total o publicarlo en la store. ¿Es así?. Como comenté en el mensaje anterior estoy portando de Java Swing a Javafx, y la verdad es que me estoy encontrando algunos problemas que no esperaba y hay poca info clara, o soy muy torpe para buscar.
  #8 (permalink)  
Antiguo 31/12/2015, 03:57
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Opiniones para el futuro

Buenas,

El patron MVVC no es ni novedoso (el Presentation Model data de 2004) ni mas productivo per se. Por enesima vez Microsoft ha tomado algo ya existente, lo ha patentado y hecho suyo y ha usado sus inmensos recursos económicos para hacer una gigantesca campana publicitaria de venta de aire.

La idea de introducir una nueva capa de abstraccion entre la vista y el controlador (un ViewHelper o ViewModel como lo llama MS) que contenga el estado de la UI para facilitar la flexibilidad el mockeado de los test es una idea tan vieja como el patron MVC. Yo la he visto implementada de forma muy similar en varios grandes proyectos web y swing desde hace bastantes años.

Decir que JavaFX no soporta MVVC es absurdo. Por supuesto que lo soporta y lo puede usar!. Eso si, no te obliga a ello. El patron se puede implementar sin dificultad directamente: http://blog.buildpath.de/javafx-deco...a-testable-ui/
O bien utilizando algun framework MVVC open source:
https://github.com/sialcasa/mvvmFX
https://jaxenter.com/mvvmfx-model-vi...fx-114907.html

En cualquier caso MVVC no es ni la panacea ni es para todo el mundo ni para todos los proyectos.

For simple UI, MVVC can be overkill. In bigger cases, it can be hard to design the ViewModel up front in order to get the right amount of generality. Data-binding for all its wonders is declarative and harder to debug than nice imperative stuff where you just set breakpoints (though if you have lots of events running around, it may not be much different).

Esto no lo digo yo, lo dice John Gossman, ingeniero de Microsoft creador del patron MVVC .
http://blogs.msdn.com/b/johngossman/...04/543695.aspx

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #9 (permalink)  
Antiguo 31/12/2015, 10:35
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 9 meses
Puntos: 52
Respuesta: Opiniones para el futuro

Cita:
Iniciado por maurikius1983 Ver Mensaje
Muchas gracias por la info, como estoy de vacaciones estoy mirando cosilla y a raiz de tu comentario empecé a buscar info para el desarrollo WPF, pero hay algo que me frenó, es respecto a Visual c# Express y su licencia, para que sean de uso comercial hay que comprar la licencia total o publicarlo en la store. ¿Es así?. Como comenté en el mensaje anterior estoy portando de Java Swing a Javafx, y la verdad es que me estoy encontrando algunos problemas que no esperaba y hay poca info clara, o soy muy torpe para buscar.
Olvidate de C# Express... Instalate Visual Studio 2015 Update 1 Community que es gratiuto para desarrollo no enterprise. No tenes que pagar ninguna licencia de nada.

Lo del Store es para aplicaciones UWP, no para WPF. Si queres publicar en el store tenes que usar UWP en lugar de WPF (son parecidos) y necestias una licencia que vale, en mi pais, $100 por año (menos de lo que cuesta una pizza grande de muzzarela o 2 cafes en un bar)
  #10 (permalink)  
Antiguo 31/12/2015, 11:43
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 9 meses
Puntos: 52
Respuesta: Opiniones para el futuro

Cita:
Iniciado por Profesor_Falken Ver Mensaje
MVVC
Lo cual no tiene nada que ver con nada de lo que yo dije. MVVM elimina la necesidad de Controllers, con lo cuál, como dije, es mucho menos código, más mantenible y sencillamente mejor.

Esto sin mencionar que por más que llores y patalees, el lenguaje java es tremendamente inferior a los lenguajes modernos, por lo tanto requiere más código para hacer cualquier cosa. En cualquier caso, como ya he mencionado varias veces, si tuviera que recomendar a alguien un lenguaje para la JVM recomendaría Kotlin, que incorpora características modernas similares a las que existen en C#, F#, Swift y otros lenguajes modernos no-dinosaurios.

Etiquetas: futuro, opiniones, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:21.