Show HN: GoJava – Server/desktop Java bindings to Go packages

52 points by vendakka 9 years ago | 14 comments
  • scosman 9 years ago
    I'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).
    • vendakka 9 years ago
      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.

      [0] https://github.com/go-python/gopy

      • rhodysurf 9 years ago
        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.
        • vendakka 9 years ago
          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

    • namelezz 9 years ago
      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?

      • vendakka 9 years ago
        Regarding generics: the tool generates Java bindings from Go code. Since Go doesn't have generics we just generate non-generic bindings.
        • vendakka 9 years ago
          Yes. The only constraint is that the jar will only work on the architecture it was built on.
          • meddlepal 9 years ago
            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.
          • pookeh 9 years ago
            Yes
          • _JamesA_ 9 years ago
            Go would benefit immensely from the ability to bind to JDBC drivers for database access.
          • alpb 9 years ago
            In case the author sees this, more documentation would be great.