Versions Compared

Key

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

...

  1. Architecture
    This section is aimed to discuss the architecture points refer to the architecture aspects like extensibility, modularity and configurability., 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
      Modularity - ability to replace different implementation components .
    • 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.
      • 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 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,
    - 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