Our great sponsors
-
javalin
Discontinued A simple and modern Java and Kotlin web framework [Moved to: https://github.com/javalin/javalin]
-
Graal
GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
JHipster
JHipster, much like Spring initializr, is a generator to create a boilerplate backend application, but also with an integrated front end implementation in React, Vue or Angular. In their own words, it "Is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures."
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Also very lightweight and pleasant to use are Javalin and SparkJava. I've worked with both of them in personal projects and work stuff and really enjoyed using them. Basically a Java version of Flask - small but totally stable and sufficient for many web projects.
https://javalin.io/
http://sparkjava.com/
I would like to draw you attention to vertx[1] its an eclipse project with well thought out API's and documentation and no magic.
[1]https://vertx.io/
Check out https://www.jhipster.tech
It uses Spring Boot, but comes with a lot of sane defaults.
}
would actually compile down to just (JS)
window.alert("Hello World")
TeaVM doesn't support code splitting that Both GWT and Closure Compiler support, or cross-module code motion.
https://github.com/konsoletyper/teavm/issues/333
Java Play Framework is great. It's what Spring should be.
https://www.playframework.com/
There's a next stage after annotations. The current thinking is to replace annotations with function calls. It makes more sense if you use Kotlin because Java is a bit verbose when you do this and in Kotlin you get to create nice DSLs. This cuts down on use of reflection and AOP magic that spring relies on and also enables native compilation. It also makes it easier to debug and it makes it much easier to understand what is going on at the price of surprisingly little verbosity. Kofu and Jafu are basically still experimental but work quite nicely https://github.com/spring-projects-experimental/spring-fu/tr...
Another trend is native compilation. Spring native just went into beta (uses the Graal compiler). That still relies on reflection but they re-engineered the internals to be more native friendly.
Spring Boot basically added the notion of autoconfiguring libraries that simply by being on the classpath self configure in a sane way. It's one of those things that makes the experience a bit more ruby on rails like. Stuff just works with minimal coding and you customise it as needed (or not, which is perfectly valid).
Compared to XML configuration, Spring has come a long way. Separating code and configuration is still a good idea with Spring but indeed not strictly enforced. @Configuration classes can take the place of XML and if you use the bean dsl, that's basically the equivalent of using XML. Only it's type checked at compile time and a bit more readable.
This 'magic' is one of the reason why we switched to https://quarkus.io/
Couldn't be more happier.
I think too that Spring Boot opt-out autoconfiguration is an issue.
Take a look at https://github.com/spring-projects/spring-boot/issues/25742#...
I included a workaround allowing to opt-in for autoconfiguration instead of opting out. I have used the filter for more than 2 years without issue.
Related posts
- Measuring Java 11 Lambda cold starts with SnapStart - Part 3 Using Quarkus Framework
- Is it okay to use com.sun.net.httpserver.HttpServer?
- Will my app run into licensing issues? It is being made in Kotlin, openjdk and springboot
- why does java require tomcat?
- Ask HN: Closest thing to Django in Java world?