Developer Interviews (#DI 2) Claus Ibsen (@davsclaus) About All Things Camel

In the second edition of my developer interview series I had a chance to talk to Claus Ibsen (@davsclaus). He works for Red Hat on open source integration software such as JBoss Fuse and is Apache Camel committer. You may also know him for his book "Camel in Action".
We talked about his history in integration technologies and looked at the latest developments which are upcoming for the Camel 2.14 release which might get released in the September time-frame. Beside that he also showcased how to quickly run a demo with Maven and Eclipse and introduced us to the Camel module in hawtio.
40 minutes is just about right for a coffee and your lunch break! Go, watch it!

All the RedHat Engineers at JavaOne

With only a few more weeks until JavaOne, I am still on the hunt for some good content recommendations. After I've looked at all the sessions from the Java Champions it is time to see what Red Hat is going to offer this year.  Beside the fact, that it is going to be a ton of interesting content you will also get a chance to meet all of them there and interact. If possible, I added a link to both the twitter profile and the blog of the speaker to make it easy for you to follow them. I hope, I haven't forgotten anybody.
And as usual at conferences; Come up to us and speak with us. We want to know what you think about the technologies we're talking about!

Lincoln Baxter III (@lincolnthree ocpsoft.org/)
Fast-Developing CRUD-like Applications with Java EE 7 [BOF2695]
Tools worth sharing: Take back your IDE with Forge [CON2675]

Emmanuel Bernard (@emmanuelbernard , emmanuelbernard.com)
MythBusters: ORMs and NoSQL—Good or Bad? [CON5186]

Sébastien Blanc (@sebi2706sblanc.org)
The Rise of Mobile Enterprise Software  [BOF7164]
How to Build Enterprise Mobile Apps That Integrate with Your Java EE Back End [TUT6006]

Markus Eisele (@myfear, blog.eisele.net)
JavaScript in the Enterprise [CON1747]
Free Java Tools for Maven and Java EE [UGF8872]

Thomas Enebo (@tom_eneboblog.enebo.com)
Modding Minecraft with a Dash of Ruby [BOF6279]

Stephane Epardaud (@UnFroMageceylon-lang.org/blog/)
The Emerging Languages Bowl: The Big League Challenge [CON4388]
Ceylon from Here to Infinity: The Big Picture and What’s Coming [CON3078]

Christine Flood
Shenandoah: An Open Source Garbage Collector (JEP 189) with an Ultralow Pause Time [CON5216]

Tim Fox (@timfoxvertxproject.wordpress.com/)
Writing Highly Concurrent Polyglot Applications with Vert.x [CON7902]

Jonathan Fuerth (@jfuerthjonathan.fuerth.ca/)
The Large-Scale Web Application Development BOF [BOF2260]
Rich HTML5 Web Apps: Typesafe Edition 2 [CON2188]

George Gastaldi (@gegastaldigastaldi.wordpress.com/)
Tools worth sharing: Take back your IDE with Forge [CON2675]
Fast-Developing CRUD-like Applications with Java EE 7 [BOF2695]

Shekhar Gulati (@shekhargulatiwhyjava.wordpress.com/)
So Many Mapping Choices—So Much Fun! [BOF1693]

Arun Gupta (@ArunGupta, blog.arungupta.me)
Lessons Learned from Real-World Deployments of Java EE 7 [CON2450]
Java EE 7 Soup to Nuts [TUT1952]
Devoxx4Kids for Parents [TUT1878]

Mark Little (@nmcl, community.jboss.org/blogs/mark.little)
Java EE 8 Community Update and Panel [CON2131]
Transactions Returning to NoSQL [CON2129]

Omair Majid
Diagnosing Performance Issues with Thermostat [CON2662]

Charles Nutter (@headiusblog.headius.com)
Going Native: Bringing FFI to the JVM [CON3979]
The Emerging Languages Bowl: The Big League Challenge [CON4388]
Script Bowl 2014: The Battle Rages On [CON2939]

Bruno Oliveira (@abstractjblog.abstractj.org)
Mobile Security B-Sides, or the Pitfalls of Application Development [BOF4495]

Steven Pousty (@TheSteve0thesteve0.wordpress.com)
Vert.x + WebSocket + Cloud = Awesome Map Tracking [CON1695]
So Many Mapping Choices—So Much Fun! [BOF1693]

Antoine Sabot-Durand (@antoine_sdwww.next-presso.com)
The Path to CDI 2.0 [CON4294]
Introducing Contexts and Dependency Injection  [CON5004]
CDI 2.0 BOF [BOF5639]
Going Farther with CDI 1.2 [CON5585]

Christian Sadilek (@csadilekerrai-blog.blogspot.de)
The Large-Scale Web Application Development BOF [BOF2260]
Rich HTML5 Web Apps: Typesafe Edition 2 [CON2188]

William Siqueira (@william_antonio, fxapps.blogspot.com)
Using Java 8 to Process Government Open Data [BOF6697]

Mario Torre (@neugensjroller.com/neugens)
OpenJDK Adoption: Learn How You and Your JUG Can Contribute to Java’s Future [BOF4884]
Diagnosing Performance Issues with Thermostat [CON2662]

Developer Interviews (#DI 1) @ehsavoie about #WildFly and #NetBeans

I'm proud to introduce a new series on my blog. Today I'm going to publish the first interview I did with one of the amazing community members out there. I want to know more about the many amazing people that work on all kinds of JBoss and Middleware related stuff.

Emmanuel Hugonnet (@ehsavoie) is the maintainer of the WildFly Plugin for NetBeans. It's not a big secret, that I like that IDE very much and not having an official plugin available made my heart bleed. With the upcoming NetBeans 8.0.1 which is already available as a nightly build, you finally get it included right away. But let's look at the interview and hear from Emmanuel first hand what it took to make it happen and how it can be used.


Java Champions at JavaOne 2014

Isn't it that time of the year again? Booking hotels and travels. Most of my fellow Java Champions (and former ACE Director fellows) are doing some kind of preparation for JavaOne and Oracle OpenWorld these days. Only a few more weeks to go and the content catalog is published. So I thought I might also spend an hour to look at good content. Let's start with talks given by Java Champions.

The Java Champions are an exclusive group of passionate Java technology and community leaders who are community-nominated and selected under a project sponsored by Oracle. Java Champions get the opportunity to provide feedback, ideas, and direction that will help Oracle grow the Java Platform. This interchange may be in the form of technical discussions and/or community-building activities with Oracle's Java Development and Developer Program teams.

Adam Bien
Enterprise Nashorn [CON2266]
Productive JavaFX 8 [CON2265]
Unorthodox Enterprise Practices [CON2301]
Java EE 8 Community Update and Panel [CON2131]
Free Java Tools for Maven and Java EE [UGF8872]
 
Anton  Epple
DukeScript: How to Put the Java into JavaScript [CON6091]
How to Program JavaScript in Java [TUT4890]
Smart UIs for Mobile and Embedded in JavaFX [BOF3453]
Get Productive with Free Java Tools [UGF8846]

Ben Evans
Understanding JIT Compilation with JITWatch [TUT3419]
Java Performance Is a Social Activity [CON3420]
Lightning Talks: Even More Productivity with Free Java Tools [UGF8906]

Trisha Gee
HTML5/AngularJS/Groovy/Java and MongoDB Together: What Could Possibly Go Wrong? [CON1703]

Simon Maple
How to Make Your JUG and Java More Awesome [BOF4004]
Community First: Bringing Java to the Community  [BOF1704]
Do You Really Get Class Loaders? [CON1700]
Development Horror Stories [BOF4223]

Andres Almiray
Functional Programmning the Groovy Way [CON3538]
Gradle: Harder, Better, Stronger, Faster [CON3531]
Build, Test, and Deploy JavaFX Applications with Ease [CON3553]
RIA Technologies and Frameworks Panel [CON2600]

Geert Bevin
Programmers Are Way Cooler Than Musicians [CON1706]
Ten Reasons Why Java Now Rocks More Than Ever [CON1725]

Regina ten Bruggencate
Duchess Meet and Greet [BOF2604]

Markus Eisele
JavaScript in the Enterprise [CON1747]
Free Java Tools for Maven and Java EE [UGF8872]

Bert Ertman
What’s Up with Modularity? [TUT1816]

Fabrizio Gianneschi
Controlling Robots with Java and ROS [UGF9651]

Frank Greco
Lambdas and Laughs [UGF9672]

Gerrit Grunwald 
Sensor Networks with Java SE Embedded and Java(FX) [CON1690]
From a Certain Point of View: Eye Tracking with Java(FX) [CON1753]
JavaFX Everywhere [BOF1578]
Catch Me If You Can: Java on Wearables [CON1835]
RIA Technologies and Frameworks Panel [CON2600]
Smart UIs for Mobile and Embedded in JavaFX [BOF3453]
Pi on Wheels: DIY Robot for Teaching Java in the Context of the Internet of Things [CON5199]
JavaFX Coding Playground (JavaFX-Based Live Editor Tool) [BOF2730]

Arun Gupta
Lessons Learned from Real-World Deployments of Java EE 7 [CON2450]
Java EE 7 Soup to Nuts [TUT1952]
Devoxx4Kids for Parents [TUT1878]

Jason Hunter
What You Need to No About NoSQL in the Cloud [BOF5296]

Michael Hüttermann
Mastering Continuous Delivery and DevOps [CON1844]

Stephan Janssen
When Basketball Meets Raspberry Pi and Android Devices and TomEE [CON1814]
Devoxx4Kids for Parents [TUT1878]

Mattias Karlsson
Java Champions and JUG Leaders Meet Oracle Executives [CON5898]
Create an Agile Learning Organization for Developers [CON5889]

Werner Keil
Java and Digital Currencies, Friend or Foe? [BOF6297]

Michael Kölling
Teaching Java with New Greenfoot Language Interactions [BOF6825]

Jessica Man
Banking on OpenJDK: How Goldman Sachs Is Using and Contributing to OpenJDK [CON5177]

Fabiane Nardon
Big Data and Java: Ask the Experts [UGF9650]

Kevin Nilson
RIA Technologies and Frameworks Panel [CON2600]

Kirk Pepperdine
Do Your GC Logs Speak to You? The G1GC Edition [CON1874]
Toward Low-Latency Java Applications [CON1873]
Lightning Talks: Even More Productivity with Free Java Tools [UGF8906]

JP Petines
JEDI and JEDI4KiDS: Planting the Seeds for the Future [BOF1687]
JEDI + Devoxx4Kids = JEDI4KiDS: A Partnership That’s Changing Lives, One Child at a Time [BOF1773]

Peter Pilgrim
Developing Java EE 7 Applications with Scala [BOF2644]

Chris Richardson 
Map, Flatmap, and Reduce Are Your New Best Friends [CON1914]

Zoran Sevarac
JavaFX 3D: Advanced Application Development [CON1993]
Creating Smart Raspberry PI Applications with Neural Networks [BOF2817]
Teaching Java with Free Java Tools  [UGF8873]
Meet the NetBeans Community, with Boeing, Jelastic, JRebel, Vaadin, and More [UGF8871]

Venkat Subramaniam
Programming with Streams in Java 8 [CON1771]
Programming with Lambda Expressions in Java [CON1770]
Applying Groovy Closures for Fun and Productivity [CON1769]
Exploring Groovy Metaprogramming [CON1768]
Transforming Code to Java 8 [CON1772]
Thinking in Functional Style [CON1767]

Martijn Verburg
Adopting Java: Create Java’s Future. Now. [UGF9754]
Habits of Highly Effective Technical Teams  [CON3409]
Free Java Tools for Maven and Java EE [UGF8872]
OpenJDK Adoption: Learn How You and Your JUG Can Contribute to Java’s Future [BOF4884]

Johan Vos
DataFX: From External Data to a UI Flow and Back [CON3640]
Running JavaFX Applications on Android [CON1804]

NetBeans Nightly Now Includes The WildFly Plugin

Good news out there. The recent nightly builds of NetBeans (apparently upcoming 8.0.1) already contain the latest WildFly Plugin. So you don't need to add it manually and can start working with your favorite application server right away.
Try it out and grep the latest nightly build. Please keep in mind, that the nightly builds are developer builds and shouldn't be expected to be stable.

Some first steps to get started:
  • Download WildFly 8.1.0.Final
  • Install by simply unzipping into your favorite location
  • Download NetBeans Nightly for your platform
  • Install into a location of your choice
  • File > New Project > [Java Web | Maven] > Web Application
  • Give it a Name and Location and finally
  • Add a Server and select "WildFly Application Server"



If you find something make sure to file a bug.Don't forget to follow Emmanuel Hugonnet (@ehsavoie, G+, blog) who is the creator of the plugin.

Java EE, WildFly and JBoss at Upcoming Conferences

I'm very honored to be among the great speakers with great topics that get a chance to present at the following upcoming conferences. Come and meet me to talk about all things middleware, Java EE and integration technologies.

  • JDayLviv 2014 -  Sep 6 - 7, 2014
    A one day conference powered by the Java User Group of Lviv. 12 h of content around everything Java.
  • JavaOne 2014 - Sep 26 - Oct 2, 2014
    The Java event of the year. I am going to moderate a panel at the User Group Sunday and will talk about Enterprise JavaScript. Find more details in a separate blog post.
  • OpenSlava - Oct 17, 2014
    OpenSlava 2014 is the annual follow up of the successful pilot OpenSlava 2013. A conference for emerging technologies and open-source. Red Hat is a general partner here.
  • GeeCON Prague - Oct 23 - 24, 2014
    Java-based technologies, dynamic languages, RIA, enterprise architectures, patterns, distributed computing, software craftsmanship and much more...
  • JMaghreb 3.0 - Nov 4 - 8, 2014
    JMaghreb is an annual Java and related technologies conference created in 2012 and organized by MoroccoJUG
  • DOAG Conference and Exhibition - Nov 18 - 21, 2014
    The annual conference of the German Oracle User Group. The iJUG Board Meeting will be there.

I'm looking forward to the talks and hope that you get a chance to catch me and chat if you have questions or ideas. You can follow my activities on Twitter @myfear and I will eventually post pictures to my gplus photos.

Review: "WildFly Performance Tuning" by Arnold Johansson and Anders Welén

I've had the pleasure to review another book for Packt. This time it is the performance tuning guide for WildFly. Arnold Johansson and Anders Welén took a deeper look into what it takes to develop and run high performance applications on WildFly and collected a bunch of tips and tricks everybody should know.

Abstract
The hugely successful JBoss Application Server has been updated and is now called WildFly. This cutting edge technology provides a free JEE-certified platform for the software of today and tomorrow. Learning to tune such a platform for optimal performance is vital for a healthy business organization, efficient development, and the smooth running of operations.

This practical book explores how to tune one of the leading open source application servers in its latest reincarnation. In this book, you will learn what performance tuning is and how it can be performed on WildFly and the JVM using solely free and open source tools and utilities.

Learn about various free tools for performance monitoring and tuning, all focused on making them work with WildFly. The tuning journey ventures through the landscape of the major JEE technologies, EJB, Servlets, JPA, JSF, and JMS. Discover best practices for the internal high-performing web container Undertow, WebServices, and REST services so that you end your journey feeling confident in tuning WildFly for optimal performance.

Book: "WildFly Performance Tuning"
Language : English
Paperback: 311 pages
Release Date: June 25, 2014
ISBN-10: 1783980567
ISBN-13: 978-1783980567

The Authors
Arnold Johansson (@swesource) is a versatile information technologist with a true passion for improving people, businesses, and organizations using "good tech". As an early adapter of the Java language and its growing ecosystem, he is an outspoken proponent of secure Java Enterprise solutions and real Open Source software. After nearly two decades as an IT consultant in many levels and verticals, Arnold now focuses on leading organizations on an architectural stable and efficient path of excellence.
Anders Welén embraced the object-oriented techniques of the Java language early in life, and later evolved to Java Enterprise specifications. As a true believer and evangelist of Open Source, he naturally discovered the JBoss Application Server, which led to years of providing expert consultation, training, and support for the JBoss and Java EE infrastructures. As a result, Anders has seen a lot of both good and bad architectures, software solutions, and projects, most of which were a struggle from time to time due to performance problems. Whenever Anders, through presentations, consultation, training, and (in this case) a book, sees that what he's trying to explain is getting through and the audience is picking up on it and adopting it for their own challenges, it gives him a warm feeling inside.

The Content
Beside the title, the book is a more general resource for performance tuning around Java EE applications. Most of the chapters do not really rely on WildFly but give general hints about performance tuning essentials, approaches and methodologies used for optimization, like the first chapter. The second chapter covers tools for monitoring and tuning of various Java EE subsystems.Chapter three gives a introductory overview about general JVM tuning principles and applies to any JVM development. Beginning with chapter four it is going to be a bit closer to WildFly. EJBs are covered in chapter 5, JMS in chapter 9 and a general pattern here is to refer to Java EE concepts and apply the WildFly specific examples and extensions.

Writing and Style
The language is clear and precise. Additional illustrations, tables, and screenshots make it an easy and understandable read. Occasional basic information about Java EE components and concepts make it easy to follow for  beginners, too.

Conclusion and recommendation
Beside the title who implies a very narrow focus, this is a book which can be a useful read for almost any Java EE developer out there. The explanations are good and helpful. If you ever had to deal with performance tuning you probably know most of those concepts but having them all in one place also makes this a perfect reference for the experienced developers.

Hibernate Statistics with Hawtio and Jolokia

A huge part of enterprise Java deals with data. Among all the different ways of working with data in enterprise settings, there is still the proven and widely taught approach to use O/R mapping of any kind. The JPA standard makes this comparably easy to use for everybody and it should also be portable. But let's not talk about migration details. The biggest drawback of O/R mapping is, that a developer tend to lose contact with what's happening on the database or even to which exact SQL statements get issued against it. This is the number one reason that those projects run into performance issues. If you're there, you need to analyze the root causes and drill down to the problems. I recently found a nice feature of Hibernate which makes this comparably easy.

Available Statistics And Ways To Get Them.
Hibernate up to 4.2 ships with a statistics and metrics API that allows you to figure out a lot about what is happening under the covers. All available counters are described in the Statistics interface API, in three categories:
  • Metrics related to the general Session usage, such as number of open sessions, retrieved JDBC connections, etc.
  • Metrics related to the entities, collections, queries, and caches as a whole (aka global metrics).
  • Detailed metrics related to a particular entity, collection, query or cache region.
For example, you can check the cache hit, miss, and put ratio of entities, collections and queries, and the average time a query needs. Be aware that the number of milliseconds is subject to approximation in Java. Hibernate is tied to the JVM precision and on some platforms this might only be accurate to 10 seconds.

Simple getters are used to access the global metrics (i.e. not tied to a particular entity, collection, cache region, etc.). You can access the metrics of a particular entity, collection or cache region through its name, and through its HQL or SQL representation for queries. Please refer to the Statistics, EntityStatistics, CollectionStatistics, SecondLevelCacheStatistics, and QueryStatistics API Javadoc for more information.

All you have to do is enable statistics for the session factory you're interested in and retrieve the statistics to analyze them. There are plenty of examples out there how to use this feature with Spring. The reason is pretty simple: Spring comes with a legendary MBeanExporter which exposes JMX MBeans as Java Objects. And guess what: Hibernate Statistics provides an easy way of exposing them through JMX. But there is no need to use Spring if you just put together some more RedHat magic :)
You basically have two different ways of enabling the statistics in your configured setting. The easiest way is to add a property to your persistence-unit configuration:
   <property name="hibernate.generate_statistics" value="true"/>
But it is also possible to enable them manually. More details on how to do that can be found on the community wiki and in the performance-monitoring section in the Hibernate documentation.

Enabling and Exposing Statistics By Example
I created a little example standalone Hibernate application with two entities and a main class which is working with hibernate and initializing everything you need to know. Get your hands on it instantly by forking it on GitHub. Here is the little walk-through:
There are the two mandatory entities (Department and Employee) and the META-INF/persistence.xml. This is the basic setting. There is not much magic in here. You can see where to enable the statistics (potentially) in the persistence.xml. The example enables them in the main class JpaTest. But let's start at the beginning. The main method performs the following steps in order:
  1. Create the EntityManager to use.
  2.  Register the Statistics Mbean we need.
  3. Initialize the Jolokia Server to expose JMX via JSON for Hawtio
  4. Does something with the entities.
The magic starts in step two which is in the registerHibernateMBeans(EntityManager manager) method. It get's hand on the PlatformMBeanServer, registers the relevant Hibernate JMX Mbean, set's the Session Factory in which we're interested in to it and enables the statistics. That is easy. Now you have a JMX MBean "Hibernate" with the attribute "statistics" registered. If you have access to the server via JConsole or Mission Control or VisualVM you can simply connect to the process and browse through the statistics:

Hibernate MBean in JConsole
In production environments this typically isn't possible at all. So you would need to find a way to access this via http/https. This is where I found it handy to try out Hawtio as a a modular web console for managing your Java stuff. Burned down to the basics it is a web-console with plugins. It has a ton of plugins and can be customized and extended to fit your needs. Today we're looking at a very simple plugin, the JMX plugin. It gives you a raw view of the underlying JMX metric data, allowing access to the entire JMX domain tree of MBeans. But in order to make this happen, we first need to find a way to expose the JMX features to Hawtio. This is where Jolokia comes in. There is a JVM agent in it who can expose JMX MBeans via JSON. All you have to do is to init and start the server like this:

JolokiaServerConfig config = new JolokiaServerConfig(new HashMap<String, String>());
JolokiaServer jolokiaServer = new JolokiaServer(config, true);
jolokiaServer.start();

Now you're ready to try out the Hawtio console. Have a look at the quickstart to see what is possible. For this example I just use the Google Chrome Extension which you just have to download and drag into your extensions page in Chrome. This looks like:

Hawtio Extension in Chrome
If you configure "localhost", "8778" and path "jolokia" you're all set to start browsing your results. After you click "connect" you can look through the dashboard or switch to the JMX view and navigate to the Hibernate MBean:

Browsing JMX MBeans with Hawtio
There is a more comprehensive introduction to Hawtio by Stan Lewis from DevNation 2014 waiting for you to watch it:

That was the short example. Go ahead and look at the GitHub source-code and feel free to look into Hawtio a bit more:

Getting started with SwitchYard 2.0.0.Alpha1 on WildFly 8.1.0.Final

I've been sticking my head into some hot RedHat technologies lately and among the many interesting parts I found SwitchYard. Without being disrespectful towards everybody wrapping their heads around SOA and service oriented architectures in the past, this has always been kind of weird to me as a Java EE developer.

In the past I've been building component oriented applications with what I had at hand. Mostly driven by the features available in the Java EE standard to be "portable" and easy to use. Looking back this has been a perfect fit for many customers and applications. With an increasing demand for highly integrated applications which use already available services and processes from all over the place (departmental, central or even cloud services) this approach starts to feel more and more outdated. And this feel does not come from a technology perspective but from all the requirements around it. Having this in mind this post is the starting point of a series of how-to's and short tutorials which aim to showcase some more diverse ways of building (Java EE) applications that fit better into today's requirements and landscapes.

What is SwitchYard?
It is a component-based development framework for integration applications using the design principles and best practices of Service Oriented Architecture. If you're expecting kind of a full-blown fancy BPMN/SOA buzz-word suite you're off by a bit. This is for developers and should make it comparably straight forward to use. It's been around for a while now and starting with latest 2.0.0.Alpha1 it is compatible with WildFly 8. Reasons enough for me to get you excited about it.

Installing SwitchYard into latest WildFly 8.1.0.Final
Download both, the switchyard-2.0.0.Alpha1-wildfly bundle and WildFly 8.1.0.Final from the project websites. Install WildFly 8 by unzipping it into a folder of your choice (e.g. D:wildfly-8.1.0.Final). Now unzip the SwitchYard bundle into the WildFly folder. Depending on the zip utility in use, you may be prompted whether existing files should be replaced.  Answer yes/all for all files being unzipped.
It's an alpha so you have to tweak the configuration a bit because of SWITCHYARD-2158. Open "JBOSS_HOME/standalone/configuration/standalone.xml" and search for "org.switchyard.component.camel.atom.deploy.CamelRSSComponent" and change the package from "atom" to "rss". Now go ahead and start the server with "JBOSS_HOME/bin/standalone.sh/.bat".
If everything worked correctly you should see a message like this:
09:18:25,857 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.1.0.Final "Kenny" started in 3712ms - Started 210 of 259 services (81 services are lazy, passive or on-demand)

Building and Deploying the Bean Service Quickstart
If you want to get your hands dirty you can easily start with the packaged applications in the "JBOSS_HOME/quickstarts/" directory of the distribution. A simple one is the bean-service example. It makes use of one of the core components of SwitchYard, the Bean Component. It allows Java classes (or beans) to provide and consume services. And therefore you can implement a service by simply annotating a Java class or consume one by injecting a reference directly into your Java class.
And because the Bean Component is a standard CDI Extension, there is no need to learn a new programming model to use it. It's just a standard CDI Bean with a few more annotations.
For existing Java EE applications this means, that you can expose existing CDI-based beans in your application as services to the outside world or consume services within your bean by just adding some more annotations.
First things first. We need to tweak around a bit in the project pom.xml to make this work. Go to the build section and replace the "jboss-as-maven-plugin" with the latest version of the
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>1.0.2.Final</version>
Now run "mvn package" to download all dependencies and execute the tests. It should just work fine and state:
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0
Let's deploy it to our WildFly instance by issuing "mvn -Pdeploy install". The WildFly console finally lets you know about the successful execution:
10:19:44,636 INFO  [org.jboss.as.server] (management-handler-thread - 1) JBAS018559: Deployed "switchyard-bean-service.jar" (runtime-name : "switchyard-bean-service.jar")

Quick Test For The Application
A very quick test is to execute mvn exec:java which will execute the BeanClient class and fire a SOAP request towards the deployed service. The output should be:
SOAP Reply:
<soap:envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><env:header xmlns:env="http://www.w3.org/2003/05/soap-envelope"></env:header><soap:body><ord ers:submitorderresponse="" xmlns:orders="urn:switchyard-quickstart:bean-service:1.0
"><orderack><orderid>PO-19838-XYZ</orderid><accepted>true</accepted><status>Orde
r Accepted [intercepted]</status></orderack></ord></soap:body></soap:envelope>

That is it for today. The next parts will examine the sample application in a bit more detail and install the tooling and introduce you to various other components. If you can't wait, check out:

Win a free eBook copy of WildFly Performance Tuning

This is a seriously good start into a new area. I thought you might be interested in winning Packt's latest book about WildFly Performance Tuning. So, this is the contest to make it happen.
I have 2 eBook copies of WildFly Performance Tuning to be given away to two (2) lucky winners.

Here are the Rules
- The contest is running from today (07/09/14, 5:45a UTC) to next Wednesday (07/16/14, 5:45a UTC).
- Answer the three questions below correctly about WildFly and put down a comment on this blog with the answers.
- If more than three correct answers are posted, I will let my daughters draw the two winners.

The Questions to Answer
1) When was WildFly 8.1.0.Final released?
2) What is the name of the Red Hat project, that offers help with Java EE application migration?
3) Who wrote the WildFly Plugin for NetBeans 8?

