Saturday, October 19, 2013

JavaOne 2013 Rocks, and Java back to Glory days this year (Trip report)

Introduction

Yeah late report, but I am back since fourth of October, and having a strong workload. I am working on Enterprise Hybrid mobile application for almost main four different mobile platforms (iOS, Android, Windows 8, BlackBerry) that will serve the Egyptians all over the country, because it is part of our National project for "Fuel subsidy management System" applications, This mobile web application is developed and supported by JavaEE 7 technologies and hosted on Glassfish v4. This application should release by the end of November ISA.

However, I can not miss the opportunity to express my exciting and appreciation for this year JavaOne 2013, therefore I needed to catch up with all the things happened with me, which had been on hold for the whole conference days. It was the busiest time of the year for me.

This is the fourth time attending and the second time speaking at JavaOne 2013. This year the conference sessions, events, demos, sponsors, people, speakers, JCP was rocking out, It is suffice to say that this conference has been the most diverse of the Oracle JavaOne conference that I have ever attended.

The following are some pictures I have taken from airplane to North pole of the earth and my Lovely San Francisco:


Of course, the most important tracks for me were Java EE, Java SE, mobile, and embedded, because of my JCP JSRs participations and Adopt-A-JSR program participation that I manages under MoroccoJUG and EGJUG.

I delved into all JCP sessions and events, and a few lot of java SE 8 session incredibly relevant to my adopt-OpenJDK work and future use.

Here is some Socialization with great people I have met at JavaOne and I am so happy to see them and the community people there, in no particular order and as I remember (Sorry if I forgot anyone):

Patrick Curran

Gil Tene

Heather VanCura

Sander Mak

Naoko Hamamoto

Nicole Scott

Markus Eisele

Ben Evans

Dan Sline

Helio Frota

Tori Wieldt

Chris Richardson

Talip Ozturk

Olena Syrota

Stephan Janssen

Mark Reinhold

Richard Warburton

Brian Goetz

Sander Mark

James Ward

Geertjan Wielenga

Yara Senger

Johan Vos

John Yeary

Martijn Verburg

Sharat Chander

Venkat Subramaniam

Brian Oliver

Simon Ritter

Regina Better

Julien Ponge

Adam Bien

Justin Lee

Bruno Souza

Arun Gupta

Ed Burns

Antonio Goncalves

Badr Elhouari

Reza Rahman

Nicolas De Loof

Fabio Velloso

Mike kith

Bruno Borges

Stephen Chin

Kevin Farnham

Sharat Chander

Otávio Santana

and people++ :)

This is a very brief trip report for a complete week of JavaOne 2013 in San Francisco.


JavaOne Keynote

I would like to begin by talking about the JavaOne keynote that was held on Sunday morning and took place back at the familiar Moscone Center for the first time since 2009! For 3 hours long. Nevertheless, this is the most amazing, exciting, well managed and knowledgeable keynote I have ever attended for JavaOne.

The keynote was divided into three parts; the first part was the "Oracle java strategy and the future of Java keynote", the second was "Java and its related ecosystems technical keynote", while the third was " IBM Keynote: Java Flies in Blue Skies and Open Clouds".

The second part was very cheerful with a lot of code, demos, and the owners of the technology.

The third part was very important to me because of cloud, and to see IBM cloud strategy, as my book titled "Getting started with Oracle public Cloud" for Packt publishing, was published during the conference days and it regards how to start and develop on Oracle public cloud.

