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

Wednesday, July 31, 2013

Two TCKs for Eclipse - What is really in it for Open Source?

08:45 Wednesday, July 31, 2013 Posted by Test No comments:
, , ,
Back in May Oracle awarded a Compatibility Testing Scholarship to the Eclipse Foundation. This got some attention in media during the last days and I just wanted to make sure that I shine some light on the whole process and the action in detail. What does look like a simple and honest gift on first sight actually has more aspects in it. But lets start at the beginning:

Technology Compatibility Kit
Covered by the Java Community Process (JCP) both Java as a language and the various platforms on top (Java SE, Java EE, Java ME) are developed. Each JSR (Java Specification Request) includes an EG (Expert Group) a bunch of documents and of course a reference implementation (RI) and a corresponding TCK (Technology Compatibility Kit). The TCK can be executed against implementations and checks them for compliance with the specification. So it basically is the code equivalent of the specification document. Most TCKs consist of a bunch of test cases as well as a "test harness" which executes the tests. If there is a TCK per JSR it is safe to assume that there are at least as many TCKs available as we have active JSRs in the JCP. But that is only a theoretical thought. Practically there aren't. At least not publicly avaiable.  Besides JBatch, CDI and Bean Validation I can't think of much more. And those are only part of the Java EE platform which has at least 28 specifications. The majority of TCKs unfortunately is under lock and key at Oracle. But why? The main reason for this is that the TCKs are also used as a tools for the platform certification. Successfully running a TCK against an implementation proves it's correctness and with that somehow it's compliance.

What does platform certification actually mean?
The platform compatibility is an excellent advert for products. The Java EE compatibility list is a Who-is-Who of the Java EE server market. If you're not on that list with your product you basically don't have a chance of being recognized. With Apache Tomcat being the only known exception to that rule. But what does it take to get the certification? For Java EE there is the Java EE Compatibility Test Suite (CTS) which probably consists of little more than the sum of the individual TCKs. Honestly I have not seen it. You have to become a licensee of Oracle to get access to it. And this is exactly where it is starting to become expensive. I do not know how expensive exactly but once you payed you can access the CTS through the Java Partner Engineering web site. There is only one alternative way of getting hands on the CTS. Going through the Compatibility Testing Scholarship Program which is a way for non-profit organizations and individuals to apply for a free-of-charge CTS. The requests are judged by a review board. There is a PDF out there which explains how this process exactly works. Beside the ASF various other organizations and individuals gained access to individual TCKs and CTS as of today. Now that you know about the basic program and certification it is easier to look at the details for the two Eclipse projects that has been granted a CTS Scholarship. I need to preface the following with a little disclaimer. I only can draw my conclusions from what is publicly known. I don't have any insights or further information on the reasons behind. It might be much simpler than what I came up with ...

EclipseLink - the JPA Reference Implementation
According to press release from early May Oracle demonstrates its "commitment to Java developers and the open source community" by granting access to two TCKs and related support services to the Eclipse Foundation. Time to start wondering. Wasn't EclipseLink the RI for JPA? What exactly are they doing if not building the TCK for JPA themselves, right? Why do they need a license?
EclipseLink has its roots in TopLink. Anyone who knows the history of TopLink knows that this is a relatively old product that belonged to WebGain before it has been acquired by Oracle. WebGain was a strong Eclipse supporter and even a member on the  Board of Directors back in 2002. Only five years after its acquisition by Oracle TopLink was donated to the Eclipse Foundation and has been there ever since. EclipseLink is available under the EPL 1.0. The project itself does not contain the TCK. A difficult situation for a RI. Looking at the list of committers isn't really exciting. 30 people. And only one non-Oracle. Why do I believe that this team actually owns the TCK (Oracle internally) and even develops it? Strictly speaking, EclipseLink has a license that doesn't fit the TCK licensing rules. Granting the Scholarship license here simply corrects some legal issues in that constellation.

