About software development for the enterprise. Focus on Java EE and more general Java platforms.
You'll read a lot about Conferences, Java User Groups, Java EE, Integration, AS7, WildFly, EAP and other technologies that hit my road.

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 Markus Eisele
, ,
...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 Markus Eisele
, ,
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 Markus Eisele
, , ,
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 Markus Eisele
, ,
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 Markus Eisele
, , ,
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 Markus Eisele
, , , , ,
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!