-
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.
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
We looked around since we wanted to move off Tomcat and decided on Netty: https://netty.io/
I'm not on the engineering team so can't speak to the cost/benefit, but it seems to have been a pretty successful transition.
Vert.x
It's built on top of Netty but has some additional niceties that make it more practical to use. It's also one of the fastest things out there: https://www.techempower.com/benchmarks/#section=data-r18&hw=...
I remember the days, when the Spring framework was advertised as a lightweight alternative to Enterprise java beans (ejb); now Spring outgrew the pretence of being lightweight, don't know when that happened. last year i got back to working with java and spring boot, and i was overwhelmed by the prevalence of annotations in the tool.
To cope with all this, i wrote this little project: https://github.com/MoserMichael/ls-annotations
It's a decompiler that is listing all annotations, so it becomes easier to grep a text file in order to detect the dependencies between annotations.
FWIW, here is a fairly minimal example[0] of broadcasting over websockets reusing the same buffer.
I'm not very familiar with vert.x(not a netty expert either), but I think the author of that article is ascribing blame to the wrong place.
[0]: https://github.com/juggernaut/netty-websocket-broadcast-exam...
FWIW, here is a fairly minimal example[0] of broadcasting over websockets reusing the same buffer.
I'm not very familiar with vert.x(not a netty expert either), but I think the author of that article is ascribing blame to the wrong place.
[0]: https://github.com/juggernaut/netty-websocket-broadcast-exam...
Dependency injection does not have to be dynamic, it can totally be done at compile time. Boost DI is an example: https://boost-ext.github.io/di/
Looks nice and clean. It does seem to be maintained by a single person (at least the JSON subproject [1]) which will be a major turn off for adoption by an "enterprise"
[1] https://github.com/oblac/jodd-json
https://github.com/NanoHttpd/nanohttpd
A bit outdated and not actively maintained, but it's truly small.
My experience is that it's not only the usage of annotations, but the way Spring handles/implements those annotations which is confusing.
As an example, Micronaut[1] also uses annotations a lot, but their implementation is a lot easier to reason about, because there is less indirection with proxy objects and other weird stuff that Spring uses.
Micronaut does not implement nearly as many annotations as Spring though, which basically means less functionality pre-built. I'm not sure that's a bad thing, but it could be.
[1] https://micronaut.io/
This is not correct. You're thinking Spring Data JPA [1]. Spring Data JDBC [2] does _not_ use any Hibernate nonsense.
[1] https://spring.io/projects/spring-data-jdbc
It gets more perverse if you need to flatMap, or transmute components of map types, etc. If you want even more power, take a look at https://github.com/amaembo/streamex. This sort of container manipulation bread and butter for business processing. I use it every day, sometimes with a dozen operations. This (with liberal use of `final` values) makes for some pretty functional-looking code.
I'll grant you the Kotlin or Scala version is slightly more compact. But not fundamentally different, like the Go version.
I (and the pretty much every language designer in the post-Java era) disagree with you about checked exceptions, but that's a whole different thread...