Show HN: GoJava – Server/desktop Java bindings to Go packages
github.comI'm looking forward to when this exists for every almost language. Go added "c-archive" build mode in 1.5. There is no reason gobind couldn't support any language which can work with c libraries (ruby, node, etc).
This exists for Python [0]. The reverse is also interesting (Go -> Java/Python/Ruby) and once I get some spare time, I'll play around with using libjvm to load and call jar files from Go.
Its awesome. The problem is that only specific types are supported by a bunch of these types of libraries. In the case of gopy you cannot do anything with a nested slices in structs which limits things a bit.
Yes this is definitely a little limiting. I'm also experimenting with a slightly different binding method, where passing pointers to structs is disallowed (gobind currently allows pointers to structs). All structs are only passed by value, which solves a lot of the underlying problems and allows for slices and nested structs. I'll have something tangible in a few weeks and might switch out the dependency on gobind.
EDIT: edited for clarity
Thats awesome news, Thanks for the explanation!
Since GoJava generates jar binding, does it mean other JVM languages can use the jar to call Go too?
Edit: Java has generic Go doesn't, how do the bindings work for generic?
Regarding generics: the tool generates Java bindings from Go code. Since Go doesn't have generics we just generate non-generic bindings.
Yes. The only constraint is that the jar will only work on the architecture it was built on.
Still pretty awesome and that's not really a big deal. I'm going to guess most Java these days is running on x86_64 or ARM.
Yes
Go would benefit immensely from the ability to bind to JDBC drivers for database access.
What makes you think so? Go has pretty solid native drivers for most SQL databases out there: https://github.com/golang/go/wiki/SQLDrivers
In case the author sees this, more documentation would be great.
Yup. I'll put together some more docs and usage examples this weekend.