Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

This page provides a list of aspects that can be addressed during the process of runtimes examination.

  1. Architecture
    These points refer to the architecture aspects like extensibility, modularity, configurability and robustness.
    • General
    • Extensibility - ability to extend the run-time with new functionality.
      • HP supports
        • Handlers (section 13 in the HP runtime guide) - an ability to add user handlers & change system handlers
        • Extensible Lifecycle Manager - define custom lifecycle s for resources/providers by implementing OFFactory interface and adding it to the Factories registry.
      • IBM supports
        • Handlers - single handler chain (I think HP has the 3?)
        • Lifecycle Management - Use the defaults for JAX-RS 1.0 (Singleton providers and lifecycle based on Application sub-class for Resources)
    • Configurability - ability to control different runtime features and properties.
        Modularity - ability to replace different implementation components .
        • HP Supports (section 3 in the HP runtime guide):
          • Properties file to control basic functionalities
          • Simple JAX-RS Application - Load Application from flat text file
          • Deployment Configuration - ability to extend the DeploymentConfiguration class that controls all aspects of runtime configuration e.g. Handler Chains.
        • IBM supports
          • Properties in servlet parameters to control functionality
          • XML descriptor for classes with ability to merge metadata with JAX-RS annotations
      • Resource and providers management - how the runtime manages resources & providers classes. Management  efficiency..
        • HP maintains (section 2.5 in the HP runtime guide):
          • Resources registry, for storing resource metadata in a sorted state.
          • Providers registry, for storing providers metadata in a hash.
        • IBM
          • REST metadata (RESTMetadata) for storing information about resource and provider classes
          • Metadata is stored similarly across both runtimes
      • Lifecycle management - how the runtime creates and manages resources & providers instances.
          Robustness - code transparency and simplicity
          • HP runtime uses Factory chain in order to create resources & providers instances. HP provides the following factories: DefaultOFFactory according to JAX-RS default behavior, ScopeOFFactory to support @Scope annotation, SpringOFFactory to delegate the creation to the Spring framework.
          • IBM runtime uses LifeCycleManagement instances to create resources & provider instances and do the entire injection chain.
      • JAX-RS Implementation
        • How much of JAX-RS API is implemented
          • HP - all JAX-RS spec and interfaces are implemented
          • IBM - all JAX-RS spec and interfaces are implemented (JavaDoc spec related items)
        • TCK coverage
          • HP has not been tested with TCK
          • IBM has tested with TCK in the past. Past TCK a while back but made some significant changes since then
        • Which version of the JAX-RS is implemented
          • HP implemented JAX-RS 1.0
          • IBM implemented JAX-RS 1.0
        •  Deployment environments - support servlet container, endpoints.
          • HP supports servlet container
          • IBM supports servlet container
      • Performance - how well the runtime performs vs. other implementations (jersey, resteasy, restlet).
        HP: Initial performance testing indicates that HP core engine performs better/equal to Jersey/Restlet/RestEasy runtimes.
      • Additional Features - extra functionality on top of JAX-RS specification
        • HP provides support for the following feature (for a full list, refer to HP runtime guide)
          • Atom/App/JSON /HTML/OpenSearch/CSV representations
          • Spring integration
          • WebDAV
          • Resources administration view
          • X-HTTP-Method-Override
          • Runtime registration - ability to register multiple JAX-RS Applications in a runtime
          • Auto-generation of APP service document
          • Automatic link generation
          • Resource continues search option
        • IBM uses third party libraries for providers
          • Similar capabilities for runtime registration
      • Maturity
        • HP 2.0 is based on previous versions that are being used by a dozen products.
        • IBM developed over the past few months
      • Client
        • HP 2.0 provides a Rest Client that uses JAX-RS concepts and as such shares a unified infrastructure with HP JAX-RS implementation.
        • IBM provides no Java based client currently (we do want to do this)
      • Runtime requirements
        • HP runtime supports Java 1.5 and higher.
        • IBM should only require Java 1.5.
      • Documentation
        • The following documentation is provided by HP
          • Feature List - detailed explanation about HP runtime architecture & additional features over JAX-RS implementation
          • Java docs
          • Maven build site that provides: change log, test coverage reports,
        - Supported Java versions and
          • 3-rd parties dependencies
        .
          • report, surefire reports and more
          • Examples - 18 examples divided into 4 categories: core JAX-RS, Additional features, full application and client.
        • Provided by IBM
          • Samples - Simple samples for various JAX-RS features. Some using Dojo, some using HTTP client as clients.
        Documentation
        • java docs
        • developer and user guide
        • samples