Archive for March, 2011

eXo JCR 1.14.0-CR1 is out

Thursday, March 31st, 2011

The core Java Content Repository functionality that we leverage in both GateIn and eXo Platform 3 is eXo JCR (developed in JBoss.org, the JBoss open source forge). We have made many improvements and introduced new features in our upcoming version of eXo JCR (eXo JCR 1.14.0-CR1). The following post provides a technical deep-dive into some of these changes.

New Features

JBoss Infinispan

The most significant of the new features found in eXo JCR 1.14 is the ability to rely on Infinispan as the underlying cache; this provides a more scalable clustering solution. For now, we only used and tested Infinispan (also known as ISPN) as an alternative to JBoss Cache (also known as JBC, which you can still use if you prefer). In other words, Infinispan is only used as a simple replicated cache, which is still interesting in terms of memory footprint and concurrency.

According to our first internal tests, ISPN seems to consume less memory than JBC; more importantly, ISPN clearly reduces the contention compared to JBC. With JBC, you can face contention issues especially when you use any eviction algorithm other than expiration, since any read access to a JBC Node will add an eviction event to the LinkedBlockingQueue instance of the whole region. In ISPN, they had the brilliant idea to implement their own version of ConcurrentHashMap, which they call BoundedConcurrentHashMap, to manage the eviction within each segment. This means that we now have one LinkedBlockingQueue instance per segment, so you can reduce the contention generated by the eviction algorithm by simply increasing the concurrency level.

Another significant improvement ISPN offers is the remove method. In our internal tests we realized that in some use cases, it could be over 800 times faster to remove a cache entry in ISPN compared to JBC. This is mainly due to the notion of Node trees in JBC that is not found in ISPN. Actually, when you remove a node in JBC, it needs to remove all its descendants – which consumes a lot of time and CPU when you have a lot of children nodes.

Next we will try to improve our ISPN integration, to fully benefit on the distributed cache capabilities offered by ISPN. In real-life scenarios, it is difficult to ask a customer to deploy their application on hundreds of instances of a given application server, since the required licenses and support would be cost-prohibitive (not to mention a nightmare for the administrator). On the other hand, it sounds more acceptable if the customer only needs to deploy their application on 3-8 app server instances; these would be used as frontal servers, while hundreds of ISPN cache instances could be deployed in standalone mode to act as the cache server. This would allow ISPN to be used as a cache server, although in our context this is not possible out of the box (due to a lack of JTA support when ISPN is used as cache server – more details here).

Java Security

As you may know, our new eXo Cloud IDE is a free developer service for Java Platform as a Service (PaaS). This ability to easily create and deploy REST components on the fly is very interesting in terms of productivity. However, it needs to be over-protected to ensure that no malicious users affect the integrity of your environment. So we made the entire eXo JCR stack rely on Java Security, meaning that when the SecurityManager is installed, access to sensitive methods is impossible unless the full call stack has enough rights.

Apache Tika

eXo JCR already has a plugin-based framework that enables the extraction of both the meta-data and the full text content of the most common document types, such as Text, XML, HTML, PDF, MS Office and Open Office documents. But we wanted to support many more types of documents, so we decided to implement a plugin for Tika. This is actually an open door to many new document types, including images, audio and video.

Other Interesting New Features…

  • If you dedicate a listener for a specific event broadcast by the ListenerService, you can elect to receive the event asynchronously by adding the annotation @Asynchronous (from the package org.exoplatform.services.listener) to the class declaration level of your listener.
  • eXo JCR can be deployed on Jetty.
  • H2 DB is now supported.

Improvements

JCR Re-Indexing

With full text search engines such as Lucene, it is helpful to rebuild them regularly to preserve consistency, get rid of potentially corrupted indexes, and ensure optimal performance. We decided to speed up the re-indexing mechanism by making it multi-threaded, and by relying more on features specific to RDBMS, such as SQL paging. The results are quite interesting: according to the total amount of core and the db type used, the indexing of millions of JCR nodes could be 4 to 6 times faster.

Lucene Indexing in Clustered Environments

In the previous version of eXo JCR, we stored the Lucene indexes in a shared file system, so it was possible to add a node to the cluster dynamically (meaning the new node could access the Lucene indexes directly, so they could be started and made available quickly). The problem with this approach was that the performances in read and write accesses were affected, and that using a shared file system could have side effects. In addition, only the main cluster node (a.k.a. coordinator in JGroups terminology) could see the latest changes. This is because, for performance reasons, they are only persisted after a certain amount of time, while the rest of the cluster could only see the persisted changes.

