Architecture of View providers driven applications framework
Every big application framework has its design principle and practices. Also vpda follows base OOP good practices and patterns. This includes design patterns,loose coupling,modularity,test driven. There are also e.g no package cyclic dependencies. This means application can be later more modularized, new features added without breaking compatibility.
Design principles
VPDA is pretty big application framework consisting from several modules. There are server,client and common modules. Application has one application entry point and each module has its own module entry point. Module entry point declares dependency on other modules and initialize module. There are no cyclic package dependencies , PicoContainer
is used as inversion control container.
All the code is well junit tested, also due to loose coupling between components and modules.
Java is strong type check language and we also try to let compiler as much type check as possible. So by default all code that can be in java is expressed in java only with compiler type checking.
Later we will provide some groovy builders for view providers implementations, now all the code is only in java language.
Modules
- Common Modules
Common modules provides basic framework intrastructure like modules,communications,utils,user session and abstraction for client view of server
- vpda-common-util - Common utilities
- vpda-common-core - Module infrastructure and abstract communication
- vpda-common-clientServerCore - Client and server communication interfaces
- vpda-common-clientServerViewProvider - Common comunication interfaces related to view providers
- vpda-common-abstractClientCore - Abstraction of client - Frames,WindowManager,Client instance. This is abstract client and also server view of concrete client
- vpda-common-abstractClientViewProvider - Abstract implementation of client ui providers not related to any client platform
- Client modules
Client modules provide concrete implementation for client platform. Now swing and web with wingS are implemented. Here are classes only related to concrete platform, common client code is located in common modules
- vpda-client-swing-core - Swing implementation for client platform
- vpda-client-swing-viewProvider - Swing implementation for client UI view providers
- vpda-client-wings-core - Wings web implementation for client platform
- vpda-client-wings-viewProvider - Wings web implementation for client UI view providers
- Server modules
Server modules provides basic server services and user management. This includes data modeling,persistence,implementation of view providers,connectors
- vpda-server-persistence - Persistence abstraction for server. Implemntation could be Spring modules or JEE 5.0
- vpda-server-core - Core server module. This includes server user management,light http server,basic menu for client
- vpda-server-dataModel - Data modeling using java classes. This way we can create sql scripts from java classes and use same classes for view providers implementations
- vpda-server-viewProvider - Implementation of view providers - lists,details,processing
- vpda-server-connector - Connector module : RMI for client,HTTP for client,Webstart for client,JMX for management
Deployment and packaging
Swing client is packaged as typical desktop application or webstart packaging. Client communicates with server using RMI or Http protocol. Web client is packaged as war module. Now communicates with server with RMI protocol or when packaged in EAR like web module.
Server is provided as plain java console application or JEE5.0 EAR.
Develoment environment
These tools and evironment infrastructure are used during framework development :
- JDK 6.0 is required for compile and runtime
- Maven apache building framework. U need maven 2.0.8. If u want to build framework from source, just follow maven common scenario (mvn clean install). If needed, for each release there will be concrete building instructions. There will be also maven repository for vpda releases.
- Subversion is used as SCM
- Eclipse IDE is prefered java IDE. Also because of using maven, there can be any java IDE used, all concrete IDE descriptors can be generated from maven poms
- Hudson is used as Continuos integration system
- Any java 6 os platform is supported, Linux OS is preferred
Technologies
VPDA is pure java framework. These java server technologies are used in project : HTTP, RMI, JDBC, JPA, JMX.
These libraries are used in project :
These libraries are used to support framework testing
- JDepend
- To check there are no cyclic package dependencies in project
- H2 database
- H2 - Great java database very suitable for testing
- JUnit
- Java most popular junit testing harness
- EasyMock
- Mock objects framework