+++++++++++++++++++++++++++++
|     QuickServer v 2.1.0   |
|    System  Requirements   |
+++++++++++++++++++++++++++++

For QuickServer v 2.0.0 and above
---------------------
 * Minimum JVM     : v1.7
 * Recommended JVM : Latest stable jvm version like 1.8
 * Jakarta Commons Components {Digester, Pool} 
	This product includes software developed by the Apache Software 
	Foundation  (http://www.apache.org/). Jar files are shipped with
	library along with BeanUtils, Collections, Logging.
	[http://jakarta.apache.org/commons/components.html]
	Apache Software License is included in the file 
	"apache_license.txt" for your convenience.
 * JUnit
	A framework to write repeatable tests. This library is only
	needed if are planning to test and new test cases to QuickServer.
