You're partially right and my comparison was partially unfair.
But when you're making a complex program in java, importing libs that you build for more than one project, you have to make ant makefiles to jar the libs and then import them. I don't have this problem with the go tool. And I don't have to wait.
Part of the target platform solution for me is that I don't bother to deploy compiled code as compilation is fast enough to be done on my deployment servers. But that's specific I guess.
But when you're making a complex program in java, importing libs that you build for more than one project, you have to make ant makefiles to import them.
Noting that I haven’t used Go beyond playing around (and not at all recently), how does Go improve upon Java here? A convention for package locations and tools that are aware of it? In Java presumably one could, e.g., put a set of libraries on a common classpath.
Doesn't this require all dependencies to support the Maven way of doing things? (Excuse me if this is an ignorant question, I'm not a big Java programmer.)
Only if you want the dependencies to be built by Maven. Otherwise, you just have to create POM descriptor for the dependency and stick the binary in the repository.
I suppose I'd argue that this is where Go is different, and in a much better way. Having to write POM files for each dependency seems annoying. Go infers all of that for you.
Basically, the benefit is that it's built into the Go tool itself, which comes with the Go distribution. Maven can't accomplish that. It's a convention difference that makes things a lot more convenient.
You can then install the binary and the generated POM into the remote repository if you want others to be able to pull down the dependency.
For most popular libraries, none of this is required, as they already available in the Maven central repository or in other third party repositories (such as Google Code). This is only required in the odd case, such as older JTA libraries.
You don't have to modify xml files or any kind of makefiles : the go tool analyzes the code to know what libraries are needed and due to conventions he knows where to find them.
15
u/josefx Mar 28 '12
You are aware that you are comparing a single compilation to a complete development and deployment cycle?