State the design goals Describe the architecture One of the good practices of software development is to start with a set of basic requirements and then express these requirements more formally through a set the interfaces. So let us begin by listing the requirements for OpenTrader sample. * a trader can offer to buy or sell stocks at a certain price * an offer to sell(buy) a stock can be matched with matching offer(s) to buy(sell) * a pair of matching buy/sell offer can be committed as a trade Besides the functional requirements, let us define some non-functional goals * the trader will access the service from a browser * the service will use a relational database to record the committed trades and then some purely technical goals * the browser-based client will be implemented using Google Web Toolkit * the service will be implemented using Java Persistence API GWT takes a position that is a significantly unique among the multitude of frameworks available to build a browser based client. GWT framework is based on several key concepts: * an asynchronous RPC protocol for communication between web client and server. Such asynchronous RPC is popularized by AJAX (Asynchronous JavaScript and XML) since last several years. * a cross-compiler that converts Java to JavaScript. This is the most critical component in the framework as it allows the client be written completely in Java. Besides adding a comfort layer for Java developers, the cross-compiler solves one of the most complex issue of browser based clients namely cross-browser compatibility. The cross-compiler generates separate JavaScript targeted to prominent browsers and the framework knows to activate the appropriate JavaScript based on the particular browser a client is using. * a library of interactive visual widgets such as dialog boxes, combo-boxes, tables etc. This Java based library realizes the widget as the elements of a Document Object Model (DOM) for a browser to render them in HTML. For example, an instance of com.google.gwt.user.client.ui.FlexTable urns into a