Hacker News new | past | comments | ask | show | jobs | submit login

Java seems to possess the correct combination of features: mature platform, wide adoption, familiar syntax, readily-available developers, maintainability by those other than the original authors (Java isn't necessarily great at this, but better than many), and a quality that I'll describe only as hard to really fuck things up too badly. If it wasn't for that last requirement, I'd already be trying to sell Python to my boss; as it stands, if I can't find some really awesome static analysis and verification tools for Python

I think one can make a case that Groovy comes pretty damn close, and at least as close as any other "scripting language on the JVM."

Platform: Well, it's the JVM.

Wide Adoption: Define "wide?" But from what I can see, Groovy is pretty popular, especially Grails. There are plenty of books on Groovy/Grails, Grails meetups / users groups in many cities, an active community of developers, etc. There are even consulting companies that focus on Groovy and Grails. SpanTree in Chicago, IL come to mind.

Familiar Syntax: Groovy is great in this regard, as almost any .java file can be renamed to .groovy and compiled with groovyc. Most of the syntax that's different between Java and Groovy is optional in Groovy, so you can start off writing Groovy that is very Java-like and slowly evolve to more idiomatic Groovy over time.

Maintainability: No better or worse than any other dynamic language, IMO. If you have access to metaprogramming and duck-typing and what-not, there opportunity for abuse is there. But Groovy's culture does not seem to be big on a lot of BFM.

hard to really fuck things up too badly - hmm... that's pretty subjective, but to that point, Groovy does have unit-testing tools, static analysis tools, etc. available. The ecosystem might not quite as rich as of that for pure Java, but I think you can find what you need to create a sane development environment.




I'll look into Groovy some more, as I don't know enough to dispute most of those points. The one sticking point that I can see right now is Wide Adoption, which primarily means, "If I go to my boss right now and recommend this language, how likely is he to have ever heard of it, or ever heard of any product that uses it, or ever heard of any company that uses it?" My boss has heard of Java. My boss has only tangentially heard of PHP, but surely he's heard of Facebook from his kids, and Facebook uses PHP (not that I necessarily want to encourage him to use PHP). My boss hasn't heard of Python, but he's heard of Google, which sponsors Python development and uses it internally. What companies use Groovy? What well-known software has it produced? These questions are essential barriers to adoption in a company such as mine.


"Wide Adoption" - always hard to pin down, but as my ears are tuned to Groovy, I'm seeing it in more places. In some ways it's harder to pick out, because a company that's 'using python' will more likely have a larger stack of python (or jython) code. Groovy can (and does) fly under the radar more, precisely because it's so similar to Java syntactically, and fits in the toolchain (add a jar to the classpath and you're off).

You probably won't find many projects built "just" in Groovy - because of its JVM nature, you're more likely to find Java projects which are enhanced with Groovy (Groovy plugin for Hudson, for example, and the Play framework supporting Groovy in templates). Gradle as a build tool is starting to get some traction.

Groovy will probably be more behind the scenes than you'd like for a 'hey boss everyone is using this' sort of pitch, but it's not going away any time soon, and adoption is growing.

Biases on the table - I've done a number of mid-scale projects in Grails over the past several years, and I also run groovymag.com.


_Wide Adoption_ means many platforms, doesn't it? If you use Groovy, you're limiting yourself to the JVM. All the other languages mentioned, i.e. Scala, Clojure, Ruby, and Python, have both JVM and CLR versions. Since Oracle's aquisition of Java 2 yrs ago and its subsequent courtroom behavior, it's important to have a scripting language that runs on both the JVM and CLR, just in case. There's no move whatever to port Groovy to the CLR.

As for wide adoption, Groovy's used in Grails but not many people seem interested in it as a standalone language. See O'Reilly's book sales for the year to March 2012 (http://radar.oreilly.com/upload/2012/03/Lang_QTR_Units_PrevY...).


Cool. FWIW, here's a list of places using Grails:

http://grails.org/Success+Stories

and note that Groovy is commercially supported by SpringSource, a division of VMWare. I'm guessing your boss has heard of VMWare.


Thanks, this will definitely help. And if my boss hasn't heard of VMWare, I know that his boss has.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: