off-topic

https://github.com/clojurians/community-development/blob/master/Code-of-Conduct.md Clojurians Slack Community Code of Conduct. Searchable message archives are at https://clojurians-log.clojureverse.org/
vemv 2021-06-14T06:08:45.390200Z

(disclaimer: have not read) https://www.oreilly.com/library/view/optimizing-java/9781492039259/

vemv 2021-06-14T06:13:46.390500Z

My real advice is to learn this topic like any other topic: little by little, from easier to harder and driven by real needs. You don't need a book to google the most common GC options, to read up an overview of the different available GCs, etc. GCs are a constantly changing topic anyway in JVM land Finally, one of the best things I've ever done in my years of clojuring is paying for a personal Yourkit license. Around xmas it will be cheaper they always have the same xmas campaign. Having the best product, with the best UI and the most in-depth options will encourage you to actually use it. I still do on a daily basis (basically I tweak my tooling to always attach Yourkit beforehand to every JVM I spawn)

👍 3
Thomas Moerman 2021-06-14T13:35:52.396400Z

Hi Guys, I was wondering whether anyone can recommend a light-weight BPMN-like (doesn't have to adhere to any standards) library (preferably clojure) for keeping track of workflow data alongside domain entities. I have looked at Camunda and Flowable, but I would prefer something more lightweight that I could use alongside my own entities, using the same query mechanism etc (Crux/Datalog in our case). I'm about to roll my own implementation with a very limited scope, but perhaps there's something already out there so I don't have to?

2021-06-14T20:08:19.398300Z

almost on topic: how do I use packages tied to native deps that I have installed via the debian package manager? is there a trick to getting the classpath I should add to the java command? some maven helper?

2021-06-14T20:09:02.399100Z

or do I stop trying to use debian provided java packages, and just compile the code for my machine and make my own packages?

2021-06-14T20:10:13.400200Z

for example csound has java bindings that work with the specific binary csound version via jni, how do I portably add the jar csound offers to my deps?

phronmophobic 2021-06-14T20:16:47.401200Z

You can include native libraries in jars which is what libaries like lwjgl and skija do. Usually, I just look for the jars on maven.

phronmophobic 2021-06-14T20:17:42.402200Z

Does the debian package also provide a jar?

2021-06-14T20:17:46.402400Z

but the whole point is that it's tied to a specific app version, I don't want whatever is on maven, I want the one that came with the binary

2021-06-14T20:18:40.403300Z

right, the debian system has it's own thing with /user/share/java/ but the jars in that directory are not automatically added to classpath

2021-06-14T20:19:03.403900Z

so I assume there's some tool to gather the jars by name or something, I'm having no luck figuring this out via google

2021-06-14T20:20:14.404600Z

oh, there's also /usr/lib/jni/*.so for the native dep objects themselves (the part I wouldn't count on getting from maven)

2021-06-14T20:21:03.405500Z

oh - maybe I'm wrong to distrust maven here, maybe adding a lwjgl package will just find what my system needs?

phronmophobic 2021-06-14T20:21:18.405800Z

the shared libary is included in the jar

2021-06-14T20:21:53.406600Z

"the shared library" - this is the part that confuses me, I'd expect there to be a different shared library for each OS/architecture combo

2021-06-14T20:22:16.407200Z

or in the csound case, for each csound release version even when the java side code doesn't change

2021-06-14T20:22:27.407400Z

maybe I'm being dense

phronmophobic 2021-06-14T20:23:13.408300Z

there are different libraries for each OS. Skija's docs might be helpful to see, https://github.com/JetBrains/skija/#using-skija

phronmophobic 2021-06-14T20:23:44.408800Z

to use skija, you need 1) the skija libary that has all the java classes 2) the jar that has the shared library for your OS

phronmophobic 2021-06-14T20:24:07.409200Z

you can put everything into one jar, but then the jar ends up being huge

phronmophobic 2021-06-14T20:26:53.409900Z

here's an example deps for lwjgl stuff:

org.lwjgl/lwjgl {:mvn/version "3.2.3"}
        org.lwjgl/lwjgl$natives-macos {:mvn/version "3.2.3"}
        org.lwjgl/lwjgl$natives-linux {:mvn/version "3.2.3"}
        org.lwjgl/lwjgl-glfw {:mvn/version "3.2.3"}
        org.lwjgl/lwjgl-glfw$natives-macos {:mvn/version "3.2.3"}
        org.lwjgl/lwjgl-glfw$natives-linux {:mvn/version "3.2.3"}
        org.lwjgl/lwjgl-opengl {:mvn/version "3.2.3"}
        org.lwjgl/lwjgl-opengl$natives-macos {:mvn/version "3.2.3"}
        org.lwjgl/lwjgl-opengl$natives-linux {:mvn/version "3.2.3"}}

phronmophobic 2021-06-14T20:30:02.411500Z

I have seen at least one library provide separate maven artifacts for each OS/architecture combo and also provide a "everything" artifact that has the java classes + native builds for all OS's and architectures. I think it was JOGL

2021-06-14T20:34:47.412100Z

awesome, thanks so much