Desafortunadamente, tendré que decir NO para GWT y también erai (que se basa en GWT) si está comenzando de nuevo.
No hay nada malo con GWT. Es una tecnología bastante sólida sin paralelo si tiene que desarrollar y mantener una gran aplicación web. Sin embargo, en este punto dudaría en elegir GWT para un nuevo proyecto.
Poco después de la adquisición de Java (Sun) por parte de Oracle, Google decidió alejarse de GWT (lástima de ti, Google). Hay un comité directivo homónimo que se encarga de esta tecnología, sin embargo, el ritmo y la visión del desarrollo no son los mismos que cuando era propiedad de Google.
- ¿Para qué sirven los envoltorios y contenedores? ¿Por qué no puedo simplemente dimensionar y colocar cada capa una tras otra sin complicar la situación con un envoltorio?
- ¿Cuáles son las diferencias entre XHTML y HTML5?
- ¿Cuál es la explicación de un laico de por qué XML es de tipo seguro?
- ¿Cuál es la mejor manera de integrar las pruebas AB con una aplicación web?
- Ruby on rails: en la cúspide de 2014, ¿vale la pena invertir el tiempo de la tarde (y algunos fines de semana) en aprender RoR?
He estado desarrollando aplicaciones web (y no web) durante más de 20 años. En este tiempo, he usado (o prototipo) casi todas las tecnologías de interfaz de usuario que están disponibles: Adobe (flash, Director, Authorware y Flex), Java (JSF, jsp, servlets, JMF, swing, applets y javafx), Microsoft (VS, .net, vb, asp, silverlight), Google (GWT y angular), php, varias bibliotecas y frameworks js, etc. Basado en lo que he aprendido hasta ahora, esta es la pila tecnológica que recomendaré para cualquier nuevo proyecto de aplicación web:
IU: Javascript, HTML5 y CSS3. Para modularidad utilizaré elementos personalizados. Evitaré cualquier framework basado en js, como angular. Si necesito una funcionalidad especializada para la cual está disponible una biblioteca js, incluiré esa lib y usaré su api, y eso es todo.
Transporte: para transportar datos, utilizaré objetos de datos basados en JSON; Servicios basados en el descanso. Websocket cuando sea necesario. HTTP2 para respuesta instantánea y transmisión gradual de datos.
Servidor: Java. Tanto los microservicios como los contenedores JEE tradicionales tienen muchas opciones robustas y elegantes para elegir. Cualquier cosa que no esté demasiado hinchada y no tenga toneladas de dependencias, debería estar bien.
Persistencia: JDBC con una biblioteca ultraligera como JDBC Utility Component (o algo escrito a mano). Me mantendré alejado de Hibernate, o cualquier otro orms “prometedor”.
DB: Si estoy trabajando con datos estructurados, usaré mysql u oracle, en función de la financiación del proyecto.
Evitaré usar nosql, a menos que haya un caso de uso real para hacerlo, por ejemplo: terabytes de datos no estructurados de múltiples fuentes.
Si eres un estudiante o un nuevo desarrollador que busca adquirir conocimientos de desarrollo web, pasa más tiempo experimentando con javascript, java, HTML5 y CSS3. Es un mundo emocionante por ahí!