Monday, October 20, 2008

Told You So?

Thanks to Lakshman Prasad for pointing out that my prediction from May of Java being the next language to be supported by Google App Engine seems to be coming true.

According to this story on controlenter.in, Google made that announcement as well as the upcoming release of a new Android SDK on October 22 at their Developer Day in Bangalore October 18.

I haven't been able to find any additional information on this yet so holding my tongue in declaring my superior prognostication abilities. Certainly anxious to see if A) This is true and B) What the details are.

Still would be psyched to see a cloud JVM offering from GOOG. Especially if it had other goodies integrated like server-side JavaScript and Guice.

If anybody out there has more info on this don't be shy...

Thursday, June 5, 2008

JavaScript is dead, long live JavaScript!

Y'know, a long time ago I decided that I hated JavaScript, then I realized that I didn't hate JavaScript the language, what I hated was the lack of standardization in implementation across all the various browsers.

The more I got into it the more I realized that as a language, JavaScript is really really cool. OK, I admit that the prototype nature of it still confuses me, and its general wackiness takes a lot of getting used to if you are coming from a class-based object-oriented language like Java. But whatever. I welcome the recent renaissance in JavaScript programming thanks to AJAX.

So its funny to me that JavaScript is at once enjoying more success than ever before and at the same time receding into the background. What I think is actually happening is that JavaScript is turning into the bytecode of the new virtual machine. As applications inevitably continue their move to the browser as an execution environment, JavaScript, (and Flash, sure, but it's interesting that ActionScript is derived from JavaScript), is what they are running in simply due to its ubiquity.

That probably sounds like an obvious statement, but consider this, Google was the first to really successfully implement the concept I'm talking about with GWT. The whole notion of writing an application in a Java subset and then compiling it to JavaScript just seemed completely and totally insane when it was released, but it worked really really well.

Since then others have taken up the torch and come along with their own twists on the same concept:
  • The Lively Kernel from Sun borrows heavily from concepts in Smalltalk and Self, and implements an entire graphics system in JavaScript and SVG.
  • I just heard from a someone about this company 280Slides. They are ex-Apple employees that started a Y Combinator company that has created a Keynote clone in the browser. Why is this interesting when there are already a ton of browser-based office apps? You've gotta check out the implementation. It's in Objective J. Yeah, Objective C in JavaScript. Crazy.
I think we're going to see a lot more of this kind of thing. Taking existing languages and creating compilers that translate source code to JavaScript+SVG+Flash+whatever. Sure, the JavaScript libraries will continue to proliferate, but so will this higher-order programming stack. you even see it with things like Rails and RJS, or Wicket, or name-your-other-component-based-web-framework.

Maybe after putting up with so much grief from everyone for not being a "real" programming language JavaScript will have the last laugh. This little language that could will probably be running all our applications someday soon...

Tuesday, May 27, 2008

Google I/O Wishful Speculation

Unfortunately, I am not attending Google I/O this year, but that won't stop me from speculating on possible announcements that could come out of it. Google is second only to Apple in intensity of hype-generation, so it stands to reason that they would follow their example and use their developer conference as an excuse to drop some kind of bomb on all of us. Here's what I'd love to see, in no particular order:
  • Android hardware. I for one am getting very impatient to see some actual hardware running Android. With an all-but-certain 3G iPhone announcement coming out of Apple's WWDC in two weeks, Google could take this opportunity to zing 'em with one or several actual handsets or devices on display. I've been telling myself that I would hold out on getting a new phone until I see some units shipping with Android. I like the idea of Android better than the iPhone, the API is more open and arguably more capable all around. The reality, however, is that I'm so sick of my phone that I'll probably jump on the new iPhone when it arrives, unless Google wows me this week.
  • One or more new App Engine languages. A week ago I blogged about the possibility of Java being the next App Engine language. They could take this opportunity to prove me right ;) I'd also like to see a server-side JavaScript API like Aptana seems to be doing with Jaxer, (anybody using this? drop your thoughts on it below...), or something like Rhino on Rails. Ideally I'd like to see a Java and JavaScript rollout with GWT integration. Dare to dream...
  • Full App Engine rollout. They could use the developer's conference to end the limited beta that App Engine is currently in and open it up to all comers. I'd also like to see a fully flushed out pricing model instead of this free stuff with quotas. That will happen eventually I'm sure. Not sure if they're ready yet though.
