To develop a software product, the development process plays a vital role. Software development consists of requirement gathering, design, coding, testing, deployment and maintenance. Some of the basic requirements for software development are hardware and software tools, a server to deploy and test the application and a coding development environment. Cloud based development brings in a lot of cost savings and efficiency into the process. For example, the cloud provides a deployment environment, and so users do not require to build, develop or maintain this environment but can share it easily from the public environment. To leverage the customisation of software and hardware components, based on the deployment requirements, we need to move to the next generation cloud computing platform.
An integrated development environment (IDE) is a software tool that integrates various features required for the development of a software application. The latest improvement in this field is the cloud IDE, which is a virtual development environment. For example, to develop a Java application, we use Eclipse as the IDE, which provides an integrated plug-in facility to develop Java code, auto complete Java APIs, has syntax highlighting, apart from the capability to compile, execute, test and analyse static code. In a traditional software development environment, all developers install the IDE in their respective systems, and upload their developed code into a concurrent version system (CVS) or source code management system like GIT. Once the code is checked in, it requires the consensus of other developers, which takes more time if the number of developers is high in a project. So, there is the fundamental need to provide a software development environment for a large number of developers to work together on a collaborative project, yet achieve a shorter delivery time. A cloud IDE is one of the best solutions to reduce the development process time, as it provides a more convenient and flexible common environment for software developers.
The cloud IDE
The key idea behind the cloud IDE based platform is to create a virtual development environment. It can provide the following features for the software development process:
b. It has an application container to deploy the application on-the-fly.
c. It offers repository management to store, retrieve and share code between groups of developers.
In addition to these basic features, we need to add security to limit the access to only the selected group of developers. This can be achieved by an authentication system that protects the development environment from public use.
Here, lets consider an open source virtual environment for cost effective and better community based collaborative software development. Lets also analyse a cloud based development facility that can be accessible from anywhere, and be used without much interfacing in the local developer system such as software installation, network boundary, etc. For example, lets only use a Web browser to access the cloud IDE for software development.
A cloud based IDE is a next gen solution and still in the incubation stage, because the cloud based private workspace is yet to evolve fully. As of now, there still isnt any good Java-supporting cloud IDE available. For example, eXo provides facilities, but it lags in speed to some extent and doesnt support the IE browser.
We have reviewed various cloud IDEs, both commercial and open source, and have shortlisted cloud IDE tools for review, for the benefit of open source users. In this regard, we have considered the following standard expectations from a cloud IDE:
1. It should be lightweight and flexible enough for novices.
2. It should be able to highlight syntax.
3. It should have the auto completion facility.
4. It should have an internal compilation facility.
5. It should provide minimum debugging facilities.
6. It should support remote repository management for source code.
7. It should support cloud deployment.
In addition to this, proficient developers who have worked on various IDEs like Eclipse, JDeveloper, IntelliJ, Visual Studio, etc, would look for some add-on features like:
1. Support for screen design with a visual designer tool.
2. API or language help; for example, tooltip for a Java API.
3. Static code analysis to follow best practices in coding.
4. Coding convention and code formatting or styling; for example, the number of characters in a line, tab indentation, etc.
So let us review some of the popular open source cloud IDEs including Cloud9, codeanywhere, Eclipse Orion, Coderun Studio, Codebox, Codeiad, IDE One and CodenvyEclipse Che.
Please note that the tools discussed below are not ranked based on any parameters. The intention of this article is to discuss various features, as well as the pros and cons of these tools based on our experience. The idea is not to influence decisions, since we are well aware that the development requirements decide what kind of cloud IDE or tools are chosen; so a general recommendation is not advisable.
Cloud9 – https://c9.io/
Pros: Supports a variety of languages and various repository tools.
Cons: Can be used for simple application development but not for large or complex applications.
Codeanywhere – https://codeanywhere.net
Pros: Lightweight and easy to use. Support for mobile devices.
Cons: More useful for Web page development and doesnt support a variety of programming languages.
Eclipse Orion – https://wiki.eclipse.org/Orion
Pros: Can be used as a standalone local installation tool or as a cloud IDE. It offers static code analysis. Shell feature provides facility for UNIX script development, which is a unique feature many cloud IDEs do not offer.
Cons: Doesnt support the private cloud/secure development, and doesnt support build/compilation of code or online testing.
Coderun Studio – www.coderun.com/studio/
Pros: Unique URL for multi-user development, in parallel. More suitable for pair/peer programming. Supports Microsoft code development, debugging and native compilation.
Cons: Development using latest frameworks or languages like Scala, Ruby, NodeJS, AngularJS is not supported by this tool.
Codebox – http://codebox.in/
This is a popular open source IDE, with code available at https://github.com/FriendCode/codebox. It enables users to customise the tool and encourages them to share it for community development.
Pros: Supports a variety of repositories, cloud deployment, Scala based program development, cross-platform support and auto completion of code.
Cons: Support for development in PHP is not available.
Codiad – http://codiad.com/
This is a simple tool, which supports more than 40 programming languages, and provides plugins for integration with other popular IDEs like Eclipse. There is no database required to be installed locally, and no application server or local installation required to run this browser based IDE tool.
Pros: A simple but efficient tool that supports a variety of languages. Application server support for local deployment is available.
Cons: Doesnt support a variety of database types and is not so flexible in pair programming.
IDE One – https://ideone.com/
This is a very simple online IDE, which supports Java. It can be more useful as a unit or stub testing environment as a quick try. The code development in this tool is done online and there is no Save option. It doesnt have extensive support for real-time application development/deployment.
Pros: A simple tool with real-time application development support.
Cons: Lacks user friendliness.
Online Java IDE – http://www.compilejava.net/
This IDE has facilities for Java/J2EE development. It also supports Spring, ojdbc, MySQL (a user has to manually create/connect to the database), mail API and Axis frameworks.
This IDE is not very user friendly and typing/editing is not too comfortable. The package creation option is not available (to modularise applications). There is no download/upload facility to sync with the local development environment.
Pros: Supports a variety of database drivers and frameworks like Mailx, Axis, etc
Cons: Package and deployment is not available. Limited to Java development only.
Codenvy Eclipse Che – https://codenvy.com/products/che
The link for Codenvy IDE goes to a cloud IDE named Eclipse Che. It supports a variety of Java/J2EE frameworks as shown in Figures 5 and 6. This IDE provides unlimited open source community (public) development support and user access. Usability is high, being as simple as using a desktop version of Eclipse or the Netbeans IDE. The deployment facility includes a variety of PaaS cloud environments as shown in Figure 7. Integration is seamless and automatic. When users trigger deployment from an IDE, it connects to the PaaS (a choice made when creating the project) and pushes the build to the deployment zone.
GIT is the default management repository and it has a local as well as remote GIT facility, where users can either keep the source local to Codenvy (like storing in a local development machine) or connect to a remote GIT to check-in/check-out (like an open source GIT repository).
Codenvy has JSP and Spring support inbuilt, using the project template feature. It has features to import external jars and, hence, JSF or the Struts Framework can be used for code development. Applications with DB support can be simply chosen from the wizard. Archive (zip) download of the project to a local system is available. Uploading existing projects/jar/war is possible, and so users can switch between the local environment and the online IDE. Package creation support is also available. Codenvy is a bit slow when Initialising Java tooling, and supports non-IE browsers such as Safari, Firefox or Chrome.
It has shell access for UNIX development with basic commands. Build and deploy is integrated in the IDE (e.g., build with Maven and deploy to Google App engine) as shown in Figure 8, just like in the Eclipse or NetBeans IDE.
Codenvy supports deployment to cloud environments like Cloudbees, CloudFoundry, Openshift and Google AppEngine. There are a lot of features in Codenvy, and thats why we have covered a detailed review of them.
Pros: Has a variety of features and is flexible in development. Supports download of archive code on-the-fly.
Cons: Doesnt support the IE browser. Slows down sometimes, when users compile or do a cloud deployment.
There are many other tools like JS Fiddle, Python Fiddle, Kodingen, Shift Edit, Erbix, ICEcoder, Neutron IDE, Collide, etc, but they are not so popular or havent gained momentum in supporting more features in cloud based application development.
For a developer or a small company that lacks the capability to install an IDE locally for software development or wants to develop a program on-the-fly, the tools described above would be helpful to experiment on, prior to choosing a development environment.