graalvm

Discuss GraalVM related topics. Use clojure 1.10.2 or newer for all new projects. Contribute to https://github.com/clj-easy/graal-docs and https://github.com/BrunoBonacci/graalvm-clojure. GraalVM slack: https://www.graalvm.org/slack-invitation/.
hipster coder 2020-11-19T05:17:09.125Z

Micro Services with Actor Model for Web Chat

hipster coder 2020-11-19T05:17:34.125600Z

Docker = Micro Services… not too sure about going through the GraalVM native image process for any of the JVM langs

lread 2020-11-19T20:17:06.126900Z

Video of webcast @borkdude mentioned: https://youtu.be/qH9C3kLbk9o

lread 2020-11-19T20:37:21.127900Z

Blog article on GraalVM 20.3.0 https://medium.com/graalvm/graalvm-20-3-is-available-d2a7f7a2bbcd

hipster coder 2020-11-19T21:21:44.129Z

Ok, I need to make time, to try out the native images… I am trying to decide to use Graal on Docker, for microservices… Plugin AI, NLP into the back of my stack.

hipster coder 2020-11-19T21:22:09.129600Z

I know JVM does not mix with Docker… But Graal is making it better with native image, compile ahead of time.

gklijs 2020-12-02T07:48:58.191Z

I don’t see why JVM would not mix with Docker. You need to be aware of memory use, and how that works to prevent running out. And you have start up times, but containers don’t need to live only for a short time.

hipster coder 2020-11-19T21:22:44.130400Z

it just has problems with Java reflection… so any libraries using reflection will fail on Graal native image…. I read that

borkdude 2020-11-19T21:48:48.131200Z

@nathantech2005 That's not true though. You can provide a config file so Graal will know what information to include to be able to do reflection.

hipster coder 2020-11-19T21:51:57.131700Z

@borkdude wow, so what I read is not true

hipster coder 2020-11-19T21:52:22.132100Z

I was worried, that just 1 java library could stop the entire native image process

borkdude 2020-11-19T21:52:32.132300Z

it all depends

hipster coder 2020-11-19T21:53:09.132800Z

I see some companies using Java with Micro Services… but I don’t know how

borkdude 2020-11-19T21:53:54.133600Z

@nathantech2005 There are a couple of Java frameworks that are built with native-image in mind and include modules for dealing with reflection, etc. https://quarkus.io is one such framework.

borkdude 2020-11-19T21:54:42.133900Z

https://micronaut.io/ is another one

hipster coder 2020-11-19T21:55:00.134300Z

so these are alternatives to Spring Boot?

borkdude 2020-11-19T21:55:28.134900Z

I think so, although I have never used either three of them. Spring Boot is also working on native-image support I think

hipster coder 2020-11-19T21:55:45.135300Z

I am just in the planning mode, architecture

borkdude 2020-11-19T21:56:47.136300Z

Note that native-image offers faster startup and lower memory consumption, but throughput is not as good as JVM with JIT. So be aware of this, it all depends on your use case.

hipster coder 2020-11-19T21:57:54.136600Z

well… I might be processing audio, real time, with Node

hipster coder 2020-11-19T21:58:11.137100Z

and one of the reasons, I was trying to stay on the VM, was faster node… and possibly python

hipster coder 2020-11-19T21:58:28.137600Z

of course, nothing beats Cython for speed… or direct compilation to machine code, for Python

hipster coder 2020-11-19T21:59:06.138300Z

but then I saw the talk by Docker… about JVM not mixing well… so Graal to the rescue

borkdude 2020-11-19T21:59:20.138500Z

what do you mean with speed.

hipster coder 2020-11-19T21:59:34.138700Z

running Node on Nashorn

hipster coder 2020-11-19T21:59:55.139Z

that’s the old JVM VM for Node, Nashorn

borkdude 2020-11-19T22:00:19.139300Z

I'm not following, sorry

hipster coder 2020-11-19T22:00:39.139500Z

https://en.wikipedia.org/wiki/Nashorn_(JavaScript_engine)

hipster coder 2020-11-19T22:00:48.139900Z

Faster Javascript Engine, than V8

borkdude 2020-11-19T22:01:06.140500Z

Nashorn is pretty slow. You should be using the GraalVM JS engine nowadays

hipster coder 2020-11-19T22:01:07.140600Z

well… I have to test it, benchmark it

hipster coder 2020-11-19T22:01:17.140900Z

yea, there is a newer one, on Graal

hipster coder 2020-11-19T22:01:20.141100Z

I am going to bechmark it

tvaughan 2020-11-19T22:02:03.142100Z

With the release of Java 11, Nashorn is deprecated, and has been removed from JDK 15 onwards.[10][11] The GraalVM was suggested as a replacement.

tvaughan 2020-11-19T22:02:18.142700Z

From the same Wikipedia article

borkdude 2020-11-19T22:03:08.143700Z

Note that native-image and running GraalVM JS are two separate things though. This is why I said: I'm not following. I'm asking about your use case for speed. What do you want: good startup time, or good throughput? These "speeds" are often opposed to each other.

hipster coder 2020-11-19T22:03:16.143800Z

hipster coder 2020-11-19T22:03:56.144700Z

hmm, well, if it’s for audio processing… automated translation, between English, French, I’d say throughput ?

borkdude 2020-11-19T22:05:25.146500Z

GraalVM has a "normal" JVM in which you can directly run Python, JS or Ruby programs that will run in a Truffle-based implementation. This "JVM" is a drop-in replacement for other JVMs. It will have the same startup characteristics, but probably better performance in some regards. The other part is the native-image tool which allows you to compile JVM bytecode to machine code/binary.

hipster coder 2020-11-19T22:06:06.146900Z

sounds incredibly cool… dying to dive into testing it out