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.

Friday, July 29, 2011

What's new in Java 7? - Part two

20:04 Friday, July 29, 2011 Posted by Markus Eisele
,
The second part of my German article series on heise.de/developer went online today. A little bit late as I hoped it to see yesterday already, but I know the reasons and if you are reading this: Keeping my fingers cross for you!

The second part is about fork/join and NIO.2. So, you get a very comprehensive introduction into the new features in this two areas including some code examples and explanations. I'm looking forward to your comments and hope you enjoy it. Read it; for free, German and online http://heise.de/-1288272/ftw


Don't Use Java 7? Are you kidding me?

19:55 Friday, July 29, 2011 Posted by Markus Eisele
,
Java 7 was released yesterday and some guys from the Apache Lucene & Apache Solr community quickly came up with a couple of issues which lead them to the point where they are actively rejecting Java 7 and advice anybody else to to likewise. Even a general warning was issued by Apache Lucene PMC Member Uwe Schindler. But what exactly is wrong with Java 7 and why shouldn't you use it after waiting nearly five years for it? Let's look at this.

It's not about Java 7 but about the JVM
First of all, it's not about Java 7 in general but about the HotSpot JVM. The GA release contains three bugs ( 7070134, 7044738 and 7068051) which could affect the users with either JVM crashes or wrong calculations.

Hotspot crashes with sigsegv from PorterStemmer
The first one is about a wrong compiler optimization that changed the loop optimizations. The problem is, that this JVM feature is on by
default, so you have to explicitly disable it by adding -XX:-UseLoopPredicate as an argument. If you are willing to try this by your own, grep the Stemmer.java, a reasonable thick word database (there are some out there) and compile and run it against the text file. What you will see is, that your JVM crashes with a fatal error.

# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000026536da, pid=5432, t
id=6568
#
# JRE version: 7.0-b135
# Java VM: Java HotSpot(TM) 64-Bit Server VM (21.0-b05 mixed mode windows-amd64
compressed oops)
# Problematic frame:
# J  Stemmer.step4()V

It directly happens during code execution, so you will not experience this with JDK 1.6. Especially Lucene has some more recent work going on using a more flexible indexing mechanism based on an algorithm
called PulsingCodec especially this is heavily affected by the bug.

Loop unroll optimization causes incorrect result
This bug refers to the "wrong calculations" part of my introductory section. In very rare situations when OSR (On-Stack Replacement)
compilation is done for nested loops, the control flow breaks and the memory dependencies are not taken into account. That leads to duplicated clones which alter results. (If you like to know more about
the compilation details, have a look at this older overview (PDF)
A minimal workaround is to add -XX:LoopUnrollLimit=1 as an argument.

Clone loop predicate during loop unswitch
This is a bug which relates to an older feature request. It's
introduction finally lead to a new bug. Invalidated jvm stats lead to a jvm crash with loop optimizations again.

Bottom Line
You could be affected. At the moment basically only if you have some parts in your software that make big use of the optimization methods which are broken. But for the average use cases this will not affect you. In general this also will affect Java 6 users but only if they use the optimization options, which are on by default with Java 7 (-XX:+OptimizeStringConcat or -XX:+AggressiveOpts) These problems were detected only 5 days before the official Java 7 release, so Oracle had no time to fix those bugs. At the moment it seems as if they are trying to get this into either the next or the second service release. And last but not least, the source code is open so anyone stubborn enough to dig into it can make a fix.

Thursday, July 28, 2011

Java, GlassFish, JavaMagazin ... all one Version-Number up!

20:11 Thursday, July 28, 2011 Posted by Markus Eisele
, ,
What a day. All started roughly two hours ago. Don't know, if it was Mark Reinhold or Henrik Ståhl or Terrence Barr or even the Oracle press release. But no matter who was the first to push the news: Java 7 is now GA. The last build 147 was the only release candidate (RC) and it seems as if it passed all the tests in time to be shipped right in time for the long time ago announced date.
Today. Four years, seven months, and seventeen days since we welcomed Java 6 this is the first official Release a) after a f***ing long time and b) which has "Oracle Corporation" as java.vendor and java.specification.vendor property value.
If you followed the story a bit, you know that this is worth a wonderful big congratulation to everybody involved! Inside Oracle or not. This was the release I have been waiting for since some time. And I honestly have to admit that it was not mainly because of the features but because of the whole political situation. Thanks OpenJDK Team! Great!

Java Facts and Figures from the press release
97% of enterprise desktops run Java
1 billion Java downloads each year
9 million developers worldwide
#1 programming language (TIOBE Programming Community Index)
More than 3 billion devices are powered by Java technology

Press release: Oracle Announces Availability of Java SE 7
The Java 7 Release Webcast
The Java Source blog
Java SE Documentation: APIs, Tutorials, Technical Articles, License Terms
The open source repositories: OpenJDK
Follow Twitter @java and use #java7 or check out the Facebook page
Catch up with The Java Spotlight Podcast
Download Java 7 for your platform!

GlassFish 3.1.1 is GA!
The next big news! I don't know, if it was clever but I guess, they were forced to do this. Next to the new Java the next GlassFish release went life, too. No big new features (beside extended platform and Java 7 support) but hundreds of bug fixes in this release and some updated versions of RIs (Weld!). Have a look at the release notes (PDF) for all details.

Now you can go and download the Java Platform, Enterprise Edition 6 SDK Update 3 (with JDK 7)

Oracle's Java Magazin is GA!
The premier issue of the new Java Magazin is out. It's the new magazine "By and for the Java community". As far as I know, this is the first community magazine available from Oracle directly. Until now, this was a domain of the user groups out there. That's a sign how valuable the Java Community is for them. Beside the typical authors you see a lot out there, Justin Kestelyn managed to get some new, big names in it and the overall look and feel is great! It's a pleasure to read and I am still a bit jealous that he did not ask me for adding my two cent to the first issue. Ok, let's see if I make one of the next ones :)
Get your copy today

Wednesday, July 27, 2011

Priorities, Java, Community and Oracle - Cracking the Code

07:39 Wednesday, July 27, 2011 Posted by Markus Eisele
, , , ,
OSCON 2011 is going on at the moment. One of the conferences I would have loved to visit. This did not work out this year, but today I stumbled upon a video of Steven G. Harris Java Keynote there. The title is a theme we had back in the days of the beginning merger. Everybody thought about Oracle and the way they handle or let's say make money of open source. Back than it was:
"We are also strong believers in open source and actively participate in numerous communities supporting open source development." (M.Lehmann)
Read: We are here, but we don't want to say, that we basically don't have a business model with open source. We are simply using it as part of our products. I believe Oracle was afraid of telling the truth. Even if the truth isn't too bad at all. In direct comparison to former Sun Microsystems, Oracle is and always has been focused on customer solutions and products. They never had the goal to "sell open source" (J.Schwartz) as part of their business model. And that clearly is the reason for Oracle being successful. And Sun not.
With this keynote, Steven touched the most interesting parts about interaction and integration of the OSS community into Oracle's organisation and strategy. And to me, this was the most open, honest and complete presentation I have seen on that topic from an Oracle VP.

What drives Open Source at Oracle
The most exciting part of the presentation was the part about Open Source decisions made at Oracle. Steven explained, that they are driven by Oracle's Lines of Business.

And this is relevant to the behavior we observe looking in. At Oracle LoB make decisions around these open source projects. Those are Oracle decisions executing within that overall complete, integrated kind of strategy. In contrast to Sun, they are not driven by a larger scale open source strategy. So the separate LoB don't talk too much to each other if they are thinking about doing new features.

Communication
Steven also picked up a cartoon floating around the internet since a few weeks. And wow. I was surprised about his interpretation and openness in general.

According to him, communication at Oracle has traditionally been very structured.
"We definitely have some challenges in learning how to communicate and work with the open source community." (Steven G. Harris)
But he told us, that the organization shown in the cartoon is not like Oracle :) And he promised that the communication with the community IS getting better! And it will continue to get better with the input they get back from the community.


"Our goal is, that our Open Source developers should behave like Open Source developers. They should communicate with the community, transparently, openly and so on." (Steven G.Harris)

"We’re not where we should be, but it has gotten better and it will get better. ” (Steven G.Harris)


Oracle's Products and the OSS Community
He also gave a very high level introduction about how the Java community relates to the overall product strategy.
Given the following slide it's obvious, that Java is important to Oracle's products. The OSS community is incredibly important to Java at all.

For that strategy to succeed; Java has to succeed. Oracle prioritize these areas because it helps to grow their business.
But let me make a break here. This is the slide, I am least happy with. There is one point that should be changed in my personal opinion. This little red arrow down from Oracle to the JCP scares me. If this is meant to be the arrow for "being the steward and running the JCP": I am fine. If this means: "We are driving specifications to fit our needs."; We need to talk. As a major user of the Java ecosystem Oracle has any right to contribute to specifications and standards. But there is still the little yellow warning light blinking if I see potential Oracle solutions within the industry standard. So, I would prefer some truly independent architecture board to guard the specs.

Java Priorities at Oracle
"We are a profit-making entity. [...] We do not apologize for this at all [...] but this isn't our highest priority [...] relative to Java." (Steven G. Harris)


The complete Keynote
The JavaSource blog also has a very short cover of this keynote.
Find the complete keynote on Youtube. The pictures of slides are taken from this video and are probably (C) by Oracle.

Wednesday, July 20, 2011

Release It! Monitoring Performance in Production.

16:00 Wednesday, July 20, 2011 Posted by Markus Eisele
, ,
We all do software development for a living. And we most often hit the day where we have our latest project up and running and the first customers using it. Not a big surprise, that something goes wrong. Has never been tested or is slow in general. The best prevention for this is to design some kind of monitoring into your application.
And it's not meant as a simple infrastructure monitoring but as a basic part of your development. Why? Because most of the time you will find users complaining about function x or y is slow. You will never be able to answer to this complaint without knowing about the real duration in your code. This is the right stuff to implement as a cross cutting concern. So the right place to put all this would be an interceptor. This longer article is walking you through the basic ideas and concepts. You can have a look at the complete sources by downloading them (see below). Let's go.