Content of the Book
Chapter 1, The Science of Performance Tuning, talks about what performance tuning is all about and how it can be applied within an organization.
Chapter 2, Tools of the Tuning Trade, introduces some useful Open Source tools to use when performance tuning anything covered in this book.
Chapter 3, Tuning the Java Virtual Machine, covers what the engine of Java is and how to tune it as well as all other Java-based applications.
Chapter 4, Tuning WildFly, explains what can be tuned in the WildFly
Application Server.
Chapter 5, EJB Tuning in WildFly, talks about how Enterprise JavaBeans can be tuned.
Chapter 6, Tuning the Persistence Layer, covers how to design an effective database as well as how to tune JPA and queries.
Chapter 7, Tuning the Web Container in WildFly, explores Undertow—the blazingly fast, new web container in WildFly—and discusses how it can be tuned to become even better.
Chapter 8, Tuning Web Applications and Services, covers numerous tuning tricks and tips surrounding the web applications and services based on Java EE.
Chapter 9, JMS and HornetQ, explains how JMS works and can be tuned in HornetQ, the JMS provider of WildFly.
Chapter 10, WildFly Clustering, explores tuning in a clustered WildFly, HornetQ, and Java EE components.

About the Author
Anders Welén embraced the object-oriented techniques of the Java language early in life, and later evolved to Java Enterprise specifications. As a true believer and evangelist of Open Source, he naturally discovered the JBoss Application Server,
which led to years of providing expert consultation, training, and support for the JBoss and Java EE infrastructures.

