¿Cuáles son los mejores frameworks web Java que se pueden usar en el backend?

En realidad, hay demasiados frameworks web que puedes usar. Tu elección dependerá de tus necesidades. Pero, para responder a su pregunta, le daré tres de ellas que he usado:

  1. Dropwizard: en mi humilde opinión, es mi primera opción: no es complejo, lo mejor de la colección de marcos de microservicios. Además, su backend es una aplicación Java simple con un servidor Jetty incorporado.
  2. Spring boot: que es la respuesta de springsource al marco de microservicios como Dropwizard. El mismo concepto, más opciones en el servidor que se utilizará, además de toda la panoplia de las bibliotecas de Spring se puede integrar como un encanto. Si tienes una experiencia con la primavera, esa sería la buena.
  3. Marco de juego: desarrollado en scala (puedes elegir usar scala o java), me gustó mucho el concepto y la interfaz de línea de comandos. pero después de alguna actualización de versión siempre hubo demasiados cambios y la documentación / ejemplos de scala siempre se prioriza en comparación con Java.

Puedes probar Play Framework. A pesar de estar concebido principalmente para funcionar mejor con Scala, funciona bastante bien desde Java. En mi experiencia, no estarás tan frustrado con eso como con, por ejemplo, Spring.

Sale de la caja con todos los componentes necesarios para crear aplicaciones web modernas, y aunque puede ser bastante sofisticado (y complejo), también puede restringirse a un pequeño subconjunto que cubre mucho terreno.

Sobre el tema de Scala, todavía lo estoy aprendiendo y todavía no estoy seguro de si sus supuestas ventajas valen la curva de aprendizaje adicional sobre la sintaxis y los conceptos más simples de Java, especialmente ahora que Java 8 tiene algo similar a lambdas.

Vaadin puede ser una buena opción para ti. En realidad es un marco web, pero lo menciono debido a su modelo de programación del lado del servidor. Básicamente, implementa la capa de IU utilizando Java que se ejecuta en el servidor, por lo que no puede ser más fácil usar Java directamente (con o sin marcos del lado del servidor). Por ejemplo, el siguiente fragmento de código muestra cómo reaccionar ante un evento de clic en un botón:

Button button = new Button("Click me");

button.addClickListener(event -> {

// executed on the server side:

someBackendService.doSomething();

Notification.show("Thanks for clicking");

});

¡Al menos podría valer la pena probarlo solo!

Primero, no use Java como backend si su equipo es pequeño, ya que la eficiencia del desarrollo al usar Java como backend es muy baja. Si tiene que usarlo, entonces solo puedo recomendar Spring.

Recomiendo Golang más, luego Python.