Thursday Oct 17, 2013

So long Oracle ...


... and thanks for all the fish!

This Friday (October 18, 2013) is my last day at Oracle.

After
  • Publishing almost 1400 blog entries with 5500+ comments on them
  • Working in the Java EE team since inception
  • Visiting 35+ countries and several cities around the world
  • Speaking at all major Java conferences and lots of Java User Groups
  • 15-year alumni of JavaOne as staff
  • Meeting and working with best of the best in the Java community
  • Most importantly having lots of fun

Its time for me to move on!

No new blog entries will be posted on this blog.

Feel free to subscribe to The Aquarium for latest updates on Java EE and GlassFish.

I'll continue to publish all the excellent content that you've been used to at blog.arungupta.me now onwards. Read my new blog to learn about my new adventures!

Here are some of the conference badges collected over the past years ...



And the cities visited ...


View Cities Visited by "Miles To Go..." in a larger map

The comments on this blog are disabled as I'll not be able to respond to them. Feel free to leave comments on the new blog and I'd love to follow up with you there.

Thank you very much for all the support that has been shown on this blog.

I'd like to conclude with a Hindi song that I've been humming for the past few days now ...

Abhi alvida mat kaho doston ...
Na jaane kahan phir mulaqaat ho ...
Kyonki ...
Beete huye lamhon ki kasak saath to hogi ...
Khawabon mein hi ho chahe mulaqaat to hogi ...

For my non-Hindi readers, here is my paraphrased meaning ...

Don't say goodbye yet my friends ...
We'll likely meet somewhere else ...
Because ...
We'll always have the memories of the wonderful time spent together ...
May be in dreams but we will meet again ...

With that, over and out, and see you at blog.arungupta.me!

Wednesday Oct 09, 2013

Silicon Valley Code Camp Kids Track 2013




Silicon Valley Code Camp v8.0 concluded over the weekend. I've attended each code camp since the introduction of Java (2007, 2008, 2009, 2010, 2011, 2012, and now this one). The code camp has stuck to its three core principles from the beginning:
  • By and for the developer community (no product or marketing pitches ;)
  • No charge to attendees
  • Never occurs during work hours

The code camp has shown constant growth over its lifespan as is evident by the trends below:



The conference is definitely outgrowing its existing venue as the registrations had to be closed early for the first time.



It takes a village to organize a volunteer-driven conference and that has indeed been the case for all these years. The conference has been primarily focused on professional developers for all the past years. President Obama said

"If we want America to lead in the 21st century, nothing is more important than giving everyone the best education possible — from the day they start preschool to the day they start their career."

 So this year, other than my usual speaking engagements, I also volunteered to coordinate a new track focused on enabling future generation of developers. It was astounding to see kids from elementary school, middle school, and early high schoolers learning programming skills.

This new track had 16 sessions delivered by 8 speakers:
More details about the track are available here. About 200 kids attended stayed with their parents most of the day and enjoyed interacting with other attendees.

Here is some feedback we've heard so far:

Thank you very much for the great classes this past Sunday.  I had a lot of fun and learnt a lot.  I hope you have more of such classes so I can also have my friends attend with me.
Arun - thank you so much for volunteering your time and organizing such a fantastic event today!! My kids had a blast and quoting my 9-yr old son "Mom, this was the best experience I've ever had" :-) We would be interested in any future events you may be planning, one time or on-going.

Thanks again for the Minecraft Mod workshop yesterday; my son enjoyed it tremendously and I hope it will encourage him to learn how to program in coming years.  I also enjoyed it as it gave me some hints as to how Forge mod loader works.

We enjoyed the minecraft modding class yesterday as part of code camp.  My 11 year old has never coded (beyond Scratch) and he was up and hacking minecraft within the first hour.  Arun’s preparatory materials, teaching approach and engaging style made this a great experience.  I would definitely like to see more kid based courses in the future and would definitely recommend the minecraft session to anyone interested in modding.  I’d give the course 4 out of 5 stars.

A friend invited us this morning to SVCC, and although the room was packed, my son and I managed to get in and enjoyed learning more about Java coding.  Thanks for putting this class together, and for making opportunities like this for father/son activity related to computer literacy.  We had a good time, please keep it up for next year :-)

We loved kids sessions in code camp.  It motivated my kid programming.  Keep up the good work.

My 12 year and 8 years old sons has been coming to code camp for over 4 years now.  It has been fun all these years, however this year in their words "It was the best code camp ever!".  Thank you Peter K., Kevin Nilson, Arun Gupta and Stephen Chin and all other volunteers for excellent sessions!

"This was fun" says my 11 yr old son Aidan. As the dad, I've been spending some time with him at home building mods in Java and it's definitely a way to motivate him to learn programming.  He's been able to slog through some rather dry Java materials so that he can get better at Java programming. Re: the Minecraft class, you did a nice job of teaching theory and then connecting it to something applicable.

If you attended any of the sessions, we'd love to hear your feedback at kids@siliconvalley-codecamp.com.

Many thanks to co-track lead Dave Briccetti and other speakers: Neil Brown, Stephen Chin, Lynn Langit, Samantha Langit, Shadaj Laddad, Aditya Gupta, and Ron Verghis.

Check out some pictures from the event ...
























And complete album at:



The two days were very exhausting, but extremely rewarding and satisfying!

Follow at @arungupta and @devoxx4kidsba (Devoxx 4 Kids Bay Area) for any future updates on similar workshops!

Tuesday Oct 08, 2013

JavaOne 2013 Conference Report


18th JavaOne concluded a few days ago!

Started with a wet and cold #GeekBikeRide ...






... JUG Leaders and Java Champions brunch ....






... GlassFish Community Event ...






... Strategy and Technical Keynotes ...








... Duke Choice Awards ...






... GlassFish Party ...









... lots of friends from all around the world ...










.. several O'Reilly best-seller Java EE 7 Essentials book signings ...



... lots of Java EE 7 sessions, panels, and EG meetings ...









... couple of sessions on kids and programming ...



... Community Keynote ...







And who all did I meet ...

@myfear, @agoncal, @lincolnthree, @dblevins, @edburns, @fabiovelloso, @emmanuelbernard, @peter_pligrim, @javajuneau, @matthewmccull, @vanriper, @javaclimber, @reginatb38, @stephan007, @danieldeluca, @badrelhouari, @guatejug, @mnriem, @_tamanm, @reza_rahman, @jyeary, @noah_white, @heathervc, @tonyaraemoore, @evanchooly, @maxandersen, @brunoborges, @ingenthr, @javafxpert, @kohsukekawa, @mkheck, @donaldojdk, @venkat_s, @sjmaple, @trisha_gee, @goldstift, @ensode, @delabassee, @johanvos, @atsticks, @pbakker, @sander_mak, @bertertman, @mittie, @adambien, @stuartmarks, @wernerkeil, @yoshioterada, @harshadoak, @hirt, @smeyen, @yarasenger, @vsenger, @brjavaman, @fabianenardon, @maltron, @fguime, @speakjava, @danjavageek, @jj156416, @babadopulos, @chuggid, @webdevwilson, @mike_lehmann, @aa_lopez, @ameliaeiras, @soniazatoreilly, @codename_one, @sharat_chander, @steveonjava, @alexismp, @lightguardjp, @aslakknutsen, @kevin_farnham, @jodastephen, @geertjanw, @acaicedo, @ags313, @eyeseewaters, @briangoetz, @mreinhold, @spericas, @sonyabarry, @terrencebarr, @nivs333, @kittylyst, @robilad, @karianna, @ypoirier, @reza_rahman, @marek_potociar, @shaunsmith, @alexandrajava, @tnis23, @stevengharris, @gsaab, @cpurdy, @alrubinger, @bonbhel, @nilesh_, @anilgaur, @doug_clarke, @sachalabourey, @petrjiricka, @rogerk09, @jitsni, @singh_harpreet, @peppertech, @robc2, @rajivmordani, @vivekpandey, @jclingan, @javaperftuning, @michaelkolling, @cayhorstmann, @aalmiray, @ludoc, @paulsandoz, @bhlynne, @RockCimberT, @frankgreco, @meghanorm, @mullermarian, and many others ...

Here are the different slide decks and github repos ...

  1. CON-4456: Coding Java EE 7: Making Easy even Easier (github repo)
  2. HOL 2147: Java EE 7 Hands-on Lab
  3. CON 3496: Come Play! with Java EE 7 (github repo)
  4. BOF 8012: Teaching Java with Minecraft, Greenfoot, and Scratch
Watch the complete photo album:





And that's a wrap!

Monday Sep 16, 2013

JavaOne 2013: Java EE 7, GlassFish Community Event, Book Signing, Geek Bike Ride, Hallway Track, ...


18th JavaOne is almost here .... literally a few days away now!


5 days
8 tracks
500+ sessions
490+ speakers
70+ exhibitors
Lots of late night parties
All in the beautiful city of San Francisco

Now that is what makes a conference lot of fun and bound to give you a nerdgasm!

If you are still not convinced, here are 25 reasons to attend JavaOne.

There is tons of coverage on the recently released Java EE 7 and GlassFish 4. The FocusOn document provide a comprehensive set of sessions, BoFs, hands-on labs, panels, etc related to Java EE Platform from Oracle, RedHat, IBM, and many others.

This is going to be my 15th JavaOne and this blog has been serving reports/pictures from the conference for past 6 years (2007, 2008, 2009, 2010, 2011, 2012).

Here is my schedule so far and I would love to meet you before/after my speaking engagements:

Saturday, 9/21
11am
Geek Bike Ride
7:30pm
NetBeans Party

Sunday, 9/22
8am
JUG Leaders and Java Champions Brunch
9:15am
GlassFish Community Event
12pm
Strategy and Technical Keynote
8pm
GlassFish Party

Monday, 9/23
12:30pm
OTN Lounge Expert Drop-in
3pm
CON4456: Coding Java EE 7: Making Easy Even Easier (co-speaking with Lincoln Baxter III)
4:15pm
Java EE 7 Essentials Book Signing at JavaOne Book Store
6pm
JCP Party (including book signing)
8pm JUG Leaders and Java Champions Social Event
Tuesday, 9/24
12:15pm Publishers Seminar
2pm
Java EE 7 Essentials Book Signing at O'Reilly Booth
3pm
CON4510: Fifty Features of Java EE 7 in 50 Minutes (co-speaking with Antonio Goncalves)
4:30pm BOF 8012: Teaching Java with Minecraft, Greenfoot, and Scratch (co-speaking with Daniel Green)
7:30pm HOL 2147: Java EE 7 Hands-on Lab (co-speaking with Antonio Goncalves, David Delabassee, and Marian Muller)
Wednesday, 9/25
10am CON3431: Introduce Java Programming to Kids (co-speaking with James Weaver)
1pm CON3496: Come and Play! with Java EE 7 (co-speaking with Antonio Goncalves)
2:30pm Java EE 8 Discussions
Thursday, 9/26
3:30pm
CON2406: Java EE 8 and Beyond (mostly observer)

And of course, there is always the hallway track!

Where will I see you ?

Tuesday Sep 03, 2013

Java EE 7 Launch Celebrations in Africa Trip Report


Morocco, Senegal, South Africa, and Uganda were the African four countries on my Make the Future Java EE 7 Global Celebrations tour. The event was organized by JUG AFRICA and Max Bonbhel covered a few other countries as part of this tour.



I was welcomed with a very warm African hospitality in each country. The JUG leaders took extreme care of me through out the stay, starting right from the airport pick up, organizing the events, working on logistics, and a multitude of other things. Remember, the JUG leader is a volunteer role but its the passion for technology and sharing with the community that drives them. And that was truly evident in each of them!

A big shout out to Badr Elhouari (Morocco), Mamadou Ngor Diouf (Senegal), Mark Clark and Richard Kolb (South Africa), and Nsubuga Hassan (Uganda) for being the wonderful hosts!