The Keynote deserves to be watched (do not miss it out, a lot of information you will gain (IoT (internet of Things), Embedded, Raspberry Pi, JavaSE 8, 9, JavaEE 7, 8 and beyond), to re-watch it again please visit this link (JavaOne 2013 keynote).



JCP (Java Community Process)

As JCP member, it was very important to me attending and contributing in all JCP related sessions and events and socialize with community members. In addition, because of my activities in leading the participation of Egyptian developer's community for all upcoming JCP, and any java related programs under EGJUG.

I almost attended the most of the JCP sessions and events, but out of luck because I missed out the Community keynote on Thursday 26/10/2013.

The JCP Party: 11 Annual award winning event

It is a year since becoming a JCP member, and works under MoroccoJUG umbrella for managing adopt-a-JSR program activities.

But I was surprised to got two nominations from the community this year:
  • JCP Member/Participant of the Year

    Mohamed Tamen
    Mohamed is one of the most popular leaders in software industry in Egypt. He is very professional due to his long experience and loyalty in his work, with 11 years of experience in Java industry. As a JCP Member, he worked on many JSRs especially the Java EE 7 JSRs, and is a member of the Adopt-A-JSR, Adopt OpenJDK, and FishCAT programs. You can view his blog ,which is helping a lot of people around the world with news of Java EE 7.

  • Outstanding Adopt-a-JSR Participant

    MoroccoJUG and EGJUG, Mohamed Tamen, Boutaounte Faissal
    For adopting JSR 339, JAX-RS 2.0 specification, along with many other JSRs. One JIRA issue filed by Morocco JUG on JSR 339 was classified as a "release-stopper". A quick JIRA search using the "adoptajsr" tag shows that most of the JIRA issues have been created by MoroccoJUG members. Several presentations and source code have been organized by these groups. Mohamed presented sessions about the upcoming technologies to widen the range of users in the future, especially Java EE 7 JSRs and spreading of community progress and contributions that make us encouraged to participate. Mohamed sent a clear message that Africa is here and is full of talented people who are willing to take it to the next level. Mohamed was responsible for translating an Arabic Adopt-a-JSR web page to allow more Arabs to participate.

The event was held in Hilton San Francisco, Cityscape at Monday evening. During JCP 11 award winning party, they announce the winner's names, and while I was eating, I heard my name that I won the "11 annual award winning for Outstanding Adopt-a-JSR Participant of the year." it was another surprise for me. vist link for winners and their nominations.

Here are some JCP interview questions and my answer:
  1. What can others learn from your experiences?

    There is no limit to knowledge. You have to keep learning as long as you can breathe. Also, accept your circumstances and do not waste your precious time trying to find someone to blame.

    Academic studies help making you think in a better way and gaining a wider knowledge base, so, do not study to pass for the certificate, study to learn.

    I have worked in development since late of 2001 with many technologies and programming languages, especially Java and its related ecosystems, which is my best choice, when I coding with Java, I feel coding the Architecture….

    I worked with Java EE, SE, JavaCard, and ME for more than 11 years. While currently, I am holding two positions one as a Business Solutions Systems Architect & design supervisor and Java Team leader, at big financial services company in Egypt, affecting all the country by building solutions affecting Egyptians day, providing more facilities to businesses and enhancing the economy. I share requirement gathering and business discussions.

    I care a lot about the quality of my product, starting by the architecture design, considering many concepts like Scalability, Extendibility, maintainability, security, performance as non-functional requirements, for Service Orientated Architecture, project oriented Software, Client / Server Software, Distributed Component-Based Software, Concurrent Real-Time Software, Software Product Lines, Mobile Development, and Framework Software's.

    I have built a lot of projects in financial services, accounting, market products, mobile, banking, governmental, truism, and utility industries.

    I am Architect, designer, speaker, trainer, consultant, technical reviewer, co-author, and photographer.

    For more information about projects I have developed, and specific technical tools I am using and experiencing, please visit my LinkedIn profile and about.me.

    Therefore, you are welcome to contact me anytime for any assistance and consultation.

  2. What helped to make your work significant to the community?

    I am passionate to Java, and I really love it and feel fun the way I code it, and seeing it growing day by day, as if it was my kid. I am in a relation with it since Java 1.0 was born.

    My wide background especially academic, professional career, business consultation, and daily reading, taught me a lot of business and ideas that make me think of a lot of cases needs to be covered in next JEE especially JEE 7 and beyond, such as communication speed and real time notifications problems, integration, security, batch applications and caching.

    Therefore,I have decided to contribute in the future of java and it begins with JEE 7 Umbrella and JCP member, and my contribution was focused on the following JSRs and projects JSR339 (JAX-RS 2.0), JSR356 (Web Socket 1.0), JSR353 (JSON Processing API 1.0) and I have engaged in FishCAT program which is a GlassFish Community Acceptance Testing program. And I worked a lot with and under MoroccoJUG members and its umbrella.

    I spoke at many conferences locally and worldwide for spreading the concept of adopt-a-jsr, adopt-openJDK and contribution benefits that will gain from and affect developers from their contributions. Alongside evangelizing JEE 7 and JDK 7,8 new JSRs and APIs in sessions delivered at JavaOne 2012, JDC Egypt 2013, Tunisia JUG Day 2013, Ukraine JEEConf 2013, JavaOne 2013 this year and will at jMaghreb 2.0 7-8/11/2013.

    Spreading the contribution and statistics of our community work on my blog to show our significant progress to the Specification and JSRs. Also helped to translate adopt-a-jsr wiki page to Arabic.

    I become an EGJUG member now, and I am responsible for forming and building a team for future contribution to the Adopt-a-jsr, adopt-openJDK, and any program could open in the future and indeed JCP activities.

  3. Were there guiding principles that were of particular value?

    My strategy is planning, Learning, Watching, Sharing, Writing, Teaching (if any), and be Pragmatic.

    Actually, this is what I am doing all the time and continually trying to improve it.

    Planning is the most effective way to manage your precious time. I plan my projects, tasks, priorities, and especially my year. Every beginning of the year, I begin by categories my tasks such as sports, social participations, knowledge, certificates, new tools to be learned, technologies, hobbies, religion … etc.

    By the time you will reach your goals, so do not be disappointed if you did not achieve them all at the beginning. Believe me, one day you will get more from what you actually planed for, it simple because you already knows how to manage your time.

    Keep learning new stuff, things not related to your field, at least monthly book to be finished or more based on your capabilities. to wider your knowledge base, and doing a lot of R&Ds, see the market needs and what is new tech/tools to learn. Learn from your previous experiences but try learning from others as well.

    Watching your acts, doings, behavior, and you need to find couple of people who you admire for some reason.

    Then you take a notebook and write down what it is that you like about them. Their discipline, their passion, their dedication, how they talk to people, how they dress, their idea about leisure and enjoying spare time… Whatever it is that you like. Not the person as a whole, but specific part of his behavior, which you like to mimic.

    Finally, you take the notebook and pick which of those values you will embed in your own life. Which of those experiences you will try to bring to your life too. Prioritize, set, and go.

    Always dedicate some time just for thinking, bring back the things that make you improve your experience and life.

    Share, write, and teach what you have learned, by conducting sessions, talks, workshops and spread the knowledge, to make you an effective member to your community, and indeed you will learn a lot from others questions, and experiences which will open the doors for you to know more and more.

    Be pragmatic and practical do more practice, writing code and participating to other projects, read others code, and believe me "In theory, there is no difference between the practice and theory. In practice, there is".

  4. How do you feel about being nominated for this award?

    Wow!It is a big honor, just being nominated for such an award makes me so proud and appreciated. In addition, I fell that my work is appreciated.

    But also, I've felt that I have to do more and more in order to deserve and keep such an honor.




Trip Events

I faced a challenge is to balance activities between the two conferences events happening. I want to catch up with Product Management, VPs, and CEOs of other Oracle partners, but indeed, I am also interested in meeting the peers in the Java space and socialize with them.

As I have said before, this trip was the busiest one I ever attend. Beside my JCP contribution, talks, session I have also some contribution in Oracle OpenWorld events, as I am a board member of the Oracle EMEA Architect Club, and my company is a big partner therefore I am representing my company in Oracle Partner dinner.

Here are the other Oracle events I have attended

  1. Oracle Eastern Europe, Middle East and Africa Partners Dinner at Oracle OpenWorld 2013 was in Sep 24, 2013 from 07:00 PM – 12:00 AM, at Terra Gallery 511 Harrison Street San Francisco 94105.
  2. EMEA and Oracle Architects Café at Open World. Architects Café Jasper’s Corner Tap & Kitchen, 401 Taylor Street, San Francisco, CA, USA. Monday 23 September 2013.

My Session materials

Below is the talk, which I have delivered at JavaOne 2013 and provided links for presentation, code, and question that I have been asked during the session as I remember.

My own session, started with 65 people about 10 days to go, then a couple of days later, it had 95 days, and then eventually on the day it was 108 pre-registrations.

Talk

Build.now(); True Real-Time Applications with Java EE 7 (A Hack Session) [TUT1805], Was Wednesday, Sep 25, 10:00 AM - 12:00 PM - Parc 55 – Divisidero.

I have begun my take with introduction to community (JCP members, adopt-a-jsr group) efforts that made JavaEE 7 possible, and a brief introduction about JCP and how it was governing the standardization and covering all JavaEE 7 JSRs and TCKs as well and the reference implementations of each JSR.

Then I have divided my talk into two parts, the first part was about WebSockets and what is behind this protocol and how it works. With a real case study to compare it against the HTTP protocol. Afterward I gave an Introducing to JSON data type, and finally shows how we are supported those technologies in JavaEE 7.

The second part was demo, coding and testing of two projects, real time board planning, and Runners championship monitoring application.

Presentation



Session Code

All code is part of Adopt-A-JSR organization under github project; you can fork/clone the project from the following link.


Some Session Questions

It was question/answer driven session, it was very active session, and here are some of the questions that I have been asked during the session.

  • Question: Why now implementing WebSockets while there are many implementations there?
    Answer: The main aim of JavaEE 7 is being productive platform, embracing HTML5 APIs, and standardizes the technology as well and this is JCP rule.

  • Question: Why we need websockets, while we can achieve the same results using polling or long polling?
    Answer: All of these hacks described are HTTP protocol specific, and every request and response abuse the bandwidth and latency of the network channel, rather than this it is not real time.

  • Question: What is the protocol of WebSocket?
    Answer: Websocket uses ws like http for normal communication, and wss like https for secure communication.

  • Question: Why we do not use SSE server sent events?
    Answer: Because server sent event is unidirectional and meant, is used by the server to notifies the clients and not vice versa, so it is not real time.

  • Question: Where originally Websockets come from?
    Answer: Websockets is originally part of HTML5 APIs, and Internet Engineering Task Force (IETF) maintains the protocol, while W3C maintains the JavaScript API.

  • Question: In TCP level each frame is about 1k in size, so how it will reduce the data bandwidth?
    Answer: As we have seen by the real case provided how the WebSocket reduces the network bandwidth compared to HTTP, because there is no need for verbose request/response paradigm it is only when making the handshaking. Rather WebSocket uses data framing with message header equal to fixed 2 bytes size while the message data is the remaining of the frame.

  • Question: We send a request, so where is the response?
    Answer: Websockets is a data messaging technique, any endpoint can send message to the other, and it is up to the client/server to send response back or not, based on your business logic.

  • Question: We send a request to the server, then how we can process the response and when?
    Answer: You process the response data on the client using onMessage(data) method, and it is called asynchronously by the browser when server send a message.

  • Question: What about the security, is it supports proxies and SSL?
    Answer: Websocket support SSL, and proxies. Supporting SSL by using wss protocol like https, and it is defined in web.xml the same as any other component in the system.

  • Question: How session is maintained?
    Answer: Web server maintains the client session connected to the endpoint in form of Session class.

  • Question: Can I connect to different WebSocket endpoints from my client at the same time?
    Answer: Sure, you just need new instance from your client and passing new endpoint URL.

  • Question: What are the data types supported in WebSocket messages?
    Answer: Websocket supports String, binary, and primitive data types as well.

  • Question: What is the difference between using JSON and XML in integrations?
    Answer: JSON is a lightweight data type for integration rather than XML, there is no need for tags, it is human readable, finally it is String data type, it covers all required data schema, and there are a lot of implementation out there.

  • Question: Is JSON-P APIs support data binding like its counterpart JAXB?
    Answer: In the current release no, but it is in our plan as important feature in upcoming releases.

  • Question: How we can use this technology to know about the server status?
    Answer: You can use Ping/Bong message to check if your server is alive or not, also you can use SSE for heart beat check.

  • Question: As you are working in big financial institution, where do you fit this technology under your projects?
    Answer: I am migrating my all agents polling checks to use WebSocket. also in my current Mobile web/Hybrid application for real-time communication with the customer to inform him/her by current fuel station fuel balance and their cards transactions balance, also in real time feedback/support by the customer support team.

There are more but those what I can remember until now, if there are any new question I will update the blog.

Feedback and comments

Pictures of the trip