Monday, March 11, 2013

Conf: JDC 2013 Conference & Session Report


Java Developer Conference (JDC) Egypt (follow at @egjdc) is organized every year by Egypt JUG. It is the largest java conference covering Middle East & Africa regions. And it is an international 2 days conference; there are many attendees and speakers from different countries.

There were over 600+ attendees, 40 sessions and 25 speakers, from many countries (session agenda), at the first day there was a redhat and JDC keynote, and at the second day a Nokia keynote discussing the Asha platform future, and there was Nokia phones for giveaways, I didn't have anything from this phones ;(.

It was amazing 2 days. It is the first time to spoke here (JDC2013 and hope in JDC2014); I have met all of the speakers and we have exchanged our info. Thanks JDC2013 and EGJUG for the great efforts and awesome organization of the conference.

I was representing MoroccoJUG in this JDC as I am member of this amazing JUG, Thanks Badr ELHOUARI.

Thanks for JCP members, Arun Gupta, Martijn Verburg and LJC JUG especially Mani Sarker for support & material.

Nokia was the exclusive platinum sponsor, with several Gold (Microsoft "for the first time in JDC", redhat, ITS, and ITWORKS), while Oracle was a silver sponsor, and other media sponsors.


The conference session was mainly focusing on Mobile development specially Nokia Asha platform and development "you know platinum sponsor ;)" and Android, then performance, optimizations techniques, redhat technologies and JEE7 technologies by Me and Mikeal Keith (Oracle Canada).

The Java Source, web site
Insider News from the Java Team at Oracle!, announce for the session also at the following link.

Session contents:

As I am a JCP member and part of Adotp-a-JSR program, I preferred first to talk about the community great efforts that was done and still in progress developing such amazing platform, and the final stage of all JSRs. Also I have talked to EGJUG leaders that I can take the lead of the JUG to participate in Adotp-a-JSR program.


In my session (one and half hour) " with over 45+ attendees, JEE7.next()Reveals the power of JSON-P, Websocket APIs & HTML5 a hack session", I have begun my talk with introduction of the JEE7 new JSRs, pruned ones, JSRs that has major releases from 1.0 to 2.0 and the others that has minor updates, with introduction to the main aim of JEE7 features for developers and community, and how it supports the time-to-market by being a productive++ platform, Followed by introduction to Adopt-a-JSR program and how JEE7 development influenced by this transparent program and encourage the attendees to participate in the program.

(See Arun Gupta post "Transparency and Community Participation in Java EE 7")

There was a question here and it was:
Is JEE7 targeting the cloud computing?
Answer was:
JEE7 main aim is the standardization and modularity, and since the cloud computing till now doesn't has a standard way to develop a cloud based applications, we preferred to differ it to JEE8 and beyond.

After that, I have begun the talk by Why Websockets? Question, to make the participation spicier, after some interactions, I have explained HTTP protocol then TCP protocol.

For clarity I have introduced an example with 3 use cases for simple trading ticker using HTTP with calculation of bandwidth overhead,and the same use cases with Websockets, I heard Wooooow from their mouths when they saw that the 665MB per second is reduced to 1.5MB per second for 100,000 users, then I have realized that they understand, at this point I have found that navigation to the next points will be more interesting.

The next points was explaining how JEE7 implements the Websocket specifications with Tyrus API touring (server & client) based on the final specification especially the annotations that was refactored, on the other hand I have explored the HTML5 APIs also. After talking about the data exchange types especially JSON and also how it is supported in JEE7. While I am touring the JSON API with examples there are 3 questions raised here:

  1. Question was:
    While there are many java implementations, so why java is too late introducing such an API?
    Answer was:
    As I have said before Java is seeking for standardization, therefore there is a need to allow all developer to has one standard API to work with JSON via JEE and SE platforms.

  2. Question was:
    We need to create the JSON data manually, while in .Net and other implementations I just passed the object and the API serialize it to JSON output?
    Answer was:
    This feature is addressed in the next release of the JSON API by annotation to bind/serialize the JSON input/output respectively, and it will work like its peer JAXB one that serialization and binding the XML.

  3. Question was:
    What if, I have another convenient/fast parser to use and the container supports the JSON-P API only?
    Answer was:
    Indeed you can use your parser as there is no limitation on the usage from JEE7 container, but to be modular the API support the SPI implementation, and also you can configure the API when creating the parsers and generators through its factories.

Testing:
The next point was how to unit test the Websocket alongside JSON-P API with code examples (and the tests shows a GREEN BARs thanks God).

Project:
Finally we went through the final project RTRC (Real Time Runners Champion), that demonstrate the Websockets in action as backend, while the HTML5 as frontend client, and data exchanged was in JSON format.

The project consists of Login screen connected to backend Websocket, and when successful authentication I have registered the runner in the champion, then in his/her tracer screen I have used Geolocation to get runner longitude, latitude and its timestamp and send these information to the server with his/her name to podcasts to other runners in real time and tag all location on runner map to see the progress of all other runners, with function that calculate the distance from current runner location from finish point location.

It was a maven based application, also I have used Netbeans early access version that support JEE7 and Websocket API.

Download project source code from here.

Recorded Material:
The session was recorded and once it is uploaded I will update with podcast location.

Presentation:



Some comments:

Comments link 1

Comments link 2

Some pictures from event:



Many thanks to Ahmed Ali, Ahmed hashem and the rest of the JUG amazing team, for taking care of every detail and providing a high level of support.

Special Thanks to Graphics & social media Guys for such a great advertising.