Java EE Guardians Achieve Partial Success

Today The Register reports that Oracle committed itself to sustained maintenance of Java EE. This is clearly (but possibly not uniquely) a partial success to the Java EE Guardians initiative. Hooray! ūüôā Nevertheless, as Oracle employees told me in private, this does not necessarily means to really develop Java EE any further, or in any particular direction… So the Guardians will keep up their Monitoring of Oracle’s actual next steps. Anyways I wonder how Oracle will be able to finish Java EE in time. They say they can deliver Java EE 8 early in 2017, but according to the rules of the JCP (number of steps and time Frames) and looking at the current state of some JSRs (like 370 / JAX-RS 2.1) I doubt that this will be possible in time without violating the rules of the JCP. My fear is that either Oracle will simply declare the current state (hence: rather zero) as “Java EE 8” or simply ignore other Stakeholders and declare their own products as “Java EE 8”. I shouldn’t wonder about the latter, as Oracle recently (possibly frequently) ignored JCP rules, e. g. by simply being unresponsive to EG members, dictating results without asking EG members about their opinion, or just ignoring the JCP timeframes without any shame.

Aside | Posted on by

JavaForum Stuttgart 2016 Slides Are Online

The slides of my talk “JavaFX in professionellen Anwendungen” (JavaForum Stuttgart 2016) can be found on Speaker Deck.

Aside | Posted on by | Tagged

Toolchains + Exec Maven Plugin = Swiss Army Knife

I am pretty excited about Karl Heinz Marbaise this week kindly releasing version 1.5.0 of Exec Maven Plugin, because it contains three additions which are really awesome (not only because I authored them, but because of their combined effect): Support for custom tool chains, an integrated and fully configurable toolchain, and finally a documentation how to use both together.

What makes this combination so great is that you now have a Swiss Army Knife which makes integration of native tools much easier. In my case, I had to provide POMs for projects written in ancient languages like Install Script (Install Shield), Power Script (Power Builder), MS Visual C++ 6, Borland C++ Builder 7, and other deprecated technology. It was hard to tell our Jenkins build nodes where all those tools are located on disk without cluttering the OS search PATH. Certainly the clean solution would have been writing a Maven plugin for each of those tools, and let that plugin find it on disk somehow magically (i. e. running a Windows registry query or checking product-specific environment variables). But the exec plugin was much cheaper to employ. The only pain point was that I had to put all the tools statically in the OS search PATH.

My contribution allows to get rid of that PATH: Just define the path to each tool using the new and now¬†embedded Paths¬†Maven Toolchain by locating a toolchains.xml file in the¬†.m2 configuration file and we’re done. This keeps the PATH pristine, and is a 100% clean Maven solution. Not as sophisticated as custom plugins certainly, but getting the project days earlier finished!

Now, if you don’t know how to use this new cool stuff, just copy-and-paste the example I added to the docs:¬†

Posted in Allgemein, Java, Open Source, Programming, Projects | Tagged ,

How Immutables Speed Up Even Non-Parallel Software

Just learned one interesting aspect of immutables: Besides the fact that they help you to provide a lot of ugly threading problems, they potentially speed your your code by itself. The trick is that once you prevent the creation of two identical object instances (e. g. by using builders and caches) you can be sure that two references always point to distinct objects. As the objects are immutable, this is an invariant. Hence, you can reduce the equals() and hashCode() methods to fixed implementations: There is no more need to actually compare any state, but it is enough to compare the reference itself. This certainly speeds up the code, even in non-parallel situations. Also, you spare memory, as you will never have any copies, but only singletons. As a side effect, less GC pressure exists, which also will result in faster Overall execution.

Cool, this really is the tip of my day. Good that I had time to attend “parallel//2016” conference. ūüôā

Aside | Posted on by | Tagged ,

Maven Coordinates for Java EE’s Individual APIs

There are things on earth you search for again and again and again. One of these is the page where the Maven Coordinates (GAV) for all the individual APIs of Java EE (like JPA, JAX-RS, etc.) is found. Here it is:

Aside | Posted on by | Tagged ,

Bash for Windows

One year ago I asked when Microsoft Linux will be done. After it learned docker, now bash was announced at build 2016. Mr Nadalla should simply announce Microsoft Linux finally.

Aside | Posted on by | Tagged , ,

JavaFX used in production by 50% of discussion audience

JavaFX-Javaland-SurveyTogether with Dr. Michael PAUS of JUG Stuttgart¬†I organized a panel discussion for TeamFX¬†at JavaLand 2016 around the¬†question “Is JavaFX ready for everyday business use?”, with well-known speakers like Hendrik EBBERS, Gerrit GRUNDWALD, Bennet SCHULZ, Anton EPPLE,¬†and Alexander CASALL. The audience was polled for several questions, and here is the interesting result: 50% of them already use JavaFX in production, and 29% are using JavaFX in commercial projects. This is far more than I expected. While there is no commercial support offer for explicitly¬†JavaFX from Oracle, 29% of the audience are willing to pay for this, and around 38% even would like to contribute to the OpenJFX project themselves. This is really good news for JavaFX, and it proofs that this technology is really ready for prime time! Always wanted to get started with JavaFX? There is no excuse anymore – just do it!

Posted in Cons, Java, Lectures, Open Source, Oracle, Programming, Projects | Tagged , ,