Basic Idea
Beside the performance information you most often also need some kind of general production logging. So we are in need of some special @Logged and @Timed annotations which should handle this for us. Further on, we are not simply going to monitor any single method but only the ones we need. The output should go to a database because we do not have access to our logfiles for different reasons. Applied to a local bean this should look like this:

package net.eisele.service;
...
@Stateless
@LocalBean
@Logged
public class BusinessBean {
...
@Timed(Task.SOME_FANCY_METHOD)
public String businessMethodTakingTime() {
...}
..
}

We need a couple of statistic information. The report should look similar to this one. Containing the total invocation count, the average execution time in min:sec:milisec, peak times, the average without peak, last execution time and a accumulated total execution time.


The Datamodel and Access to it.
Let's start with your favorite IDE and add a Java EE 6 Web Project. That should be sufficient. Let's add a base package (e.g. net.eisele.statistics) to your source packages and create a TaskStatistic entity in a sub package called "store". Now add all the attributes defined in the table (compare screenshot). And add an empty public constructor and a constructor with String description, String hostname, long timeMillis attributes. It should also have a nice little NameQuery which should bring up all Tasks by description (which is in fact the PK here)

@NamedQuery(name = "TaskStatistic.BY_DESCRIPTION", query = "select t from TaskStatistic t where t.description = :description")

If you IDE did not ask you weather it should create a persistence.xml for you. Do it yourself. Transaction-type needs to be set to"JTA". It should reference a jta-data-source (e.g. jdbc/statistics) which should exist with your application server of choice, too. As a supporting actor we need the Task enum. It contains all the needed keys (Description) for the methods you are going to monitor. This is also a good place to put the hostname resolution:

public enum Task {

SOME_FANCY_METHOD("some fancy method");
...
try {
hostname = java.net.InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException e) {
hostname = "N/A";
}

Now we reuse the simple CrudService from Adam Biens Java EE 5 pattern. And also put it into the store package. Another small addition here: I created a little utility class assisting me with the timing stuff. A StopWatch cat start, stop, reset and get the elapsed time.

Sending Monitoring Events
I would love to have some kind of events being fired and processed by a separate handler for every call we should log. Let's start by implementing the MonitorEvent with it's payload (a Task and the elapsedTime). Now we need a MonitorMessenger which can start a Task and send the event in it's finished method. To do this, it needs to have the MonitorEvent injected.

@Named
@Stateless
public class MonitorMessenger {

@Inject
Event events;
...

public void finish() {
events.fire(new MonitorEvent(task, watch.getElapsedTimeMilli()));
}
}

If the sender is in place you need to take care for the receiver. Implement a simple MonitorService which gets the @Observes MonitorEvent method. It should be @Asynchronous to be a little more responsive if the Database experiences any delays.

@Stateless
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class MonitorService {
...
@Asynchronous
public void listenToMonitorEvent(@Observes MonitorEvent monitorEvent) {
...
}

All left to do now is to add the logic for persisting the collected statistics. Inject the @EJB CrudService and check if there is an existing entry for the PK with your DB. If not, create a new TaskStatistic entity and do an update on it. But what about all the "average" stuff we have in the table? That's easy. Add a little update(long time) method to your TaskStatistic and let it do the job before updating.

public void update(long time) {
lastTimeMillis = time;
synchronized (this) {
totalTimeMillis += time;
averageTimeMillis = totalTimeMillis / ++count;
if (peakTimeMillis < time) { peakTimeMillis = time; peakDate = System.currentTimeMillis(); } if (minTimeMillis > time) {
minTimeMillis = time;
}
if (count >= 2) {
averageTimeWithoutPeak = (totalTimeMillis - peakTimeMillis) / (count - 1);
}
}
}


The Interceptors
The only thing left to do now is to implement the custom interceptors. A lot has been written about interceptors and CDI. If you start using it, you will get into trouble. A couple of things are still very bumpy and you need to make your way through. Ok.We'll try. Add an empty beans.xml to your WEB-INF folder. Add three interfaces to a subpackage called interceptors. We need: The Logged annotation:

@InterceptorBinding
@Target({TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Logged {
}

the Timed annotation:

@Retention(RUNTIME)
@Target({METHOD})
public @interface Timed {
Task value();
}

Only thing missing is the glue in between. The

@Logged
@Interceptor
public class LogInterceptor {
@EJB
MonitorMessenger messenger;
...
}

Within it's

@AroundInvoke
public Object intercept(InvocationContext invocation) throws Exception {
...}

method you get a hand on the Task and you can start the timer with the help of the messenger.start(task). If everything is done, simply call messenger.finish().
Perfect. That's it. Now you can start collecting your runtime stats. There is some more stuff to do: Put your TaskStatistic.ALL results to the frontend and display a nice table. Primefaces is useful here. You could also think about doing some charts ... There is always room for improvement!
Find those stuff in the NetBeans project attached. Hope, that was helpful. Let me know what you think!

The sources
Download the complete NetBeans project if you like. Don't forget to add a local Glassfish 3.x server as a Service and change your Database settings with the glassfish-resources.xml file!

JavaOne is looming on the horizon - 6,393,600 seconds to go!

08:01 Wednesday, July 20, 2011 Posted by Markus Eisele
, , , ,
And it is rapidly approaching. 106,560 minutes or 1776 hours or rounded 10 weeks until the industry meets again in San Francisco! If you were waiting for the content catalog, it is finally there, too. With over 400 Sessions in 8 tracks this will be a huge event. As you know, I was helping to shape the Java EE Web Profile and Platfrom Technologies - Track. It has 71 sessions, 3 panels, 3 hands-on-labs and 38 Birds-of-a-Feather sessions and here are my personal highlights:

Conference Sessions
This years topics clearly are Java EE 6 and 7. Beside introducing the new specification with it's latest developments you can get involved with all the latest Java EE 6 best practices from the most well know experts. Let's start with the new products to look at:

Application servers
Beside the fact, that the industry still lags some Java EE 6 support with the commercial vendors, some OSS alternatives have grown up. Most notably the latest AS7 by JBoss and the Apache TomEE Web Profile container.
- David Blevins from the Apache Software Foundation introduces you to Apache TomEE Java EE 6 Web Profile (23680)
- Andrew Rubinger from the JBoss by Red Hat, get's you started with Death of the Slow: JBoss AS7 (25288).

Java EE 7
There is plenty of room for the upcoming Java EE specification this year. Beside the minor updates to existing specifications we also have some new stuff in stock for you.
- Manik Surtani, Red Hat Inc. A Tale About Caching (JSR 107) and Data Grids (JSR 347) in Enterprise Java (23382)
- Danny Coward, Oracle Concurrent Java EE Programming (25085)
- Marina Vatkina, Oracle Enterprise JavaBeans Technology 3.2 (23180)
- Peter Muir, Red Hat, Inc. Introducing Contexts and Dependency Injection 1.1 (22480)
- Marek Potociar and Santiago Pericas-Geertsen both Oracle give you all the latest features of JAX-RS 2.0: What's in JSR 339? (22800)
- Linda DeMichiel, Oracle updates you on Java Persistence API 2.1: What's New and What's Coming (24981)
- Ron Monzillo, Oracle The Java Identity API (25171)
- Cameron Purdy, Oracle and Greg Luck, Terracotta The New JSR 107 Caching Standard (24223)

GlassFish
Being the reference implementation for Java EE it's not a big surprise to see some more details about GlassFish. It's not half as much as I would have liked to see but that's probably ok for the majority :)
- Ludovic Champenois, Oracle gives you the latest insights for the GlassFish REST Administration Back End: An Insider Look at a Real REST Application (25008)
- Sanjeeb Sahoo and Jagadish Ramu both Sun, an Oracle Company introduce you to Handling Service Orchestration in the Cloud for GlassFish (25360)
- Masoud Kalali, Informatics Matters takes care about Secure Java EE Applications on GlassFish 3.2 (26420)

Arquillian
I'm proud to see Dan and Aslak presenting on their baby. Arquillian is behind this one and you should reserve the date!
Dan Allen and Aslak Knutsen both Red Hat Real Java Enterprise Testing (23813)
If you have some input for both, you can also reserve the time for the corresponding BoF (Arquillian: The Extendable Enterprise Test Platform, 24121)

BoF sessions
Some proposals didn't make it as a conference session (for many reasons, I can tell you :)). But that's not sad because we still have the BoFs for a more open discussion. And there are quite a lot this year. Here is a very short list of my favs:

Beginning with the GlassFish Community Event (23426), which is hosted by Anil Gaur and Alexis Moussine-Pouckine (both Oracle of course). You should (!) sign up in advance for this one via facebook (more details on aruns blog.)

Jevgeni Kabanov from ZeroTurnaround ius willing to discuss the results of their recent survey about How Do You Update Your Java EE App in Production? (19240)

And you need to see Lincoln Baxter III (Red Hat) talking about PrettyFaces Beautiful Java EE: URL Rewriting for the Next-Generation Web User (24507)

And we also have some chance for the community to give their valuable input for the next Java EE specification. Don't let this chance pass:

Edward Burns spec lead JSF from Oracle is willing to discuss the JSF Status and receive some community Input (25147)

Peter Muir and Manik Surtani, both Red Hat Inc. talk with you about Making Java EE Cloud-Friendly: JSR 347, Data Grids for the Java Platform (23380)

Marina Vatkina from Oracle and the EJB 3.2 EG are willing to answer questions around EJB 3.2 (23166)

Linda DeMichiel from Oracle is ready to receive feedback about Java Persistence API 2.1 (24923)

And there also is a chance to give feedback to Nigel Deakin (Oracle), Reza Rahman (Caucho Technology) and Clebert Suconic (Red Hat) about JSR 343: What's Coming in Java Message Service 2.0 (24580)

Hands-On Labs
Only three this year. I mean: this is only for the Java EE part. So don't be afraid. There is a lot of stuff to discover. JavaOne has 13 hands-on-labs overall. If you are beginning with Java EE, you should attend the following two. Sign up early, as there is not infinite space available in the rooms:

Alexis Moussine-Pouckine from Oracle gives you a kick start with Beginning Java EE 6 (23421). A two hour introductory session about everything you need to know to get started.

The second by Byron Nevins and Arun Gupta, both Oracle introduce you to Develop, Deploy, and Monitor a Java EE 6 Application with Clustered GlassFish 3.1 (19120)

Registration is open
If you like, what you have seen: Register today! Until July 29, 2011 you get the Early Bird which saves you $400.

Make plans!
If you are going to make your travel arrangements don't forget to read my post about further links and tips from last year. And remember to take care about the 10 Ways to make the Best out of a Conference.

Wednesday, July 13, 2011

Some free fun stuff - glassfish

11:45 Wednesday, July 13, 2011 Posted by Markus Eisele
, , ,
Have you seen the JBoss AS7 being released yesterday? Nice work! My congratulations to the whole team! Looking forward to the full Java EE 6 profile. There is one thing I am jealous about: They have those fancy wallpapers up in different resolutions. And to me it seems as if the GlassFish community is somehow missing a little bit of visual creative people. To be honest, I'm not the one claiming to be the most creative graphic designer out there, but if there is time, I'll try to do my best. Let me know, what you think!

[800x480 | 1024x768 | 1440x900 | 1600x1200]
Marker. Background (CC BY-NC 2.0) by Rowen Atkinson

[800x480 | 1024x768 | 1440x900 | 1600x1200]
Metal. Background (CC BY-NC 2.0) by ImageAbstraction
[800x480 | 1024x768 | 1440x900 | 1600x1200]
Zen. Background (CC BY-NC-SA 2.0) by ZenOptic

Friday, July 8, 2011

JavaOne 2011 - Java EE Web Profile and Platform Technologies

09:12 Friday, July 8, 2011 Posted by Markus Eisele
, ,
Wow. What a day. The Java 7 launch event generated a lot of buzz around Java again. Finally. Java is breathing again and we all enjoyed it, right? But the main Java event is still going to happen. And it's web-pages have been updated, too :) This will be this years JavaOne. After weeks of preparations and hard work, the content teams finished their first rounds. Even if I can not tell you any details about the Technical Sessions, Birds of Feather, Panels or Hands-on labs at the moment. There is one thing I can tell you: It will be awesome! Packed with all the latest information, trends and best practices from the best know speakers around.
You ask, why I know this? This is pretty simple. I'm proud to be a member of the external reviewers team for the Java EE Web Profile and Platform Technologies Track.


Don't miss the chance to checkout the (high level) schedule which already gives a good overview of the things to come from Sunday to Thursday! And The Zone pages also have been updated. I am really looking forward to it. Even if I am slightly disappointed to see it happening all over Hilton San Francisco, Hotel Nikko, and Parc 55 Wyndham again. Good news is, that there'll probably be more separation in general from the OOW/Oracle Develop parts. Let's see.
If you have not already done so, register.
Planning to go? Have a look at my recent post 10 Ways to make the Best out of a Conference.

Thursday, July 7, 2011

Introducing Java 7 - Moving Forward - 7/7/11 7:00 AM

16:00 Thursday, July 7, 2011 Posted by Markus Eisele
, ,
It would have been awesome :) 7/7/7 or something similar. But even if I believe, that the Oracle marketing guys fought until the last minute against M.Reinhold and A.Messinger they obviously lost. The final GA date for Java SE 7 is and will be the 7/28/11. But let's forget about this. Most important are the parties happening around the world.
First and foremost the Java User Groups Gear Up to Celebrate the Java 7 Launch and there are other Oracle sponsored events or even better some mini conferences. Introducing Java 7 Webcast: Moving Java Forward. There should be time to attend. If you are reading this, there are still two more hours to go until the webcast starts. And here is my little contribution. Preparing a mini session about the new Java features hosted by my company, I decided to put up the slides. So, if you are into learning something new: Here you are. A comprehensive overview about Java 7! Like to read your comments! Have a great party!

Introducing Java 7
View more presentations from Markus Eisele

UPDATE 7/8/11:

Here are the slides for the session on:
Making Heads and Tails of Project Coin: Small Language Changes in JDK 7 (PDF, 500KB)

The New File System API in JDK 7 (PDF, 473 KB)

Divide and Conquer Parallelism with the Fork/Join Framework (PDF, 1632 KB)

A Renaissance VM: One Platform, Many Languages (PDF, 802KB)

Oracle is committed to Java: the technology, the community, the Java Community Process (JCP), and the entire ecosystem focused on moving Java forward.
Watch this Webcast to find out more about the features of Java 7, hear from technologists at companies that use Java technology, and learn through a series of technical presentations and a panel discussion.

The Webcast reply is available in the meantime:



What's new in Java 7? - Part one

13:17 Thursday, July 7, 2011 Posted by Markus Eisele
,
A short information for my German readers. A new article series of mine started at heise developer channel. This is all about Java 7 and it's new features. Some might think, this is a good timing :) it is :)
Read through it: It's free and available online http://heise.de/-1274360
btw: I even did the picture myself at last years JavaOne! :) I'm proud!

Tuesday, July 5, 2011

10 Ways to make the Best out of a Conference

09:42 Tuesday, July 5, 2011 Posted by Markus Eisele
, ,
It's conference season. At last to me it seems like this, reading through my own blog or even looking at the Aquarium or over to Arun's Miles to Go blog. So many stuff to see and learn. Coming back from the recent KScope 11 conference in Long Beach I finally relaxed a bit and thought about the things that I find most valuable at conferences and the best ways how to make most of your conference days in general. And this basically is not a matter of the conference you are attending but about you and your motivations.

Plan and Prepare.
The most basic part of attending is the planning process. Find out as much as possible about the conference and the location prior to attending. Where does it happen? How will you get there? How much time difference will you have to handle? Where to stay? What's around? Is there a chance to contribute? Are my favorite vendors there? Does someone else is planning going there? Are there any other travel related things to keep in mind (e.g. power adapters)? The more you know, the better and safer your travel will be because you don't have a feeling of uncertainty which prevents you from enjoying the time.

Bring down your todo-list to zero before!
There is one thing I can tell you: You will not have a single valuable moment at a conference as an attendee, if you are always trying to get things fixed from remote. If your project doesn't allow you to leave. Stay! Skip the conference! Being able to go implies, you have taken every action before to hand over open tasks to colleagues or closed them yourself. You could of course be reachable. Nobody is forcing you to shut down the connections to the home base. Simply make sure you don't have any significant problems left to handle.

Get clear on what you want!
The second step is to get clear on what you want. Set yourself clear goals that motivate and inspire you to attend the conference. Now look at the schedule. They get published (even partly) quite early and you can get a good impression about the content that you have to expect. Most conferences offer far too much stuff to cover. So you have to find your basic stream/track to follow. If there isn't a dedicated track for you, you're probably looking at the wrong conference or you need to pick the needed parts.

Make a schedule for yourself.
If you are done setting the basics, you can build your own schedule. Look at pause times and locations. Not only the biggest conferences tend to move into more than one venue. So you have to keep an eye on the time it takes you to get from one location to the other. Also plan to include additional time for discussions afterward. You always find some controversial sessions which content will lead to further discussions with either the audience or the speaker. If you are going for them, plan the needed time. And don't forget to keep an eye on the opening hours of the exhibition hall or some extra time needed for demos. And most important: Plan your spare time. Find the parts of the conference you probably could skip, if you are in need for some sightseeing. Especially those conferences happening in far away places have the quirk, that you will spend too much attention on planing sightseeing on-site. Better put this into the overall planing and preparation phase. If not possible, try to plan the spare time for it and ask the concierge or some locals for their help. Having this planned helps you staying focused on the content parts of your conference.

Socializing Rules:
Another possible addition to your overall schedule could be some time for socializing. As you might guess, this is not really plan-able. You simply don't know whom to meet and which friends to find over there. Instead try to be open and outgoing generally. You will not make any new connections if your are walking from one session to the other having the chin on your chest. And don't forget to say "hi". Everybody is wearing name-tags. Use them. Everyone is there to meet people and find new ideas. People at conferences want to meet whether you are a PM or an energized newbie.

Be inspired and open to new ideas!
Conference are popular because it’s pretty hard these days to stay up to date in any field by sitting at your desk reading magazines. So the conferences are the place to find out first and foremost about new stuff. Don't go there if you are not willing to change your mind or find new ideas. Learn about approaches taken by others. Hear about best practices from practitioners.

Contribute!
Most conference panel sessions and even some keynote sessions encourage participation. For panels this could mean, it's a good idea to approach the speakers or moderators beforehand and don't wait in line afters. Tell them about your interests and instead of leaving boring or slow moving discussions: take control! If someone talks off-topic: tell them! If you’re bored, others are too! Try not to ask questions that only matter to you. And try not to ask vague questions for which there is no answer that matters. If possible, try to make panelists take a stand. Controversy is exciting!

Work hard. Play hard.
If you have a packed schedule and you are soaking in all the news all day, you are definitely working hard. So you have enough reasons for playing (a bit). Beyond the serious stuff in the conference hall, there are usually dozens of parties and events going on. Some during the day, but most of them in the evenings or even nights. Companies often have contests and concerts at clubs, restaurants or hotels nearby. It’s a great way to meet people and socialize.

Bring something home.
If you are away for a conference or two a year you are probably leaving someone behind. Mostly this will be the rest of your family. Wife? One or more kids? You miss them, right? Yeah, you do. But they also do. Instead of thinking about them every minute and sending tons of text messages home, find some swag to bring home. There will be something for your to grep at the exhibition hall, at a gift shop, at the airport.

Make the value of the conference transparent to your employer
Reading a magazine regularly is far cheaper than attending a conference. Taking every little bit into account (travel, hotel, pass) you quickly end up with quite a sum. So, if you don't pay yourself make sure to bring back some value for your employer. Being a speaker this could be easy. Tell him how many people attended your session, where you put the slides, where you were walking your company t-shirt around. If you are attending and contributing like a regular attendee, think about having some public talks in your company about what you learned. Prepare some lessons learned for your fellow co-workers or even write an article for your companies own magazine. As said before, conferences are not only fun and play but hard work. Make sure, your employer get to know what's the value in there for him.

Monday, July 4, 2011

Kscope 11 - Day 4 to 6 and a wrap up.

06:57 Monday, July 4, 2011 Posted by Markus Eisele
,
I made it back to Germany. After the outbound flight took about 12,5 hours the inbound one was shorter with 11,5 h. Both not very comfortable time frames to be on a plane in general. But this is the price to pay if you are attending conferences on the west cost. But let's catch up with the conference days 4 to 6. Be warned, it's a lengthy post :)

Day 4 - sessions and friends
Tuesday was about to start early for me. Still a bit jet-lagged it was a pleasure to fetch my first Starbucks coffee directly in the hotel. Conference mornings began with a Qigong practice at 7. Followed by a nice breakfast. Sessions started 8:30 am and were interrupted by smaller pauses and the Lunch and Learn panels between 12:15 and 1:45. Those panels were lead by the attending Oracle ACE Directors and ACEs. I attended the Fusion Middleware panel, moderated by Oracle's Duncan Mills. Guido Schmutz (Trivadis), Sten Vesterli (scott/tiger), Ronald van Luttikhuizen (Vennster) and Chris Muir (Sage computing) talked about their experiences within the latest projects and answered some questions from the attendees. Back with sessions 8 to 10 the conference day ended around 5:30 pm. Basically it was nice to see the many attendees walking around from session to session and talk a lot to each other. As always socializing was a big part and I guess the schedule made this really easy. The track, that interested me mostly was FMW. It always happened in the same three rooms (203 A,B,C). Beside the other fellow ACEs also Oracle contributed some very good sessions which basically aimed at the beginners level. Generally speaking I believe, the content leads for FMW did a great job assembling this first real FMW track. It has much improved over the ones happening last year. More on this later in the wrap up section.
Day 4 ended with a great ACE Dinner. This little tradition is something I really love to see Oracle catching on up over and over again. It was a casual appreciation dinner for all Oracle ACE & ACE Directors participating in ODTUG Kscope11. We went to Gladstones and had a great evening catching up with the OTN Team (Thanks to Justin, Vikki and Lillian for all your awesome support!) and fellow ACEs from around the world. It always feels a little weird seeing those familiar faces once or twice a year. You normally know very little from each other and so there is a lot to catch up with.

Day 5 - sightseeing and a boat
Wednesday started all over again as every conference day. Waking up too early around 5, first coffee around 6 and Qigong session before breakfast in the lunch area. Again this Qigong thing? Yes. I mean, not for me ;) I loved catching the early morning air and looking at the up to 20 people attending the exercise. I preferred drinking my coffee. The silence was needed right before the conference day which again started at 8:30 am with the first sessions and last until 5:15 pm. To be honest, this was my day off. I've never been to LA before and I knew there would be tons of stuff to visit and picture so I was looking for a chance to do this very compressed and without spending too much time on non conference things. The concierge recommended Sunseeker Tours and their one day Hollywood and LA tour. Asking around, if anybody want's to join UK'OUG Chairman Debra and Stanley joined for the complete day. Which was a pleasure for me having them with me! We were picked up from the hotel by a small Mercedes-Benz bus and started the guided tour of Hollywood, Los Angeles and the Beaches at exactly 8:30. This was a packed day which contained Grauman's Chinese Theater, Hollywood Walk of Fame, Sunset Strip, Rodeo Drive, The Hollywood Sign, Kodak Theater, The Hollywood Roosevelt, Santa Monica Pier, Venice Beach, Hollywood Boulevard, some Star Homes, Ports of LA/Long Beach and Harbor Bridges. You can get some impressions from my flickr photoset about Long Beach, LA and Hollywood. The sad part was, that we were on the bus quite a lot. Except the too few stops we have seen a lot but in drive-by mode only. We made it back just in time for the evening appreciation event which was held on the Queen Mary.
The majestic Queen Marry offers the chance to step back in time aboard one of the most famous ocean liners in history. Going back to the days where steamships were the quickest and most elegant way to travel, it was the first choice for the elite of high society. In 1939, at the start of World War II, the Queen Mary was drafted into service and outfitted as a troopship. Deemed the Grey Ghost due to her new camouflaged grey exterior, she joined the Allied Forces and played a crucial role in their success. When the war ended, she was restored to her former glory and continued passenger service until 1966, when Cunard announced the Queen Mary for sale and Long Beach became her new home. Just like the passengers of years ago, Kscopers were treated to several activities on board, such as: Listening to cool jazz in one of the elegant dining rooms; Singing in the dueling piano bar; Checking out the ship on a historical tour led by one of the ship’s docents; Playing cards in the poker room; Dancing under the stars; Eating and drinking food. An awesome live band was playing, too and thanks to the generous host ODTUG we were given VIP wrist bands to enter some well protected places to catch up with drinks and find places to talk. As you might have expected, I was running around with my 7D a lot and took some pictures. You'll find them in the already mentioned flickr.com/myfear photosets. The evening lasts until 10:00 pm. A too early ending for a great evening which could have last hours longer.

