Web Profile and OSGi Updates for AS7
JBoss AS7 Gets Java EE 6 Web Profile Support
JBoss AS 7 was released earlier this month, with support for both the Java EE Web Profile and OSGi 4.2. In addition, this release introduced new micro container architecture, support for Java Context and Dependency Injection, and a list of other updates. In this interview, we speak to the lead of Red Hat's Enterprise Application Platforms Engineering group, Bruno Georges, on some of the major updates in JBoss AS 7.
JAXenter: JBoss AS7 has just been released. How does AS7 differ from the other application servers currently available, for example WebLogic, GlassFish, WebSphere?
Bruno Georges: There are a number of differences between AS7 and its competitors, the most notable ones revolve around performance, modularity and flexibility.
AS7 introduces a new modular architecture which promotes extremely fast startup times. It also supports many of our innovative and 1st class APIs, this includes CDI's Weld, HornetQ and Infinispan.
Not only does JBoss have a strong advantage from those technologies, but more importantly all of these are made available to address a wider range of deployments, ranging from traditional h/w Servers to Mobile and PaaS environments.
We developed those with high-availability, high embed-ability and being lightweight, in mind. Basically we have designed those technologies for tomorrow, not just for today.
Flexibility: competitors come with large stacks, our customers are looking not only for enterprise capabilities, but more importantly for a lightweight approach to Enterprise Java development, while preserving Enterprise requirements and operational capabilities. With JBoss' "Open Choice" we offer developers and administrators the choice of selecting what they need without the fear of vendor lock-in.
For the developers, we support a variety of languages within the same runtime environment. We are the best place to run your Spring, Struts, Ruby on Rails based applications.
Open source and JBoss are not only the right solutions for this, but are critical to preserving these key principles.
JAXenter: What challenges did the team face, in making AS Java EE6 Web Profile compliant?
Bruno: Java EE6 introduced the notion of profiles, with the Web Profile being the first to be standardized.
Since the rules for certifying the additional technologies can lead to different interpretations, we had to go through a few iterations before certifying a strict Web Profile implementation when enhanced with additional components such as JCA.
On the positive side, the Modularity of our new Kernel shielded us from compliance issues not covered explicitly by the TCK.
JAXenter: JBoss AS7 adds in-built OSGi support. How will existing JBoss AS users benefit, from this in-built support?
Bruno: Existing JBoss AS users can benefit from OSGi support in AS7 in that they can integrate OSGi into their Java EE systems. This will allow them to take advantage of the dynamic capabilities from OSGi in their Java EE components, through the use of OSGi Services. OSGi Services are provided by OSGi Bundles and both of these have a dynamic lifecycle. They can be added and removed at runtime. This gives OSGi Services-based applications the capability to be patched or updated without taking the actual application itself down.
Another possibility that existing JBoss AS users get with the OSGi support, is that they can utilize functionality that may be available as existing OSGi bundles in their Java EE deployments. Organizations may have infrastructure available in OSGi that they wish to use in a Java EE context. JBoss AS7 allows them to do this.
We have an advantage in that the native modules and services layers give us more opportunity to do performance tuning. The other app servers are built on top of either Eclipse Equinox or Apache Felix, which means that they are subject to those projects for their performance.
The JBoss community is an enthusiastic and highly vibrant community and people may very well choose OSGi in AS7 because of it.
JAXenter: You changed the existing micro container architecture while developing AS7. What influenced your decision to make this change? And how has the micro container been updated, in this release?
Bruno: We have a completely new core architecture in AS 7, based on the new JBoss Modular Service Container (MSC for short) that replaces the previous Micro Container. The big reason for such a major change, is that we observed a paradigm shift in hardware. Almost all modern CPUs, including those on desktop, laptop, and even mobile systems, now have multiple instruction cores and this trend is rapidly expanding. We really wanted to tap into that power, and so we designed a fully concurrent container architecture. In addition, we wanted to deliver true modularity, user-centric configuration, a rich management model, and lower memory usage. In a nutshell, we believe we made an equivalent paradigm shift in middleware.
JAXenter: How has the JBoss AS team targeted faster start-up times, for this release?
Bruno: JBoss AS7 has been re-architected from the ground up. Jason Greene, JBoss AS lead and his team designed AS7 keeping to the vision of "JBoss Everywhere". The team designed a light weight, elastic, highly scalable, modular server.
The new kernel is designed around a lightweight service concept and uses a highly-concurrent dependency resolution algorithm which allows Services to be started concurrently to eliminate unnecessary waits and leverage multi-core processors, while non-critical services have the option to be started on-demand, or lazily on first use. All common core services like web, ejb, transactions, jca datasources, management services and console are started eagerly, but in parallel.
JBoss AS 7 offers a 10-fold reduction in startup time over previous versions. In JBoss AS7, every library, framework, and API is represented by a separate module. Some of the benefits of this innovative approach include:
Modular classloaders which provide superior isolation, protecting both AS internal libraries and user deployments from unintended interactions between the different libraries as well as different versions of the same library.
Memory management. Only the modules actually used are loaded from disk and into memory, which means not only will it take less time to start up, but it leaves more room for your applications.
From the end user perspective, they will see faster load times and more obvious, intuitive behavior. I.e. when they add a module in their class-path or when their application requires some other EE capabilities/dependencies, it just works.
Jandex. A mechanism to optimize annotation scanning, and efficient use of indexes to lookup classes and annotations optimally.
JAXenter: What are the next steps, to make AS compliant with the EE6 full profile?
Bruno: On July 12th , we shipped JBoss AS 7.0.0.Final which is a certified Java EE6 Web Profile implementation.
We shipped two releases, each with additional components. First, the Web Profile certified release came with Iron Jacamar (JCA1.6) and RESTEasy (JAX-RS), and the Full EE6 preview that came with the former stack, plus HornetQ (JMS) and JBoss WS-CXF/Apache CXF's JAX-WS.
Later this year we will be shipping JBoss AS7.1 which targets the full Java EE6 profile. The additional technologies that will be implemented in AS7.1 include:
Enterprise Application Technologies
JSR 318 : Enterprise JavaBeans 3.1 (Note: AS7.0 supports EJB3.1 Lite as defined in the Web Profile)
Web Services Technologies
JSR 109: Implementing Enterprise Web Services 1.3
JSR 181: Web Services Metadata for the Java Platform
JSR 101: Java APIs for XML based RPC 1.1
JSR 93: Java API for XML Registries 1.0 (JAXR)
JSR 196: Java Authentication Service Provider Interface for Containers 1.0
JSR 115: Java Authorisation Contract for Containers 1.4
JSR 77: J2EE Management 1.1
JSR 88: Java EE Application Deployment 1.2