Skip to main content

Reunification day for web user interfaces


14 months ago I was not feeling very comfortable with the 2000ish approach of web apps development: see post looking-for-web-framework  Namely having a backend web framework which spits HTML to the browser with a bit of javascript as icing sugar to give a bit of interactivity.
Using Flex on a large scale project gave me a very good impression:

  • Having a front end dedicated framework that you can test by itself without a backend was very productive
  • I find the idea of discussing the API between the backend and front-end very sound
  • With the nowadays processing power of end user devices, I like the idea of shifting the rendering processing load to the end user's terminal.

At the time, June 2012, I wanted to evaluate some options for web development but pure Javascript did not even came to my mind.

On a comparative article from JavaSPEKTRUM - Java Rich Client, Wicket was qualified as the technology that would allow to build a powerful user interface for the least complexity.
While trying to write a very simple form for a google app engine application using JPA 2.0 (see jpa-20-with-google-app-engine), wicket was configured for the web layer. The form was a simple text input and a submit button but with Wicket: it is not enough to write the HTML. You also need to create a Java class for your page otherwise your form does not exist.

That sad experience put me off of any web development in java for some time.

On a training for Distributed systems with SOA from Udi Dahan, Udi mentioned the use of Javascript framework to compose the UI from various sources of information. I had a look at Knockout and Waow... Things have moved on since that wicket day....

The reunification is here: the Microsoft world and the Unix world are together on the same web front end boat: web based UI using Javascript. This is definitely the way forward.

I will devote one or more posts about doing a simple form using a Javascript framework. I tried Knockout and liked it very much. It is very targeted and does what it says.

I later had a look to AngularJS and it is more complex to grasp than Knockout but it is all encompassing. You don't need to bring in extra utilities. It is really heroic.

Comments

Popular posts from this blog

LDAP server with your schema on your laptop

To choose is to live... Jacques Brel said "choisir c'est perdre": to choose is to loose. There would indeed be no choice to make if an option was definitely superior to the others. If you choose you will have to balance pros and cons and you will then have to loose. My great colleague, Achilleas Voutsas , reacted on less than a split second on that one. He straight away answered that: "To choose is to LIVE". He is right: if you have no choice, it is monotone. Choice is creativity. Choice is life. Going back to the theme. In 2005 Romain Eude and Gonzague Huet devised a solution allowing one to run an OpenLDAP server on a windows PC. That was brilliant and it helped tremendously the development of an LDAP based system. I could run an entire system on my laptop: database, application sever and OpenLDAP with 20000 entries. If you run Linux, OpenLDAP is no brainer choice to use. On Windows, the setup from that we used in 2005 is very easy but was not

Websites about using JPA 2.0 with Google app engine

Maven archetype to generate project (found by googling maven jpa 2 google app engine Archetype ): http://webapplicationdeveloper.blogspot.co.uk/2012/07/google-datastore-with-jpa-and-spring.html For Maven and Google App Engine, see also: http://code.google.com/p/maven-gae-plugin/ Google App engine documentation about JPA 2 support: https://developers.google.com/appengine/docs/java/datastore/jpa/overview-dn2 Google App engine documentation about the java datastore: https://developers.google.com/appengine/docs/java/gettingstarted/usingdatastore Another cool article but not to JPA or google app engine: https://code.google.com/p/guava-libraries/wiki/CachesExplained  

Recursivity and Observables: yes it is possible

When writing a loop using a paging API to fetch data for an Angular app, I felt so frustrated  that I was very close to going back to Promises. I came across lot of questions on the web but no convincing answers: some even proposing to subscribe to an Observable within the service implementation. However, I did not abandon  Observables to return using Promises thanks to this very informative comparison . From there I picked an  excellent article on reactive programming  with RxJava which gave me hope. So I kept on trying... Achieving both reactivity and recursivity without understanding the fundamentals of RxJs operators, was a struggle. After focussing on the use of the map and mergeMap operators, I managed a first implementation very similar to how I would write a solution to the same problem using Promises. To help me and others who have the same questions, I created a repository of angular code snippets . One is about  RxJs Recursive Observable . Expand operator to the