Good Luck everybody!

Farewell msg systems …

.. and thank you for amazing 14 years. It's true: I've been within the msg group for an incredibly long time  and have been working in the Java/Java EE space almost all of it. Next Friday (07/11/14) will be my last day. Now it is time to move on.
I've been working with customers and internal Java EE projects all over the place, blogged, authored articles and have been speaking at conferences a lot. The passion for Java and mostly Java EE related topics is burning even hotter these days.

I'm more than proud to announce that as of calendar week 29 (7/14/14), I'll be joining Red Hat as Developer Advocate in Arun Gupta's team.
My main topics are technologies related to Red Hat JBoss Middleware including WildFly and the broader JBoss technology stack. So, I will be blogging, speaking and spreading the word about the most important and relevant parts in today's Enterprise Java world. There's no need to be afraid of this blog turning into a sales slide-deck. As you're used to, I'll mostly stick to technology and conference reports. So you don't even have to update your bookmarks as this blog is here to stay.

So, if you have ideas, requests, wishes or if you're just hungry for something new, just give me a ping on @myfear or leave a comment in this blog and I'll be more than happy to respond. Just reach out to me.

Arun and Markus at JavaLand 2014

"Mad Matter: "Have I gone mad?"
Alice: "I'm afraid so. You're entirely bonkers. But I'll tell you a secret. All the best people are.”
Lewis Caroll, Alice no País das Maravilhas

