AUFaculty – Developer’s Guide
Akdeniz University Faculty Information System Development Project
ORÇUN DAYIBAŞ
JULY, 2014
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
Outline
 Development Environment
 GWT Framework
 General (Non-functional) Requirements
 UiBinder
 GWT-Bootstrap
 EventBus
 MyBatis
 Big Picture
 Project Life-cycle
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
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
Development Environment
JDK 1.7u55
Eclipse 4.3.2
Maven 3.2.1 (External)
m2e 1.4.0
Subversive SVN 1.1.3 (SVN Kit 1.6)
Google Plugin for Eclipse 3.5.1
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
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
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
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
UiBinder
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
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
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
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
Big Picture
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
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
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
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
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
Thank you…
AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014

AUFaculty: A Case Study for Responsive GWT Application Development

  • 1.
    AUFaculty – Developer’sGuide Akdeniz University Faculty Information System Development Project ORÇUN DAYIBAŞ JULY, 2014 AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
  • 2.
    Outline  Development Environment GWT Framework  General (Non-functional) Requirements  UiBinder  GWT-Bootstrap  EventBus  MyBatis  Big Picture  Project Life-cycle AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
  • 3.
    GWT Framework  Compilesyour 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
  • 4.
    Development Environment JDK 1.7u55 Eclipse4.3.2 Maven 3.2.1 (External) m2e 1.4.0 Subversive SVN 1.1.3 (SVN Kit 1.6) Google Plugin for Eclipse 3.5.1 AUFACULTY PROJECT: DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
  • 5.
    Development Environment  Thanksto 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 solutionto 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
  • 8.
    UiBinder AUFACULTY PROJECT: DEVELOPER’SGUIDE / ORÇUN DAYIBAŞ / JULY, 2014
  • 9.
    GWT-Bootstrap  Out ofthe 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 modularityby 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 ORMsolution 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
  • 12.
    Big Picture AUFACULTY PROJECT:DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014
  • 13.
    Project Life-cycle  Tracis 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  JenkinsCI 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  JavaDocis 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  Theproject 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
  • 17.
    Thank you… AUFACULTY PROJECT:DEVELOPER’S GUIDE / ORÇUN DAYIBAŞ / JULY, 2014