Virgo - the Java EE Web Profile Server
But for Virgo the granted license really makes a difference, right? Maybe. Virgo is the former Spring dm server which was donated to the Eclipse Foundation by SpringSource back in 2010. The list of committers paints a different picture than the TopLink list. It is not just SAP behind every name. Committers spread equally among three companies.  SAP, Pivotal and Tasktop Technologies. The latter has an interesting management board. Former SpringSource COO Neelan Choksi and Rod Johnson himself are members. This might indicate that Pivotal has a little more influence on the project than SAP. Anyway, both companies are most likely not big Oracle buddies. The scholarship license isn't a gift for them obviously. In fact, Virgo is already Java EE 6 certified. However, under another name. The SAP NetWeaver Cloud has built its Java EE 6 Web Profile offering on Virgo. So SAP has probably acquired a license from Oracle and certified Virgo themselves. I don't know for sure but someone could have come up with the idea that it is cheaper to use an already certified server instead of paying the annual royalties year by year. Given the fact that the Eclipse Foundation is a non-profit organization it was easy to apply for the Scholarship program to get this sorted. At least in this case there is a positive side-effect. Virgo now has the chance of becoming another Java EE certified server. SAP already has proven that it is possible. Sooner of later the community will earn the profit by probably having a new EE 7 certified OSS server.

