Enterprise grade Java.
You'll read about Conferences, Java User Groups, Java, Integration, Reactive, Microservices and other technologies.

Monday, December 31, 2012

I always get more emotional when it comes closer to the end of the year...

05:26 Monday, December 31, 2012 Posted by Unknown No comments:
, ,
...and I'm honored to have the opportunity to write a short recap of this great year at close to 5am in the Morning while mostly everybody in Germany is still asleep. It was an intense year. In terms of travel, conferences and even the business side of my life was very challenging. Lets look at some numbers.

Visitors and some Demographics
115,419 unique people visited this blog during the last year! Awesome! Thanks a lot for your time and I am glad to receive any feedback you have. Altogether they produced 209,435 Pageviews. The majority of my readers is based in the US, with Germany and India as close follower. Visitors from different countries do not differ in other metrics like pages per visit or length of their visits.

Browsers and Technologies
I was a bit surprised to see a strong Firefox presence on my blog. After Chrome it is the second most frequently used browser. Internet Explorer marks the third place followed by the Safari brand.
Looking at the mobile devices is a bit more interesting. A total of 284 different devices identified themselves and the crowd was lead by Apple's iPad and iPhone. Second place goes to a bunch of Android powered flagship phones.

Content
What content are you guys here for? The top the pages this year are responsible of roughly 1/4th of the overall traffic. Beginning with the January Heroes of Java Interview with Ward Cunningham (9,932 Pageviews) the Galleria kick-off posting (6,573) also had some fans. The form based authentication example with GlassFish and PrimeFaces was the third most viewed post on the blog.

Seven Conferences in 12 Months
It all started with Jfokus in February. Followed by my JUDCon trip to Boston, the JavaZone in Oslo and JavaOne together with Oracle OpenWorld in September. Devoxx Belgium in between and  Doag Conference in Nuremberg and finally Jay-Day in Munich made this an exhausting but wonderful year. Given the fact, that it is not officially part of my job description to be part of the conference circus I enjoy talking about my favorite topics and I'm glad you like to listen! So, thanks to everybody attending one of two of my sessions! Looking forward meeting you somewhere next year!

Its a wrap! Happy new year!
Time for me to close the 2012 edition of this blog. I would be very honored to welcome you back next year which has some fancy new stuff and upcoming technologies in stock!
“We will open the book. Its pages are blank. We are going to put words on them ourselves. The book is called Opportunity and its first chapter is New Year's Day.” ― Edith Lovejoy Pierce

Thursday, December 20, 2012

I'm speaking at Jfokus 2013, 4th-6th February 2013 in Stockholm

12:53 Thursday, December 20, 2012 Posted by Unknown No comments:
, ,
It's my pleasure to announce that I will be speaking at next years Jfokus again! Jfokus is the largest annual conference for everyone who works with Java in Sweden. The conference is arranged together with Javaforum Stockholm. Javaforum is a Swedish developer community and an official Java User Group (JUG) with premier purpose is to support Swedish developers. During three days, you will have an unique opportunity to keep yourself updated with the latest development of the Java platform through numerous interesting sessions.

I have the pleasure to help Arun Gupta with his famous Hands-On-Lab
Developing JAX-RS Web Applications Utilizing Server-Sent Events and WebSocket
This hands-on lab guides attendees through building a Web application with the new JAX-RS 2.0 API. It shows how to use some value-added features of Jersey (the open source JAX-RS reference implementation) and Tyrus (the early draft implementation of Java API for WebSocket [JSR 356]) for leveraging HTML5 technologies such as server-sent events and WebSocket.
Which already is fully booked at the time of writing :)

Further on I will be at the
Java EE.express BOF
Together with Oracle's Mike Keith I will listen to community feedback. It is a perfect opportunity for developers to express their views about the overall direction of Java EE, as well as make suggestions for features and improvements to individual specifications.
Come out and be heard? or just listen to what others have to say and assert your agreement/disagreement over their opinions!
We are here to listen!

If you want a good impression what it looks like take a look at the following "feel the groove" video footage from this years Jfokus!

If you need more information don't forget to read Arun's trip report about this years Jfokus!!
I am really looking forward to the show and I'm very glad to also have been part of the program committee which helped putting this great conference together! Looking forward to meeting you soon! If you haven't done so already, go and register for it! Today!

Tuesday, December 18, 2012

Article about the Adopt-a-JSR program

13:39 Tuesday, December 18, 2012 Posted by Unknown No comments:
, , ,
A short information for my German audience. My latest article was published today. It is about the Adopt-a-JSR program and describes all the details and motivations behind it.
Read it online free of charge in German on the heise.de/developer website.

Java Community Process: Adopt-a-JSR
A soft spot for JSRs
Java belongs to Oracle, but it is used by a lot of developers. A key pillar of its success is the joint standardization of language and its features through the Java Community Process (JCP). A lot has been talked about the JCP, and the more recent efforts to make it more transparent and open, clearly show that Oracle is keen to carry out the development of the entire ecosystem in close collaboration with the actual users and licensees. Nevertheless the direct participation of the Java community on individual Java Specification Requests (JSRs) is too weak.

Curious about your feedback!

You're free to try translate.google.com on this one. Its not as nice as it could be :)

Friday, December 14, 2012

Java EE 7 Community Survey Results!

10:02 Friday, December 14, 2012 Posted by Unknown 3 comments:
, ,
Work on Java EE 7 presses on under JSR 342. Things are shaping up nicely and Java EE 7 is now in the Early Draft Review stage. In beginning of November Oracle posted a little community survey about upcoming Java EE 7 features. Yesterday the results were published.
Over 1,100 developers participated in the survey and there was a large number of thoughtful comments to almost every question asked. Compare the prepared PDF attached to the EG mailing-list discussion.

New APIs for the Java EE 7 Profiles
We have a couple of new and upcoming APIs which needs to be incorporated into either the Full or the Web Profile. Namely this are WebSocket 1.0, JSON-P 1.0, Batch 1.0 and JCache 1.0. The community was asked in which profile those should end up. The results about which of them should be in the Full Profile:

Add to Full Profile?

As the graph depicts, support is relatively the weakest for Batch 1.0, but still good. A lot of folks saw JSON-P and WebSocket 1.0 as a critical technology.
The same for both with regards to the Web Profile. Support for adding JCache 1.0 and Batch 1.0 is relatively weak. Batch got 51.8% 'No' votes.
Add to Web Profile?

Enabling CDI by Default
The majority (73.3%) of developers support enabling CDI by default. Also the detailed comments reflect a strong general support for CDI as well as a desire for better Java EE alignment with CDI.

Consistent Usage of @Inject
A light majority (53.3%) of developers support using @Inject consistently across all Java EE JSRs. 28.8% still believe using custom injection annotations is ok. The remaining 18.0% were not sure about the right way to go. The vast majority of commenters were strongly supportive of CDI and general Java EE alignment with CDI.

Expanding the Use of @Stereotype
62.3% of the attending developers support expanding the use of @Stereotype across Java EE. A majority of the comments express ideas about general CDI/Java EE alignment.

Expanding Interceptor Use
96.3% of developers wanted to expand interceptor use to all Java EE components. 35.7% even wanted to expand interceptors to other Java EE managed classes. Most developers (54.9%) were not sure if there is any place that injection is supported that should not support interceptors. 32.8% thought any place that supports injection should also support interceptors. The remaining 12.2% were certain that there are places where injection should be supported but not interceptors.

Thanks for taking the time answering the survey. This gives a solid decision base for moving on with Java EE 7. Keep the feedback coming and subscribe to the users@javaee-spec.java.net alias (see archives online)!

Tuesday, December 11, 2012

Are your Garbage Collection Logs speaking to you? Censum does!

18:47 Tuesday, December 11, 2012 Posted by Unknown No comments:
, , ,
Have you heard about jClarity? This is a new start-up with some great ideas and solutions around Java Performance. You probably know the team behind that: Both London Java User Group leaders Ben Evans (CEO) and Martijn Verburg (CTO) joint forces with Mr. Performance Kirk Pepperdine (Chief Scientist)
and are willing to provide some freaking tools to analyze and monitor your performance java struggles. Their first product Censum is in closed beta since a while now and with the release only a few days away the jClarity guys kindly allowed me to publish this little summary about it.