I had lots of opportunities to engage with African developers from all around the continent. Yes, Africa is a continent with 54 different countries! Typically, locals talk about North, East, West, and South Africa regions. I was fortunate to share some of my Java EE 7 knowledge in all four regions, and in return learned a lot more from them.

The format at each event was mostly similar - provide a code-driven introduction to Java EE 7 and keep it completely interactive. I truly believe that the code should be written such that it speaks for itself. The developer productivity enhancements made in the Java EE platform over the years have certainly made it very much a reality. A typical flow covered the following samples, in a completely interactive manner:
There was barely noticeable to no language barrier in all the countries that I visited. This truly allowed a frank and direct conversation with the developers, as opposed to using a translator.


The trip started with the first event in Casablanca, Morocco (North Africa). Badr took time out of his family vacation to receive me at the airport and ensuring a smooth operation of the event. There were about 50 developers during a week day evening and otherwise a general holiday season.

The interactive session had several existing Java EE developers. Riding a train from Rabat to Casablanca with a few of the JUG members gave a good 1-1 time to interact with them. One of the developers showed me a sample application he has built to prepare for Java certification. One of the common feelings in Morocco at least is that their sub-Saharan bretherens are preferred for any Africa-wide events. However I started my trip with North Africa, so no complaints there ;-)

Something to learn about Morocco ...
  • Sahara Desert is about 900 km from Rabat/Casablanca. Plan for a few days if you are interested in a desert safari
  • Cars are used to travel from/to airport, not camels ;-)
  • Don't miss out on visiting one of the Kasbah, they are very unique and colorful structures
Here are some pictures from that event:



JMaghreb is the biggest Java developer conference in North Africa. I attended their inaugural conference last year and had a really good time giving a Java EE 6 hands-on lab to a packed room. The conference is focused towards a "pragmatic developer", not necessarily using all the bleeding-edge technologies. Badr has already started planning for JMaghreb 2.0 (Nov 7 and 8) and planning to expand the outreach to Southern Europe and other neighborhood countries. Reach out to him if you are interested in speaking at that event, and of course register for this free conference.



The next stop of the trip was at Dakar, Senegal. There were about 30 developers for the Saturday morning event. On the request of JUG leader, I started the event with a slide deck providing a complete overview of the platform. And then showed a bunch of samples afterwards. The Java EE 7 Technical Kit provides a slide deck (with speaker notes) that you can use to talk about Java EE 7 at your local JUG. The attendees were not shy in asking questions and the session continued with code-driven talk afterwards.

 I was fortunate to bump into couple of passionate GlassFish developers who are using it for a local telecom company. Hear all about their passion around Java EE 6, GlassFish, and NetBeans:



Here are some pictures from that event:






Some things to learn about Senegal ...
  • Senegal visa can be obtained at the airport, but be prepared to "grease" the machinery
  • Arrange a pick up at the airport otherwise you'll be overwhelmed with the cabbies
  • Visit Rebirth of Africa monument in Dakar, it is very very inspiring


The next stop of the trip was at Johannesburg, South Africa. Nobody amongst ~100 developers wanted to see any slides and so we jumped straight into the code. I showed lots of code and had lots of interaction.

I also had the opportunity to visit The Wanderers, a cricket stadium known for the second highest one day total of 438 by South Africa. I spent significant part of my day at the office and that's where the event was hosted in the evening as well.

Some things to learn about South Africa ...
  • Johannesburg, with about 4.4 million population, is definitely a premier technology hub in all of Africa
  • Being far South, they sort of feel in a silo and not completely connected from rest of the world. This is in spite of the fact that there is decent Internet connectivity.
  • Startup culture is definitely prominent here - products are serving local needs because of infrastructure costs, otherwise services-based
Here are some pictures from that event:








The last stop of the trip was at Kampala, Uganda. Nsubuga Hassan picked me from the Entebbe airport and we shared a 1.5 hrs taxi ride to the hotel in Kampala. The number of women participants truly surpassed the number of men at the event, and this was truly impressive. Its probably the most number of women I've ever seen at a JUG meetup.

There was even a discussion around starting a new Kampala JUG, so that is definitely promising.