Java EE 8 – Deliver More Apps to More Devices

If there's one thing I dislike about summer, it is the fact that there isn't much news to share or talk about. Who ever decided to put the Java Day Tokyo into this boring time of the year did a pretty good job and gave me an opportunity to write a blog post about new and upcoming Java EE 8 specification enriched with some more thoughts and pointers.
As announced on the Java EE 7 EG Mailinglist beginning of June the new EE 8 JSR is going to be filed shortly (before JavaOne).

Contents of EE 8
Unlike the first version of EE 7 which was totally dominated by the word "cloud" and later re-aligned with the hard facts, this new Java EE version will basically stick to three different areas of improvement.

  • HTML 5 / Web Tier Enhancements
  • CDI Alignment / Ease-of-Development
  • Cloud Enablement

All three can be seen as a continued evolution of what EE 7 already delivered and there is no real surprise in it at all. Head over to The Aquarium to read more about the details.

Cameron Purdy about EE 8 at Java Day Tokyo 2014

Hidden Gems - What might come up at JavaOne
The Java Day Tokyo was held recently and with Cameron Purdy as a keynote speaker about Java EE and it's general direction (mp4 download, 363MB) this probably was one of the first chances to see, what will be the overall story for JavaOne with regards to the platform. As Oracle should have learned the Java community isn't interested in big and unpleasant surprises. Strategic directions are communicated and prepared a bit more carefully. We all have seen and heard about the IoT hype and the efforts everybody puts in it. This obviously also seems to have some outreach into Java EE. Beside the general topics and contents of EE 8 the Purdy keynote also contained a slide titled "Powering Java Standard in the Cloud - Deliver Mode Apps to More Devices with Confidence". 

Java Standards in the Cloud.
And yes, you are correct about thinking that this is EE 7 coverage. It actually is. But at least for me it is the first time, that individual features have been isolated from individual technical specifications and put into a complete, strategic picture outlining use-cases in the enterprise. It will be interesting to see, if there is something more like this to be shown at JavaOne and how much IoT we will see in EE 8 when it finally hits the road.

I’m speaking at JavaOne 2014, September 28 to October 2, 2014 in San Francisco, California, USA

Just a short 104 days to go until the number one Java event is going to happen again. JavaOne opens it's doors again beginning 28th of September till the 2nd of October this year. After intense months of work in the program committee for both the Server-side Java and the Java in the Cloud track, where we dug through all the proposals the final program has been selected and the notifications have been send out.

And I am proud to contribute again this year. After the intense event last year, this is going to be a bit more relaxed with only one session.

Session ID: CON1747
Session Title: JavaScript in the Enterprise
Session Abstract: Instead of exclusively using JavaScript on front-ends what else can be done with it on Java EE servers? Looking into Nashorn, Avatar, Scripting JSR and other possible options of also using JavaScript as an enterprise workhorse.

Beside this I am going to contribute to the NetBeans day and moderate the "Free Java Tools for Maven and Java EE" panel.

There'll be tons of amazing sessions in the content catalog and if you haven't you should register today!

Review: "Java EE 7 with GlassFish 4 Application Server" by David Heffelfinger

The third edition of David Heffelfinger's Java EE book has been recently released. This updated edition is covering the latest Java EE 7 Platform. Thanks to Packt Publishing for giving me a review copy to look at.

Abstract
This book is a practical guide and follows a very user-friendly approach. The book aims to get the reader up to speed in Java EE 7 development. All major Java EE 7 APIs and the details of the GlassFish 4 server are covered followed by examples of their use. If you are a Java developers who wants to become proficient with Java EE 7 this book is ideal for you. Readers are expected to have some experience with Java and to have developed and deployed applications in the past, but don t need any previous knowledge of Java EE or J2EE. It teaches the reader how to use GlassFish 4 to develop and deploy applications.

Book: "Java EE 7 with GlassFish 4 Application Server"
Language : English
Paperback: 400 pages
Release Date : March 26, 2014
ISBN-10: 1782176888
ISBN-13: 978-1782176886

The Author
David Heffelfinger (@ensode) is the Chief Technology Officer of Ensode Technology, LLC, a software consulting firm based in the greater Washington DC area. He has been architecting, designing and developing software professionally since 1995 and has been using Java as his primary programming language since 1996. He has worked on many large scale projects for several clients including the US Department of Homeland Security, Freddie Mac, Fannie Mae, and the US Department of Defense. He has a Masters degree in Software Engineering from Southern Methodist University. David is editor in chief of Ensode.net, a website about Java, Linux, and other technology topics.