But it is a positive sum below the line, right?
Two new projects gained access to the TCK of the specification they are implementing. That is positive. Looking at the total sum of publicly available TCKs it is still frustrating. Especially in the EclipseLink case it is frustrating because the TCKs may not at all be available in public. An elongated discussion on the JPA mailing list from last year discuss this problem a bit and illustrates the drawbacks. Although it is getting better with the changes made by the JSR-348. We're still not there. In fact I expect that the TCKs are available to all interested parties. This would improve quality of the specifications and the reference implementations by finding holes in the specs and also inadequately tested areas of RIs. Both will prevent many errors from affecting users. As key part of JSR 358 is the work done towards a new licensing model for TCKs. An accompanying Java.net project contains all the discussion materials and is publicly accessible. Everyone is free to join the discussion and express his or her opinion. The Observer mailing list is available to any registered java.net user. If you're interested in the view of CloudBees, Red Hat and IBM onto licensing issues you can find some more material on the presentations page. Oracle itself proposes to proceed with standard TCK licensing models in the future version of the JCP:
"TCKs for all future JSRs must be made available for certification and branding purposes under one or more of the Approved Open Source Licenses and / or a Standard Commercial TCK License. The TCK for all future non-umbrella JSRs must be made available to all Participants in the relevant RI open source project under a standard JCP Community TCK License. " (Source: Oracle's Proposal for JSR 358, PDF, pages 15 +16)
That would be a step in the right direction and would truly help the open source community. If the granted TCKs are a gift or not: It simply isn't enough to cure today's problems. We need a general change if it should be better in the future.

Monday, July 22, 2013

Island News - New German Java Blog

06:58 Monday, July 22, 2013 Posted by Test No comments:
, , ,
This blog has its fans and I am very thankful for them. But one little drawback always has been that I blog in English. And I like it the way it is. But as a German there is always the need to spread the word out to the German Java Community.
And in order to do this in my native language the idea was born to actually run a German blog. Naughty, isn't it? :) It probably wouldn't be an option to simply setup a translated version of this blog. Nobody would want that. Especially not me. But German publishing house Heise was so kind to offer me a nice place on their developer website. This is where I will be blogging about news from the Island of Java. In German. It will be a mix of technical and non-technical topics. Mostly like I try to do it here. So if you're interested in reading about my rumblings with Java and the latest news from the community in German: Head over there and please don't forget to give feedback. I love to hear about what you want to read.

Wednesday, July 10, 2013

1935 days of twitter

12:35 Wednesday, July 10, 2013 Posted by Test No comments:
, ,
Today I finally managed to download my Twitter archive. This nice new features was introduces a while back already but I never really cared about it. But looking back at 5 years, 3 months, 17 days is like doing forensics. And it is good to look back in time to remember what you did. Here is a high level overview about my twitter content since than as a nice little wordle art. I love it. Thanks for reading both my twitter stream and this blog. Looking forward to the next years to come.

Monday, July 8, 2013

Review: "Oracle WebLogic Server 12c - Distinctive Recipes" by Frank Munz

07:42 Monday, July 8, 2013 Posted by Test No comments:
, ,
It has been some time since I last read a book about WebLogic. Also the coverage here on the blog has been a little weak in the last few years. Both due to various reasons I can not really talk about. Anyway I still enjoy working with this server and I am always on the hunt for new books covering different aspects. Frank Munz published his "WLS Distinctive Recipes" book early this year and I was more than happy that he send a review copy to me to have a detailed look. Thanks Frank!

Imagine you need to know about a problem with your car's engine. You could plough through the 1000-page manual. Or you could chat to the mechanic over a cup of coffee.
That's WebLogic 12c Advanced Recipes. It's WebLogic for software architects, administrators and developers. For people like you who know quite a bit about WebLogic. What you don't want is the typical 'recipe book' full of screenshots. Click here. Click there. Do this. Do that. That's WebLogic by numbers.
What you really want are the things you won't find in the manual, like recommendations, discussions, best practices, deployable modules, NetBeans projects, more than 40 webcast videos and directions on when to use a feature - and when not to. With all this and more, this book is the perfect complement to official courses and manuals. In short, this gem of a book is almost as good as attending one of Frank's renowned workshops.

Book: Oracle WebLogic Server 12c: Distinctive Recipes
Language : English
Paperback : 450 pages [ 0.9 x 7.4 x 9.1 inches ]
Release Date : January 9, 2013
ISBN-10: 0980798019
ISBN-13: 978-0980798012

About the Author
Dr. Frank Munz (@frankmunz) is an expert in middleware and distributed computing. He earned a Ph.D. in computer science from the "Technische Universit√§t M√ľnchen" for his work on distributed computing and medical imaging in brain research. He published more than 20 peer reviewed scientific papers.
In 2011 Frank received the Oracle Technologist of the Year award for cloud computing.
Frank has over 15 years experience working for and on behalf of top middleware vendors and consultancies such as ConSol, Sun, BEA, TIBCO and Oracle, throughout Europe and Australia as a software architect, project manager and developer. In 2007 Frank founded munz & more - a cutting-edge consultancy focusing on Oracle middleware and cloud computing. Based on over a decade of teaching experience with the big vendors, and its limitations, Frank is offering his own high-end training program world-wide now (Cloud Computing, Oracle Fusion Middleware, Oracle WebLogic Server Architecture, Operations and Development, Performance Tuning, Oracle Service Bus 11g).
He loves to talk about features and showstoppers and frequently speaks at conferences all over the world.
When Frank is not working, he enjoys travelling in Southeast Asia, skiing in the Alps, tapas in Spain, and scuba diving in Australia.

The Content
As the title suggests, the book features "recipes". 64 in total. If you remove the preface and the index you end up with 417 pages full of content which is a great value. The individual recipes are organized in four steps (Situation - Solution - Directions - More?). The situation describes the problem domain generally. The solution part gives a recommendation and dives a little deeper into it. The More? part finally points the reader to a bunch of links into the Oracle documentation, webcasts or even youtube for further information on the selected topic. The topics range from licensing to EJB covering SOA and individual products like JMeter, BadBoy and Grinder. So it is a colorful mix of WebLogic related topics without a true theme throughout the book. It would be good to follow the suggestion and use the individual recipes as you need them. Reading the book from front to back wouldn't make much sense at all. The length of the recipes highly depends on the covered topic. Clustering found it's place on eight pages which honestly isn't enough to describe the details but good for giving an overview together with some specific tips which require a deeper knowledge of the topic than the book provides.

Writing and Style
An easy read for me as a non-native speaker/reader. Common vocabulary from the WebLogic and Java EE domain and comparably short sentences which makes it easy to follow. You find a couple of screenshots and illustrations around which helps understanding the basics. The font is readable and plenty of space next to the heavy head- and sub-headlines makes it feel fluffy and light. As usual and recommended by the author himself I did not read every single recipe but picked a few that caught my attention.

Conclusion and recommendation
To make it short it is a great collection of various topics Enterprise Java developers tend to run into with a solid "More?" section for further details. The missing theme makes it hard for beginners to take advantage from it. The very basic overviews and brief outlines of the solutions makes it a questionable valuable for advanced WebLogic developers. This turns around if you try to put yourself into the admin domain. This book obviously hasn't been written to support developers on the first hand. It was probably meant for the guys doing WebLogic operations. Coming from this side of the pond much of the stuff starts making sense.

Friday, July 5, 2013

Running Awestruct with Asciidoc on Windows with JRuby

10:22 Friday, July 5, 2013 Posted by Test No comments:
, ,
This blogpost has been sitting on my todo-list since some time. I've seen one of my favorite FOSS advocates Dan Allen working on Awestruct and Aciidoctor it since some time and even some Arquillian guys jumped on the train. Time to find out what the hell it actually is and what it takes to get a decent setup up and running.

First let me briefly introduce what I understood about all the key parts of that awesome mix. The whole thing basically is about documentation. This is a wide area and has different flavors and processes. The most basic idea here is that writing documentation for developers should be a breeze. It should be text based and most likely not require any special IDE (like Word ;)).