To improve this, we took a new approach. Each node can see all changes in near-real time, and has its own version of Lucene indexes. This improves performance and means we no longer rely on a shared file system. This change is possible because we were able to improve the index recovery. Now, when a new node is launched that doesn’t have its own version of Lucene Indexes, you can either decide to rebuild them from a configuration (if the DB is not too big, knowing the re-indexing has been improved too) or get it from the coordinator. The latter method allows you to get a new node up and running in a reasonable amount of time, and fully benefit from having the Lucene indexes locally.

The next step will be to implement a non-blocking index recovery in order to have the new cluster node ready to use even faster.

Backup/Restore

The backup/restore feature has been completely reviewed to better fulfill the requirement of an enterprise; it is now faster, more reliable and much easier to use.

Other Interesting Improvements

  • An application with a lot of workspaces requires a lot of JBC instances (3 per workspace: JCR Cache, JCR Indexing and JCR Lock). To reduce the total amount of JBC instances, you can configure your JCR to make your cache instances shareable – meaning you only need 3 JBC instances, and they can be used by all your workspaces. With this configuration, your JCR will create a dedicated JBC region per workspace instead of launching a new JBC instance.
  • The way missing values are cached is optimized for applications that require frequent testing of the existence of specific nodes or properties. If the searched-for node or property does not exist, the information indicating that the data is missing in the DB is stored in the cache, instead of accessing the database at each call. Because future re-tests will find this information in the cache instead of having to query the DB, your application will be faster and more scalable.
  • All cluster nodes can now be launched in parallel, even when the JCR has never been initialized. This was a limitation in the previous version, since the JCR had to be initialized first.

Download

You can download eXo JCR 1.14.0-CR1 from here and get the documentation from jboss.org here.

You can test it with jetty or tomcat; for both be sure to read the file exo-readme.txt to know how to test it with the default configuration, JBoss Cache or Infinispan. In a nutshell, you simply need to launch it from eXo batches with a new parameter: jbc for JBoss Cache and ispn for Infinispan.

The best ways to quickly test it are:

  • The WebDav access available here
  • The FTP access available from port 2121

For both, use the account root with the password exo.

Enjoy,
Nicolas

Introducing Native Mobile Apps for eXo Platform

Wednesday, March 30th, 2011

We recently announced our Cloud Strategy:

  • A new version of our enterprise software offering (eXo Platform 3.5) that will allow enterprises or cloud service providers to build private or public cloud portals at an unbeatable cost.
  • A set of free online services for developers to facilitate social coding in the Cloud (eXo Cloud IDE) before deploying their apps to Platform as a Service offerings.

Today I would like to add a new dimension to our enterprise eXo Platform vision by introducing our mobile strategy.

The Cloud and Mobile are two huge trends that completely change the way we produce, store and consume digital information. Data now lives in the Cloud and is accessed by many different devices, from PCs, smartphones, to tablets.

In the consumer world, people now store their documents, images and videos via cloud services; they can edit online and share this content with friends in social networks. This information is not only available from different devices, it is also consumed with dedicated user experience, which factors in the size screen as well as the multi touch capabilities.

The eXo vision described in the next picture is simple: we want to bring that consumer experience to the enterprise, by delivering an integrated, secure and multi channel platform that leverages existing IT investments.

This picture explains how eXo acts as a bridge between the existing IT system and end users.

This picture explains how eXo acts as a bridge between the existing IT system and end users.

First, eXo integrates with the IT system:

  • eXo Platform is able to consume data and information leveraging traditional Java middleware as well as content directories. Standard protocols and libraries are supported, so eXo can integrate with a large set of existing systems.
  • eXo Platform is able to easily consume web services and REST APIs that are now available in modern applications deployed in an enterprise private cloud.

