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.
      • 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.
      • 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.
      • 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.
  2. 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
  3. 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.
  4. 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
  5. Maturity
    • HP 2.0 is based on previous versions that are being used by a dozen products.
    • IBM developed over the past few months
  6. 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)
  7. Runtime requirements
    • HP runtime supports Java 1.5 and higher.
    • IBM should only require Java 1.5.
  8. 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, 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.
  • No labels