This document provides a developer's guide for the AUFaculty project, which aims to develop an information system for Akdeniz University's faculty. It outlines the development environment and frameworks used, including GWT, UiBinder, GWT-Bootstrap, EventBus and MyBatis. It describes the modular architecture, requirements for responsiveness on mobile and desktop, and emphasis on good user experience. It also covers the project management tools like Trac and Jenkins that are used for version control, continuous integration, and notifications.
3. GWT Framework
Compiles your Java UI codes into optimized JavaScript ones.
Resulting code is HTML+JavaScript+CSS. Thus, very easy to deploy.
GUI components are very close to Java Swing specification; smooth
learning curve.
Ultimate goal: integrating Java developers from diverse areas to
web application development domain.
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
5. Development Environment
Thanks to Maven; developers are free to use different Operating Systems.
1: Deployment scripts (Win: deploy.bat, Linux: deploy.sh)
2: Maven definition of the project (SVN repository does not include Eclipse/NetBeans project;
they are local and private for each developers).
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
6. General (Non-functional) Requirements
GWT Application (The executives’ decision).
Software architecture shall be very modular (The development
team is subject to heavily change).
DBMS is MS SQL Server (Huge legacy data and hard to migrate).
Mobile and Desktop uses are equality important.
Good UX (User Experience) design is very important (Diverse user
groups).
DB schema is subject to change.
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
7. UiBinder
A solution to support modularity by separating UI and Business
Logic codes.
Almost de facto for modern GWT applications.
Each View consists of two parts:
AbcView.ui.xml: Declarative user interface code.
AbcView.java: Business logic of concerning user interface.
More info:
http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
9. GWT-Bootstrap
Out of the box GWT widgets lack of responsive UX (Mobile
performance of these widgets are still in question).
Twitter Bootstrap is a de facto solution in responsive web
application development.
GWT-Bootstrap wraps the twitter bootstrap components as GWT
widgets.
Additional namespaces to UiBinder: b, bb.
More info: http://gwtbootstrap.github.io/
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
10. EventBus
Supports modularity by decreasing boilerplate codes (also makes
easier inter-object communication in the software).
Based on Google Guava EventBus framework.
LOC and complexity decrease dramatically.
Sniffing (to debug) object interactions is easy.
EventBus in GWT Sample:
http://www.youtube.com/watch?v=2939gdrNymg
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
11. MyBatis
An ORM solution to abstract DB layer from the other layers of
application.
Based on iBatis (the developers are also same).
Unlike the other common ORM solutions, MyBatis maps the
methods to queries.
More info: https://code.google.com/p/mybatis/
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
13. Project Life-cycle
Trac is configured and deployed as a project management tool (SVN
repo is integrated).
Pilot project is AUFaculty but it’s ready to be used in other projects
too.
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
14. Project Life-cycle
Jenkins CI server is configured and deployed as a build server.
Defect/task management, release planning, etc…
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
15. Project Life-cycle
JavaDoc is also generated after each built and resulting documents
are at the disposal of the development team.
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
16. Project Life-cycle
The project is built at 23:00
every day.
If it’s successful, it is also
deployed to the application
server.
Lets the developers know any
broken build with a
notification e-mail.
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014