Anybody else got some predictions? Anyone out there going? Looking forward to some good tweets coming out of Moscone tomorrow...

Tuesday, May 20, 2008

Java The Next App Engine Language?

When Google released App Engine, Pythonistas were thrilled to receive such high-profile publicity for their favorite language. They should be, since a lot of people are jumping into Python for the first time, (or the first serious time), because they want to work with App Engine. I think that's cool since Python is a great language, but even in this recent dynamic language renaissance for some reason has not received the same hype-factor as Ruby and RoR.

While a somewhat exotic choice on the surface, it was actually perfectly natural and understandable for Google to go with Python out of the gate. It has long been known that Google uses Python behind the scenes for a great many things, from managing the bazillions of servers and other in-house systems to the implementation of Google Code. I mean Guido works there... on App Engine. I'm sure having the language's creator on staff helped when architecting this thing.

It's not all about Python though. Google has said that they are going to be offering the service in other languages in the future, and those who have played with it know about the 'runtime' property in the app.yaml config file. The documentation states plainly that "Additional runtime environments and languages may be supported in the future."

So what's the next supported runtime gonna be? I have no idea, but if I'm going to speculate I think a good case could be made for Java.

At first blush, that seems pretty divergent from the way that the platform is setup right now. Another dynamic, scripty language with a *nix heritage like PHP, Ruby or Perl would be a much closer match as far as management characteristics in a hosted offering like this go. But Google has no history of using any of these languages, and are reported to be pretty averse to language proliferation in their systems.

Steve Yegge blogged recently about how you are only allowed to write C++, Java, Python and JavaScript code at Google. He went into even more detail here. So if Google is going to go with something other than these it would have to be the result of an explicit change in policy.

So minus said policy change, where does that leave us? I'm going to rule C++ out completely out of hand. I welcome comments that can convince me this is a plausible option. JavaScript? If they were going to do a server-side JavaScript thing the implementation would most likely be Rhino anyway, (for all we know the current App Engine is using Jython), so that brings us to Java.

So how reasonable would it be to offer a hosted Java environment? While almost any hosting provider currently gives you the option of running PHP, lots of 'em give you Perl, etc. virtually nobody except boutique hosting providers let you run Java. There's a good reason for this. First of all, Java is an enterprisey language and the apps that use Java on the server side are not especially well suited to run in a shared environment. Secondly, even if the market existed, there are technical limitations that make running Java in a shared resource pool problematic. While you can chroot PHP to prevent people from accessing the shared, underlying filesystem, with Java you can spawn threads and do lots of other things that make implementing resource consumption quotas problematic. The fact that you can't just run a Java program using an Apache module or through CGI, and the fact that there tends to be a mismatch in the skill sets that *nix ops people usually have and the skill set required to effectively manage a Java app just further muddies the waters.

What you would really need is a customizable JVM that let a hosting provider limit what hosted apps are allowed to do. You may be able to do this with a locked down SecurityManager, but doing the kinds of things that Google is doing with the App Engine Python implementation would be even better. Not very many people have the chops to write their own VM. Google is one of them, and oh yeah, they've already sorta done it. Twice.

GWT is interesting in that you write your applications in Java with certain elements of the API stripped out and the compiler translates your code to JavaScript. Android apps are written in Java with certain elements of the API stripped out and the compiler translate your code to run in Dalvik. Why not do something like this for App Engine and make it a trifecta?

Google is pouring a lot of resources into Java lately and in a public way. Guice is getting lots of attention lately as a Spring competitor.

So here's the prediction: The next App Engine language is going to be Java, but with a limited API, utilizing some kind of translation in the compiler and potentially running on something like Dalvik. They will offer a framework like they do with webapp in Python, but based on Guice.

You heard it here first...

Monday, May 12, 2008

A Few Things...