Asciidoc? Asciidoctor? Documentation!
Starting with an easy way of writing and formatting directly leads to the introduction of Asciidoc which basically is a text document format for writing notes, documentation, articles, books, ebooks, slideshows, web pages, man pages and blogs. The initial AsciiDoc is both a piece of software and kind of a markup language. To run it you need Python. Not exactly a commonly used thing on my side of the universe. But another nice port has been around since some time now. It is called AsciiDoctor which is an open source Ruby processor for converting AsciiDoc markup into HTML 5, DocBook 4.5 and other formats. That brings us one step closer to the Java ecosystem. Asciidoctor is a bit more than simply the processor and some stylesheets. The project provides plugins for Maven, Gradle and Guard and packages for operating systems such as Fedora. You can learn about AsciiDoc from the User Guide. Asciidoctor also has a good bunch of docs online.

Other Markups - Ways to write without word.
There are other markup formats out there which do not require anything more than a solid text editor. Most relevant ones are Haml (HTML abstraction markup language), Markdown and probably also YAML. Basically you have a bunch of choices here. In addition to that you also find additional flavors like the GitHub Flavored Markdown. To make a long story the developer community has been fighting the need for heavyweight word processors since the very beginning and depending on the community you are in you are forced to use the one or the other.

Awestruct? Websites!
But documentation is basically nothing without publication. Most of the already mentioned processing approaches can publish a good bunch of different target formats. Stuff like  ebooks, slideshows, PDF, word, web pages, man pages and blogs and many many more. But given the context we're most likely in it is not exactly sexy to run a Perl based solution during the more or less completely Java based build phase. This is where Awestruct and Asciidoctor come in. Awestruct is a tool for creating non-trivial static HTML sites in an easy way. The core concept of Awestruct is that of structures, specifically Ruby `OpenStruct` structures. The struct aspect allows arbitrary, schema-less data to be associated with a specific page or the entire site. Site-specific data is automatically loaded from simple YAML files, while data can be provided on pages using a front-matter prolog. In one sentence: "It builds webseits from different markup and configurations" in an easy way. As the complete project and ecosystem of Ruby is mostly build around Linux/Unix based systems you hardly find any documentation about setting this up on Windows.

Lets get rolling - on Microsoft Windows
This blog is there to fix this. It is going to be a step-by-step guide and should help you getting your initial environment up.
First thing to do is to download JRuby. There are indeed native Ruby versions for Windows available but the package concept for third party libraries is mostly build to support native OS extensions. By using JRuby we take advantage of the Java Runtime as a machine adoption layer while still staying close to the Ruby ecosystem. You can download JRuby from http://jruby.org/download. You find different releases and packaging formats there. I picked the 1.7.4 Windows x64 executable and installed it into a top level folder on my hdd:\jruby-1.7.4. If you allow JRuby to set the PATH variable automatically pointing to your \bin folder you're all set. A prerequisite is that you have a JRE installed. If not, you're most likely (reading the wrong blog) willing to use one of the JRuby+JRE installers.
To make JRuby work with your already installed Java Version you should first check which version you're actually using by typing:
jruby -v
jruby 1.7.4 (1.9.3p392) 2013-05-16 2390d3b on Java HotSpot(TM) 64-Bit Server VM
1.7.0_25-b16 [Windows 7-amd64]
The result shows exactly which JRE version is in use. You can change it by pointing the environment variable JAVA_HOME to another path. Sitting behind a corporate proxy will require another environment variable:
set http_proxy=http://your.proxy.com:3128
Now you're almost set to actually install Awestruct. Installation is comparably easy. Find a command prompt and enter:
jruby -S gem install awestruct bundler

This will contact the packaging manager and download the required libraries. That is all for now. Next step is to create a new folder somewhere which should host your website project. Go ahead and create one (named "test2" during this guide) and change to this directory with your command-line. Now it is time to initialize your project from default by entering:
awestruct --init --framework bootstrap

It is safe to ignore the warnings for now. The command should come up with a directory structure as outlined on the awestruct website. I get a "Permission Denied" error on my system issuing this command. To me it seems as if it is safe to ignore also. I filed and issue about it. This gave you a basic layout with twitter-bootstrap support for your project. You also got a "Gemfile" in the root folder. Gemfiles are the bundler mechanism of fetching dependent libraries for a project. The initial version only contains the raw minimum which is needed to run a very basic setup. To execute awestruct with less warnings and noise you should add some additional dependencies. Un-comment the lines starting with by removing the "#":
gem 'coffee-script'
gem 'asciidoctor'
gem 'kramdown'
gem 'uglifier'
gem 'htmlcompressor'