The event was hosted by Hivecolab which provides community-owned work environment for young tech entrepreneurs in Kampala. Had a good chat with program director Barbara who is also also leading Women in Technology Uganda. Listen to an interesting conversation with Barbara on promoting technology amongst women in Uganda.

Some things to learn about Uganda ...
  • English is the official language of the country, and has about 40+ other local dialects
  • People are extremely soft-spoken and very welcoming every where
  • Lot of tech innovation happening in Uganda - Mobile Monday Kampala, @The Hub, Fin Africa, and others
  • Local government encourages women to study at the university

I enjoyed riding the different local means of transport - boda boda and the van. The visit to the local arts and craft market in any part of world not only promotes local artisans but also gives you the opportunity to buy authentic goods.

Here are some pictures from that event:







All the Java EE 7 samples are available at github.com/arun-gupta/javaee7-samples. Feel free to clone the repository or send a pull request if you want to contribute new Java EE 7 samples. A recording of some of the samples can be seen in the videos recorded at an earlier conference:





Even though the local JUG leaders were my hosts in each country but the real force behind all of this was Lamine Ba and Max Bonbhel. I had numerous emails exchanges on dates, cities, hotels, and everything else and they were all dealt very promptly and in a professional manner. Max and Lamine - you are the agents of change in Africa and are truly helping African developers be visible at the global front, thanks for your efforts!

I truly enjoyed my short stay in different countries and would love to come back again!

Here is the complete album from the trip:



If you want to learn more about African developers, or contribute then there is an excellent panel "BOF3469: Java Trends in Africa" at JavaOne San Francisco (Sep 22-26).

Register and see ya there!

Wednesday Aug 28, 2013

Java EE 7 Essentials from O'Reilly: Now Available in Paperback and Ebook


Hot off the press ...

Announcing the availability of my new book Java EE 7 Essentials.

Release Date: TBD, 2013
Language: English
Pages: 362
Print ISBN: 978-1-4493-7017-6 | ISBN 10:1-4493-7017-9
Ebook ISBN: 978-1-4493-7016-9 | ISBN 10:1-4493-7016-0


Chapter 1: Java Platform, Enterprise Edition
Chapter 2: Servlets
Chapter 3: JavaServer Faces
Chapter 4: RESTful Web Services
Chapter 5: SOAP-based Web Services
Chapter 6: JSON Processing
Chapter 7: WebSocket
Chapter 8: Enterprise JavaBeans
Chapter 9: Contexts and Dependency Injection
Chapter 10: Concurrency Utilities
Chapter 11: Bean Validation
Chapter 12: Java Transaction
Chapter 13: Java Persistence
Chapter 14: Java Message Service
Chapter 15: Batch Processing
Chapter 16: Build an End-to-End Application

This book is available from the following websites:

And other usual places.

Learn more about the book from Java Spotlight podcast #143.

This book provides a code-intensive overview of the key specifications in the Java EE 7 platform (one specification per chapter). The main concepts from the different specifications are explained using simple code samples. All the associated code is available on github.

A significant part of this book is derived from my Java EE 6 Pocket Guide. New chapters have been added to cover all the new technologies in the platform - WebSocket 1.0, Batch 1.0, JSON-P 1.0, and Concurrency 1.0. New sections have been added or existing sections updated to reflect the changes in the platform. If you have read the Java EE 6 Pocket Guide, then you can read this book at a much faster pace; otherwise, you can read this book from beginning to end. Alternatively, you can read specific chapters based upon your interest.

The book also contains self-paced instructions on how to build an end-to-end Java EE application using NetBeans IDE.
Here is how I can use your help ...

  • Help spread the word about the book
  • If you have bought a paperback or kindle edition, post your review here
  • If you have not purchased the book so far, then you can buy it using any of the usual locations

O'Reilly has arranged a book signing at their booth on Tuesday, Sep 24, 2pm. Other book signing opportunities are also being worked upon and I'll update once they are confirmed. And the book will also be available at JavaOne book store.

I hope you enjoy reading the book and learn a few new things from it. Your feedback in any form is always appreciated!

Monday Aug 19, 2013

Java EE 7 in Africa



