Java
Financials requires the use of Java 8 or greater.
Struts
Financials currently uses Struts 1.x for the web tier.
Spring
Financials currently uses Spring 3.x.
JSP
Financials currently uses JSP with various tag libraries for the UI.
React
React is a javascript user interface framework developed by Facebook. It allows developers to build interactive components that run in the web browser. This framework has been used to build the components required for the Financials dashboard. It will be used for other components in the future.
React components are written using JSX, which is an extension to the Javascript language. JSX cannot be run natively by browsers so it must be converted at runtime or pre-compiled at build time. Financials uses a tool called Webpack to pre-compile JSX into base Javascript before the application is deployed. See the section named Webpack Information for information on this tool.
There are many resources for learning React available. Here are some that Financials developers have used:
JavaScript
Financials uses features from the ES6 syntax of Javascript. Not all widely-used browsers support ES6 yet, so Financials uses the Webpack tool to translate the Javascript into an older, more widely supported version. ES6 adds many new features that are helpful when writing Javascript, and we would advise on-prem teams to start learning about it.
For information about Javascript and ES6, see these links:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
http://tutorialzine.com/2015/05/15-awesome-and-free-javascript-books/
http://weblogs.asp.net/dwahlin/getting-started-with-es6-%E2%80%93-the-next-version-of-javascript
REST
REST stands for Representational State Transfer. It is an architectural style used when designing web services. React components running in the browser use REST services to interact with Financials. These REST services are written using Jax-RS.
See the section on REST Authentication for information on how clients are authenticated.
REST resources must be registered in Financials before they are available. REST resources are registered in kfs-core/src/main/java/org/kuali/kfs/sys/rest/SysApplication.java. Each module that has REST resources will have their own Application class. As an example, REST resources in the chart of accounts module, will be registered in kfs-core/src/main/java/org/kuali/kfs/coa/rest/CoaApplication.java. These will be created as needed.
Documentation on the REST APIs in Financials and other Kuali applications can be found here: Kuali Developers.
The following links have information about REST and Jax-RS:
https://en.wikipedia.org/wiki/Representational_state_transfer
https://en.wikipedia.org/wiki/Java_API_for_RESTful_Web_Services
http://crunchify.com/create-very-simple-jersey-rest-service-and-send-json-data-from-java-client/
Webpack
Webpack is a module written to run in the NodeJS runtime that takes files on the server and converts them (if needed) to browser supported Javascript and bundles them into a single static resource that can be used on your web front end. The work of converting these files is done once, before the application starts up so it does not need to be done for each web request. It also bundles multiple scripts into a single file and can optionally minimize this file to reduce the network overhead of the application.
NodeJS is a Javascript runtime engine. It allows Javascript to be run outside of a browser. Webpack is written in Javascript and packaged as a NodeJS module. NodeJS modules can be installed using npm, the Node Package Manager, which is a component of NodeJS.
More information on Webpack and NodeJS can be found at these links:
MongoDB
MongoDB is a document-store database. It allows users to work with data in document format instead of requiring it to be in relational format. The MongoDB database is currently being used in Financials to store institutional and user preference information. It will be used for other data in the future.
More information about MongoDB can be found at the following links: