Achieve Shorter Software Delivery Timelines Using Cloud IDEs

0
6246
pass featured image
Using cloud services today has become a convenience. An integrated development environment (IDE) facilitates the development of apps. The authors of this article have checked out a number of cloud IDEs and evaluated them. Read on to discover which of these suit your requirements the best.

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.

Fig1-CloudIDE
Figure 1: Software development and the cloud IDE
Fig2-Orion
Figure 2: Software solutions in Eclipse Orion

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.

Fig3-IDEOne
Figure 3: IDE One
Fig4-OnlineJava
Figure 4: Online Java IDE

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:
a. Users can develop an application in one or more software technologies such as Java, C++, HTML, JavaScript and so on.
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, let’s consider an open source virtual environment for cost effective and better community based collaborative software development. Let’s 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, let’s 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 isn’t any good Java-supporting cloud IDE available. For example, eXo provides facilities, but it lags in speed to some extent and doesn’t 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 Codenvy–Eclipse 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/
Cloud9 IDE is capable of handling projects from JS, HTML, PHP and Ruby. It supports development in JavaScript, GIT, Selenium, HTML/CSS, XML, XQuery, PHP, Ruby and Node.js. It can be used for Web application development. Cloud9 supports repositories like GIT, the distributed revision control tool Mercurial, and Apache Subversion. It also facilitates deployment, which can be done directly from Cloud9 to Joyent and Heroku. Its limitation is that it is not useful for Java application development or J2EE application development/handling.
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.

Fig5-Codenvy
Figure 5: Software supported by Eclipse Che
Fig6-CodenvyFeature
Figure 6: Features of Codenvy

Codeanywherehttps://codeanywhere.net
This is a lightweight browser based IDE tool, which supports development of Web applications using HTML, Cascading Style Sheets (CSS), JavaScript, PHP, MySQL, and more. We can work with this tool to develop or test code from anywhere—even from mobile devices—since it is also available as a mobile application. Codeanywhere is supported in iOS, Android and Blackberry based mobile devices and tablets.
Pros: Lightweight and easy to use. Support for mobile devices.
Cons: More useful for Web page development and doesn’t support a variety of programming languages.
Eclipse Orion https://wiki.eclipse.org/Orion
This is the Eclipse version of Orion, which can be used as a local standalone (installable) IDE or an online IDE through a browser, but it only supports Chrome, FF, Safari and IE10. This is more for client side scripting like HTML, JS and CSS. Java syntax highlighting is supported during static code review, and doesn’t integrate with the Java build and development environment. It has shell features with a very limited command facility. Eclipse Orion doesn’t support the private cloud and hence is not suitable for secured application development. This is one of the lightweight cloud IDEs for software development in HTML/CSS and JavaScript.
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: Doesn’t support the private cloud/secure development, and doesn’t support build/compilation of code or online testing.
Coderun Studio www.coderun.com/studio/
This is another very simple but efficient cloud IDE, which supports software development in ASP.net, HTML, CSS and JavaScript, apart from focusing on Microsoft code developers and providing compatibility with Microsoft Visual Studio. It also facilitates code completion, syntax highlighting, debugging and native compilation. This efficient cloud IDE offers the flexibility for community development by providing a unique URL and access to peers for a multi-user development environment.
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.
Users can download the code from this repository, and build to prepare an IDE in their local desktop. It supports Windows, Chromebox and Mac based operating systems, and is used to develop local or cloud based software projects. This tool facilitates pair programming by providing cloud based IDEs for sophisticated community development in Java, JavaScript, C++, Ruby, Scala, HTML, CSS, NodeJS and UNIX script programming, to name a few. It provides auto completion of code, syntax highlighting and supports cross-platform development on the desktop, laptop, tablet and on Chromebook. This tool provides features for Scala based program development and deployment to cloud based platforms. It is open source with licensing under Apache 2.0, and provides command line development for shell programming, Google Docs and database support using MySQL.
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: Doesn’t support a variety of database types and is not so flexible in pair programming.
IDE Onehttps://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 doesn’t 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).

Fig7-CodenvyPaaS
Figure 7: PaaS support in Codenvy
Fig8-CodenvyDeployment
Figure 8: Deployment in Codenvy

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 that’s 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: Doesn’t 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 haven’t 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.

Previous articleScalr: The Efficient Cloud Management Tool
Next articleAn Introduction to Apache ActiveMQ
The author is a Ph.D in artificial intelligence and the genetic algorithm. He currently works as a distinguished member of the technical staff and Principal Consultant in Wipro Ltd. The article expresses the view of the author and doesn’t express the view of his organisation.
The author is associated with the Open source technology Lab, International Institute of Information Technology, Bengaluru. He can be reached at b.thangaraju@iiitb.ac.in

LEAVE A REPLY

Please enter your comment!
Please enter your name here