...
There are several technologies that we are currently utilizing in the portal. The following is a list of primers for each:
- Java!
- Google Web Toolkit
- For dependency injection, an example of Inversion of Control (IoC), we are using a combination of GIN and Guice.
- Guice - is the base IoC technology but it is only fully functional in Server-side. http://code.google.com/docreader/#p=google-guice&s=google-guice&t=Motivation
- Gin - provides basic IoC for GWT client-side code. http://code.google.com/p/google-gin/wiki/GinTutorial
- Guice Servlet - This is a sub-project of Guice that allows dependency inject into Servelets. http://code.google.com/p/google-guice/wiki/ServletModule
- Http REST calls are currently made using Spring's RestTemplate. http://blog.springsource.com/2009/03/27/rest-in-spring-3-resttemplate/
- To create API REST stub-services we are using a combination of two technologies:
- Jersey - provides a quick and easy method for transforming simple POJO's into RESTful web services using annotations. http://jersey.java.net/nonav/documentation/latest/user-guide.html
- Grizzly - The GrizzlyWebContainerFactory makes it simple to start a local web container. http://blog.msbbc.co.uk/2008/11/java-using-jersey-and-grizzly-to-create.html
- Mockito testing framework - mock dependent classes/interfaces to isolate test. Verify expected interactions (including async calls). http://site.mockito.org/
- Bootstrap UI framework (including a number of extras widgets), wrapped for GWT. https://gwtbootstrap3.github.io/gwtbootstrap3-demo/
- Markdown-it for - for markdown processing . https://github.com/markdown-it/markdown-it . Extended the library by adding a number of plugins, available on npm. The Node.js plugin that's used to orchestrate the processing is called markdown-it-synapse
- AWS js sdk - direct browser upload/download from s3-like storage.
- jquery, moment js, font-awesome, mathjax, plot.ly, twitter, nodeca/pica (browser image resize), SparkMD5 (browser side md5 calculation), nchart and jsplumb (Dave's charting libraries for provenance), Google (analytics, search, closure-library, single sign on).
Cross-browser testing
We have a shared account to use BrowserStack to test the website for cross browser compatibility issues.
Alternatively, for testing IE on Mac I use VirtualBox with an image provided by Microsoft from modern.IE. For this to work, in your Windows VM, you will need to map an ip to outer in order to access your local machine (note, Windows UAC requires you to do this as an admin).
...