Rejoice people, it’s March, time for Devoxx France 2013! Here are some notes I took during the event.
Java EE 7 hands-on lab by David Delabasse & Laurent Ruaud
An hands-on lab by Oracle for good old-fashioned developers that want to check some Java EE 7 features by themselves.
This one, you can do it at home. Just go to this page and follow instructions. Note you will need at least Glassfish 4 beta 80 and the latest NetBeans (7.3).
You’d better reserve a day if you want to go beyond copy-paste and really read and understand what you’re doing. Besides, you have to some JSF knowledge if anything goes wrong (or have a guru on call).
Angular JS by Thierry Chatel
The speaker comes from a Java developer background. He has used Swing in the past and since then, he has searched for binding features: a way to automate data exchange between model and views. Two years ago, he found AngularJS.
AngularJS is a JavaScript framework, comprised of more than +40 kloc and weights 77 kb minified.
The first stable version was released one year ago, codenamed temporal-domination
.
The application developed by Google with AngularJS is Doubleclick for publishers.
Other examples include OVH’s future management console and Youtube application on PS3.
Its motto is:
HTML enhanced for web apps
What does HTML enhanced means? Is it HTML6? The problem is HTML has never been designed to create applications: it is only to display documents and link between them. Most of the time, one-way binding between Model & Template is achieved to create a view. Misko Hevery (AngularJS founder) point of view is instead of trying to go around this limitation, we’d better add this feature to HTML.
So, AngularJS philosophy is to compile the View from the Template, and then 2-way bind between View & Model. AngularJS use is easy as pie:
Your name: <input type="text" ng-model="me">
Hello
AngularJS is a JavaScript framework, that free developers from coding too manyJavaScript lines.
The framework uses simple concepts:
- watches around expressions (properties, functions, etc.)
- dirty checking on events (keyboard, HTTP request, etc.)
Watches are re-evaluated on each dirty checks.
This means expressions have to be simple (i.e. computation results instead of the computations themselves).
The framework is designed to handle up to 2000 simple watches.
Keep note that standards (as well as user agents) are evolving and that ECMAScript next version will provide Object.observer()
to handle x50 the actual number of watches.
An AngularJS app is as simple as:
<div ng-app="myapp"></div>
This let us have as many applications as needed on the same page. AngularJS is able to create single-page applications, with browser navigation (bookmarks, next, previous) automatically handled. There’s no such thing like global state.
AngularJS also provides core concepts like modules, services and dependency injection. There’s no need to inherit from specific classes or interfaces: any object is available for any role. As a consequence, code is easily unit-testable, the preferred tool to do this is Karma (ex-Testacular). For end-to-end scenarii testing, the same dedicated tool is also available, based on the framework and plays tests in defined browsers. In conclusion, AngularJS is not only a framework but also a complete platform with the right level of abstraction, so that developed code is purely business.
There are no AngularJS UI components, but many are provided by third-party like AngularUI, AngularStrap, etc.
AngularJS is extremely structuring, it is an opinionated framework. You have to code the AngularJS way. A tutorial is readily available to let you do that. Short videos dedicated to a single focused theme are available online.
Wow, this the second talk I attend about AngularJS and it looks extremely good! My only complaints are that is follows the trend of pure client-side frameworks and that is not designed for mobile.
Gradle, 30 minutes to change all by Sébastien Cogneau
In essence, Gradle is a Groovy DSL to automate build. It is extensible through Java & Groovy plugins. Gradle is based on existing principles: it let you reuse Ant tasks, it reuses Maven convention and is compatible with both Ivy & Maven repositories.
A typical gradle build file looks like this:
apply plugin: 'jetty'
version = '1.0.0'
repositories {
mavenCentral()
}
configuration {
codeCoverage
}
sonarRunner {
sonarProperties {
...
}
}
dependencies {
compile: 'org.hibernate:hibernate-core:3.3.1.GA'
codeCoverage: 'org.jacoco....'
}
test {
jvmArgs '...'
}
task wrapper(type:Wrapper) {
gradleVersion = '1.5-rc3'
}
task hello(type:Exec) {
description 'Devoxx 2013 task'
group 'devoxx'
dependsOn wrapper
executable 'echo'
args 'Do you have question'
}
Adding plugins add tasks to the available build.
For example, by adding jetty
, we get jettyStart
.
Moreover, plugins have dependencies so you also have tasks from dependent plugins.
Gradle can be integrated with Jenkins, as there is an available Gradle plugin. There are two available options to run Gradle build on Jenkins:
- either you install Gradle and configure its installation on Jenkins. From this point, you can configure your build to use this specific install
- or you generate a Gradle wrapper and only configure your build to use this wrapper. There’s no need to install Gradle at all in this case
Gradle power let also add custom tasks, such as the aforementioned hello
task.
The speaker tells us he is using Gradle because it is so flexible. But that’s exactly the reason I’m more than reluctant to adopt it: I’ve been building with Ant for ages, then came to Maven. Now, I’m forced to use Ant again and it takes so much time to understand a build file compared to a Maven POM.
Space chatons, bleeding-edge HTML5 by Phillipe Antoine & Pierre Gayvallet
This presentation demoed new features brought by HTML5.
It was too quick to assimilate anything, but demos were really awesome. In particular, one of them used three.js, a 3D rendering library that you should really have a look into. When I think it took raytracing to achieve this 15 years ago..
Vaadin & GWT 2013 Paris Meetup
Key points (because at this time, I was more than a little tired):
- My presentation on FieldGroup and Converters is available on Slideshare
- Vaadin versions are supported for 5 years each. Vaadin 6 support will end in 2014
- May will see the release of a headless of Vaadin TestBench. Good for automated tests!
- This Friday, Vaadin 7.1 will be out with server push
- Remember that Vaadin Ltd also offers Commercial Support (and it comes with a JRebel license!)