The Content
This is actually the third edition of the book. All you need to know about Java EE 7 and latest GlassFish 4 release is packed into 11 chapters. Ranging from a getting started introduction with GlassFish to developing with latest Java EE 7 core technologies, like JSF, EJB and such it is also covering how to secure your applications. The 400 pages bring a net content of 313 real content (removing preface and appendix kind of stuff). It is a fast paced tutorial for Java EE 7.

Writing and Style
 If you are used to technical documentation you shouldn't struggle with this book. For a non native speaker it reads very easy and I didn't find very many complex sentences which stopped my reading. The examples always interrupt the overall reading flow but this book isn't meant to just be read. You need to get hands on the sample code and learn to use it.

Conclusion and recommendation
The book is keeping things simple enough to make it easy to start with almost the complete platform at a beginner level, summing up the concepts and without getting intimidated. The large amount of sample code, examples and pictorial representations improve the understanding of the content a lot.
It is an easy read and you can quickly work your way through it. Go get it, while it is hot!

JavaOne 2014 – Some First Analysis on Submissions

Time is running away these days. So many things happening in parallel and of course the most important Java conference is in the middle of everything. JavaOne 2014 closed the CfP doors already and voting is well underway. There are very few things the Program Committee is allowed to talk about but after having skipped that kind of analysis last year it was time for me to ask for permission and so I can start to spread some excitement about the content. Please keep in mind, that every number you see in here are just percentages; there is not a single hint on concrete counts or other numbers in here. It's all about proportions and overall weight. And one last remark: This is the complete overview about the submissions. The final conference program will be shaped out of it. A big "Thank you!" to the program chair Stephen Chin who was kind enough to gave his permission for publication.

Submission Types
A good starting point is the overall distribution of submissions over the different session types. Speakers could select any of four different types for their submission. The classic session, a BoF (Birds of a feather) a tutorial or a HoL (Hands on Lab)
Not a big surprise that most of the submissions are sessions (75%). This is slightly more than in 2012 (70,14%) Second most proposed content are BoFs. Followed by HoLs and Tutorials. Even if this sounds final for now the proportions might change because types get switched on request of the program committee.


Submissions per Track
Beside the non surprising type distribution the overall spread per track is another important figure. What is moving the community these days and which tracks got the most attention? There are nine different tracks to pick from. Clients and UI, Core Java Platform, Internet of Things, JVM Languages, Java and Security, Tools and Techniques, Server-Side Java, Java in the Cloud and Agile Development.


Very few proposals are moved around from track to track during the voting process but it happens. Spread out over the tracks is comparably equal. Slight leader is the "Tools and Techniques" Track. But the overall distribution doesn't allow to identify a clear leader.

Oracle vs. Non-Oracle Submissions
And the last two metrics I'm going to look at should answer the question about Oracle's involvement in general. Many people still believe that the JavaOne content is mostly driven by the company behind it. First of all, take the time to see and feel it for yourself. There is still plenty of time to register and take the chance to attend this amazing conference.


Exactly 70% of the proposals come from the broader Java community. Only 30% have been proposed by Oracle employees. Compared with the 2012 numbers this is only marginally worse by 1%. Note, that this only includes the proposals where the first speaker is an Oracle employee. I was asking myself the question if there is some track Oracle explicitly jumps in:


Overall answer: Just a bit ;) There are only two tracks where there are significant more proposals from Oracle than from the community. Internet of Things makes the most significant different and Clients and UI marks the other spot. Given all the latest hype around both topics this is anything but surprising. I am very pleased to see, that the Tools and Techniques track is completely owned by the community. My interpretation: It's pretty clear who knows how to use Java right ;)

Conclusion
JavaOne is once again going to be a great, community driven conference with a lot of awesome content! If you haven't done so take a look and register! The final program is going to be announced in a few weeks and there still is plenty of time to find a flight and a hotel near by. Save the date: September 28 – October 2, 2014! And don't forget to follow @JavaOneConf or Like the JavaOne FB page and keep up to date by reading the official blog!



XRebel on GlassFish 4

The cool Zeroturnaround guys recently opened the private beta for their latest product which is an interactive and live profiler for your Java EE apps. Anton showed me the M3 at DevNation and I was curious to get my hands on it. Here is the first test-drive and some screenshots.

Getting It And Setting It Up
First thing to keep in mind is, that it is a private beta. So you have to apply online to get access to it. After you've been approved you get an email with a password and URL to download the roughly 5MB large ZIP file which comes with a single jar and a bunch of text files. You can download the first documentation as a PDF and there is not much more than this for now. Setting it up also is very straight forward. As usual the jar has to be registered as a java-agent. In GlassFish you typically do this at the JVM settings (-javaagent:D:/path/to/xrebel.jar). For convenience reasons I decided to replace the debug feature and automatically activate XRebel while being in debug mode.


If that is done you're ready to go. All you need to do is to install your favorite application and give it a try. I decided to use latest EE7 DDD-sample project developed by parts of the GlassFish team: Cargotracker. Clone the SVN from Java.net and import it into NetBeans 8. Build it and deploy it to GlassFish. Point your browser to http://localhost:8080/cargo-tracker/ and you can see the first XRebel magic happen.

First Impressions
Let's have a look at what XRebel can do for you.


The tiny little control-panel is integrated in all pages you navigate through and gives you access to all kinds of runtime information. But first of all lets tweak the settings a bit and reduce the inspected number of classes a bit by configuring the package hierarchy we're interested in:


Beside that you can also tweak thresholds and notifications on the settings page. After you've done that you can redirect your browser to the public landing page of the application (http://localhost:8080/cargo-tracker/public/track.xhtml) and watch XRebel do it's magic. A click on the session symbol brings up the HttpSession details:


The dialog let's you inspect all the objects placed in the session and size. The little icon in the control panel keeps track of growth and alerts you if something unexpected happens. Even more impressive is the SQL inspection.


You can drill down to individual SQL statements, see the complete statement including resolved parameters, affected rows, execution times and execution timestamp. A tiny search box let's you specifically search for expressions and if you don't want to see the complete call-stacks you can simply switch the tab and look at all the queries as a one-pager.
The newest milestone M4 also has an exception tracer:


Which gives you a better parsed result of the occurred exception and little more details about the exact path where it happened.

Bottom Line
It is an amazing little helper. Minimal intrusive. No configuration in your application and still keeps track of most of the critical things you're interested in knowing. I'm curious for the upcoming betas and of course of the final product and it's licensing. Keep up the good work guys. I love your creativity when it comes to making better tools for developers.

Trip Report DevNation 2014

It's been an amazing week. Being announced as a features speaker put some more pressure as usual on me. But heading out to San Francisco for the second time this year was amazing. The typical hazels with a 10+ hour flight and immigration are easy to leave behind when you arrive in sunny and warm weather.


The inaugural DevNation happened this year being the new open source, polyglot conference for application developers and maintainers. Directly next to RedHat Summit in the famous Moscone Center. The speaker lineup was amazing and session titles were pretty new, too.

Moscone promised to be a prominent and well know location for this brand new conference. Even if the competition on Java events and conferences in the Bay Area is amazing RedHat managed to pull of something very attractive here. There has been plenty of space for people to hang out and the session rooms were close to each other to prevent longer walks around. The opportunity to drop into the Summit occasionally and see the huge exhibition area also added to the positive mix. Generally the distance between the developer centered DevNation conference and the JBoss Developer Lounge was kind of negative. I'd preferred to have some more JBoss action closer to the conference. Beside this the attendees had plenty of time to talk and hang out with speakers and organizers. It was a pleasure to be there and I am really looking forward to next years conference! Find some impressions from my visit in the G+ album.
G+ Album DevNation 2014

Happy 8th Birthday Java!

It's been another longer journey but yesterday, exactly two years, seven months, and eighteen days after the release of Java 7 we now have production-ready builds of Java 8 available for download! This new major release contains several new features and enhancements that increase the performance of existing applications, make it easier to develop applications for modern platforms, and increase maintainability of code. Here is a brief overview about my personal highlights.

What's new overall?
Several areas of the language itself, profiles, security, JavaFX, tooling, scripting, Date and Time, concurrency and a more or less lengthy list of things changed or got added. More than 8.000 bugs and features have been addressed and be incorporated into this release. The complete list can be found in the official release-notes.

Java Mission Control 5.3
One of the highlights is the new Java Mission Control release. It is bundled with the JDK and comes with a separate list of enhancements in it's own release-notes. Find the complete documentation as part of the official Java SE 8 documentation.

Compact Profiles
The newly introduced profiles enable reduced memory footprint for applications that do not require the entire Java platform. The javac compiler has a -profile option, which allows the application to be compiled using one of the supported profiles. The three are additive layers, so that each Profile contains all of the APIs in profiles smaller than itself. The compact profiles feature is useful in small devices with less hardware power.
And yes, I am personally still totally frustrated that Jigsaw will probably never see the light. But I am happy to be proven wrong on that.

Java Date-Time Packages
Thank you Stephen! Thank you for this great piece of work. TimesTen is the new Date and Time API in Java 8. Clear, Fluent, Immutable, Extensible. There are two basic ways to represent time. One way represents time in human terms, referred to as human time, such as year, month, day, hour, minute and second. The other way, machine time, measures time continuously along a timeline from an origin, called the epoch, in nanosecond resolution. See the official tutorial for more examples and usages.

Good Bye PermGen!
Removal of PermGen. Full stop. It's gone! YES!

Security Enhancements
More and stronger Algorithms, TLS 1.2 default and further enhancements.

Nashorn
Java 8 is co-bundled with the Nashorn, which is an implementation of the ECMAScript Edition 5.1 Language Specification. See the user-guide for all the details.

Happy 8th Birthday Java!
Congratulations to everybody involved. Especially the Adopt-OpenJDK community which was driven by the London-Java-Community and supported the Date-Time efforts by providing tests.

Veröffentlicht in Java |

JavaOne CfP 2014 – Open for Business

This time of the year. Finally. It was about time. The 2014 JavaOne Call-For-Papers opened a few days back. And it is going to be a great one. Plenty of changes upcoming and it will have a huge focus on community speakers.

The rolling acceptance process from last year is back, so submit early!

A quote of mine sneaked into the advertising emails ;)
There is a new dedicated track for Agile development this year, making a total of nine Java tracks.  This year's tracks are:

• Clients and UI
• Core Java Platform
• Internet of Things
• Java Virtual Machine Languages
• Java and Security
• Tools and Techniques
• Server-Side Java
• Java in the Cloud
• Agile Development

The call for papers closes April 15th at 11:59 p.m. PDT  and there is no time to waste. The best of the best speakers from the Java/JVM ecosystem will be there and if you look at the submissions from 2012 you see that most of the content comes from the community. As usual, speakers will receive a complimentary pass to JavaOne with an accepted talk.
Go ahead and submit some awesome talks!

Abandon Fish! Migrating from GlassFish to JBoss or TomEE

I'v been a bit busy lately writing and reviewing stuff and didn't really had the chance to wrap up content for my blog. But things will change again and I am truly looking forward to that. So this is just a small reminder about one of the latest things I've been working on. RebelLabs published their latest report yesterday and it was my pleasure to put some efforts into it.

Since a while the GlassFish community is a bit uncertain about the future of GlassFish and many developers are looking into alternatives. There are plenty of recommendations backed by vendors and evangelists. And nobody looked into the details and problem areas. It was time to change that and a bunch of people put together their thoughts and experiences about what it takes and which would be the best migration target. The outcome is the Abandon Fish! report. You can get it for free (at least for the price of your email if you want the PDF) and it contains all about the history of GlassFish, an assessment of the political situation and influencing parameters and a solid analysis about the different containers and reference implementations used on different servers. The outcome are 34 pages, beautifully designed and easy to read which guide you through the first steps and give you very good hints on what to expect when trying to migrate your existing applications from GlassFish to WildFly or TomEE.