What is Censum?
Censum by the original translation means the estimate of property value by a census or censor. Taken into the Java world, Censum is the analysis tool that tells you in plain English what your Garbage Collection (GC) performance problem is and how to fix it. Instead of having to read the GC log entries produced by -verbose:gc -XX:+PrintTenuringDistribution -XX:+PrintGCDetails which is very condensed and hard to interpret
3.491: [GC Desired survivor size 29360128 bytes, new threshold 1 (max 15) [PSYoungGen: 672297K->22814K(666496K)] 727139K->91144K(753792K), 0.0285996 secs] [Times: user=0.13 sys=0.00, real=0.03 secs] you simply import the logfile to Censum and let the smart guys do the work for you. Censum does all of the parsing, number crunching and statistical analysis for you, so you don't have to go and get that PhD in Computer Science in order to solve your GC performance problem.

How does it look like?
First thing to do is to get some decent gc logs. All you have to do is to enable the GC details with the above mentioned arguments and write them to a logfile with the additional option -Xloggc:d:\gc.log. After importing it to censum you are presented with a nice and clear analytics summary.

This summary presents an overview of the findings. You can dig into any of those via the tree on the left and get further details about the individual finding. Beside the fact, that you get the findings in plain English

You also get some hints on the solution. Honestly there is not much Censum could read from a high utilized heap but it points you to some things to dig into. It does a better job with proposing generation sizes. Generated from the memory profile of the analyzed snapshot you get a recommendation for the Tenured and YoungGen pool sizes (with the serial collector). It also detects high pause times and calls to System.gc().
But that isn’t all. You also have some nice visualizations to assist you with the analysis.

Censum is a lightweight Java native client. The beta has a size of roughly 6mb and can be launched from your desktop.

What is next?
Censum left private beta today and you can get hand on that stuff yourself at their shop. If you ever had to deal with gc logs you will see a high productivity boost by using Censum. And I personally can’t help myself: Using it feels like having Kirk himself sitting next to you and telling you where to look at. A great new way for garbage collection optimization.
Good luck to the team! I am really curious for all the other upcoming stuff!

Thursday, December 6, 2012

From XaaS to Java EE – Which damn cloud is right for me in 2012?

10:53 Thursday, December 6, 2012 Posted by Unknown 5 comments:
, , , , ,
Have you ever wondered what it takes to get your Java EE up and running somewhere? I did. For years. Started with hosting my own, moved on to some hosting offerings and finally stumbled upon the PaaS movement. Honestly I didn't take all that too serious. I simply wanted to run my stuff somewhere and didn't care too much about the solution. That changed over the past couple of months with the emerging offerings around. Especially with the many different offerings which label themselves XaaS. Seems to be the right time for a closer look.

From XaaS to Java EE – Which damn cloud is right for me?
(c)2012 msg systems ag
Ever single presentation on that topic starts with a general overview about XaaS offerings and how they compare. Given that I believe that there is still some need to introduce the different four letter acronyms. This nice little picture originated in kind of an innovation project done for my company. It basically tells you all you need to know about XaaS. Starting from the plain iron (IaaS, Infrastructure as a Service) you go up the latter to candyfloss (SaaS, Software as a Service). Somewhere in-between is PaaS (Platform as a Service) which basically addresses some kind of pre-packaged stack to manage and run you applications on. And this category is exactly the one where you would fit application platform like Java EE in. I'm not going to drill that further down. There is plenty of theory around different sub-categories for PaaS. I simply don't care about that because I'm not willing to write a master thesis but a practical guide.

PaaS isn't PaaS. The Selection process and the Candidates
What I do want to do is to separate the many available offerings a bit. I decided not to accept anything but offerings with a clear and certified pre-configured Java EE container. This is the reason why you will not find GAE or CloudFoundry or heroku in here. They all offer some kind of Java application hosting but no Java EE container. Here are the candidates.


Amazon ElasticBeanstalk
Amazon Web Services (abbreviated AWS) is a collection of remote computing services (also called web services) that together make up a cloud computing platform. One of them, Amazon Elastic Beanstalk provides quick deployment and management of applications in the cloud. Running Tomcat 6+7 only doesn't qualify for this shootout normally. But I am making an exception here because it is the most well known cloud offering and one of the oldest ones. Lets look at it as kind of a reference in this comparison. Register your account via aws.amazon.com/elasticbeanstalk/

Oracle Cloud - Java Service
One of the new kids on the block. Announced two years back at Oracle's annual trade fair it is now slightly rolling out to the public. Honestly I don't have an account at the time of writing but I participated in the early access program and had a chance to test it extensively. The Java service is only one part of the extensive offering. It basically comes down to a WebLogic Server to host your applications on. Access it via cloud.oracle.com.

CloudBees RUN@cloud
One among the established providers. CloudBees was founded in early 2010, is incorporated in the United States and lead by a couple of former JBoss, Oracle and VMware people. Their most prominent move was to join the JCP (Java Community Process). They offer a Java EE Web Profile stack based on JBoss AS 7. Learn more about their offerings on www.cloudbees.com

RedHat OpenShift
OpenShift is Red Hat's free, auto-scaling Platform as a Service (PaaS) for applications. This includes many different stacks for many languages. One among them is the AS 7 with the Java EE 6 Full Profile features. You can find all offerings on openshift.redhat.com

Jelastic
I meet the guys two years back at JavaOne. A very tiny booth and they were handing out business cards with trial codes on them. It has been a ride for them since then. DukesChoice Award winner this year and more and more hosting providers as partners. Beside the Java EE offering (GlassFish 3) they also run jetty and Tomcat in the cloud. Find out more at jelastic.com

SAP NetWeaver Cloud
This wasn't on my initial list but some of their developer advocates pointed me to the Apache Virgo based Java EE Web Profile offering they have. Enough to find out more and add it to the list. Find out more bit.ly/sapnwcloud

The Rating
Now that we do know a little about the candidates it is time for a first look at the rating. First assumption I made was that I am comparing the different "free offerings". So this might not completely reflect the truth if free and purchased tiers do differ too much. The one exception is Amazon. They don't offer a free tier.
One remark: I have been asked to include SLA or pricing information in this rating. I decided not to do it. The reasons are obvious. The focus was on functionality and the free offerings. Looking into pricing would open another door I am not willing to open as of today.
The rating happened with 35 individual metrics ordered in five different categories:

Administration (10)
Metrics that describe the registration process and the overall experience with instance creation and configuration. It also weights the accessibility of pricing information and the time it takes to get the environment up and running.

Development (11)
This category contains metrics around the number of different servers products, Java EE features (WP, FP), included services (e.g. database), SDK behaviour, Security, custom JVM args and more.

Deployment (7)
Metrics asking for IDE support, build support (maven, ant), usability of the web consoles and access to logfiles.

Operations (4)
Captures some few metrics around monitoring.

Ecosystem (3)
Weights in the available support options and community sizes and activity.

Given the distribution of the metrics this is clearly administration and development centered. I didn't weighted this further because I simply like it to be like this. Every metric had three different characteristics where one was assigned. Depending on the question most of them could be answered following the following scheme:
0: Not possible / low end / Unusable / Slow / No
1: Average / Usable
2: Top notch / Fast / Yes

The Results at a Glance
After everything has been ranked there was a total of 70 points (100%) to achieve.

Jelastic clearly leads the crowd here with 73 % of the possible points. Direct follower is Cloudbees with their RUN@cloud offering. OpenShift takes the proud third place in this ranking. The detailed and normalized breakdown by category reveals where everybody has it's strength and weaknesses.
Summary and Outlook
I know that this rating has very few concrete data-points to hold on to. And I'm going to disclose them over the next few months. I am also willing to do a more detailed review of the individual candidates. So consider this as a first round for late 2012 which will get updated during the next year. Happy to read your thoughts and ideas!

