Mostly I think Cyril's arguments are valid.
I wouldn't object to another language besides Java. Especially since the ability to use the new features of Java 8 might still be far away on Android.
But what about Scala, Groovy or the like, you might ask. Well, I think Dart being a first class, Google supported citizen would be another matter altogether. Despite the fact that I agree mostly with Cyril's post, I think the post needs some kind of reply. And as much as I love Google plus, I think it's not the appropriate forum for my reply. So I stick to my old-fashioned blog - with it's even more old-fashioned look 🙂
I do not know whether Dart is a superb language. I only have had quick perfunctory glances on slides or the odd look at the dartlang.org website whenever the topic Dart crept up. I also missed the Google Dart flight school this winter and haven't develop anything decent in Dart at all. Yet from what I've read it looks like a decent enough and modern language that I would like to dig into. So Google bringing it to Android? That would be a very good reason for me to finally have a deeper look 🙂
What's important: Whatever Google comes up with, I strongly believe it's going to run on ART. I wouldn't be too surprised to learn that the initial reason to create a new VM in the first place, was inspired by Google's wish to support other languages better. But as everything in this post, that's just mere speculation. Pure guesswork.
There is a big reason for this: It's the easiest path to migration. It allows people to keep using existing libraries (no matter whether those are plain old Java libraries or specific Android library projects). If those libraries couldn't be used anymore, any other language would have a very difficult start.
It might also allow different teams of bigger organizations (think Facebook, Twitter, or those over-careful and very slow-movers like banks and insurances) to use both languages for one app (or app family). The hip front end team already uses Dart while those taking care of the database, synchronization and what not, keep using Java (for the time being). Cyril left this one very vague. I can't understand why? For me that's a necessity. Without it there's no successful path to a quick adoption.
If there is one thing, where I didn't agree with Cyril, it's his paragraph, where he suggests that Dart could be the one language for all of Google's projects. Such that Google could get rid of Python, Java, C++ and whatever else they use. I don't think that's feasible. For two reasons:
- The question of existing libraries exists for Google projects as well. Of course Google could reinvent the wheel all the time - they have enough people to do so. But that would be a foolish waste of energy. I don't think it's likely that Google is going to do that.
- One language is rarely suited for all kind of development efforts. That was never true for Java, has never been true for C and probably is not true for Dart as well. For one it's a VM language again. So whenever Google used C or C++ instead of Java or anything else, they will continue to do so instead of using Dart. And there's also the matter of the existing code base and libraries only in use within Google itself. Maybe my knowledge of Dart is too superficial to see how to do that efficiently with Dart. So that reason might not be valid at all. But my guess is, that it is.
And don't forget to star issue 19266 if you want to see Dart on Android.
One last thing: Generally speaking: I hate speculations. So me taking part at a speculative rumour mill, is a big exception. Let me know if you like this kind of post. And of course, what you think about this topic. I'm interested in what you've got to say. Am I totally off? Does this sound reasonable? Is it worth speculating at all?