WJax 2014

Well, first of all, thanks to @rheinjug, for providing me with the tickets, I’ve won! Yeah! ;))

For me conferences are always a good time, and I really like the energy and inspiration I draw from a conference. And WJax was no difference!

Let’s dive right into of what I saw at WJax 2014.

The basics

It’s quite a large conference in a large venue, I would guess around 2000 people there. The overall setup was very good: Large enough rooms, little technical difficulties, good tram connection, nice food, not that much queueing up and acceptable WIFI coverage. Have seen this far worse, thumbs up!

Sadly the conference was overshadowed by a strike of the german train union, so lots of people had some difficulties getting back home. Quite some conversation went about that. But the organizers did a good job communicating this and trying to leverage things.

The topics

Microservices

The main topic this time was ‚Microservices‘ and all the things buzzing around that term: Docker, DevOps, Cons/Pros of the Application Server.

I think the idea of Microservices sounds quite appealing: Small, self-contained and focussed applications.
One the one hand Microservices might help you prevent monolithic architectures, allow you to establish quicker turnaround times and give you and your team some sort of organisational independence,
On the other hand, if your system consists of too many Microservices you might experience something like a Microservice hell.
Newer companies like Etsy, Netflix or Groupon use and/or coined some of those microservicy ideas.
Stefan Tilkov did a very good one about this. He presented ideas how you can borrow some of these newer architectural approaches in an existing enterprise world. Liked that. I think we will stumble upon some of those concepts sooner or later.

Docker provides tooling to assist you in achieving quicker turnaround times for your applications. It allows smart packaging of your application and its context (i.e. OS), so you could take your application (and its container/os) from your dev box to your staging and production environment.
Loads of talks about that. There seem to be rough edges here and there (Continuous Delivery tool support, dealing with databases, clustering, etc ), but nonetheless a very influential and promising tool. It naturally shines, when used in an DevOps environment.

The discussion about whether we still need an application server or not is closely related.
On the one hand people argued, that the application server provides a stable ground, which may need some refinement here and there.
On the other hand people said, the application server is too big, needs application specific adjustment anyway, does not allow you to port a random JEE application, that vendors are too slow, etc.
Some kind of middle ground was the notion to use a plain tomcat with spring, instead of waiting an average of 3 1/2 years to be able to use a newer JEE version.

One surprising outcome for me was, that most people on this conference agree on the 1:1 relation between an app and an appserver. Given that it would not be a harsh step to embed some kind of server in the application itself.

Some talks dealt with REST and Hypermedia. Learned how this could make your application logic more transparent. Things seem to be a little rough and ‚in progress‘ in that field.

I somehow managed to miss the talks dealing with ‚reactiveness‘ altogether. Important topic. Shame on me.

JavaScript

Though there was a JavaScript day I would have expected a little more buzz around AngularJS and JavaScript.
I saw an interesting talk how to combine AngularJS and TypeScript. I like how TypeScript provides with optional typing, the usage with AngularJS seems a little clunky to me. AngularJS 2.0 seems to go that way, we will see if that feels better.

I missed one talk that summarized the current state of JavaScript development.  Did not sound promising looking at the abstract, but reviewing the slides, it seemed to have been great.

Non Dev stuff

Two of the best talks I saw at WJax were both dealing with non dev stuff.

One talk by Elmar Jürgens was about the proper usage of quality measurement tools and processes in your project: Use simpler metrics, don’t control the developers, don’t show quality numbers to management unless you provide context to those numbers. Entertaining talk and well done slides!

The other talk by Stefan Toth was about architectural decisons and how you can defer them. It presented no fundamental new insights, but it showed the idea to explicitly use and try to extend a learning phase, to make your decison more elaborate. You will know more about your project as time passes by. Also very entertaining talk and great slides! Thanks to Stefan Zörner for pointing me at this talk.

Java 8 / JEE 7 /Spring

Quite some talks, but I felt that I heard most of those topics elsewhere. An interesting one by Lars Röwekamp questioned existing JEE Patterns.
I am a little bit tired of Java 8 and JEE7 talks. I want to finally use it in everday work. And it seems to me that I am not alone in that.
Not that much on Spring, though Spring Boot (a way to build self-contained applications) looks promising to me.

Alternative Languages

Is saw very little on alternative JVM languages, though I heard a good talk by Silvia Schreier and Philipp Schirmacher about real world Clojure. I always wondered how Clojure would work in an ordinary web app. This talk showed it and saved me some time.

What else

Other notable bigger topics, that I not dug deeper into were the Internet of Things (IoT) and white collar stuff like BPM and friends.

The conclusion

Hell of a lot of talks. It was a difficult decision all the time, I probably missed some more good ones.