Tuesday, November 27, 2012

I'm speaking at the Oracle Developer Day, OOP 21. - 25. Januar 2013 Munich/Germany

09:37 Tuesday, November 27, 2012 Posted by Unknown No comments:
, , ,
Short head ups, that I am speaking at the Oracle Developer Day happening during the OOP 2013 happening from 21st to 25th January 2013 Munich/Germany. I will hopefully be able to show you some of Oracle's Java Service Cloud offering and guide you through the most prominent features.
See the complete agenda (in German). And get your free tickets for the special day, the OOP forum and the exhibition hall by registering online.


Tuesday, November 20, 2012

Java Specification Requests in Numbers

14:02 Tuesday, November 20, 2012 Posted by Unknown No comments:
, ,
You all know about the Java Community Process (JCP), don't you? The JCP is the mechanism for developing standard technical specifications for Java technology. Anyone can register for the site and participate in reviewing and providing feedback for the Java Specification Requests (JSRs), and anyone can sign up to become a JCP Member and then participate on the Expert Group of a JSR or even submit their own JSR Proposals. The ongoing works on transparency is a good sign for this institution and all the individual JSRs to become more relevant to the community finally. But did you ever wonder how many JSRs are there? In which state they are? Or who is the spec-lead? I collected some public information and run some analysis on them.

How many JSRs are there?
According to the JCP Website we have 192 JSRs in the three different platforms. Java EE (47 JSRs), Java SE (60 JSRs) and Java ME (85 JSRs). If you parse the complete list of all JSRs you get a total of 388.


In numbers this means: 31 Dormant, 209 Final, 52 In Progress, 2 Inactive 13 Rejected, 81 Withdrawn. I don't have a good explanation for the difference here. There are even more final JSRs than the 192. Might be an out-dated number.

How many of them are lead by Oracle?
With that impressive Numbers it would be interesting to see, how many of them are actually lead by Oracle:
More than 68 % (177) out of 261 (Final and In Progress State) are lead by Oracle or together with Oracle. The 32% (84). The next biggest number of JSRs run by a company is provided by IBM which leads 9 JSRs followed by North Sixty-One Ltd and Nokia Corporation (7).  RedHat owns 5. Google still has one JSRs sitting in there.



Sunday, November 18, 2012

Devoxx 2012 Trip Report - clouds and sunshine.

17:28 Sunday, November 18, 2012 Posted by Unknown No comments:
, ,
This has been an exciting week. After leaving JavaOne this was the next conference on my schedule. Somehow insane given the fact, that I hardly had a chance to clear all the work that has been left over. Leaving for Devoxx on a Sunday was a good thing. No rush hour. Everybody was relaxed and I had a perfect pre-event check-in which all the required things at hand.

The venue is for sure special. What is a big cinema center normally turns into a conference venue for this special week in November. Stephan and his crew have been hard at work to deliver all the needed connectivity and infrastructure. A little bit sad to see, that we had to use the side entrance and therefore many cab drivers dropped the passengers to the main entrance which leaves you stumbling around without any true indicator where to go. But this obviously is a first-timer problem only. Which was true for me. During the last few years Devoxx used to be in parallel with the German Oracle User Group conference DOAG Conference. Not this year and it gave me a good chance to take on the challenge of traveling to Belgium.

After I had the pleasure to receive my wrist-band from Stephan himself I was walking around a bit and took the cab back to my hotel. The Scandic Antwerp was far off from anything. Nearly 45minutes public transfer to ride to the center. Probably more than an hour to walk to the venue. Given the fact that it looked better on the map, it turned out to be a disaster. Cold rooms, limited breakfast. I need to remember to give them a 1* rating somewhere.

Monday 12th of November - University
Was the start of the conference. All the cinema rooms have been equipped with wifi and a speakers desc and tons of cables and further recording things. The crowd instantly build up in-front of the registration desks and it took a while until everybody was done. It was the first of two university days. With 18 talks in two days you could imagine that those are longer than usual and contain a more detailed analysis of the topics. I had the pleasure to listen to Paul Bakker and Bert Ertmann and Kirk Knoernschild about modularity today. Very impressive talks with a broad coverage of all the basic principles. Anyway, three hours is a brave thing to do as a speaker. If someone messes up something here you are loosing your audience for the rest of the talk. This is scary and the limited diversification with the long talks didn't work too good for me. Anyway, I believe I wasn't the target audience at all. All in all the lineup was good, the rooms very impressive for a first-timer and  I also liked the tweet wall that was running in-between the talks. All room panels were powered by beagle-boards and JavaFX. Very cool technology.
Monday night was beer-walk time. With 40 registered speakers this could have been a huge crowd walking through the ancient Antwerp on the beer-hunt. At the end of the day it was a smaller group of 20 people walking around and learning about the beer tradition and some of the historic buildings. Thanks to all the attendees for the nice chats and great atmosphere. And thanks to the Devoxx team for organizing this. It was big fun!

Tuesday, 13th of November - University
Another University day on Tuesday. Same rules, same criticism. I should mention the "Tools in Action Talks". Those are 30 minute talks during the University days in the later afternoon. Here speakers get the opportunity to demonstrate a Java tool that they've created and are passionate about! The rooms have been packed. The same was true for the "Labs Track". The feedback I got was very passionate and positive. Give n the fact, that you get the chance to attend a couple of labs trainings along the conference this is added value for anybody paying the ticket. You normally only get one training for the price of a Devoxx pass.

Let's talk briefly about food. It was conference food. Breakfast mostly consists of pastries. Lunch was a baguette kind of thing or little salads. And a soup. Don't ask me about the little pre-packaged sweets for coffee.
Thank god there are a couple of restaurants around the venue. Even for those which doesn't rely on anything else than coffee, this was hard. The good part: There was plenty of coffee around. From early morning until late evening. Same for all kind of soft-drinks and water. That is awesome! Bottom-line is that you are not going to Devoxx for food. Period.
I should mention the BOFs. Happening every evening throughout the whole conference beginning 19:00 lasting to 22:00. The most impressive schedule I have seen going more than 12h per day. Given that, you should prepare yourself with a good night sleep before you come here. If you get 6h during the day you are a lucky person. Tuesday also was the day the Exhibition Floor opened. Located in the basement surrounded by some nice and quite places to hide and some boxes you could easily walk along the booths in a few minutes. But some nice vendors with a couple of raffles and giveaways. 

Wednesday 14th of November - The start of the sessions
This was the part of the conference I had waited for. A lot of big names on the schedule and the most exciting part is, that Google is allowing their speakers to attend this conference other than they do for JavaOne. The setting changed a bit. We had another impressive line at the registration and the conference got crowded.
If you were wondering where the 3000 people are, you finally knew. All in one place running around from one talk to the other and trying to get one of the mentioned lunch things or drinks. The soft-drink coolers started to empty faster than they were refilled, the afternoon sweets became a reason to wrangle with each other and the bins in the session rooms started to fill up.
The content? One word: Amazing! 97 session. Well known names. A RedHat and Google Keynote. Oracle all over the place with a booth next to Google. How cool was that? Nighthacking with Stephen Chin and interviews and hackers-garden and meetings and networking. Meeting people and talking about upcoming stuff. Nearly all have been there. A true international conference. It was a pleasure to meet sooo many people. If I would try to name them here, I would fail. Thank you all for taking some of the precious time to contribute to the Java community by listening and trying to shape it. This also was the day for David's and my BOF. We had quite a few spec leads around and also the JCP was there. Beside the fact, that we didn't discuss any technical topics we had a nice hour which could have gone for another if we would have been the last BOF of the day.

Thursday 15th of November - More conference
After another short night sleep the Thursday also promised some very interesting sessions. And it had some more stuff in stock. We have seen the short-list of the new names for RedHat's JBoss Application Server (BaseJump, WildFly, jBeret, Petasos, Jocron - jboss.org/vote) and a nice keynote with Nandini Ramini and Tim Bray. My secret favorites were the Naos. Awesome but expensive toys.
The exhibition floor was already partly taken down and the running interviews by the Arquillian team ended up having not enough light and power. It was a rough end for the day.
The good parts were, that we had some nice BOFs. One run by Sonya Barry about Java.Net and I also attended the JBoss AS BOF which was followed by a nice dinner with all the RedHat server guys. Thanks for that Ray and Mark! It was a pleasure meeting you and I need to thank you once again for making this whole Java EE thing even more valuable with all your great OSS projects!
After that it was party time at Devoxx. Stephan rented the Noxx Antwerp which is one of the more famous clubs around. We had a good start with a couple of RedHat sponsored beers and good music. Overall it was a very noisy location and even the announced "more silent room" was still too noisy to have a nice chat. At the end of the day it ended up with a couple of geeks having a great disco night.


Friday 16th of November - It's all over now.
The final day of the conference. Still half a day full of sessions but mostly done now. The exhibition floor has been rebuild completely, some rooms have been closed down. And the remaining attendees tried to make sense from themselves. A typical last day of a conference. I had to leave before noon to catch my flight back. It was a fun week overall. Last but not least my two coworkers added to that with all their jokes and entertaining ideas and problems. Thanks Ralf for the great companion! Thanks Jürgen for the location knowledge and your excitement! I am really looking forward to next years Devoxx UK.  Find some more picture impressions on my G+ page.

Tuesday, November 6, 2012

Polyglot Persistence: EclipseLink with MongoDB and Derby

13:43 Tuesday, November 6, 2012 Posted by Unknown 3 comments:
, , , ,
Polyglot persistence has been in the news since some time now. Kicked off by the famous Fowler post from end 2011 I see more an more nice ideas coming up. Latest one was a company internal student project in which we used Scala as a backend persisting data into MongoDB, PostgreSQL and Apache Solr. I'm not a big fan of Scala and remembered EclipseLink's growing support for NoSQL databases. Given that I simply had to try something like this.

Where to start? 
The biggest issue are the missing examples. You find quite a bit stuff about how to change the data-containers (either NoSQL or RDBMS) with EclipseLink but you will not find a single one which exactly uses both technologies seamlessly. Thanks to Shaun Smith and Gunnar Wagenkrnecht we have this great JavaOne talk about Polyglot Persistence: EclipseLink JPA for NoSQL, Relational, and Beyond which talks exactly about this. Unfortunately the sources still haven't been pushed anywhere and I had to rebuild this from the talk.So, credits go to Shaun and Gunnar for this.
The magic solution is called Persistence Unit Composition. You need one persistence unit for every data container. That looks like the following basic example. You have a couple of entities in each PU and a composite PU is the umbrella.
Basic Composition Example

Let's go
You should have MongoDB in place before you're going to start this little tutorial example. Fire up NetBeans and create two java projects. Lets call them polyglot-persistence-nosql-pu and polyglot-persistence-rational-pu. Put the following entities into the nosql-pu: Customer, Address, Order and OrderLine. (Mostly taken from the EclipseLink nosql examples) and put a Product entity into the rational-pu.
The single products go into Derby while all the other entities persist into MongoDB. The interesting part is, where OrderLine has a One-to-One relation to a Product:
  @OneToOne(cascade = {CascadeType.REMOVE, CascadeType.PERSIST})
    private Product product;
This is the point where both worlds come together. More on that later.
Both PUs need to be transaction-type="RESOURCE_LOCAL" and need to contain the following line in the persistence.xml:
 <property name="eclipselink.composite-unit.member" value="true"/>
Don't forget to add the db specific configuration. For MongoDB this is
<property name="eclipselink.nosql.property.mongo.port" value="27017"/>
<property name="eclipselink.nosql.property.mongo.host" value="localhost"/>
<property name="eclipselink.nosql.property.mongo.db" value="mydb"/>
For derby this is something like this:
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/mydb"/>
<property name="javax.persistence.jdbc.password" value="sa"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
Now we need something to link those two PUs together. The combined-pu resides in a sample polyglot-persistence-web module and looks like this:
<persistence-unit name="composite-pu" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
     <jar-file>\lib\polyglot-persistence-rational-pu-1.0-SNAPSHOT.jar</jar-file>
     <jar-file>\lib\polyglot-persistence-nosql-pu-1.0-SNAPSHOT.jar</jar-file>
      <properties>
            <property name="eclipselink.composite-unit" value="true"/>
        </properties>
</persistence-unit>
</persistence>
Watch out for the jar-file path. We are going to package this in a war-archive and because of this, the nosql-pu and the rational-pu will go into WEB-INF/lib folder. As you can see, my example is build with maven. Make sure to use the latest EclipseLink dependency. Even GlassFish 3.1.2.2 still ships with a lower version. MongoDB support has been added beginning with 2.4.
 <dependency>
  <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.4.1</version>
        </dependency>
Beside this, you also need to turn GlassFish's classloaders around:
<class-loader delegate="false"/>
Don't worry about the details. I put up everything to github.com/myfear so, you might dig into the complete example later on your own.

Testing it
Let's make some very brief tests with it. Create a nice little Demo servlet and inject the composite-pu to it. Create an EntityManager from it and get a transaction. Now start creating prodcuts, a customer, the order and the separate order-lines. All plain JPA. No further magic here:
    @PersistenceUnit(unitName = "composite-pu")
    private EntityManagerFactory emf;

   protected void processRequest() // [...]
     {

        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        // Products go into RDBMS
        Product installation = new Product("installation");
        em.persist(installation);

        Product shipping = new Product("shipping");
        em.persist(shipping);

        Product maschine = new Product("maschine");
        em.persist(maschine);

        // Customer into NoSQL
        Customer customer = new Customer();
        customer.setName("myfear");
        em.persist(customer);
        // Order into NoSQL
        Order order = new Order();
        order.setCustomer(customer);
        order.setDescription("Pinball maschine");

        // Order Lines mapping NoSQL --- RDBMS
        order.addOrderLine(new OrderLine(maschine, 2999));
        order.addOrderLine(new OrderLine(shipping, 59));
        order.addOrderLine(new OrderLine(installation, 129));

        em.persist(order);
        em.getTransaction().commit();
        String orderId = order.getId();
        em.close();
If you put the right logging properties in place you can see, what is happening:
A couple of sequences are assigned to the created Product entities (GeneratedValue). The Customer entity gets persisted into Mongo with a MappedInteraction. Entities map onto collections in MongoDB.
FINE: Executing MappedInteraction()
spec => null
properties => {mongo.collection=CUSTOMER, mongo.operation=INSERT}
input => [DatabaseRecord(
CUSTOMER._id => 5098FF0C3D9F5D2CCB3CFECF
CUSTOMER.NAME => myfear)]
After that you see the products being inserted into Derby and again the MappedInteraction, that perssits the Order into MongoDB. The really cool part is down at the OrderLines:
ORDER.ORDERLINES => [DatabaseRecord(
 LINENUMBER => 1
 COST => 2999.0
 PRODUCT_ID => 3), DatabaseRecord(
 LINENUMBER => 2
 COST => 59.0
 PRODUCT_ID => 2), DatabaseRecord(
 LINENUMBER => 3
 COST => 129.0
 PRODUCT_ID => 1)]
Orderlines has an object which has the product_id which was generated for the related product entities. Further on you can also find the related Order and iterate over the products and get their descriptions:
Order order2 = em.find(Order.class, orderId);
  for (OrderLine orderLine : order2.getOrderLines()) {
            String desc = orderLine.getProduct().getDescription();
            }
The nice little demo looks like this:
Thanks Shaun, thanks Gunnar for this nice little example. Now go to github.com/myfear and get your hands dirty :)

Thursday, October 25, 2012

Java Temporary Caching API - Test-driving the Early Draft Review RI

09:15 Thursday, October 25, 2012 Posted by Unknown 2 comments:
,
It was known as "The Neverending Story". The JSR kicked of 11 and a half year ago and passed the JSR Review Ballot on 06 Mar, 2001. If you ever wondered what it takes to get a fancy low JSR number in the hundreds: That is the secret. Unlike in the German fantasy novel by Michael Ende this was not about people's lack of imagination but about resources, political discussions and finally about licensing. But let's forget about the past and move to what is there since yesterday. Note that this material was uploaded to the JCP in February but was delayed while the legal complications of having two companies as shared spec leads got sorted out. That is done and will not be an issue going forward in the process.

