3 ms·
I vouch for JVM, specifically: * Bootique (better Spring Boot), * Vert.x (reactive framework and libraries for unmatched performance), * Akka (for distribute
by atomashpolskiy 6y ago
I vouch for JVM, specifically:
* Bootique (better Spring Boot),
* Vert.x (reactive framework and libraries for unmatched performance),
* Akka (for distributed coordination, if necessary; though depending on the use case, it might be simpler to just use external services, like Zookeeper or Consul -- Bootique has integration with those)
Honorable mention goes to Netty, which is great for high performance networking, but going so far is rarely needed in most servers.
- k0t0n0 6y agoIts crazy how much ram JVM needs. A simple "hello world!" REST API on JVM takes about 350mb of ram. same version in go takes around 9mb and 2mb using fastHTTP.
- atomashpolskiy 6y agoJVM has default memory usage limits and sophisticated GC algorithms, which may cause the JVM process to allocate more memory than actually needed for the application's data. In most traditional Java's use cases (long running, memory intensive apps and servers) this is beneficial, but if you know the upper bound on the total size of the data to be smaller than the default limit (which varies by the environment), it's easy to restrict it further with a couple of program parameters. For example, after some tuning I commonly run a full-fledged Java-based BitTorrent client with under 64 MB of RAM in total. You can definitely run a Jetty web server with Hello world page with 32 MB RAM or less.
- throw51319 6y agoNice! I'm kind of a mid-level late 20's dev who is thinking on doubling down on the Java ecosystem and being a jack of all trades within it... think it is worthwhile? Do Vertx and Akka work well together?