Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Gwt.create - Presentation
1. 1
A CROSS-DEVICE WEB FOCUSED
FRAMEWORK
THIAGO R. BUSTAMANTE
www.cruxframework.org
2. First… Who am I?
2
Thiago da Rosa de Bustamante
Java Architect & Crux founder.
thiago.bustamante@triggolabs.com
Master's Degree in Computer Science, UFMG – BR
BS in Computer Science, UFV - BR
5. Adaptive Components
5
Single Contract (Write only one code)
Different screen sizes (Small or Large)
Different interaction
model (Touch,
Mouse, Arrows)
7. Lots of other features
7
Dependency Injection on Client
Local
Database
REST
Offline
Support
Value Binding
Animations
(CSS3 / JS)
HTML5 APIs
Support
Open Social Support
Bootstrap 2.0 / 3.0
Integration
Apache Cordova
Integration
My name
I am Brazilian
Thanks organization
Start with overview and show a demo
Open Source, over GWT, develop Cross device apps
Created to meet domestic needs
We would like now to show it to GWT community. Can be helpful to others and help us to improve our tool
Crux proven to be an excellent tool for large enterprise apps development.
Example. Today, the main software, responsible for all custumer service, of largest telephone company in Brazil . 1.5 milion lines of code. 2 thousand screens
A lot of reasons to use crux
1) prepared to assist the creation of applications that can adapt to different types of devices, such as smartphones, tablets, desktops or televisions
2) Provides a very simple and fast development model, making the creation and maintenance of software a more productive task
3) Provides a powerfull and extensive API to support the coding of the client layer
To adapt to the type of device, does not means that we must ONLY to be responsive
Responsve design is NOT ENOUGH. It is necessary to handle the differences in the interaction model of each kind of device
The user experience using a mouse is different from experience using fingers or a remote control
Crux provides Adaptive widgets. They can present themselves differently for each type of device
Considering SCREEN SIZE and the TYPE OF INPUT supported by the device
A compilation property maps the types of devices that we can handle. Different permutations are generated for each type of device
Simple development model based on MVC design pattern.
View layer consists of SCREENS. Each one created declaratively in a separated XHTML file.
Each screen may be associated with one or more CONTROLLER classes. POJOs containing handlers for events fired on the screen.
Crux is a PAGE ORIENTED framework, while still creates SINGLE PAGE APPLICATION.
We have LOGICAL pages, which, PHYSICALLY, are loaded into the SAME DOCUMENT when they become necessary, bringing with them all the associated controllers.
The model layer is composed by business classes located on the client side or on the server side, and can make use of our powerfull APIs
Provides several APIs to assist the development, such as DEPENDENCY INJECTION on client side,
Local DATABASE support
REST communication
Automatic VALUE BINDING between view files and controllers (SIMILAR TO THAT PROVIDED BY ANGULARJS)
Now I want to show you a simple demonstration of crux usage.
Simple application that shows a contact list here and allow us to add / remove / edit contacts into this list.
The application has only 2 SCREENS and some operations on the server side that provides these data to the client.
We can see HOW THE VIEW LAYER of the app was coded.
We have TWO SEPARATED XML files, one for each screen.
This is the FIRST ONE, that represents the main screen, containing the contact list.
See how I18N messages can be REFERED inside VIEW files.
Se how the CONTROLLER’S METHODS can be associated with widgets events
See how VALUE BINDING is EASY with crux
This file represents the second view of the app (Dialog).
We have another example of Crux VALUE BINDING feature
This is the controller used by the Dialog Screen.
We have an EVENT HANDLER for the view loading event.
See how to access, from the CONTROLLER layer, the dataObjects declared on the VIEW layer.
Here I am transferring information from the Contact dataObject to the widgets on the Screen
Then I am reading this dataObject from the screen
See a simple mapping for a dataObject
Simple POJO, that just need to use the DataObject ANNOTATION
Example of how to create a REST service using Crux, at the server side.
We are defining two operations here, One to return the number of contacts and other to retrieve a list of contacts
Note that we have the RestService Annotation on this class that gives to it an alias .
See how to define a proxy to automatically call the operations that we defined on our contactsService.
Note that we point to the service that will be called through TargetRestService annotation.
We just need to inform there the alias of the service we want to call.
We can call the service operations through our proxy in a very similar way to GWT RPC feature
With a better Performance, because of the cache policy we can use now.
It is possible to see a simple example of our DEPENDENCY INJECTION feature here