What is it all about?
Caching is known for dramatically speeding up applications. Those typically use temporary data which is expensive to create but has a long lifetime during which it can be re-used. This specification standardizes caching of Java objects in a way that allows an efficient implementation, and removes from the programmer the burden of implementing cache expiration, mutual exclusion, spooling, and cache consistency.
It is designed to work with both Java SE and Java EE. For the later it still is not ensured, that it will be included in upcoming EE 7 release but the EG is working hard on it and needs your feedback.

How do I get my hands on it?
That is easy. All the needed artifacts are in maven central already. Let's build a very simple sample for you to get you started. Fire up NetBeans and create a new Maven Java Application. Name it whatever you like (e.g. cachingdemo, open the pom.xml and add the following two dependencies to it:
<dependency>
            <groupId>javax.cache</groupId>
            <artifactId>cache-api</artifactId>
            <version>0.5</version>
        </dependency>

        <dependency>
            <groupId>javax.cache.implementation</groupId>
            <artifactId>cache-ri-impl</artifactId>
            <version>0.5</version>
    </dependency>
And if you are there, change the junit version to 4.8.2.
Refactor the AppTest to utilize the new junit:
package net.eisele.samples.cachingdemo;

import org.junit.Test;

/**
 * Simple Cache Test
 */
public class AppTest {

    @Test
    public void testApp() {
    }
}
All set. To make this simple, I'm going to add some caching features in the test-case.

The Basic Concepts
From a design point of view, the basic concepts are a CacheManager that holds and controls a collection of Caches. Caches have entries. The basic API can be thought of map-­like. Like a map, data is stored as values by key. You can put values, get values and remove values. But it does not have high network cost map-like methods such as keySet() and values(). And generally it prefers zero or low cost return types. So while Map has V put(K key, V value) javax.cache.Cache has void put(K key, V value).
 
 // Name for the cache
        String cacheName = "myfearsCache";
        // Create a cache using a CacheBuilder
        Cache<Integer, String> cache = Caching.getCacheManager().<Integer, String>createCacheBuilder(cacheName).build();
        // define a value
        String value1 = "Markus";
        // define a key
        Integer key = 1;
        //put to the cache
        cache.put(key, value1);
        // get from the cache
        String value2 = cache.get(key);
        //compare values
        assertEquals(value1, value2);
// remove from the cache
        cache.remove(key);
        // ceck if removed
        assertNull(cache.get(key));

Things to come
This basically is all that is possible at the moment. Going down the road with subsequent releases you should be able to:
- Integrate with Spring and CDI via @Annotations
- Use CacheEventListener
- Work with Transactions
The EG is actively searching for feedback on the available stuff. So, if you can get your hands on it, give it a try and let the EG know what you think!

Links and Reading
JCP page: JSR 107: JCACHE - Java Temporary Caching API
Group Mailing List http://groups.google.com/group/jsr107
Log issues in the Issue Tracker https://github.com/jsr107/jsr107spec/issues
A very simple demo https://github.com/jsr107/demo
ehcache-jcache - an implementation of the 0.5 specification https://github.com/jsr107/ehcache-jcache

Tuesday, October 23, 2012

The Heroes of Java: Angelika Langer

18:00 Tuesday, October 23, 2012 Posted by Unknown No comments:
, , ,
It is conference season for the "Heroes of Java" and this is a good time to publish another entry. This time I am celebrating the 20th edition of the series with Angelika Langer. Thanks for taking the time answering my questions!

Angelika Langer
© Angelika Langer, All Rights Reserved
is an independent instructor, coach, and author on C++ and Java. She is working worldwide, mainly in Europe and North America. Her areas of expertise include advanced C++ and Java programming, concurrent programming and performance issues.
She is the author of the Java Generics FAQ and co-author with Klaus Kreft of the books " C++ Standard IOStreams and Locales " (Addison Wesley, 2000) and " Java Core Programmierung " (Entwickler Press 2011). She is a Java Champion and enjoys speaking at conferences all over the world. Further on she is an observing member of the ISO/ANSI C++ standards committee and the Java Community Process JCP.

General
Who are you? (Describe yourself in max three sentences)
I'm a freelance trainer and author teaching Java and C++. I'm based in Munich, Germany, but teaching wherever there is demand.

Your official job title at your company?
Since I am self-employed there is no company that could provide me with a job title.  If I wanted a job title I could simply invent one.

Do you care about it?
No, I couldn't care less.  Does anybody care?  It always baffles me when people demand that I provide a job title. Like, for instance, each time I open a bank account or file a tax report I must invent a job title.  So, I'm usually saying "trainer", which at one bank was filed as a sports-related profession, like I were a soccer trainer or something.  I doubt that the bank had any serious interest in my job title; it is just a silly formality.

Do you speak foreign languages? Which ones?
German is my native language and I am able to read, write, and talk in English, but beyond that ... nothing I would dare to use in a business context. Just some rudimentary knowledge of French and Italian.

How long is your daily "bootstrap" process? (Coffee, news, email)
It depends on where I am on a given morning.

When I'm in Munich I brew a cup of coffee, nestle myself into one corner of the couch in my home office, and enjoy the morning sun, if any.  No further bootstrap.  It takes half an hour at most.

There were times when I rushed to the computer first thing in the morning and started reading and answering email even before my coffee had been brewn.  I don't do this any more; it's not healthy.  These days I take care of email and news in the afternoon or evening. My prime time, i.e. the morning hours, are devoted to work that requires substantial amounts of concentration and creativity such as coding, developing concepts, working on course materials, writing articles, etc.  The chores such as email, tax declarations, business correspondence, etc. is routine and done later in the day.

But, most of the time I wake up in a hotel room somewhere, take the usual hotel breakfast, grab my notebook, and walk to the customer site where I'll be running my seminar.  No bootstrap at all.  Email has to wait until evening hours - sometimes even until I return to the office if the seminar is exhausting.

Twitter
You have a twitter handle? Why?
No, I don't use Twitter.  Just the bare idea of reading and writing tweets in addition to what I'm already doing turns me off.  I'm too busy and don't need any additional chores.

Also, I don't like the concept of Twitter.  I studied their terms and conditions and learnt that Twitter claims full ownership of all tweets.  Seemingly, I as the originator of a tweet would not have the right to modify or delete any of my tweets any time I desire to do so.  It's an "interesting" concept that I personally do not feel comfortable with.

I guess, in general, I lack the exhibitionist gene that is needed for exposing one's private parts in social networks.  I do maintain a webpage whose content I own and fully control.  I did create profiles at Linkedin and Xing many years ago out of curiosity, but I haven't used them much.   But nothing beyond that. No Twitter, no Facebook, no nothing.

Work
What's your daily development setup? (OS/IDE/VC/other Tools)
Nothing fancy.  Windows7-64, the latest versions of either Java or C++, an editor, a text processor, a presentation tool for the seminar materials, and that's basically it.

For teaching and writing purposes I'm interested in understanding and evaluating tools and deliberately do not restrict myself to anything in particular.  In general, I prefer open source or free tools (e.g. Eclipse, gnu, OpenJDK, LibreOffice) over commercial tools.  Whatever I present is more helpful to the audience if they can actually and easily use and apply it.  Where is the point in talking about a commercial tool that only few people in the audience will ever get a chance to use?  Also, there are very mundane and practical reasons for not tying myself to anything in particular: I need to stay flexible and must adapt to the customer's toolset, for instance, each time I bring programs for the hands-on part of an in-house workshop.

Which is the tool providing most productivity to your work?
The advent of IDEs was an immense productivity boost.  I still remember the stone age of software development on mainframes when as a developer I had to generate a cross reference of my source code, kindly asked for a printout from the computer centre services, and then flipped pages in a pile of paper at least 20 cm thick in order to figure out which variable or method was used or defined where in the source code.  Crazy!  What a poor use of precious time ...