First off, I've been using Firefox 3 Beta 5 full time for the past several days and holy crap, they fixed everything. It's super fast and memory footprint appears stable, even with Gmail, Google Calendar and Reader running the whole time. I take back all the mean things I said before. It's true, the rest are but followers...

I finally got my Live Mesh invitation on Friday but had not had a chance to play with it until yesterday. It seems to work pretty well, and actually solves a problem for me keeping multiple copies of my photos directory on multiple computers, (which are both imported to from different cameras+phones), in sync without hairy rsync scripts and order-of-operations nightmares. According to the site you get 5GB of online storage. There is an option to not sync to the "Live Desktop" though, so I wonder if that just uses the central servers as a pass-through? Anyway, am interested to see how this platform evolves, when non-MS OSes and devices become supported, etc. I haven't tried Dropbox, but so far this service seems better since you can have multiple directories synced up in arbitrary locations, and even have the directories in different locations on the filesystems of the participating hosts. Neat.

Felix has an interesting take on recent PaaS developments. I commented there about the possibility of merging the AWS and App Engine approaches into a killer-PaaS-app. You could have an offering built on top of AWS, but offering a higher level of abstraction. This thing would still be lower-level than App Engine, in that you could do whatever you wanted to with your images, but would provide hooks into the "container" or whatever for persistence, messaging, etc. I think if you merged this idea of a super AWS-powered virtualization web framework with something like RightScale then you would really have something. Imagine a web app that was instrumented in such a way so that it could autonomously scale itself up and down in terms of number of instances it was running on, etc. The administration utilities would allow you to configure arbitrary rules for how large you would want to let the app grow, what metrics would be used, etc. I think building the hooks for this kind of instrumentation is key though since I don't think load average or something like it is enough in all cases. It would be sweet if there was an API allowing arbitrary exposure of app-specific measurements to factor into this scaling algorithm.

Don't know if RightScale has anything in there like this already. If it doesn't let's start a company and make millions...

Saturday, April 26, 2008

Sun, Yahoo play on increasingly crowded PaaS field

Yahoo! CTO Ari Balogh presented a new strategy that they are terming Y! OS. Aside from the unification of user profiles across all Yahoo! properties, (more on that later), and the social-networkification that they want to achieve by that, I was struck by what they were terming the Yahoo! Application Platform.

TechCrunch is painting this as a direct competitor to Google App Engine, but I see it more like Facebook. Yahoo! is on board with OpenSocial now, and the apps that Balogh seemed to be talking about were more of that Facebooky, Yahoo-API-mashup kind of thing. Who knows though. He did talk about the ability to host apps, and that TechCrunch article talked about the platform being PHP based, but I didn't hear Balogh say that in the presentation. Maybe I just missed it...

I just started checking out Sun's Project Caroline. Unlike the vaporous Yahoo! offering, this one has actual API documentation, in Javadoc of course. This does look like it is pointed squarely at Amazon, as this article suggests. Will be interesting to see how far along this is, when they will start selling it, etc. What's weird is that apparently there was a presentation at JavaOne last year about this? Must have been all the JavaFX excitement affecting my memory, (cough... cough...), but I recall no coverage of that. There was a presentation though, go figure. Maybe it will get more prominent treatment this year now that PaaS hype is in full affect.

Oh, two more things on the Yahoo! announcement:
  1. Unification of all the profiles. That is going to be an insane PITA. I've worked before, and am currently working on, a single-sign-on, namespace-flattening, centralized authentication/authorization/profile management type of thing and can speak from experience that it is a huge problem, and one that most people do not appreciate the full complexities of when first considering it. Yahoo! has immense resources and talented people, however, so by no means impossible that they can pull this off -- technically.
  2. What are the chances of a big strategy like this actually getting executed though in the current environment?

Wednesday, April 23, 2008

Dropbox DOA

The nascent Dropbox service isn't even out of their limited beta when Microsoft drops, (haha, pun intended), details of their new Live Mesh service.

This can't be good news for the Dropbox guys' funding potential...

Will be interesting to see how the API for Live Mesh shakes out. Some more details here.