THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
- Architecture
These points refer to the architecture aspects like extensibility, modularity, configurability and robustness.- General
- HP - for detailed information regarding HP runtime architecture refer to section 2 in the HP runtime guide: https://svn.apache.org/repos/asf/incubator/wink/contrib/hp-symphony/src/doc/DeveloperGuide/Symphony_SDK_2.0_Features_List.pdf
- 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)
- HP supports
- 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
- HP Supports (section 3 in the HP runtime guide):
- 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
- HP maintains (section 2.5 in the HP runtime guide):
- 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.
- General
- 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
- How much of JAX-RS API is implemented
- 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
- HP provides support for the following feature (for a full list, refer to HP runtime guide)
- 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, 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.
- The following documentation is provided by HP