So, I do very much appreciate the tools we have available these days.  IDEs, browsers, JavaDoc, profilers, monitors, etc.

And the internet, of course.  The possibility to work remotely and easily share information with other people.  The availability of information.  Can anybody remember that entire teams had to share one hardcopy of a manual for information about protocols, APIs, and the like?

Your prefered way of interacting with co-workers?
Email. It's independent of time zones.  I can read and write them whenever I see fit. I can archive them and search them if I can't remember their precise content.  I can't keep all details in mind as I'm almost always handling a dozen threads in parallel.  I need a means to remind myself what I discussed with whom.

Consequently, I hate phone calls; they interrupt my flow of thought and work. Plus, they are more work than an email, because  I need to take notes of what was discussed on the phone so that I can later look it up.

What's your favorite way of managing your todo's?
A piece of paper and hand written notes that I can cross out when done or throw away when obsolete.  I need a visual and physical manifestation of my chores. Same for my schedule. It's a calendar with color-coded entries sitting on my desk.  Everything that I consider important must sit on my desk.  I even explicitly print documents just for the purpose of putting them onto my desk to remind myself that I still must take care of it.

It's similar to the decision between a hardcopy of a book and an e-book.  Both forms have their merit.  I prefer the hardcopy for reading the book and the electronic version as a reference for subsequent lookup.

If you could make a wish for a job at your favourite company: What would that be?
I enjoy being self-employed and already have the job I desire.

Java
You're programming in Java. Why?
Because it is a successful and popular programming language used by many companies and millions of developers.  It would be difficult to make a living by teaching a programming language that hardly anybody is interested in.

What's least fun with Java?
Lack of diagnostics from compiler and virtual machine. I miss a convenient and systematic way of retrieving information regarding compilation, optimization, garbage collection, thread management, and further compiler/JVM internals. But then, it's a property of the respective virtual machine implementation and not of Java, the programming language, itself.  Regarding a programming language such as Java I don't think in terms of "fun".  A programming language is a tool; I simply use it.

If you could change one thing with Java, what would that be?
Let me quote Nick Cave: "I don't believe in an interventionist God."  All decisions regarding Java were made for a reason that appeared good at the time when the decision was made. I respect that.

One could argue that Generics could have been added much earlier, e.g. in Java 1.2 instead of Java 5.  No need for type erasure at that early point in time; generics were much easier to understand and use.  However, given the circumstances, type erasure makes sense to me. That does not mean that I like type erasure or would suggest to change it.

What's your personal favorite in dynamic languages?
Dynamic language?  I strongly prefer statically typed languages.  I feel uncomfortable if both the compiler and the runtime system do lots of stuff for me without telling me what is going on.

Just as an anecdote:  I gave a talk on lambda expressions in Java 8 recently and mentioned that variables from an enclosing context used inside a lambda expression are treated by the compiler as though they were declared final in the enclosing context - regardless of an explicit final declaration being present in the source code or not.  These variables are "implicitly" final.  How on earth would that be helpful?  I would definitely prefer typing those five additional "final" characters to have a visible clue that the variable is final rather than
having the compiler making it final silently behind my back.  It is much clearer and more understandable if the source says what it means.  I'm not entirely against type inference; it definitely has its merits in many situations, but Java was deliberately designed as a verbose language and nowadays this concept is no longer appreciated.

Which programming technique has moved you forwards most and why?
Templates in C++.  Eventually I could get rid of code replication by means of intelligent use of templates.

What was the biggest project you've ever worked on?
I'm not sure.  I guess, the biggest one probably was the compiler family that included the C++ compiler to which I contributed.  So, it was compiler construction, which explains my sustained interest in language and library evolution.

Which was the worst programming mistake you did?
Not testing my programs diligently enough in order to make sure that I detect the mistakes before the client does.

Review: "Java EE 6 Cookbook for Securing, Tuning, and Extending Enterprise Applications" by Mick Knutson

07:55 Tuesday, October 23, 2012 Posted by Unknown 1 comment:
, , ,
This has been in the inbox for far too long. I apologize for not being able to bring this out more timely but beside my "night-job" I also do have a day-job and a family. But this post shouldn't be about complaining but about a new book. Packt shipped it in June this year and I was curious what it will look like. The title is promising an here is my review.

Abstract
This book covers exciting recipes on securing, tuning, and extending Enterprise Applications using a Java EE 6 implementation. The book starts with the essential changes in Java EE 6. Then we will dive into the implementation of some of the new features of the JPA 2.0 specification, and look at implementing auditing for relational data stores. There are several additional sections that describe some of the subtle issues encountered, tips, and extension points for starting your own JPA application, or extending an existing application.
We will then look into how we can enable security for our software system using Java EE built-in features as well as using the well-known Spring Security framework. We will then look at recipes on testing various Java EE technologies including JPA, EJB, JSF, and web services.
Next we will explore various ways to extend a Java EE environment with the use of additional dynamic languages as well as frameworks. The book then covers recipes that touch on the issues, considerations, and options related to extending enterprise development efforts into mobile application development. At the end of the book, we will cover managing Enterprise Application deployment and configuration, and recipes that will help you debug problems and enhance the performance
of your applications.

Book: Java EE 6 Cookbook for Securing, Tuning, and Extending Enterprise Applications
Language : English
Paperback : 356 pages [ 9.2 x 7.6 x 0.9 inches ]
Release Date : June 25, 2012
ISBN-10: 1849683166
ISBN-13: 978-1849683166

About the Author
Mick Knutson (@mickknutson) has nearly two decades of experience working in the IT industry in various roles as Enterprise technology consultant, Java Architect, project leader, Engineer, Designer and Developer and he gained a wide variety of experience in disciplines including Java EE, Web Services, Mobile Computing and Enterprise Integration Solutions. He has also is a frequent conference speaker, does trainings and seminars, publishes white papers and books. Find his blog at http://www.baselogic.com/blog/

The Content
The book has 356 pages. If you take away all the preface and index stuff you end up with roughly 300 pages of content and examples. That is a good number.

Chapter 1 gives a high-level summary of the key changes in the Java EE 6 release. The focus is directed on how these new features will simplify your development, as well as how to improve your application performance.
Chapter 2 covers persistence. In this chapter, we will dive into the implementation of some of the new features of the JPA 2.0 specification, and look at implementing auditing for relational data stores. There are also several additional sections that describe some typical issues encountered, further tips, and extension points for starting your own JPA application, or extending an existing application.
Chapter 3 dives into Security. It looks at the Java EE built-in features as well as into the well-known Spring
Security framework, which is a widely accepted framework for more fine-grained security implementations.
Chapter 4 covers testing strategies: It includes testing-related recipes for testing various Java EE technologies, including JPA, EJB, JSF, and web services.
Chapter 5 finally is about extending your applications. It explore various ways to extend a Java EE environment with the use of additional dynamic languages as well as frameworks (Groovy, Scala, AspectJ).
Chapter 6 calls on mobile device integration. It looks into mobile application development frameworks, talks about native app considerations, testing and environments.
Chapter 7 covers deployment and configuration. It dives into issues and solutions to application configuration. Covering standard Java EE APIs to access external properties files, as well as Groovy-based configuration scripts. Advanced configuration topics include Java Management Extensions (JMX).
Chapter 8 tells you about performance and debugging. It describes the basics needed for understanding performance-related issues in a Java EE application and ways to identify the cause. Performance topics that will be covered include profiling application memory, TCP connections, server sockets, and threading-related problems. It also covers tools and how to extend their capabilities (Netstat, TCPMon, Munin).

Writing and Style
I am probably the worst case reviewer. I'm struggling with my own not native English and try to find good examples to improve my own skills. Measured with that in mind I must say that it wasn't the easiest book I have read. And I don't feel like I could use it as a good example for my own skills. The writing is very precise but the formatting with the "How to do it ..." sections and the many source-code lines in-between makes reading and following harder than it should be. Further on text and lists are cluttered with screenshots, drawings and diagrams. Especially the class diagrams are very fine grained and I was happy to have the digital edition to zoom in. Couldn't compare how the printed version looks like but might be too small. I'm glad there is no list of figures. It would have added another 10 pages to the book. Overall it mostly felt like a transcript of a screen cast.