The next step in is to be able to consume this data, reorganize and expose it to different channels:

  • Third-party apps: eXo Platform allows developers to easily mashup the information from the IT system and to expose it as a set of dynamically built REST APIs available in a secure way. This mashup API can also be built on top of online services like the one from Google or Salesforce. The embedded web IDE is a key part of this, as it allows dynamic creation of such APIs without any need to install a new library or to restart the server (which is critical in a multi tenant architecture).
  • Third-party portals: consumption of APIs is great, but sometimes it is simpler and faster to directly offer a set of UI components that already use those REST services. eXo Platform can be used as an OpenSocial Gadgets container or as a Netvibes widgets directory. In other words, one can remotely import gadgets into an iGoogle dashboard, or in any application that supports the OpenSocial specification. Once again, those gadgets and widgets can be created online with our web-based IDE.
  • eXo Platform – the UXP: eXo Platform started as a pure player in the portal world. While it of course still support portlets, it can also consume previously-created OpenSocial Gadgets. The use cases are diverse; it can be either for a social intranet, or as part of web content when the platform is used as a customer-facing extranet (which mixes transactional applications with some corporate content such as a product catalog). The channel is the classic one, as it simply uses a browser on a PC or laptop.
  • eXo Platform native mobile apps: eXo Platform now has a set of complementary applications for mobile devices (iOS and Android) that can consume those APIs and Gadgets.

The Enterprise Mobile Portal Concept

Using the Safari browser in an iPhone or an iPad to browse dashboards from your social intranet is clearly not the optimal user experience, but there are scenarios when you might want to build a mobile-friendly site. eXo Platform, with its web IDE and a wide range of native APIs, allows developers to rapidly create touch-compatible HTML5 apps, as shown in this video demo.

But we wanted to create a user experience that was truly optimized for the way we interact with mobile devices – so users can access the same information and applications from multiple devices, all in an integrated and secure way that suits enterprise needs. Usual portal features, such as personalization or single sign-on, could be coupled with a touch-based user experience, thereby defining a new type of portals: the mobile portal.

To realize this Enterprise Mobile Portal concept, we created 3 native applications, for the iPhone, iPad and Android. These apps are now available on the Apple App Store as well as the Android Market Store and extend eXo Platform 3.0.

Mobile apps for eXo Platform offer users a native OS application experience (adapted to the screen size of the device), serving as an entry-point to the data and apps available in your eXo-based private or public cloud portal. The platform allows developers to build Gadgets and make them available to users in customizable Dashboards; now these gadgets and dashboards can also be dynamically available in mobile devices.

Many features found in eXo Platform are available in our mobile apps, but the way they are presented has been adapted to the device:

  • Native apps: eXo mobile apps can be installed in the same familiar app store you’re already using. Then, they connect to the eXo Platform 3 server where you’re running your intranet or site.

  • Authentication:to login, users enter their credentials (the same username and password used in their eXo-based intranet), plus the URL of the eXo Platform 3 server.

  • Enterprise Mobile Portal Home: the homepage on each device has two sections. The application section includes native eXo Platform features like instant messaging and document management, while the Dashboard area provides access to the portal gadgets that your admin has made available to you.

  • Dashboards: this is where the magic happens, as any Gadget developed online with the web IDE and added to a user Dashboard is automatically pushed to the mobile device. This allows a dynamic, unified view adapted to your mobile device – but also the secure distribution of enterprise applications to different devices!

  • Document Management: eXo Platform 3 includes a powerful Document Management system that allows to store, share, edit, version, lock and distribute documents such as PDF, Office, image or video files. Our Enterprise Mobile Portal provides access to this doc repository, and uses native OS viewers such as the PDF viewer on your device. If your device has a camera, you can take a picture and automatically upload it to the eXo server. I use this feature myself, to share pictures in eXo social intranet (we will support the iPad 2 camera soon).

  • Instant Messaging: eXo Platform 3 includes a XMPP server and web client (this is useful if the platform is used as a social intranet).

What’s Next

The mobile apps available today were first tested on our own intranet (that explains the version number which is 1.1.1), so they interact well with eXo Platform 3.0 servers. We’re also testing them on the upcoming eXo Platform 3.5 expected later this year.

We are already working on the version 2.0 of these apps, which will include additional social components. The team dedicated to mobile apps has grown, with experienced developers who helped develop the following apps:

You can expect a lot of cool new stuff from us for the launch of eXo Platform 3.5 in September. And who knows, we may one day offer some mobile apps for our free online services such as eXo Cloud IDE…

History of eXo Cloud IDE

Tuesday, March 15th, 2011

Today we announced our strategy for bringing enterprise portals to the cloud, along with services that will make it easier, faster and more collaborative to develop apps for PaaS deployments. But to understand where eXo is going, we need to look back to when we first started working on improving the developer experience.

The idea for our web-based IDE originated over three years ago. At that time several customers, who were already using version 2 of eXo Platform to build websites and intranets, wanted an online tool to view, edit and redeploy web content templates.

