A long time ago, way before two or three bubbles came and popped, the world discovered how much fun it can be to edit documents through the Web browser. The early products were simple, but soon companies like Zoho and Google produced a collection of Web applications that were real competitors to Microsoft Office. Today, even Microsoft sells tools that let you fire up your browser to edit documents, spreadsheets, presentations, and almost every other text-based document you can imagine, except one: software.
That programmers don't enjoy the same flexibility and cloud-based simplicity as their glad-handing, techno-clueless business development colleagues is deeply ironic -- programmers are usually decades ahead of the rest of the world, at least when it comes to tools. Why should programmers need to work so hard to develop on their own machine? Why, last week I waited a long time for gigabytes and gigabytes of Xcode tools to arrive from Apple. For some reason, I have to host gigabyte upon gigabyte of libraries on my machine just in case my hundreds of lines of code want to link to any of them. Then Apple dutifully updates Xcode every few weeks, and I get to download the entire thing all over again.
More about tools
Visit JavaWorld's Tools & Methods research center for more programming tools reviews and tutorials. Want regular Java enterprise updates? Get JavaWorld's Enterprise Java newsletter delivered to your inbox.
This odd gap is changing, but slower than anyone might expect. Many developers started using cloud-based repositories decades ago, for instance, and they embraced some of the cloud-based build management tools when those came along. Larger shops are already relying on Hudson/Jenkins to watch over their code and make sure the main tree stays pure and buildable. Some companies even offer these tools as services.
The meat-and-potatoes work of development, however, is a far cry from the meat-and-potatoes work of business development or marketing. The programmers are slowly catching up, and browser-based IDEs are appearing. To see how the market is evolving, I spent a few days experimenting with a whole slew of cloud IDEs. I wrote some code, pressed the Build button, and gawked at the "what hath God wrought" that appeared in another tab of the browser. It felt, at times, like I was testing the first telegraph.
The good news is that these browser-based IDEs often look great. Several of them have duplicated the classic IDE layout with a file tree on one side and the editing window on the other. It's like Eclipse but in your browser.
These IDEs are even turning up in places where you might not think of them as IDEs. WordPress, for instance, has an editor module that lets you play around with the PHP and HTML of your website. This is a dangerous tool that gave me all of the power to crash a blog, which I did once or thrice. But the power is seductive and quite useful. You might find yourself rearranging the HTML tags daily because the editor is only a click away.
Killer cloud IDEs at a glance
|Command line access||No||No||Yes||No|
|Platform integration||JSFiddle site hosts shared "fiddles"||Apple App Store, Google Play, other Android markets||Cloud Foundry, Heroku, Windows Azure||Amazon Elastic Beanstalk, AppFog, CloudBees, Cloud Foundry, Google App Engine, Heroku, OpenShift|
|Pricing||Free||Free trial; $16 to $19 per month||Free basic version; $12 per month||Free basic version; $9 to $99 per month|
Cloud power, cloud latency
The not-so-good news about the browser-based IDEs is that the fun often ended with the press of the Build button. The systems still largely do the job, but the lag can turn into a real drag. Your experience will vary depending upon the speed of your Internet and the code you write. Mine fluctuated immensely with the day and the rain. (One of my Internet links is wireless.)
The performance was often acceptable, but it was never as fast as running a local IDE on a machine with enough power and RAM. While much of the lag was probably caused by the network latency, I wouldn't be surprised if some was due to the CPU sharing common in clouds. Nothing beats having your own eight-core machine sitting at your desk.
Well, that's not exactly true. For most tasks, building the code wasn't very complicated and the network latency was very, very noticeable. Big projects, though, might gain significantly from the cloud. CloudBees, for instance, has a raft of machines just waiting to jump on the builds. If your build is made up of N independent tasks that can run simultaneously and your value of N is large enough, there's a good chance the N tasks will run simultaneously on N machines in the cloud. Even the fat eight-core machine on your desk can't do that.
For now, I think the attractiveness of cloud-based IDEs will depend heavily on the type of code and the size of the build. People building Web apps that run in the browser will be the most likely adopters, in part because the cloud is often storing the files. The latency doesn't get in the way very much.
The next may be geographically diverse build teams that are working together on the same files. Atlassian, the dev tool company known for issue management software like Jira and Git hosting services like Stash, is at work bolting a pairs-programming editor onto Firebase. This is bound to lead to more collaborative editing done over distances greater than two feet. The IDEs here also unlock geographically diverse pairs programming. Heck, you might even call it triple or quadruple programming.
The older teams working on code in Ruby or Java will take a bit longer. The network latency may be the biggest hassle for them. When I tried to work through a build-debug-fix cycle, I spent too much time wishing for that old behemoth Eclipse and key clicks didn't take a roundtrip on the Internet.
The myriad complaints aren't inescapable road blocks that indicate long-term limits for the tools. The browser code will get smarter, and the foundation for local files, local data, and larger libraries is already baked into HTML5-compatible browsers. The creators of these tools will be moving more and more intelligence to the client, which will eliminate many of the headaches associated with waiting for the events to make a roundtrip on the Internet. This will happen rapidly. In a few years, not many desktop IDEs may be left.
JSFiddle is the latest in a long line of emerging Web tools. Many big Web properties, for instance, offer "sandboxes" for playing with their API directly in a Web page. I've debugged Google Maps code several times in a window that Google built for experimenting with it. The browser's included debugger is all that's necessary.
Some developers will see JSFiddle as a tool for experimentation and toys because there's little available for working on the server side of the app. The code can easily call APIs, but you won't build any APIs with it. That would be missing the point. The developers clearly want to encourage more snippets and code that can form the building blocks for Web pages.
When I said above that developers of native code for mobile devices may be among the last to adopt Web-based tools, I left out a curious hybrid path now popular for apps that don't require squeezing every ounce of performance out of the hardware. Some developers are building their iPhone and Android apps in HTML, then wrapping them in a thin layer of native code. This is a fast way to create apps for different platforms, and it can work well if you're not building cycle-sucking apps such as games.
Telerik's Icenium Mist is a browser-based tool for building mobile apps around the Apache Cordova project, the latest version of a thin layer of device-specific code that was once known only as PhoneGap. Icenium Mist lets you create the apps in your browser and run them in a simulator for the different versions of the iPhone. It's a very quick way to spin up an iPhone app. Icenium Graphite, a companion tool that runs on Windows, handles the build, deployment to your device, and publishing the app to the App Store and Google Play.
Icenium is enough to build many basic apps for your mobile needs. It's not exactly native code, but that power is not necessary for most basic apps. It's a clever remix of the browser environment with the mobile.
Icenium is free through May and $19 per month afterward, with a discount for purchasing a full year in advance.
The Cloud9 environment is full of features aimed at the fat part of the dynamic Web app development world: Ruby, PHP, and Node.js stacks. The Cloud9 IDE offers a classic file browser and editor for your projects that can be debugged on their server and deployed anywhere you like.
The editor is quite powerful, offering code highlighting and error detection. Syntax errors are flagged immediately in your browser before they're even saved to the server, speeding up the debugging cycle. This won't catch runtime errors, though. You'll need to insert console logging methods.
The environment comes with both a console log and a command line, so you're logged into the Unix directory where your code is running. For grins, I typed "emacs" and it worked. I'm not sure what anyone would do with the command line when a full editor is above it, but it's bound to come in useful for some odd occasions.
The company is generous with free demonstration projects, with the exception of one private workspace that requires your projects be public where others can watch them. The premium membership, which is just $12 per month, offers six private workspaces, plus better access to the shell and the VM. There's also no limit on collaborators, people who can edit your projects with you. The only other thing you might need for bigger development projects is local access to a database like MySQL.
The Codenvy IDE is another incredibly rich code development environment with deep connections to a number of hosting platforms like Amazon's Elastic Beanstalk and AppFog. There are at least a half-dozen options, and they light up depending upon which type of application you want to create. The IDE offers three types of Java projects (library, WAR, and Spring) and the classic dynamic languages such as Ruby, Python, and PHP.