You install the new bundles by issuing a:
bundle install
At the command line. This again fetches some additional libraries and puts them in your jruby-1.7.4\lib\ruby\gems\shared\gems folder for you to use. We're almost there. Now you can start the built-in awestruct server (WEBrick) with:
awestruct -d
This still puts a bunch of warnings out but you can already access your website at http://localhost:4242/ and you will see the awestruct-welcome page. Now we need to make some asciidoc files. Create a new file in your project root and name it hello.adoc with the following content:
= Hello, AsciiDoc!
Doc Writer <doc@example.com>

An introduction to http://asciidoc.org[AsciiDoc].

== First Section

* item 1
* item 2

puts "Hello, World!"

Running in "-d" development mode should in theory automatically regenerate pages. This actually did not work with my setup. Instead kill the running awestruct process and restart it does. Also using Rake works very well. Anyway the outcome is the same: navigating to http://localhost:4242/hello.html displays your nicely shiny new asciidoc based website. Congratulations. You're ready.

There is a lot to learn from now on. You can have a look at the awestruct website and find you way through the documentation. You can also have a look at one of the examples from the gallery. There are a couple of extensions which make this even more interesting. If I find the time I am going to dig into details in later posts.

The Heroes of Java: Kevlin Henney

06:12 Friday, July 5, 2013 Posted by Test No comments:
, , ,
The "Heroes of Java" series is back after a longer break. I'm somehow surprised about this interview. I occasionally run into Kevlin on conferences. And it is amazing to see him on stage. Asking him at last year's JavaZone was simple. Waiting nearly a year for the answers made me believe this is not going to happen. But it did. Thanks Kevlin! "Inbox 2!" :)

Kevlin Henney 
is an author, presenter, and consultant on software development. He has written on the subject of computer programming and development practice for many magazines and sites, including Better Software, The Register, C/C++ Users Journal, Application Development Advisor, JavaSpektrum, C++ Report, Java Report, EXE, and Overload. He is a member of the IEEE Software Advisory Board. Henney is also coauthor of books on patterns and editor of 97 Things Every Programmer Should Know.

General part
Who are you? (Describe yourself in max three sentences)
I am a software development consultant and trainer. I write and speak at conferences. I live in transit, online and, sometimes, at home in Bristol.

Your official job title at your company?
Anything I want it to be! One of the advantages of working for myself. That said, I have no reason to want or use one, so the only official title I've ever used is director, because legally that is what I am.

Do you care about it?
My job title? No. I've worn, worn through and outgrown many job titles, and have not found them to be a particularly useful currency. They are largely an organisational fetish.

Do you speak foreign languages? Which ones?
Yes. I'm part Brazilian, so I can speak and read Portuguese, although not with the fluency I'd like. My grammar and idiom are clumsy, my vocabulary doesn't extend to being able to hold technical conversations and my written skills are appalling! I have modest comprehension of French, German and Spanish, with varying degrees of fluency and incompetence. But I can order wine and beer in more languages than the ones I've just listed.

How long is your daily "bootstrap" process? (Coffee, news, email)
It can be anything from an hour to a whole day.

You have a twitter handle? Why?
It's hard to use Twitter effectively without one... [Ed: @KevlinHenney]

Whom are you following in general?
A mix of friends, software developers, speakers, authors, miscellaneous geeks, science sites, news and business sources, writing journals, etc.

Do you have a personal "policy" for twitter?
I try to avoid being negative, so unless I can find humour or something constructive in a complaint, I'm not likely to tweet it. I prefer to stick to matters of technical and geeky interest, which sometimes means science, sometimes means code and sometimes is about one of my other interests, typically creative writing.

Does your company restricts or encourages you with your twitter usage?
I'm very fair with my employee. And my employer is very fair with me.

What's your daily development setup? (OS/IDE/VC/other Tools)
I normally carry a Windows laptop, although I have a few other things lying around at home from tablets to a Chromebook to old laptops in various states of old and odd OSs. Windows 8 is surprisingly good if you're a person who lives by keyboard shortcuts. I don't possess a mouse and I've found the touch screen to be surplus to requirements.