To provide this capability, we decided to implement a simple HTML, JavaScript and CSS code editor, leveraging Google Web Toolkit. While prototyping it, we soon realized we were on to something big, and our ambition for the project grew.

It wasn’t long before the team expanded to 6 core developers, with a goal of building a full-fledged online IDE. The IDE would allow our customers to dynamically customize and enhance the capabilities of the platform, by building and deploying REST APIs, OpenSocial Gadgets or simple HTML/Javascript apps. This first version of the IDE was introduced in eXo Platform 3, released in September 2010.

Building apps in eXo Platform 3 is based on standards, such as OpenSocial Gadgets for the front end, JAX-RS for the business logic layer and JCR for persistence. Developers can use auto-completion for faster coding, access a cool outline view, or see the syntax colored for each file mime-type. The IDE was an important part of transforming eXo Platform from an enterprise portal to a complete user experience platform for Java. Now customers can customize their social intranets with new gadgets, or expose new REST APIs to mobile devices.

It wasn’t long before we decided to make a standalone offering for the IDE. This decision was based on the strong positive reaction from our customers of course, but also because we saw how the IDE dramatically transformed our own intranet virtually overnight. We set up the eXo intranet on eXo Platform 3 (after first migrating our corporate website), and the response by our own development teams was really eye-opening. Our engineers – even those who had never used the IDE before – were innovating and creating new intranet capabilities in their spare time. These new gadgets can be used by other eXo-ers in their own personal dashboards, and a few of them have already been packaged and offered as plugins for any eXo Platform user (available in the eXo Resource Center).

Almost immediately we heard from several ISVs who were interested in embedding the IDE as part of their own offering. OEM deals were signed – we’ll start announcing these in the near future – and several more are in the pipe.

The evolution of the IDE as a standalone component was complete when Amazon announced their PaaS offering, Elastic Beanstalk. We realized we could offer the IDE with a Tomcat server as an AMI (Amazon Machine Image). This allows Java developers can deploy a WAR application in the Amazon PaaS, then quickly extend it with REST APIs and a UI provided by the coupled online IDE.

But the real goal of eXo Cloud IDE is more ambitious. We will provide a cloud service where teams of developers can build, share and deploy applications quickly – in any major PaaS currently available.

To offer this multi-tenant Cloud IDE service, we leveraged the work of another eXo team that has been tasked with making eXo Platform ready for private cloud deployments (available as part of the upcoming eXo Platform 3.5, which will be released later this year). This means the eXo Cloud IDE service relies on eXo Platform’s multi-tenant layer, so every developer team can get its own isolated data and server side processes.

This multi-tenancy is achieved at the Java Virtual Machine (JVM) level, allowing us to host several teams on the same OS virtual machine, which dramatically reduces the cost of hosting. And because eXo relies on the revenue stream from our enterprise on-premise software product line (and we would love to have you as a customer), we do not need to monetize this new IDE-as-a-service offering. That is the reason why we can make this service free of charge now and in the future.

Today we announced the first version of eXo Cloud IDE. It is limited to a relatively small number of teams, but we will open it more in the coming weeks. To participate in the private beta, you need to create an account. From there you will be able to invite 5 developers to your team to collaborate on your development projects. With this launch you can quickly build and deploy HTML 5 mobile apps, social network apps, Mashups, Google Gadgets, Netvibes widgets or REST APIs.

Improvements planned for the near future will allow you to pull a Java 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 and VMForce). 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.

Cloud computing is clearly more than a buzzword – it is completely transforming our industry. Most of the applications we know today will be used in the cloud tomorrow, including development environments. Accessing and editing apps from many devices, deploying them seamlessly on dev, staging or production environments, sharing code online or managing IDE upgrades or configuration for across teams are now simple tasks. This is all made possible because of the Cloud IDE. I hope you’ll join us in trying it out, and let us know what you think.

eXo Extends Enterprise Portals to the Cloud

Tuesday, March 15th, 2011

Company introduces the first cloud-ready user experience platform and launches a free new Cloud IDE developer service for Java Platform as a Service (PaaS)