As part of Make the Future Java EE 7 Global Celebration, several of us (Reza Rahman, Bruno Borges, and David Delabassee) are traveling around the world and speaking at different events. My latest travelenture takes me to different parts of Africa, literally in all different directions.




When ? Where ?
8/22
Rabat, Morocco
8/24
Dakar, Senegal
8/26
Johannesburg, South Africa
8/28
Kampala, Uganda

I plan to show tons of Java EE 7 code samples, meet local developers, learn from them, hopefully run with some of the finest runners in the world, and other fun things!



Where will I see you ?

Wednesday Jul 24, 2013

BeanManager: Obtain Contextual Reference to Beans (TOTD #215)


javax.enterprise.inject.spi.BeanManager allows to programmatically obtain contextual references to beans. Even though the primary purpose is to allow a portable extension to interact directly with the container, it can be used by any Java EE component as well.

There are three ways to obtain BeanManager:
  • @Inject BeanManager bm;
  • BeanManager bm = CDI.current().getBeanManager();
  • BeanManager bm = null;
    try {
        InitialContext context = new InitialContext();
        bm = (BeanManager)context.lookup("java:comp/BeanManager");
    } catch (NamingException | NullPointerException ex) {
        Logger.getLogger(TestServlet.class.getName()).log(Level.SEVERE, null, ex);
        ex.printStackTrace(out);
    }

The instance is with the scope @Dependent and qualifier @Default. It can be used to programmatically obtain the list of beans that are available for injection such as:

Set<Bean<?>> beans = bm.getBeans(Greeting.class);

BeanManager has lots of other useful methods to, for example to obtain a contextual reference, an injectable reference, and non-contextual instance. Go read the javadocs.

Check out the complete sample source code at:

https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/beanmanager

How would you use BeanManager in your applications ?

Tuesday Jul 23, 2013

JSON Binding with JAX-RS - Moxy, JSON-P, Jackson, Jettison (TOTD #214)


One of the typical questions asked during presentations is how do I enable JSON support in JAX-RS ?

There are three basic approaches and four different modules in Jersey that enable them. Here is a quick summary:


MOXy
JSON-P
Jackson
Jettison
POJO-based JSON Binding
Yes
No
Yes
No
JAXB-based JSON Binding
Yes
No
Yes
Yes
Low-level JSON parsing & processing
No
Yes
No
Yes

MOXy is the default and preferred way of supporting JSON binding in your Jersey applications. A new sample is now added at:

https://github.com/arun-gupta/javaee7-samples/tree/master/jaxrs/moxy

The resource definition is:

@Path("endpoint")
public class MyResource {
    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public MyObject echoObject(MyObject mo) {
        return mo;
    }
}


POJO is defined as:

public class MyObject {

    private String name;
    private int age;

    public MyObject() {
    }

    public MyObject(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Application class is:

@ApplicationPath("webresources")
public class MyApplication extends Application {
}

And the client code is:

Client client = ClientBuilder.newClient();

WebTarget target = client.target("http://"
        + request.getServerName()
        + ":"
        + request.getServerPort()
        + request.getContextPath()
        + "/webresources/endpoint");
System.out.println("POST request");
MyObject mo = target
        .request()
        .post(Entity.entity(new MyObject("Duke", 18), MediaType.APPLICATION_JSON), MyObject.class);
out.println("Received response: " + mo.getName() + ", " + mo.getAge() + "<br><br>");

JSON MOXy module (jersey-media-moxy.jar) is in your classpath then Jersey automatically discovers the module and enable JSON binding support via MOXy.

jersey.java.net/documentation/latest/media.html provide more details on all the approaches and modules.

Sunday Jul 21, 2013

Geek Bike Ride at JavaOne Shanghai

Here are some pictures from the fun #GeekBikeRide at JavaOne Shanghai. Thank you InfoQ China, bike angels, and everybody else who made the ride so much fun!
















And the evolving album from JavaOne Shanghai so far ...


About

profile image
Arun Gupta is a technology enthusiast, a passionate runner, author, and a community guy who works for Oracle Corp.


Java EE 7 Samples

Stay Connected

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today