As I don't specialise in developing every day and I deal with different languages in varying amounts, I have a mix of things installed and in use, from Eclipse to Visual Studio, from Java to Python. Some of these are for serious work and some are just for messing around with. An essential feature is some variation of Cygwin for command-line tools, although I also use PowerShell and the Ch shell. When it comes to editors outside the IDE I am likely to be found using Vim, Notepad2 or Notepad++.

Which is the tool providing most productivity to your work?
Realistically, given the number of hours in the day I spend using them, the award for most productive tool is going to go to one of Gmail, Chrome or PowerPoint!

Your preferred way of interacting with co-workers?
As I don't strictly speaking have any co-workers, I guess that my interactions are primarily around courses, workshops, meetings, etc. I prefer face-to-face interaction or email. I don't particularly like the phone and variations on that theme (e.g., Skype). These monopolise time without giving you either the presence and feedback of face-to-face interactions or the precision and asynchronicity of email.

What's your favorite way of managing your todo's?
Crossing them out! Seriously though, I prefer a physical list on A5 paper or index cards, with reminders for time-related events scattered throughout my calendar. I also use my inbox as a to-do list.

If you could make a wish for a job at your favorite company: What would that be?
I'll let you know when I know!

You're programming in Java. Why?
It offers a reasonable object-oriented lingua franca.

What's least fun with Java?
Either the verbosity or the type model.

If you could change one thing with Java, what would that be?
Less the language, more the development model: the reactive, snail's pace evolution of the language.

What's your personal favorite in dynamic languages?
Possibly Python, because of cleanliness, regularity and the proximity of the Pythonic ideal to functional programming. I've used it a little with my children. Without any dressing up in a hand-holding environment it offers a good entry level for non-programmers as well as being powerful and expressive for programmers.

Alternatively, I have a growing appreciation for PowerShell. I've always had a soft spot for shell scripting, and what I've learnt about PowerShell has impressed me. It has made some good design decisions and well considered compromises, leaving it with a regular model and expressive syntax.

And somewhere I will always have a soft spot for Lisp, although I haven't been doing much more than watching the recent renaissance of its family.

Which programming technique has moved you forwards most and why?
In my career and in my thinking there is little doubt that object-oriented programming gave me the greatest boost forward and the most insights, also helping to open up other approaches to programming once I realised the questions I could be asking of any approach. I first started getting into OOP around the time I was programming in Fortran and C, nearly quarter of a century ago.

I really wish more people understood OO, because it would certainly stop them writing most of the Java legacy they are currently creating, and it would make them less surprised by functional programming when they properly understood that approach as well.

What was the biggest project you've ever worked on?
In terms of lines of code and potential effect on everyday life, I guess the biggest may have been a project I worked on many years ago to develop software to monitor and control electric power distribution. I have consulted on and contributed to larger systems, but have not been involved in developing those beyond short-term engagements.

Which was the worst programming mistake you did?
To the best of my knowledge, nothing catastrophic! Which suggests that I have yet to make my greatest programming mistake.

Thursday, July 4, 2013

Experts Training on JSF 2.2 with @EdBurns in Berlin, Germany

06:46 Thursday, July 4, 2013 Posted by Test No comments:
, , ,
I usually don't do marketing on this blog. This is a little exception as I am an active German Oracle User Group (DOAG) Member and also their representative on the German Interest Alliance of the Java User Groups (iJUG) and I have some discount to offer, so I guess it will be worth reading on if you're interested in Java EE 7 and Java Server Faces especially. Here is the deal:

JSF Spec Lead Ed Burns is coming to Germany for an exclusive training!
The course provides an in-depth survey of JavaServer Faces (JSF) 2.2, the standard Web application framework for Java EE. The course assumes no familiarity with JSF, but the material covering the new features of JSF 2.2 is used for the second half of the course. Typical JSF gotchas will also be covered in context.

Because JSF is a technology that unifies several other layers of the Java EE stack, the course approaches JSF from three distinct but related viewpoints: the application developer, the UI component developer, and the framework extender.

Two days packed with Java EE 7 UI technology including NetBeans coding. And you don't have to bring a lot of things. Only Java programming and web framework experience is a prerequisite.

The training will happen right next to JavaZone on the 10.09.2013 and 11.09.2013 at the DOAG headquarters in Berlin.

If you're unlucky and not a regular member of an Oracle or Java User Group you have to invest 1.300€. Members only pay the reduced fee of 990€ for both days. You can register online or find more details in English or German on the DOAG website. Please add your JUG affiliation to the comments field during registration to only pay the reduced fee!