Conclusion and recommendation
I'm very split here. I first thought this might be a good general introduction. But this isn't always the case. The JPA chapter for example starts with introducing you to the new 2.0 features. So beginners don't get a hint where to start. It simply builds on what you should already know about Java EE 5. I assume that someone who already has a decent background here would be able to use a profiler and install it to an ide without screenshots.
The book mostly covers GlassFish and Tomcat and gives many many examples in both code and visuals. If you are looking for some more comprehensive dictionary this might be the wrong book for you. Even if the title is appealing and stressing the word "Enterprise" it doesn't really cover "Enterprise grade" topics but Java Enterprise Edition applications. This could lead you into the wrong direction if you are buying your books by the title. If you feel like you are missing the link between theory and practice and you believe you need to measure your knowledge, give it a try. It might be the right book for you. I wouldn't recommend it to beginners.

Monday, October 22, 2012

I'm speaking at Jayday 2012, 3 Dec in Munich, Germany

08:57 Monday, October 22, 2012 Posted by Unknown No comments:
, , ,
The year is nearing it's end and there are new speaking opportunities coming up still. Next chance for you to see me speak is at the Jayday which will happen on the 3rd of December in Munich in the Kongressgarten, Munich Germany.

The JayDay Munich is a brand new event! They invited the best Experts: JavaOne Rockstars, Oracle Aces, Java Champions – it’s the quality of the content that counts! JayDay will be a whole day for Java developers, packed with talks and workshops about the Java universe. There’s Web, Desktop, Performance, Concurrency, Tools, Languages and many more topics. Register if you are around.

Java EE Cloud Smackdown
Speaker: Markus Eisele, msg systems ag.

With Java EE 7 cloud should have been added to the specification. Allowing for a broad ecosystem of PaaS providers to jump on the train. Because of the missing maturity and field experiences this has been delayed to EE 8. However there are some offerings on the market already. This talk throws light onto how they differentiate from each other and which ones are the right ones for Java EE. Featuring: CloudBees, OpenShift, Elastic Beanstalk, Jelastic and Oracle Java Service.

Tuesday, October 16, 2012

Trip-Report Oracle OpenWorld and JavaOne 2012

21:06 Tuesday, October 16, 2012 Posted by Unknown No comments:
, ,
It always ends different than thought. I aimed at doing a blog-post per day for my recent San Francisco trip. But it simply wasn't doable. Far too many things going on in parallel and I didn't had a minute to spare during the week. Being back in Germany with an additional week of vacation which should be dedicated to family and overall recovery I found my few minutes to write at least a little write-up. Beware, this is going to be a lengthy post.

Travel with KLM not Lufthansa
My favorite airline is Lufthansa. Due to their outrageous price for the trip I had to take KLM for the 9512 nm (17616 km). This was disappointing from a frequent flyer miles point of view but also interesting to compare the services of the two airlines. I was surprised to see, that KLM has a decent website and after registering I could register everything needed for the immigration procedures with the US. Some hiccups made this experience a little unpleasant. Lufthansa is a little more professional here. Bottom line: I could do everything I needed to do. Travel from Germany to Amsterdam and further on to San Francisco was also good. The Fokker 70 (Cityhopper) is a fast but comparable old machine. Long distance is done with a Boing 747-400. Another elderly machine which has exactly nothing to offer compared with Lufthansa's A380. The good news are: KLM has nice attendant teams on their flights and they did a professional job. A little embarrassing was the fact, that they didn't manage to get coffee on a 6am flight.

ACE Director Briefing
Maiko Rocha - Oracle A-Team
I arrived Wednesday noon in San Francisco. Together with a bunch of Dutch ACED I was transferred to the Sofitel next to the Oracle Head-Quarter. The next two days were dedicated to the annual ACED Briefing which gives a good and comprehensive overview about the important things to come during the next few days. This briefing strongly focuses on Oracle products and announcements. Get some impressions from my blog-post of my first day. This is an awesome event. The two days allow for great networking and meeting peers which I usually only meet once a year. Being next to the HQ also makes it possible to jump over for a quick hello with local friends (thanks @maiko_rocha for the walk around and the coffee!) Also the other way round is possible. I meet Mike Lehmann and Jeffrey West for a beer at the Sofitel and we had a great chat about WebLogic, GlassFish and community in general. Some very exciting things to come. Even if the impact on WebLogic from the complete Fusion Middleware Stack makes quick moves difficult. Another important topic for the briefing is networking. Sometimes over a beer or two.
A big thank you to Lillian for the nice birthday surprise!
A combined birthday cake with Vikki!
It has become a nice tradition to have a final one during the dinner before moving on to the Hilton Union-Square in San Francisco. During the 40 minutes ride we had wifi on the bus and it was a good time to relax a bit before all the excitement finally starts. Vikki and Lillian run the Oracle community programs and both found the time to give a nice little interview to Todd during our stay at the Sofitel. If you are brave enough to watch this through (bad sound quality) you see some fellow ACE Directors talking about what they like. I'm giving the last statement before the closing curtain.



JavaOne Saturday - Geek Bike Ride
Normally the Saturday is the "day-off". For sightseeing and stuff like this. This year it was bike-ride-time. Fabiene organized a follow up from the famous Brazilian Geek-Bikeride and somehow I decided to attend. Short version: It was awesome. In two ways: Many great people and lots of fun. And it was unbelievably exhausting. At least for me. Starting at Blazing Saddles around 11am we went all the way down to the bridge.
 
View Larger Map
This probably isn't the exact route but it should be close to what we did. Roughly 10 miles with some photo-stops on the way. We had a great dinner in Sausalitos and it was a pleasure to meet Alexis again. Thanks again to Simon and Dave who also joined us. Steven Chin and family made this complete.
Dinner in Sausalitos
All the bikes :)

Fog over the bridge
I was completely worn out afterwards and I was glad, we made it to the last ferry which would eventually bring us back timely to join the Java Leads Dinner. We meet Debra and Alex on the ferry (compare debra's blogpost she has a nice picture of me and Simon Haslam). After a quick shower I joined the java.net community leaders for their dinner. Thanks to Sonya for organizing it.

Sonya and Frank in action
I meet soo many new faces these days. Heather van Cura is only one example. Beside this many fellows from the online world which you meet once a year on a conference far away from home. John Yeary is one of those guys.

John and Cagatay
After the official part was over he took me over to the NetBeans party. This is where I first meet Cagatay Civici the PrimeFaces lead. A nice guy. We had some very interesting discussions and I believe we buried all our disputes finally. Thanks for some good discussions to both! And this actually was also the time for the annual Munich get-together. I ran into Adam Bien. Even if we know each other since an unbelievable long time now, we meet exclusively at conferences. Most often at JavaOne. Paul Bakker and Bert Ertmann also have been around the corner in the pub and this was a  very nice community evening. Thanks for the invitation! The evening ended like everyone of the following in my hotel room. One sentence about jetlag and sleep: No matter what you do you feel like running on 90% until you aren't completely adjusted to the timezone. So this was an issue for the complete week. Even if I managed to get around like a normal person and not like a zombie.

Sunday - Breakfast, GlassFish, ACE and Keynote Day
Starting with the annual  DOAG breakfast in the Marriott the JUG and Java Champion Breakfast made this morning perfect. Sharat introduced the speaker of the day and everybody was listening carefully to the upcoming announcements to be made.
Most of them have been disclosed during the week and I believe the details got enough coverage. It was great to meet all the Java Champions and JUG leaders again. Thanks to Martijn, Stephan, Regina, Donald, Dalibor, Tori, Mattias, Kirk, Arun, Fabiene. Can't name them all. one breakfast isn't enough to catch up with everybody. A big thank you to Oracle for bringing all the relevant leads there. Simon Ritter, Mark Reinhold, Mike Lehmann, Cameron Purdy, Georges Saab, Nandini Ramani, Henrik Stahl to name but a few.
After the breakfast I walked down to the Moscone area to attend the GlassFish Community event. Arun gave a nice introduction to all the happenings and roadmap of GlassFish. He introduced the new Java EE evangelists (welcome Reza Rahman and Bruno Borges to the team). John moderated the executives QA which was well attended and the new GlassFish t-shirt was given away! Great day!

Unlike the years before this Sunday was also the official starting point for JavaOne this year. Somebody decided to move the keynotes from Monday to Sunday to free some additional rooms and give meaning to the day. This probably wasn't too bad. Except the fact, that they were held far away from the Hilton in the Nob Hill Masonic Center. Far away is not the right description. This are actually less than 7 blocks. But all uphill. After I made my peace with hills after the bike-ride this was a $5 ride with a cab to get there. There has been good coverage about the keynote already, so I am not going to repeat this here. My personal highlight was Cameron Purdy reflecting about Java EE and the shift towards cloud for EE 8. And yes, this was only because of my avatar on the slides ;)


And of course Arun wearing the new GlassFish T-Shirt! Believe it or not: I like it! Great shirt! Already looking forward to next years contest :)

