Cloud IDE for Java Launched by eXo
eXo has announced the launch of a new Cloud IDE, which is based on a hosted development environment that facilitates social coding, the collaborative development of gadgets and mashups that can be deployed directly to any Java PaaS. This includes multi-tenancy, social and collaboration features.
Basic features include:
- Support for Web Development,
- Quick Setup of New Domains,
- Support for Git,
- Collaborative Development and social coding,
InfoQ had a Q&A with Benjamin Mestrallet, eXo founder and CEO, about his company's new offering:
InfoQ: Can you give us an architectural overview of the IDE? What technologies is it based on and how do you scale it?
eXo: eXo Cloud IDE leverages several core components of eXo Platform 3, including the web-based IDE, Java Content Repository (JCR); the multi-tenancy layer is provided by eXo Platform 3.5 (which is due out later this year).
The IDE uses Java on both the server side and the runtime environment, to execute REST services and Gadgets. To host eXo Cloud IDE, we are running Tomcat clusters on Amazon EC2 infrastructure. Using standard Java architecture is an important point since it allows us and our customers to use the same infrastructure and technologies in a public cloud (the current Cloud IDE service) as they would be able to use in a private cloud.
All the source files that a Cloud IDE developer uses are stored inside the JCR with multi-tenancy support. Using the JCR provides several features out-of-the-box that are useful as developments tools:
- File-based organization
- Versioning support
- Lock support
As mentioned previously, we have improved the JCR architecture for the future release of eXo Platform 3.5 to add multi-tenancy support. This means that when a user requests the creation of a new domain (which is a tenant), a new JCR repository is automatically initialized to store the data in a secure and isolated manner.
With this approach, we can run many different tenants in the same JVM, with secure access to data (source code and execution environment)
InfoQ: With what technologies was your code editor developed?
eXo: The visual part of eXo Cloud IDE is based on a Google Web Toolkit (GWT) application that calls a set of REST services on top of the eXo Platform 3.5 core. We developed a rich set of extensions for building services on top of the SmartClient library.
For the core editor features, such as code coloring and auto-completion, eXo extends and contributes to the CodeMirror project.
InfoQ: How does it compare with Ace or Bespin/Skywalker?
eXo Cloud IDE provides a runtime environment for REST services based on JAX-RS, which allows developers to build and execute services for mashups. They can deploy OpenSocial gadgets consuming these services (or others), and integrate them into any OpenSocial-compliant page. Because we use the eXo Platform core technology under the hood, an OpenSocial container is available. In addition to OpenSocial gadgets, developers can also build widgets for the Netvibes platform.
eXo Cloud IDE also offers a JPA-like object-mapping framework for JCR persistence.
Finally, the key difference is that eXo Cloud IDE will not only allow developers to easily code on the Web, but also to test and deploy their application directly from the IDE to a PaaS. So it is not only about “developing and testing” - it is also about deploying applications on the cloud.
InfoQ: What languages/technologies does the IDE support?
eXo: This first version of eXo Cloud IDE focuses on technologies that are “native and natural” for the eXo community: Web developers with Java skills. Today, we support:
- Java/Groovy syntax and execution
- JAX-RS web services
- Chromattic persistence, an annotation-based, JPA-like framework for JCR persistence (take a look at the “Shopping Cart” application/video)
- OpenSocial/Google Gadgets
- Netvibes UWA (Universal Widget API)
eXo Cloud IDE also provides an interesting templating mechanism that allows developers to create their own “Project Templates”, making application development more efficient. For example, you can easily create a template for a simple Gadget calling a REST Service.
We plan to support more languages and frameworks such as Play!, Grails and Ruby on Rails.
InfoQ: What features should we be expecting in the near future?
eXo: Improvements planned for the near future will allow you to pull a Java web application from Github, edit it, test it and deploy it to most of the Java PaaS available in the market (through a Git push in CloudBees for instance, or a WAR deployment to App Engine, Red Hat Makara VMForce, or Amazon Beanstalk).
But we don’t plan to limit support only to Java PaaS. The IDE is designed to be language-independent, so we will also be able to support other PaaS like Heroku (Ruby), Azure (C#), or even the Python version of App Engine.
Finally, we will start adding collaboration features such as activity streams, wiki and forums for developers to collaborate around their project, write documentation and provide support.
InfoQ: How do you think Cloud IDEs compare to traditional desktop IDEs?
eXo: As you can see with eXo Cloud IDE, most of the features of a Desktop IDE can be implemented in the browser and made directly available in the cloud. But we still see cloud-based IDEs and desktop IDEs as complementary. Today, developing in the cloud is “the last mile” for developers and applications.
InfoQ: Do you see them getting mainstream in the near future?
eXo: Yes, we believe cloud-based IDEs will become mainstream.
If we look at the way we are using “IDEs” at eXo today, we build the core foundation of our product with traditional desktop IDEs, but we use eXo Cloud IDE more and more to add value on top of the platform once it is deployed: adding new REST services to mashup services (eXo services or external APIs) and exposing new applications to users using Gadgets. Therefore, we believe they are complementary in the development lifecycle.
At eXo, we understand that the Cloud is a huge step in the evolution of the IT industry. At this stage, it has already had a huge impact on the way we manage applications and infrastructure, and we believe it will also change the way we develop and deploy applications.
This is one of the reasons we have added support for “data structure” in our IDE using Chromattic. With this, developers can easily create CRUD applications, and test and deploy them with a single tool - from anywhere!
To develop a web app, developers don’t want to deal with setting up a complex environment to be able to develop, test and deploy their app. They just want to code and push it on the cloud. They also expect the underlying PaaS to deal with scaling issues. With eXo Cloud IDE, all you need is your browser, from development to deployment.