Day 6 - 9 to 9
The short day. Beginning with the usual coffee, Qigong, coffee, breakfast the last three FMW sessions all happened in one room. This was the day I was traveling back to Germany. Unfortunately in the late evening around 9 pm. so I had to spend the whole day with all my things packed up somewhere, because we had to leave the rooms at noon, and the last sessions ended 12:45 this was going to be a boring and useless day. Highlight of the day was the "Thursday Thunder" event in which some ACEs tried to build a complete SOA app from scratch in less than an hour. This was impressive and a great inspiration for some content, the German ACED are now trying to build up for our own conferences in Germany. With a little help of Debra I was able to get to the airport earlier than planned and spend some hours with Torsten until his flight to FRA left. But the big nerve-wracking part was only about to begin. If you look at the picture to the right, you can see, what happened to the plane right after it came in from MUC. The engine had to be opened and some technicians were checking it. After three hours of waiting it finally was clear, that will still will make it today. The needed parts have been brought to the plane and after some additional testing we finally left LAX around midnight heading to MUC. Unlike the outbound flight, I was back in economy this time. Not too sad generally, but as I said, west cost flights really last longer than they should. Without any further problems I reached MUC and went home by 9 pm.

Exhibition Hall
This is an essential part of any conference I attended in the past. Same should be true to KScope. I don't know why the exhibition hall hours were some kind of restrictive. Only lasting some hours during the day. This was quite confusing, at last to me. Every time I felt the need of walking around there and catching up with the offers, it was closed. Ok. It might be, that the conference is too small in general to open it up all day long, but I guess this part could be improved if the break snacks and coffee (yes, there was to less coffee on site!) simply move to the exhibition hall and only there. This could lead some more people there and make it more attractive in general. I bet, if some of the exhibitors would have decided to provide coffee at their booths, they would have been overwhelmed by the response ;)