Arun wearing the GlassFish T-Shirt of 2012
The one thing I didn't like was, that I had to leave early because of the annual ACE dinner. It was held in the St. Francis Yacht Club. An awesome location. Next to the shore with a free and direct view to the Golden Gate Bridge. Overwhelming is not the right word to describe it.

View from the Yacht Club to the Golden Gate Bridge
I only had a few red whine because I had to give my three sessions tomorrow and I don't want to pay for that. And there was another problem: The GlassFish party. This was a day made of colliding appointments. After we managed to get a cab Todd and Bjoern joined me for a ride to the Thirsty Bear. We managed to get in for a last few drinks and saying hello to a couple of people which I didn't bump into before. Only this day would have been good for three separate days. But this is how conferences go, right? Off to bed far too late.
Shaun Smith (EclipseLink) guarding the door ;)
Monday - My Day!
Believe it or not: I was a little bit excited. Not as much as I should have been probably but enough to make this kind of an adventure. I have spoken on different conferences before and even English wasn't a problem anymore after spending a few days with native speakers already. I can't remember if I had breakfast. The whole morning was dedicated to polish the slides and walk around the Zone for a coffee or two and prepare my 11am slot with Masoud.
Thank you IBM for all the #Coffee+++
Staying at the Hilton with most of the buzz happening there it is still a challenge to reach out to Nikko and Park55 for the other sessions. We have been put to the Park55 with our session and it took me quite some time to find the room. The on-site direction-guys did send me from one to the other and I managed to get there more or less in time. After some preparations with the A/V guy, we started timely and had more than 40 attendees listening to what we had to say about security, OWASP and GlassFish. It was my second run through the first part but I managed to polish some of the rough edges and could hand over the second half to Masoud. After all I was happy with the show and hope that the attendee feedback will mirror this to a certain extend. Thanks everybody for listening. You can download the slides and audio recording from the session on the conference website.

The next presentation was scheduled for 13:15. This was an Oracle Open World break out session for which I had to prepare my experiences with the Oracle Java Cloud Service from a customers perspective. Oracle's Sandeep Banerjie lead the session and gave a more general introduction into Oracle's new offerings. Followed by Matt Terry (Kony) who gave an overview about their product and how they run it on the Oracle cloud. After that I had my 8 minutes to talk about Java EE capabilities and influences by the cloud offering for projects in general.
The session went well but we didn't had too many attendees. Which wasn't surprising after all because it was more like a marketing session. I don't want to judge here, it is also possible that there are far too many parallel sessions at OpenWorld which makes it very very hard for everybody to get a working schedule with all the right interests. A big "Thank you" goes to Björn who was sitting in the audience and showing his support! :)

A hurry back to "The Zone" to the pre-briefing of the Webframework Smackdown BOF later the day. It was a pleasure to meet James Ward and Graeme Rocher. Ed and Santiago didn't manage to meet us but we synced earlier to talk about the stuff to come and how I want to do this. The following few hours were dedicated to walking around the exhibition hall and checking back with distant friends from different companies. The exhibition halls were located at last years keynote location and looked very good. Condensed information by the usual suspects. But also some (at least to me) more unknown companies. Thanks to the Cloudbees guys for some nice t-shirts and great chats with Steven and Mark, thanks to the JRebel guys for some awesome games and entertaining demos. RedHat was doing the annual booth conference thing. To me this didn't work this year. To less space, too much distracting things happening around. The whole thing taken to a next level happened at Moscone West. The Oracle OpenWorld exhibition hall was packed and all the major companies attending JavaOne had a double to tenth the size booth over there. But back to my Monday. 20:30 was smackdown time. The latest BOF I ever attended. But, believe it or not between 350 and 400 attendees made this a great event. Missing a panorama feature in my stupid BlackBerry I can only show you the right half of the room minutes prior to the start. And people were still flowing in. Awesome! Thanks to all the panelists and the great audience who made my job as a moderator easy. The Audio recording has been posted to the conference website.


What is left after such a successful day? A great party! First the JUG and Java Champions get-together which was nearly over as I arrived and afterwards the legendary JRebel guys which gave a nice little party in the presidential suite of the Hilton. The "RebelHideout VIP party" was a success. Great people, great drinks, great discussions. A little noisy ... and we had to leave early :)

JRebel meets Jelastic :)
Tuesday Technical Keynote
Tuesday started relaxed. A nice breakfast and nothing exciting beside some sessions and some personal appointments. Followed by the OpenWorld technical keynote about  Oracle's Cloud Platform and Applications Strategy given by Thomas Kurian, Executive Vice President, Product Development. Normally I wouldn't count this as too exciting but this time I had to play a tiny little role in there. As a customer reference. The recording took place a week before OpenWorld in Munich and I was excited to see my face on the big screens. You probably know what it feels like watching a recording of yourself. It was the same with this one. But it was huge :) Thanks again to Björn for taking this short video. If you are interested in the complete keynote get it from Oracle On Demand.



The "meet the Java EE 7 Spec-Leads BOF" lead by Linda and Bill was the next highlight on the schedule. Most of the Java EE spec leads attended a great panel discussion and received plenty of feedback from the audience.

Directly afterwards we moved to the JCP annual gathering which was combined with the JCP awards ceremony. I had a nice chat with Mark Little and Pete Muir over a beer and together with Alex we moved over to the RedHat party which should be the final point for the evening. It was good to join Aslak, Lincoln and all the other RedHat guys for a beer or two. I wish I have had more time talking to Jevgeni and Martijn and Ben and Trisha. And the RedHat community guys Rayme and Ray. But we all have the same problem during those events. Too many people to say hello to and too less time for a longer talk. Anyway, thanks for hosting the party RedHat! It was great!


Wednesday - Appreciation Event
The Wednesday was all about personal meetings and some sessions. Running into people everywhere. The most exciting aspect of JavaOne. I had nice discussions with strangers about the right web framework, about the future direction of Java EE (why cloud?) about JSF and ADF and last but not least with some of the nicest persons in the universe: The WebLogic PMs! Thank you sooo much Frances! It was great meeting you! After a day of walking between Moscone and Hilton I was worn out and the party didn't even start over. I meet David Blevins for a beer in "The Zone" and we had a great chat which ended by teaming up with his wife Amelia and Bruno Borges. Together we headed over to the big party on the little Island.



Bruno, Markus, David
A marvelous evening! We had a great time with a couple of red wines and beer and great music! You guys rock! Thanks for that night! If you ever need someone to party with, give me a call!

The rest of the week
JavaOne was basically over for me after that. The following days were reserved for sightseeing and some DOAG internal discussions and preparations. Thanks for your fellowship Björn! OpenWorld and JavaOne wouldn't be the same without you! I'll leave you with some impressions from a city which get's turned upside down during a few days in September!

Wonderful view on the skyline

A nice car plate

Oracle Music Festival on Union Square

The Blue Angels flying over SF