It seems that today everything is turning into “clouds”, which are a vague term for defining software applications and data warehouses hosted on remote servers somewhere far across the Internet. So, if all of our software goes to the clouds, then why not go to the tools used to create this software? Well, some tools are there right now. Heck, even GitHub has recently added basic editing features. In this article we will look at some promising online IDEs.
Pastebin's: Younger Brothers Online IDE
The first category of online IDE, which we will consider, I really can not call complete IDE. These lightweight IDE-like web tools are more like pastebin on steroids. Pastebins provide basic text editing features and features such as syntax highlighting, but not support for version control or deployment. Instead, pastebin'y allow you to save and share code fragments among other users. The following web tools go beyond typical pastebin's in that they also allow you to execute code. This category of under-IDE is great for something unpretentious, but not for full development. The main feature of these web tools is the ability to quickly and easily execute and share code fragments. We will look at three of them: JS Fiddle, Python Fiddle and ideone.
Js feeddle
JS Fiddle is not a full-featured IDE, but an excellent tool for quickly testing any ideas with HTML, JavaScript, CSS. The website contains separate windows for HTML, JavaScript, CSS and the final result. Editors support syntax highlighting. JS Fiddle allows you to select from several versions of each of the major JavaScript libraries, such as JQuery, Mootools, Prototype, YUI, Dojo, when checking JavaScript fragments. It even allows you to link to the URL where your JavaScript and CSS files are located remotely. Your “snippets” (fiddles) can also be saved and shared with other users. And JSLint is also integrated.
Python feeddle
Python Fiddle is similar to JS Fiddle except that it is Python oriented, not a combination of HTML / CSS / JavaScript. Python Fiddle provides a sandbox for testing Python code snippets, and also provides support for many popular Python libraries. Like JS Fiddle, Python Fiddle supports syntax highlighting, and your fragments can be saved and shared for other users.
')
ideone
ideone is by far the most ambitious pastebin I know of. Just like JS Fiddle and Python Fiddle, ideone provides syntax highlighting and the ability to save and share code snippets. However, unlike the other two, ideone supports more than 20 different languages, including C, C ++, C #, Java, JavaScript, Go, Groovy, Objective-C, Perl, Python, and Ruby. ideone aims to be a universal tool for testing your code snippets.
“And now we will ask those who will become real IDE clouds to rise”
What distinguishes a real cloud IDE from its younger brothers is that they include support for importing projects, working with version control systems (primarily Git), and in some cases support for deployment. From the full-featured online IDE, we will explore the Eclipse Orion, Cloud 9 IDE, and eXo Cloud IDE.
Eclipse orion
Eclipse Orion is an online IDE and is part of the Eclipse Foundation. The IDE is primarily focused on web programming languages such as HTML, JavaScript, CSS, but includes initial support for Java. Orion differs from other online development environments in that it is not necessarily a hosted solution, but is in fact intended for deployment in private environments on its own user servers. You can download Orion and host it, for example, your company can run Orion inside of its corporate network for all developers of the company or even for a specific project.
From the very beginning, Orion allows you to initialize new projects by cloning from Git (the only supported version control system), by downloading your project's ZIP file, or by creating a new HTML5 site using initializr.
For testing, I cloned the repository in Git. For some strange reason, I had to use HTTP for Git instead of SSH, since I could not find anywhere where the SSH key is specified. Orion provides a GUI for working with Git, but it can be a bit confusing. Although I understand that using the Git “status” command before performing a commit is a good practice, but Orion hides the commit interface under the “Show Status” repository window option, which is very confusing.
The editor is pretty good. It supports line numbers and syntax highlighting. Support for code structure (outlining) and context-sensitive help is scattered. Currently, the structure of the code is supported only for JavaScript and HTML, and contextual help is available only for CSS. Basic editing commands are supported, such as Alt + Up / Down, to move lines, Ctrl + D to delete a line, and Ctrl + L to go to the line number.
For more information, see the Orion
Getting Started Guide for Eclipse.
Cloud9 IDE
Cloud9 IDE is another web IDE specializing in web development, and the only one on our list that is a paid solution. Cloud9 IDE is free for public (visible to all) projects, but for private projects the cost is $ 15 per month. The IDE supports HTML, JavaScript, CSS, and also includes support for Ruby and PHP. Of the online IDEs, Cloud9 is the only one on this list that supports Mercurial, as well as Git. In fact, GitHub and BitBucket support is built in right from the start, and you can create your account with Cloud9 ID by logging in to one of these services. When I created my account, it was generally the only way (I hope that this was fixed, but I don’t want to create a new account for verification).
Provided that you log in via GitHub or BitBucket, importing projects is elementary. You do not even need to be familiar with the console versions of Git or Mercurial, although full support for version control is via the console at the bottom of the screen. The tool provides an SSH key that you can register with GitHub so that you do not see the request every time you try to commit the code.
The editor is very flexible and supports some subtleties familiar to us from Eclipse (Alt + Up / Down for moving lines of code, Ctrl + D for deleting lines, Ctrl + L for moving to lines). The syntax highlighting is great, and there is support for “decorating” the code. The editor at input notifies you of errors in the code.
Your HTML pages can be tested directly in the interface. If you need off-host deployments, Cloud9 IDE supports deployment to Joyent and Heroku.
eXo Cloud IDE
The eXo Cloud IDE is the latest online IDE that we will consider and perhaps the most ambitious. eXo Cloud IDE aims to support three web languages, as well as Ruby, Java and JSP, PHP. It also provides many deployment options: CloudBees, CloudFoundry, Heroku, and Red Hat OpenShift.
The eXo Cloud IDE supports Git for version control, and also contains an excellent menu at the top of the screen for all Git operations. In the “Window” menu, the “Ssh Key Manager” utility is hidden, allowing you to configure an SSH key for use with remote Git hosting (such as Github). Importing a project from Git was a bit more difficult with eXo Cloud IDE in that you first had to create a folder, initialize the repository in the folder, and then perform cloning. Most other services will allow you to start right away with “cloning” and take care of the rest.
The editor is good enough. It supports syntax highlighting and line numbers. But it doesn’t have some text editing chips that I’ve already seen in others (Alt + Up / Down is missing, but Ctrl + D for deleting a line and Ctrl + L for navigating the line work). It supports the outline for navigating through your code. Another extremely useful feature is eXo Cloud IDE that supports minimal code completion (with standard Ctrl + Space). eXo Cloud IDE provides basic completion for HTML, JavaScript, CSS, and Java, Ruby, and PHP code.
Comparison
The following table compares the various features of online IDEs:
IDE | Cost of | Languages | Version control | Deployment |
---|
Js feeddle | Free | HTML, JavaScript, CSS | Not | Not |
Python feeddle | Free | Python | Not | Not |
Eclipse orion | Free | HTML, JavaScript, CSS, Java | Git | Not |
eXo Cloud IDE | Free | HTML, JavaScript, CSS, Ruby, Java, PHP | Git | CloudBees, CloudFoundry, Heroku, OpenShift |
Conclusion
So far I don’t see an online IDE with which you can solve most of the tasks of developers, but I think that they can be a useful addition to the toolkit of any developer. Most are designed for web developers, as most of the tools are aimed at developing HTML, JavaScript, CSS. Tools like pastebin are useful for quickly testing new concepts and do not require a lot of overhead compared to full-fledged IDEs.
Git is a clear winner when it comes to versioning support in online IDEs. GitHub, in particular, contributes to this very much (this is a great service, so I can understand why). Only one IDE offers support for Mercurial, and Subversion fans have no luck in the future in the online world.
Personally, I lack the functions of normal code completion and refactoring tools in the current generation of online IDEs. I think support for these features will appear and improve. I see that in a few years there will eventually be a team of developers creating and deploying all their code directly from a web browser.