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 comparison points that can be addressed during the process of runtimes examination.

  1. Architecture
    These points refer to the architecture characteristics 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