Technical Details
Designed for performance, reliability, flexibility & efficient customization
To deliver enterprise-class ecommerce and low TCO, Elastic Path's underlying components are chosen for flexibility, performance (for their intended task), reliability and scalability. The following explains why the major components were chosen and how they are used.
Velocity, HTML and CSS are used for online storefront templates.
Velocity is an open-source Java templating engine that provides a simple yet powerful language to reference objects defined in Java code.
CSS (Cascading Style Sheets) was chosen because it offers a time-saving way to separate content from presentation layout. In addition CSS's table-less layouts allow you to maximize search engine optimization (by placing main content near the top of the page) without sacrificing full control over layout for maximum visual appeal.
AJAX (Asynchronous JavaScript and XML)
AJAX is used where appropriate to enhance the shopping experience by improving interaction and enabling update of information on a page without reloading the page.
Spring Container Framework
The Spring container framework is the major underlying architectural framework in Elastic Path and is responsible for the majority of system-level services including object life cycle management, caching, transactions, security and job scheduling.
Spring is used because it allows Elastic Path to be "coded to interfaces" rather than to classes. This makes it possible to change the implementation of any class without changing the code that invokes that class provided it adheres to the same interface. This loose coupling provides a tremendous level of flexibility and simplicity to application developers.
Spring MVC Framework
The Spring MVC (model-view-controller) framework is used to logically separate the presentation layer from the underlying implementation. Spring MVC was chosen because it makes every piece of logic and functionality highly configurable and integrates easily with most popular web view technologies including Velocity.
Eclipse Rich Client Platform (RCP)
Eclipse Rich Client Platform (RCP) was chosen for our Commerce Manager interface because it combines the rich interface of a desktop application with the power of web connectivity. Furthermore, it provides powerful customization capabilities, native look and feel across platforms and extensive GUI libraries. Finally, as part of Eclipse, the most widely used Java environment, its powerful development tools and broad familiarity enable developers working on the platform to become highly productive quickly.
ACEGI Security System
The ACEGI Security System was chosen because it provides comprehensive authentication, authorization, instance-based access control, channel security and human user detection in a package designed specifically for enterprise applications built on Spring.
Solr Enterprise Search Server (based on Lucene)
Solr is used for all in-site and Commerce Manager search functions. Solr was chosen for its advanced full-text search capabilities and because it is optimized for high-volume web traffic and high scalability.
Sun's Core Web Services technologies (JAX-WS & JAXB)
Sun's Core Web Services technologies (JAX-WS & JAXB) are used for standards-based web services. The JAX-WS is the latest Java standard for XML web services and is easier to understand and use than previous frameworks because it separates the web services definition from the data-binding components. JAXB is used within JAX-WS to convert between XML and Java.
Apache OpenJPA
Apache OpenJPA (Java Persistence Architecture) is a standards-based persistence layer chosen for its database independence and alignment with the major J2EE vendors. It also provides more opportunities for performance tuning, including fetch plans that permit specification of what should be loaded before executing a query and better mapping capabilities, including inline mapping within the domain object and named queries rather than string constants.
Apache Torque
The Apache Torque library is used for database independence. A Java-based object-relational mapper, Torque provides access to relational database information through Java objects. Torque was chosen because, unlike most such mappers, Torque can handle data in addition to the schema.