SAN FRANCISCO, Calif (Mar. 15, 2011)eXo, a Java portal technologies pioneer, today unveiled its roadmap to take modern enterprise portals, gadgets and mashups to cloud computing environments. For enterprise companies that have invested in Java, eXo is offering a path to the cloud that will help reduce costs, simplify administration and substantially shorten time-to-deployment for new applications. In support of this roadmap, eXo is making two announcements today:

  • eXo introduces eXo Platform 3.5, the first and only multi-tenant user experience platform (UXP) for Java systems. A UXP is the evolution of the enterprise portal to support a variety of consumer web technologies that affect how people interact with the web today. In addition to multi-tenancy and cloud management capabilities, eXo Platform 3.5 will feature improvements to its web-based IDE, making it easier to write, test and deploy gadgets, mashups, HTML5 and content applications.
  • eXo is launching eXo Cloud IDE, a new service offering available today as a private beta. The first of a set of free cloud services planned for 2011, eXo Cloud IDE is a hosted development environment that facilitates social coding–the collaborative development of gadgets and mashups that can be deployed directly to a PaaS. eXo Cloud Services enhance PaaS development and will leverage core technologies in eXo Platform 3.5, including multi-tenancy, social and collaboration features.

“Over the last six months, our customers have found a real Java alternative to SharePoint with eXo Platform 3.0, and they’re deploying transactional websites, managing web and social content and building next-generation gadgets and dashboards with it,” said Benjamin Mestrallet, CEO of eXo. “In 2011, eXo is once again changing the game for enterprise portals with deployment options that meet today’s computing requirements. With our cloud-ready user experience platform and PaaS developer services, eXo is paving a path to the cloud for Java enterprises.”

A Cloud-Ready User Experience Platform

eXo Platform is an integrated UXP based on the open source GateIn portal for building and deploying transactional websites, managing web and social content and creating gadgets and dashboards. It lets companies leverage their existing Java infrastructure, while accommodating changing user behavior driven by consumer web technologies such as social networks, social publishing, forums, etc…

eXo Platform 3.5 makes it easier to develop, extend and deploy modern enterprise portals, gadgets and mashups in cloud computing environments. Furthermore, it opens up cloud deployment options for multiple users, including:

  • Service Providers: Manage portals with a single user experience across many customers. Shared OS multi-tenancy means lower cost for service providers with only one JVM to worry about.
  • IT Operations: Manage and monitor a private or public cloud from within one portal. A single user experience makes it easy to learn and lowers support costs.
  • Users: Add enterprise social and collaboration capabilities easily. Embed business applications in dashboards. Extend the portal by aggregating private and public cloud applications. A smartphone or tablet user interface means the portal can be accessible on those devices without extra coding.

General availability for eXo Platform 3.5 is planned for the second half of 2011.

eXo Cloud Services

eXo Cloud Services is a set of free services that will enhance PaaS development. The first service out the gate is eXo Cloud IDE, launching today as a private beta open to development teams. Key features and benefits in the Cloud IDE roadmap include:

  • Web Development: A single environment for wiring REST services, HTML5, Gadgets and structured content to create rich mashups and web apps on the fly. Because coding is done in a production environment, moving from code to testing and deployment can be done much faster.
  • Quick Setup of New Domains: As a multi-tenant service, creation of a new network is almost instant. Developers can pick a domain, invite their development team and start coding in their own IDE.
  • Source Control Integration: Support for Git and SVN.
  • Collaborative Development: Enables social coding with activity streams and collaboration tools like wikis and forums.
  • Deployment Flexibility: Ability to deploy locally on the Cloud IDE platform, or remotely via Git push or classic WAR deployment.
  • PaaS-agnostic: Develop and package Java web projects as webarchive (.war) and deploy on popular Java PaaS. In the future, eXo intends to extend support beyond Java to Rails, Node.js, Play and .NET, among others.

Additional Online Resources

Yann Aubry joins eXo as Senior Vice President of Sales for EMEA

Wednesday, March 9th, 2011

We’re excited to have a new member of the leadership team – especially an industry heavyweight like Yann Aubry. He joins us from Red Hat, where he was the General Manager of France, overseeing all sales and field operations.

In his new role as SVP of Sales for EMEA, Yann will help eXo continue to accelerate the adoption of eXo Platform 3 in France and across Europe. We’re sure our customers will appreciate his experience and commitment to customer success. His knowledge of the software industry and his strong background as a manager of open source companies are a welcome addition to our team.

Prior to joining eXo, he was General Manager of France at Red Hat. While at Red Hat, Aubry developed and executed go-to-market strategies for the French market, where he was responsible for over $50 million in sales. Prior to Red Hat, Aubry held various sales management positions in the international sales organizations of Sun Microsystems and EMC. Aubry holds a Master’s Degree in management, business and marketing, and graduated with a degree in physics and mathematics from the University of Bordeaux, France.

Please join us in welcoming Yann to the eXo family!