Less geeky than for example Devoxx, more focussed on business IT. Which could be either good or bad. Though I appreciate the nerdy and perhaps more visionary approach of other conferences, I liked the „down-to-earth“ (if you might call it so) approach. The attendees seemed to work in similar contexts. So I could connect to most of the experiences that were presented. I would definitely go there again, if getting the opportunity.

Devoxx 2013 Recap

IMG_0002_2

Finally I managed to visit Devoxx. I had a great time, attended many good talks and as usual few not so good ones.

The most prominent topic was the upcoming JDK 8. Its most visible feature will be the advent of lambda-expressions. Which will have a deep impact on developers. Especially the collections-api feels whole new.

Second thing people talked about was, well, Javascript!  I kinda like Javascript, most devs don’t. But the things people do with node.js and friends seem to impress java folks. Angular.js and single-page applications (spa) was,  I guess,  the second most talked about topic on this conference. Google did do some pushing here and there. All in all there seem to be some resentiments against  spas. But all talks about spas I went to were packed, so there must be something fascinating about them. I would predict we will see a slight paradigm shift towards this architectural style.

The term reactive and the reactive manifesto was cited quite often and it fits into the aforementioned schemes. Though I was looking into the functional world recently, I didn’t quite grok the talk(s) about reactivity. Perhaps those were only bad sessions, but  I guess I have to get up to speed in this area.
IMG_0033_2
Java EE 7 is here, but compared to JDK 8 it feels like a maintenance release.

Much talking about android, which I didn’t care about.

RaspberryPis everywhere! There seems to be quite some hype around those small thingys. Devs attach them to virtually everything. Duct taping them to drones, is the thing. I bought one, let’s see what happens ;)

There were some Spring talks, but compared to Java EE it seems rather irrelevant.

There wasn’t so much buzz around alternative JVM languages. It seemed like an accepted fact, that they have their place in the ecosystem, nothing too fancy about them any more. Use them if you like, nobody will get hurt.

I’d like to close this article with my personal top-five sessions:

Top 5 Sessions

  1. Autumn Collections
  2. Bleeding Edge
  3. Angular Workshop
  4. Projekt Lombok
  5. Groovy

 

Eclipse RCP: The dreaded Plugin ID

Hi all!

Apologies for not updating this blog lately.

As I want to talk a little bit about my experiences with Eclipse RCP, I think it is suitable if I tried to write in english. Perhaps this can be helpful for non-german speakers aswell, as information/documentation about E-RCP is a little sparse.

So… lately I had the chance to be a part of a Eclipse RCP project, which I greatly looked forward to! As I took a deep-dive into the concepts, I noticed that things work very differently compared to web-applications or even Swing applications.

In case you are interested, I mostly refered to 2 books, namely

Additionally there is one blog by a guy called Lars Vogel, which I appreciate very much! Thanks for the great effort Lars!

By now, our project has produced a niffty little prototype of the soon-to-be greatest RCP-application. Though none of our design decisions are written in stone yet (e.g. I am not sure whether we should use editors for our inputs or just views), I think/hope I have more or less understood the framework.

But there is at least one thing, that bothers me time and time again:

The ubiquitous Plugin ID. I cannot complain much about the basic concept: Of course a plugin has to have an unique identifier, and when you refer to a specific plugin, you have to use this Plugin ID. But again and again I have spent ages looking for some error/non-functional bits while finally noticing that I used the wrong ID.

So I could just end up blaming me. What I am missing though is some kind of assistance from the framework itself, saying „Man! You are looking for a plugin named this.is.wrong, but I only know the following plugins:“ I think that would save us a lot of time.

Lately I was implementing context-sensitive help. But I could not figure out, why hitting f1 on a text field did not do anything. This blog then showed me, where to place a proper breakpoint to take a peek into the help-listener. It showed that the context-arrays where simply empty. So no context help could be seen. At least I saw that the keybinding worked. After debugging a few hours I was basically stuck. I made a few steps back and made a small sample project. At first I experienced the same issues… is Ganymede broken? I then realized that I did not provide the Plugin ID but the package name (which had a different case). I changed cases and voila it worked. Again I debugged to the help-listener and behold: The context array had one element.

What I am asking myself right now is: Why doesn’t Eclipse tell me that it does not register my context (or puts it somewhere only it knows). Life would be easier! :) It is seldom obvious to me what happens internally, when Eclipse executes a specific functionallity. At least I need an easier way to find places to debug to.

Perhaps I’m just missing some point…

Until then I only can repeat what the aforementioned books told me before:

BE  VERY CAREFULL WHEN YOU USE PLUGIN-IDS as there is no safety net!