Session Voting
This year was the first year ODTUG decided to move forward in terms of voting. A mobile iPhone/IPod app which also runs on iPads was at your hand to assist you with your schedule. Beside the apple products, you also could use a web based version for your android and blackberry phones. And it was great! I really liked it. You always had your schedule right at hand and it also was your entry point for the session voting. Which was not too great in general. It simply wasn't working stable enough. I've seen a lot of problems around with it. Sometimes it refused the voting someone gave, sometimes it simply was not up and running. And the web based interface has some security issues which I don't like. The fact that it was based on ASP.NET was something I really did not get. I would have expected it to be some fancy Oracle/Java stuff behind it. Or even APEX with some mobile add-ons. Anyway, this is the right direction for a conference and the app looked far more useful to me than anything I have seen for Oracle's conferences so far. I hope, there will be a more improved and tested version for next years KScope.

FMW Content
KScope calls itself the place to bring together the best Oracle minds in the industry. This historically covers DB and BI/EPM mostly. Beginning with last year, Fusion Middleware (FMW) starts gaining more attention. And this years track was put together by a great team of ACED around Chris. With all the support of Oracle and OTN the FMW content was presented by a great team of speakers from Oracle, ACE and ACE Directors and the industry. With 50 ACE and ACED speaking at KScope I would guess, it's the next best place to be looking for FMW know how right after Oracle Open World and Develop. But it seems as if this in't widely known. So, it seems to me, that there is still a lot of work to do to make all the FMW interested people know about the great KScope FMW content tracks and to draw more attendees with FMW focus to the conference. I am really looking forward to next years http://www.kscope12.com/ in San Antoino, Texas from June 24-28. Thanks ODTUG for keeping up the great work and delivering a conference I am really proud being a part of! See you at KScope 12, hopefully! Content submission is already open!

Java is moving forward, and so is Duke!

05:07 Monday, July 4, 2011 Posted by Markus Eisele
, ,
Don't get me wrong: I love the new Duke Screen Saver and I really don't want to break Java's new marketing campaign, But I still don't get how to find the URL of the download pages if you are already following @Java and I<3Java. Back in my twitter history I found a link to the different versions tweeted from @Java and would like to share them with you.


Here you are: MACintosh-Compatible, 24,5 MB ZIP File, LINUX-Compatible, 15,7 MB, ZIP File and Microsoft-Compatible, 6,1 MB, ZIP File