views:

903

answers:

10

Their roadmap says their next release will be in March 2009, and that they'll be adding a new 'runtime language'. I'm hoping its either Java or PHP but realy not sure, and would like to know which language is the most probable so i can plan accordingly for a project I plan on hosting with google app engine.

Any ideas?

+11  A: 

I'd say Java, if only for the reason Android (or, at least, the SDK) is written in Java and they went to the trouble of writing their own interpreter/VM.

If not Java, then Ruby would be my guess. Not sure why, but it feels like a good fit.

Chris
Amazon also supports java right?
Click Upvote
i also think java, broad usage of java at google, broad usage in the world, good IDEs out there, (android is a different product, but also a good point). and in the end there are things like hadoop for possible future large scale calculations...
Harald Schilly
Ruby? Not if Steve Yegge's experience trying to use it at Google means anything.
duffymo
I agree ... in fact, I'm willing to bet money on it. :)
fuentesjr
A: 

JRuby on Rails.

PEZ
There's no way they'd introduce that,no one uses it
Click Upvote
We'll se. We'll see.
PEZ
Alright so Java was the correct answer. But JRuby on Rails too one could argue. http://olabini.com/blog/tag/gae/
PEZ
A: 

I`ve heard once that Google likes Python the most!

cordellcp3
they already offer python, its a new lang they'll be introducing :p
Click Upvote
+5  A: 

Languages used for production code inside Google are limited to C++, Java, Python, and JavaScript.

Apps Engine already runs Python, so what's next?

It's most likely JavaScript. I recall Steve Yegge working on a Rails equivalent for JavaScript. See Stevey's Blog Rants: Rhino on Rails.

Java is less likely, but possible. Java servlet containers tend to be heavy-weight.

C++ is possible (Native Client and Chrome are two examples of sandboxed C++ code), but unlikely at this point.

waqas
Javascript is a client-side language, it should already be possible 100%. Even servers that only let you run pure HTML can still allow javascript. (Correct me if i'm wrong). Isn't JS already possible??
Click Upvote
@Click Upvote: JS can be used server-side as well. Most of us are only familiar with the in-browser, client-side version, but check out waqas' link to Rhino on Rails.
Shog9
JavaScript can be and is used server-side. ASP is the classic example, and there are others too.
waqas
javascript being used serverside sounds horrible, i can't think of why anyone would want to do that, especially google
Click Upvote
Why does it sound horrible? It's a very dynamic language. Aptana's Jaxer sports it too http://www.aptana.com/jaxer and they are soon to offer it in their cloud hosting.
PEZ
@Click Upvote: What do you dislike about JavaScript? From a language design perspective, it's much more elegant and expressive than, for example, PHP (IMHO).
waqas
horrible OO support, no way to check if a variable exists (e.g isset() in php), horrible debugging support, need I go on?
Click Upvote
@Click Upvote, you need do dig the subject more. JavaScript is Scheme with C clothes and more.
Ionuț G. Stan
@Click Upvote, You are probably equating OO support with classes, which is not correct.if (typeof(x) == "undefined") {/* x is not set */}if (!x) {/* x is undefined, null or false, which is a more useful check IMO */}and http://en.wikipedia.org/wiki/Javascript#DebuggingBut this is pointless.
waqas
@Click Upvode, waqas: if (foo !== undefined) { ... }. Can it be more obvious?
Ferdinand Beyer
@Ferdinand: Javascript has lots of interpreters, and on some that causes an error (attempt to access undefined variable foo). This answer is beginning to have more comments than any other I have seen :)
waqas
+1  A: 

I would say Java too, so they can support Ruby with JRuby, compatible with Python with Jython, Groovy and so on.

Luke
A: 

Already works with Python. There have been rumors about PHP, which is logical choice considering it's popularity.

vartec
+1  A: 

My guess is C# just to stick it to Microsoft.

GregD
heheh ... funny... , wait a minute, this was a joke right? Of course.. there is mono already.
OscarRyz
Google app engine doesn't support C# or Mono...Only Python 2.5...so I wasn't joking.
GregD
A: 

I'm going to throw in my 2 cents on Java as well. They have a heavy number of tools already written in Java (GWT anyone? etc. etc.)

Though, Javascript would be most intriguing.

sobedai
+1  A: 

Yup, JavaScript.

Why?

First, it fits. While there are obvious architectural differences (notably the OOP system) between Python and JavaScript, they are closer than they are farther apart, so converting the GAE Python API to A JS API should not be a dramatic leap in design or implementation. In the end, the JS API will likely have much the same flavor of the Python API.

Second, safety. The JS runtime idiom is identical to the Python idiom in that effectively you're going to have JS processes running independently from each other for each request. That is, the classic Apache forking model.

As a hosting service, this model is extremely robust and much, much easier to control than something like Java. What you lose in efficiency via a threaded implementation, you gain by simply being Google with a gazillion machines. At Googles scale, administrative overhead trumps performance every day of the week. Simpler and more robust is better, and that's what the process model is.

Third, technology speed. JS is moving VERY quickly right now. Look at the larger number of commercial enterprises writing JS interpreter/compiler/runtimes, as well as the advancements of the language itself. JS script has rushed to the front with a vengeance.

Finally, popularity.

While not popular on the server side, JS is still likely the most deployed language in the world, and thereby the most accessible language in the world. Every hack web designer on the planet is becoming a JS programmer, whether they like it or not.

Now, I don't know how many web designers you've met, but most of the ones I have met are NOT programmers. So, adopting JS for them is going to be a cut and paste and painful experience for them, but it's pretty much a requirement for the modern web. Taking that skill to push back and do some lightweight processing on the back end, in the SAME LANGUAGE, will be a boon to these people. Do not discount the power of familiarity in a normally scary environment (and despite the advances, computers are still "scary" to the vast majority of the population).

JS, it's not a toy any more, it's a sleeping giant. Really.

Will Hartung
+3  A: 

I would say that you have to look at a few factors:

The language needs to:

  • be sandboxable
  • be controllable
  • be expandable
  • be different from python
  • appeal to people who want to write massively scalable applications
  • can be run on developer computers easily
  • run on Linux

Sandboxable

The language must be safe to run on Google servers. Portions of the language/VM/modules|libraries must be able to be disabled and/or replaced.

Controllable

Notice how Google uses languages that are not controlled by companies? Python's BDFL GvR works for Google. Dunno about Javascript. Java is open-sourced enough for their taste I suppose. So the language evolution must allow Google's input at the very least.

Expandable

Google needs to be able to add stuff to the language, and that nearly implies an open-source language. I don't think they are interested in doing an internal fork of an existing language.

Different from Python

Python is mature, easy to learn, and powerful. The new language would have to have significant differences with python, otherwise, why not just use Python. Maybe a very functional language?

Appeal to massive scalability

Execution time would not be necessarily critical, but the language must be able to support easy start and stop, easy provisioning to other servers, and appeal to the sort of people who are into writing massively scalable applications.

Developer computers

The language needs to be able to be easy to install, maintain, and develop for on Windows, Mac, and Linux. It has to be either fully manageable with text editors or already have rock solid tools for editing and managing on these platforms.

Linux

Google servers would run the programs, so these must be able to be safely transferred on google servers and run there, and must be able to be controllable by the Google App Engine load-balancer, so they need to be unixy.

Brainstorming

I don't think it will be Java (too heavy, hard to modify VM), php (too leaky), ruby (hard to modify VM), C++ (can't be sandboxed(that I know of)). I don't think it would be JavaScript either, because it's hard to modularize, and it's not an easy language to learn. That rules out Lisp as well--the hard-to-learn part.

So something else.

Remember though that they want adoption of the tool, and they need a language that would be adoptable by a lot of people and a lot of businesses.

So I lean to C# with mono. I think that makes the most sense. I know it sounds scary but lately the developers of the language are looking at changing C# quite a bit, to incorporate python-like dynamic typing, that sort of thing.

Conclusion

So that's what I think. And if they can pull that off, they will be able to leapfrog the competition. Mono is under MIT X11 license (as of April 2008), and I guess Miguel de Icaza can be hired by Google in the future, along with key team members.

So my prediction is C#.

Christopher Mahan
i dont think it will be c# but i accepted because you gave a good outline of the factors to consider. its almost certainly going to be java
Click Upvote
to be honest I can't see that. If they were going to do java, they would have done that from the start. Java is a lot more popular than python. Google App Engine would have gotten a lot more press very early had it been Java first. We'll see!
Christopher Mahan
@Christopher: You mention that the language should be easily customized by Google. Is C# an open-source language? I think that it is not.
Masi
@Masi: Well, then C# is doomed to die.
Christopher Mahan
What do you think now? Huh? Huh? ;)
Click Upvote
@Click Upvote: I was wrong. Wrong I tell you. But it was a good argument, no?
Christopher Mahan