@csadilek

  • The smart one

@lincolnthree

  • The tall one

Our tasks for the day

  1. Why your job is hard.
  2. How Errai helps.
  3. Errai core concepts.
  4. Go mobile today.
  5. Summary.
  6. Questions.

1. Why Your Job is Hard

we feel you..

Large development teams make things hard

  • Who is working on what?
  • Skill-segregation causes duplicate work.
  • Code rots over time (other people mess it up.)

Large or complex code bases make things hard

  • Where is code actually used?
  • What can safely be changed?
  • Code rots over time (it just goes bad.)

Large customers make things hard

  • Requests big changes frequently
  • Want mobile NOW.
  • Want super-high performance NOW.

2. How Errai Helps

Use the best tools and standards

  • HTML5 and CSS for layout
  • Java for enterprise development
  • JavaScript for the nitty-gritty

Share code more effectively

  • Share data model and validation logic
  • Don't repeat yourself
  • Don't re-write other's

Bust that boilerplate!!!

  • Declarative, simple code
  • A little goes a long way
  • Less code == more time

Seriously, It's real JAVA!

  • Type-safe language
  • Refactoring
  • Code analysis
  • Extremely Testable
  • More people with the right skills

3. Errai Core Concepts

  • HTML5 Templating
  • Navigation and Bookmarking
  • Data Binding
  • Type-safe RPC and REST
  • Dependency Injection
  • Data-sync / offline mode

UI Templating

  • Use HTML5 / CSS templates directly from the designer or brand team.
<form onsubmit="false" data-field="app-template">
      <input type="text" data-field="name" placeholder="Full Name" type="text"/>
      <input type="email" data-field="email" placeholder="you@example.com" type="text" />
      <textarea data-field="complaint" rows="10" placeholder="What can we help you with?">
      <button type="button" class="btn" data-field="submit">Submit</button><br />
    </form>

Just attach it!

@Templated("Admin.html#app-template")
    public class Admin extends Composite

Navigation and Bookmarking

It's simple:

@Page
    @Templated("Admin.html#app-template")
    public class Admin extends Composite

And navigate:

@Inject
    private TransitionTo<Admin> adminPage;

Two-Way Data Binding

  • Remove boilerplate code and bring forms to life with a few simple annotations.
@Inject @Model private UserComplaint model;

And bind:

@Inject @Bound @DataField private TextBox name;
    @Inject @Bound @DataField private TextBox email;
    @Inject @Bound @DataField private TextArea complaint;
    @Inject @DataField private Button submit;

Type-safe RPC and REST

  • Simple and powerful to set up, leaving a foundation of confidence to refactor, test, and maintain.
@Inject
    private Caller<UserComplaintEndpoint> endpoint;

And with our DataBinder model:

endpoint.call().create(model);

Dependency Injection

  • The bedrock of object oriented programming: why not use it in the browser?
  • Use real-time client/server broadcast events and updates.

Offline mode and data sync

Stay connected, even when you can't.

Bring ideas together again, satisfy rising demands for collaboration.

@Inject private EntityManager em;
    @Inject private ClientSyncManager syncManager;

The BIG INSPIRATIONAL DEMO!

4. Go Mobile Today

Use native android, iphone, and blackberry features.

  • Camera
  • Location - GPS
  • Orientation
  • Accelerometer
  • Compass
  • And many more...

5. Summary

Our tasks for the day

  1. Your job is hard.
  2. Errai can help.
  3. Core concepts FTW.
  4. Go mobile today.

Questions

we know you have them...

we can tell...

there are always questions...

The end?

The beginning - of your adventure with Errai!

"An incredibly comprehensive UI framework solution."

"The most maintainable client-side architecture for large projects."

"Scalable, secure, and mobile ready."

"Provies a Java skillset alternative to JavaScript."

Additional Resources

Stay in the loop

Get involved: