Google App Engine Adds Java Support, Groovy Meta-Programming 168
Zarf writes "Yesterday Google announced that the Google App Engine now supports Java development, and fast on the heels of the Java announcement is an announcement for Groovy support! Groovy is a dynamic programming language for the JVM that is a near super-set of Java. Much Java syntax is valid Groovy syntax, however, Groovy adds powerful meta-programming features, and the new functionality will bring these meta-programming features to App Engine development. Groovy got special attention from the SpringSource Groovy team and the Google App Engine Java team, and it was this collaboration that helped create the changes that were the big secret in the recent Groovy release of 1.6.1."
Awesome (Score:3, Insightful)
This really opens the floodgates for cloud computing. I can't wait to port to this platform.
Re:Awesome (Score:5, Funny)
Exactly! We just need to proactively monetize the synergistic potential of this new paradigm of cloud computing and meta-programming by thinking outside the box and leverage these tools to enable a better strategic fit in our forward-thinking, customercentric enterprise.
;-)
Re: (Score:2)
Buzzwords aside, the ability to try GAE for free and use it for your own tests and experiments is a good thing. I've been much more productive hacking with python/GAE than php/mysql.
Re: (Score:2, Funny)
Whoa, FABULOUS acronym!
Re: (Score:2)
Whoa, FABULOUS acronym!
Dude, php and sql are acronyms too. WAIAFOA (We are in a field of acronyms). What's your point?
Re: (Score:1)
Re: (Score:1)
Re: (Score:2)
Whoosh indeed, thanks for clarifying. I guess I need to find me some immature co-workers, cause I'm evidently out of touch.
Re: (Score:2)
Don't worry, in my head I pronounced it G-A-E and only went back to it when I was "wtf FABULOUS?"
I'm curious now how Google refer to it internally. Google Widget Toolkit is apparently pronounced "gwit".. so it follows that we both might be doing it wrong.
Any Googlers care to illuminate?
Re: (Score:2)
Re:Awesome (Score:5, Funny)
I'm concerned that my blue-sky thinking will be obscured by your cloud computing. Any advice?
Re: (Score:2)
I'm concerned that my blue-sky thinking will be obscured by your cloud computing. Any advice?
We're hoping the collision of the different cloud paradigms will cause them to coalesce into a more tangible form, precipitating the knowledge and tools across the umbrella of all the technology community, from where it will flow into a deep reservoir of accumulated experience that can be processed, filtered, and piped out to the wider business community on tap. (To complete the water cycle analogy, the business suits will then piss it away, it'll all go down the sewer, and the industry will be all at sea
Re: (Score:2)
Re: (Score:2)
Exactly! We just need to proactively monetize the synergistic potential of this new paradigm of cloud computing and meta-programming by thinking outside the box and leverage these tools to enable a better strategic fit in our forward-thinking, customercentric enterprise. ;-)
Forget funny, mod parent as Insightful, that one was Brilliant!
I may have to quote you on that!
I may even have to drop it in the "suggestion box", that should be worth at least a couple of points on my Balance Score Card.
Re: (Score:2)
Even more to the point, it opens the flood-gates for secure webapps. PHP has the advantage of providing a number of great apps off the shelf that all run on cheap hosting providers. The flip-side to those apps is that you're stuck on the upgrade treadmill as security issues pour out of those apps.
No offense to the people writing these apps. The ease of the platform is a double-edged sword. It's not hard to accidentally introduce security holes in the application. Especially on projects with dozens of develo
Re: (Score:2)
Nonsense.
What you are seeing that typically Java developers are more likely t
Re: (Score:2)
So what you are basically saying is that Java isn't better than PHP, instead, Java developers are better than PHP developers on the whole.
Re: (Score:2)
No, I'm not claiming Java isn't better than PHP, just that Java isn't more dynamic than PHP (as was claimed).
Although its probably true overall, I wasn't even claiming that Java devs are better overall than PHP devs, just that they tend focus more effort on architecture. Even to the point of going too far and over complicating things sometimes.
I'd even hazard a guess that being in a less dynamic environment requires them to put more effort into architecture. Compared to PHP it is much harder to "just make i
Re: (Score:2)
Oh. So Java makes them want to be a better programmer :)
Looks like Python (Score:1)
After a cursory glance around the Groovy site the syntax seems like python with brackets, yuck.
But... (Score:4, Funny)
But Groovy is NEW! And new is better! Just ask any developer!
Re: (Score:2)
Re: (Score:2)
Next step: Groovy on Grails?
I don't know if you're joking, but that is a real thing, and I wouldn't be surprised.
What may actually surprise you is that JRuby works on this, and Ruby on Rails works on JRuby. And, yes, someone has put it all together and Rails works on App Engine.
Re:Looks like Python (Score:4, Informative)
Well, it's biggest advantage is that it is a language written to run on the JVM*. You can talk to Java classes when you need to, but it's really a dynamic language that Java developers can easily learn and use. Type can be strong or weak depending on what you want/need, you can write Groovy unit tests against Java code, etc.
*of course there's Jython, but Groovy was designed from the ground up to be used by Java developers.
Re: (Score:3, Insightful)
Anyone who has ever maintained perl will tell you that it isn't always the best idea to give programmers the choice of how to do things. If there is a right way, don't give them the option of doing it the wrong way, because many will do so. And if two ways are equally good, just pick one--there's no reason to give people an option!
Re: (Score:2)
I don't know about that. My philosophy is that there should be two ways to do everything - one way that's obvious and handles the "easy" cases, and a more "advanced" method that handles edge conditions that come won't come up in the commonly intended uses.
That way one makes the easy things easy while not making the hard things nearly impossible.
What about Jython now? (Score:2, Interesting)
Does this Groovy implementation mean now the end of Jython? If Groovy is so "Pythony", is there a real need to further develop Jython?
What are the relative advantages/disadvantages of Groovy over Jython?
Re: (Score:2)
The obvious advantage of Jython is that it is Python - so you get to use the existing Python code and libraries.
If you just want a modern dynamic language that runs of JVM, there's no reason to go for Jython over Groovy. Groovy offers much smoother integration with Java platform and libraries, since it was originally designed to do just that.
Re: (Score:2)
Totally agreed, which is why I was careful with my wording there:
If you just want a modern dynamic language that runs on JVM ...
Personally, I do not much like dynamic languages for general-purpose programming, and in those very rare cases where dynamic typing is genuinely useful, I prefer it to be opt-in rather than opt-out (such as "dynamic" [msdn.com] in C# 4.0). Furthermore, I think that FP languages had many neat ideas (such as variant types and pattern matching) that I also find very useful. So when it comes to JVM, I definitely prefer Scala over Groovy.
Re: (Score:2)
I do not find Groovy to be very Pythony. To me Python seems like a language which has been painstakingly evolved over literally decades to conform to some clear simple principles which make developing software easier. And to me Groovy seems like a hodge-podge mish-mash of stuff thrown together to pro
Re: (Score:2)
There's also JRuby, which is much more complete than Jython (I believe). And yes, Rails runs on JRuby, and Rails+JRuby runs on App Engine.
Re: (Score:2)
I played a little with Groovy some time ago to see what the fuss was all about. Comparing it to Ruby is better than comparing it to Python because Groovy relies on closures in a way very similar to the way Ruby relies on code blocks. The syntax is also closer to Ruby with respect to the "everything is an object" philosophy (numbers have callable methods, etc.)
The main problem I had during my small test drive is that Groovy has a lot of subtleties involving variable scoping that take a while to get used to a
Re: (Score:2, Funny)
Just goes to prove that Python is the best language ever. Clearly you don't ever need to learn anything else. I strongly encourage you to not learn Groovy as it would poison your mind.
Obviously there's nothing the JVM has to offer you.
Re: (Score:2)
Re: (Score:1)
def kmlDocument = new groovy.xml.StreamingMarkupBuilder().bind{
mkp.xmlDeclaration()
mkp.declareNamespace('': 'http://www.opengis.net/kml/2.2')
kml{
Document{
Folder{
name('*** stations')
description('http://some.place.on.teh.webs/qry')
open('1')
stationTypes.each({type ->
Folder{
Very cool (Score:1)
Re: (Score:2)
Uh, yeah, the actual support for Java, while non-Python language support had been discussed as a possibility for the future previously, is new.
Re: (Score:2)
Which APIs? Any Database Functionality. (Score:2)
I'm curious to know which api's they support.. Sounds like only servlets and mail.. I wonder if its a complete J2EE container, which is pure bloat. Also do they have any standard sql functionality in their hosting solution?
Re:Which APIs? Any Database Functionality. (Score:5, Informative)
Re: (Score:1, Interesting)
if they can get as functional as tomcat then you can run Spring on it. That counts as J2EE. They also have this thing called Grails [grails.org] which seems to be a web-dev system built around Groovy.
Re: (Score:2)
Spring isn't really J2EE. It will be with the new J2EE because (I believe), they will make the spec more modular, in that you won't have to have a EJB container. Spring does a bunch of crap, but what most people mean is that it is a light weight container that doesn't require a EJB container to run in. On a personal note why is it that the Spring fanboys are such jerks. I really want to love Ruby and Spring but man their fanboys really wear on me.
None the less, this is fantastic news! Thank you Google.
Re: (Score:2)
When you move larger and larger amounts of your application into XML files and replace explicit class references with dependency injection, haven't you just tossed that out the window? At some point don't you decide that Spring has taken you so far away from Java itself that your real solution is a different programm
Re: (Score:2)
Servlets are part of J2EE, not Java SE. So is JPA.
By definition, any servlet container is a J2EE implementation.
When does something become "J2EE"? Session Beans? They are nice for client server apps, but their use in a web stack is rather limited and adds tons of overhead. POJOs, JPA, Servlets and an MVC framework will suit me just fine.
Re: (Score:2)
Also, no SQL. Data access is mediated through JDO or JPA. Which also makes sense, given that it's highly likely that the back end isn't a traditional RDBMS.
Groovy? Why not java? (Score:5, Interesting)
I'm not sure I fully understand the reason for Groovy? I've read a lot of the documentation, but it doesn't answer the fundamental question ... as a java developer, why would I learn this language when I can just use java? Is it just for the new language features? Can someone illuminate?
Re: (Score:2, Informative)
Java is my main language, but I definitely see the value in Groovy. For instance, how do you pass functions or other code blocks around in java? You either use very clumsy and verbose anonymous inner classes, or.. or nothing. Groovy handles this gracefully.
Basically Groovy is a scripting language that lets you use java classes. It's not really much different than Jython or JRuby, it's just more java-like in syntax.
Re: (Score:2)
RTFA, its from meta-programming! How else would you write meta-programs to run on GAE in the cloud? Just kidding =).
Although I could be way off, I'd assume it allows end-users of your web-app to script additional functionality onto it.
Re: (Score:2)
To the extent Groovy is a "superset" of Java, it is a way to have a shell for doing things in Java without having to build; just type in commands at the prompt, or stick them in a file. One way to look at things might be to think of Java as a way to have compiled Groovy, sort of like Cython [cython.org] is a way to have compiled Python. Whether or not the extra non-Java features Groovy provides are worth using... that is debatable.
Larry
Re: (Score:3, Informative)
Re: (Score:2)
Agreed with most of your points, but this one has at least been improved in Java (6?) with:
MyObject[] myObjectArray;
for ( MyObject o : myObjectArray ){
}
Re:Groovy? Why not java? (Score:5, Insightful)
Still funny.
Groovy is to Java as PERL is to C. Many similarities, plenty of points of comparison, some interactivity, arguably some interchangeability. It is not a "super set" or even an extension. It's a new language, written in another language. It's a scripting tool, written in Java, that optionally generates Java for execution not in a Groovy engine.
It doesn't give you "compiled Java" any more than Java gives you compiled Java, and other tools (like gjc) give you native executables from software written in Java.
It's got good. It's got bad. It's new. It leverages old. If you're going to use it, you've got to learn it.
No magic, just different.
Re: (Score:2)
This is ./. We don't want your cogent analogies and your evenhanded, unhypeful treatment here. If one half of your X technology vs. Y technology comparison isn't "users of X will burn in hell", then this is no place for you, and you'd better be moseying along, lest something unfortunate were to occur, you filthy centrist.
Re: (Score:2)
It isn't, as the article suggests, a superset of Java
What I mainly thought when I saw it was "finally, Java has caught up with the rest of the programming world and has a scripting language at last".
When I used it, it became apparent that this was more than a perl to meet C's needs. It was like the cheeky bastard child of Java who
Re: (Score:2)
as a java developer, why would I learn this language when I can just use java?
Dude, like, because it has a totally groovy name! ~
Seriously though, mostly because it has some nice language constructs and syntactic sugar for stuff that is painful in plain Java. If you've ever coded in Python and Ruby, you know what I mean. If you haven't, then you should probably give it a try - getting stuck with a single language, even if presently the most popular one, isn't good for career in long-term.
Re: (Score:3, Informative)
Dynamic languages are gaining popularity extremely fast for a whole host of reasons. If you haven't used a dynamic language then you probably won't understand why they are attractive very easily, but if you have it will probably seem obvious. They do have a lot of downsides and I think the jury is still out to some extent whether the reams of code now being written in them is going to be maintainable down the track.
Groovy is Java made into a dynamic language and with innumerable convenience features adde
Making Java as unreadable as Perl (Score:3, Funny)
Surely there is a way to make Java even less readable than Groovy. Maybe make the entire language pure regular expressions or allow every character including the . to be an object.
One outcome of Sun's future liquidation is that no-one is around to promote the 1 Jesus language & Java ends up fragmenting into thousands of derivatives like Linux or Fortran.
groovy? why!? (Score:2)
Then again, Groovy is very popular now, where as Scala is becoming (as per the twitter announcement yesterday).
Re: (Score:2)
Scala
- Scala works out of the box.
- Scala Actors do not work, because they are implemented using Threads (which are not supported).
- The Lift web framework does not work out of the box, because it depends on Actors and JDBC.
Re: (Score:2)
Re: (Score:2)
Those are the same restrictions Java Applets have due to the Security Manager, and somehow programmers manage to develop useful applets.
Applets can spawn threads and make network connections (as long as the follow the same origin policy).
Re:Can't spawn threads or make network connections (Score:5, Informative)
Incorrect. The Servlet platform imposes those restrictions already, with the container handling all the messy details of threading and networking. It works just fine in 90%+ of the cases.
Re: (Score:2)
Servlets don't restrict network connections, and people do it all the time to talk to their database. I know you're not supposed to spawn threads with EJB (because transaction information is kept in thread local storage), but I don't recall anything about not spawning threads being in the servlet spec. I know of a lot of code that does it in various containers without problems.
Re: (Score:2)
From the spec:
Re: (Score:2)
I just took a quick look. It's not really a RDBMS but it's more just a persistent object store. It's schemaless and uses JDO to access objects.
This seems to be the type of databases that cloud application service providers are going to. Likely because it's easier to scale these than to scale a real RDBMS.
Re: (Score:2)
That's pretty much what I saw as well. (Just got my account approved. Whoohoo!) It looks like the object store is flexible enough to pretend to be a database, so they wrapped it in JDO. Technically, it should be possible to create JDBC drivers for legacy apps as well. Personally, I'm somewhat interested in accessing the object store directly. The API is simple enough to where all the JDO stuff is just cruft when it comes to purpose-built applications. (Good for portability, though.)
Re: (Score:2)
Do people still use JDBC directly for webapps? I thought most people were using either JDO/JPA. Most of the JDBC stuff is boilerplate and takes a long time if you have a large database.
I have used this DAO Generator [sourceforge.net] a few times and it really cut down development time when using postgresql databases.
Only free one I found that seems to follow the DAO pattern closely. It's a little rough but it works.
Using Google App Engine I guess is a little more like Hibernate, where it's and object relational store, except
Re: (Score:2)
There are tons of examples of roll-your-own O/R mapping tools out there. JDBC is the basis for all of them. So if you support JDBC, you know that you can support everything from raw access to JDO and everything in-between. :)
Re: (Score:2, Informative)
http://blog.bigcurl.de/2009/04/running-sinatra-apps-on-google.html [bigcurl.de]
Should get you started.
Re: (Score:3, Informative)
http://olabini.com/blog/tag/gae/ [olabini.com]
In fact, you should thank ThoughtWorks guys for several of the recent blog posts on GAE involving JRuby, Groovy and also Clojure.
Re:cash cow (Score:5, Insightful)
Re:cash cow (Score:4, Funny)
Well it would be a great improvement over t
Segmentation Fault
Re: (Score:2)
Sure, Java is more efficient than Python. But is it more efficient than native code? http://shootout.alioth.debian.org/ [debian.org] has statistics and comparisons for many languages. They wrote the best programs they could to perform different tasks in each language and compared the results.
Java compared to Python [debian.org]
Java compared to C [debian.org]
Java compared to C++ [debian.org]
C++ is slightly faster on all the tests, but not by as much as I'd expect, and Java is faster than some of the C implementations. At best, C++ is 3x faster and at wors
Re: (Score:2)
It's rather a different thing to compare speed and memory use for *algorithms*. Of course Java uses more memory for the same structures because of overhead, but the 10x to 30x that you see here are of course not something you see when running any reasonably sized application. And I presume they run only one VM per machine - Java applications may safely run in the same memory space, so the initial overhead just stays a couple of MB.
That said, for smaller applications that have to run on many processors, it
Re: (Score:2)
I'm not a fan of java the language, but the jvm is an awesome piece of software. Sadly I think java the language has given the jvm a bad name.
Re: (Score:2)
YES. And you'll like it too, dammit!
Re: (Score:2)
Well, there are lies, damn lies and statistics. We'll have to wait and see to find the truth.
I agree Java is very fast and efficient, any algorithm you implement in Java and Python, the Java will run rings around the Python one.
But that is not all there is to it. Modern Java apps tend to use memory and CPU cycle hogging frameworks like Spring and Hibernate.
Then there is the network layer. It is entirely possible to have a very fast server implementation in C running a slower dynamic language and have the su
Re:cash cow (Score:4, Insightful)
While your two links are interesting, I think you have to do more work to make your point. Can you cite why those links prove the superiority of Python? And what specifically do you mean by 'rewrite the bible'?
Regarding efficiency, I give you this [snaplogic.org]. The relevant sentence: "I decided to redo several of the tests with updated versions of Python (2.5) and the JDK (Java 6). And indeed, my suspicions were confirmed: Java has made huge speed improvements, and is now faster than Python in almost all cases."
Re: (Score:3, Insightful)
*shrug* I'm not convinced that Java is all that more complicated or time-consuming for the developer. And since 1.6, with annotations and generics, I'm not sure that the complaint about inflexibility is really there.
Suffice to say, I don't think that Python is the crystal clear choice. On the other hand, I'm not sure the differences are significant - so it probably is up to your coding (team's?) preference and style.
Re: (Score:2)
And since 1.6, with annotations and generics, I'm not sure that the complaint about inflexibility is really there.
Suffice to say, I don't think that Python is the crystal clear choice.
I guess what matters in the end is developer knowledge of the language. :)
I would say one of the biggest advantages of GAE using Java is support for all the JVM languages (like JRuby, Groovy, etc, you could try running Jython as well, just for laughs)
Re: (Score:2)
And since 1.6, with annotations and generics, I'm not sure that the complaint about inflexibility is really there.
Annotations and generics have been there since 1.5. However, yes, this is still quite inflexible - what about lambdas, for example (which Python has)?
Re: (Score:2)
... which gives Java programmers the ability to use Lambdas or at least lambda like things conceptually ... albeit not in the same ways.
But it doesn't. It only gives Groovy programmers the ability to use closures. And Scala does the same thing, too.
Anyway, the original point to which I was replying was, "since 1.6, with annotations and generics, I'm not sure that the complaint about inflexibility is really there."
Re: (Score:2, Informative)
My beef is with the amount of code that has to be written, and the inflexibility of Java.
You just build a class on python, few includes, you're done. Not like Java. Also, no Expando in Java.
There's Expando in Groovy. And Groovy seeks to remove a lot of the syntactic clutter of Java. Read a Groovy book or intro and you'll see its benefits; it's got a lot (most) features of Python/Ruby, etc., while using and being completely compatible with Java.
Re: (Score:3, Insightful)
Let me just say that you don't need to rewrite the bible every time you want to do any operation on python (or pretty much any other language)
Compare this http://code.google.com/appengine/docs/java/datastore/dataclasses.html [google.com]
with this: http://code.google.com/appengine/docs/python/datastore/entitiesandmodels.html [google.com]
Yes, because it's so hard to use the 2 click, automated IDE function to generate all those getters and setters. They aren't required by the language, btw, just for encapsulation. You know, that thing that's one of the selling points of OO.
You write exactly as much code as you do in Python, autogenerate convenience methods (getters, setters, toString, etc.), and end up with your beans. Besides, who cares how hard it is to write a bean class. This isn't exactly the core effort during app development, now
Re: (Score:2)
Yes, because it's so hard to use the 2 click, automated IDE function to generate all those getters and setters.
I don't depend on a smart IDE to write python code
You know, that thing that's one of the selling points of OO.
You write exactly as much code as you do in Python, autogenerate convenience methods (getters, setters, toString, etc.).
"Write exactly as much" NOT BY A LONG SHOT.(MyClass class1 = new MyClass() versus class1 = MyClass() just for a start) No need for getters and setters in python. Very rarely used, and you can do without (yes, you can write class1.x = 1 and that's calling a setter function)
How many awesome libraries are there in Java for things like IOC, data access, web frameworks (MVC and otherwise)?
Like Django? ORM and MVC for web. IOC? Try first-order functions.
Some of the best stuff in development was written in Java first (e.g. JUnit, Spring, etc.).
Agreed
Check out the networking portion of your favorite MMO game, it's likely written in Java, server side. Tons of banking software is written in Java once you get past the big iron portion. Tons of sites on the web are as well. Some of the biggest, custom forums in the world are Java (WOW forums are).
Well, so!? This site is Perl, twitter is Scala/Ruby, Pownce is (was) Django, etc, etc And yes, my bank uses Java, I kn
Re: (Score:2)
"Write exactly as much" NOT BY A LONG SHOT.(MyClass class1 = new MyClass() versus class1 = MyClass() just for a start)
Write new MyClass(), press Shift-Home, Shift-Alt-L, Enter produces MyClass myClass = new MyClass(); That's less key presses and the IDE will automatically create an unused name.
Re: (Score:2)
If the idea is that simple that it takes only two commands to fully specify what you need to do, why should those commands have to be to a separate program, rather than your language implementation? To me, the need for that kind of tooling support is a sign that the language is poorly designed for expressiveness. Essentially, your using a "language" that you read, but using a separate visual langu
Re: (Score:2)
To me, the need for that kind of tooling support is a sign that the language is poorly designed for expressiveness.
You don't need to do it and how you use it tells something to the reader. An unencapsulated field says "this is a throwaway class, do not reuse". An encapsulated field with default getters and setters says "this class participates in a bean framework, renaming the field and its getters and setters may break code without compile-time errors". Customized getters and setters, with or without an associated field say something else.
In every case, IDE support for generating those getters and setters is somethin
Re: (Score:2)
Re: (Score:2)
I saw your original post, I don't disagree with you, even though the point is moot, efficiency in GAE has more to do with libraries and the code than anything else.
I don't dislike the JVM (ok, I dislike, but it's not the case here), I dislike the Java language
Re: (Score:2)
Re: (Score:2)
and you decided to laugh at me because java as a language has poor libraries. Really?
You didn't say JVM, you said Java. :) I'm sorry
Still, saying that the JVM is 'far more efficient' than Python is a little exaggeration.
Btw, there are many languages on the jvm. I happen to use jruby and would use that on GAE not java. I'm not a fan of java either, but the jvm is a great platform. This past week I wrote a threaded indexer in jruby using java's util.concurrent library. Try that with regular ruby and C then get back to me.
I couldn't agree more, and I believe that's THE reason Google picked Java, not for "Java" but for everything else on the JVM.
Re: (Score:3, Insightful)
Clearly in the context of processor efficiency. So now you're claiming that my use of java instead of jvm in the context of processor efficiency leads to a logical reply about poor java libraries?
I know most people that are reading at this point think I should drop this, but I'm endlessly fascinated at the lengths people will go to avoid admitting any form of mistake or oversight.
And the jvm is far more efficient than python. The stuff done with the ji
Re: (Score:2)
Clearly in the context of processor efficiency. So now you're claiming that my use of java instead of jvm in the context of processor efficiency leads to a logical reply about poor java libraries?
Well, efficiency is a broad word.
I'm endlessly fascinated at the lengths people will go to avoid admitting any form of mistake or oversight.
Well, don't need to go further, it was my mistake and I'm sorry.
And the jvm is far more efficient than python. The stuff done with the jit is very impressive.
Yes, jit is impressive.
Re: (Score:2)
True that I suppose that if I had never written python applications and only knew java I may think it is the greatest
thing since sliced bread also. However since I have written large applications in both java and python I know better. I absolutely hate
crufty languages and when it comes to cruft java is the king.
Re: (Score:2)
Python's usually better for toy projects, and as a scripting language in the real world, but if you're actually engineering a system... Java (or C/C++, etc) has some serious advantages.
If you actually want to engineer a system then Eiffel or Ada have some serious advantages (certainly over C and C++; with Java you might use JML or similar to help).
Re: (Score:2)
Really, do you think Google is going to deploy an inefficient design to make money on cycles? That seems incredibly short-sighted, far better to offer great performance and sign up more customers.
But that's why they're a company and you're posting anonymous snarky comments from the peanut gallery.
Re: (Score:2)
For what it's worth, Ruby (and Rails) runs on it now, via JRuby.
But I'm not sure what you're suggesting -- would it be more fair if App Engine offered a C API? Are you wanting x86 (or x86_64) ASM?
Java is one of the more performant languages that isn't actually pre-compiled to binary. Every now and then, people find a benchmark of one little thing that Java actually does faster than C.
Re: (Score:2)
Yes, apparently you can now use it on the Google App Engine!
Re: (Score:2)