Donnerstag, 28. Juli 2016

From Java Swing to JavaFX - RISC-HTML

CaptainCasa Enterprise Client is a rich client framework for enterprise applications.

Founded in 2007 we were quite exotic ones, having chosen Java Swing as UI technology those days. The main reason for NOT having chosen HTML was: our framework users develop operationally used business applications with long lasting life cycles - and they do not want to afford a rewrite of their UI every 5 years - as it was (and still is) common in HTML environment.

Somewhere around 2011 when JavaFX 2.0 came up, we added a JavaFX implementation of our client. Luckily our rich client framework is following the architecture of "server side interaction processing", so our UI-client is a generic rendering engine, rendering XML forms coming from the server side. Still we explained people, that JavaFX is an adequate technology for the type of  "heavy" business applications they develop - and still the core argument was: independence from "browser volatility" and from browser compatibility issues.

And then, all of the sudden, we were hit by some new idea, how to deal with HTML and browsers so that we can overcome the typical problems that are associated with browser based frontends. We called the idea "RISC-HTML" - and managed to rewrite our complete Java Swing / JavaFX client so that is is running now in a 100% HTML way.

The idea behind RISC-HTML is: we asked ourselves "Which are the basic elements, that a UI technology must provide in order to build some UI framework on top?". The result is: if a UI technology supports "rectangular areas" and "input fields", and if it supports just the ability to absolutely position these elements - then this is sufficient to build up all the business controls that we internally use.

So we did not think the traditional way: "How can we set a framework layer on top of HTML, in order to simplify HTML and to equalize browser incompatibilites?" - because with this approach you are always bound to the known HTML limits. - We went the other way: "How do we build a UI framework on top of primitive elements?" and then checked how to transfer this thinking to HTML.

The result is something which - from the beginning of development work on - pushed and pushes our adrenaline level! It's the first time that we are working within the Browser/Javascript environment, without suffering from it! Just the opposite: we see, that our expectations are fulfilled:

  1. no issues with browser compatibility anymore - because of using only two types of elements and because of having encapsulated them inside some "Microkernel" JavaScript library.
  2. no problems with any layouting strategy anymore - layouting is done via JavaScript controls on top of the "Microkernel". The browser's role is to "execute the rendering", i.e. to draw rectangles at the right position. The decision, where and why to draw the rectangles is in the hands of the corresponding (JavaScript) control
  3. and the most exciting experience for us: RISC-HTML is!!! Well, this mirrors the increase of speed of browser processing in general - and the increase of JIT-compilation-quality within the JavaScript interpreters.
These ones of you who remember the CISC/RISC processor discussion of  the 90s will clearly see the analogies: the idea of RISC processors is to let the processor only do the core tasks and to arrange the logic "in front of the processor". - It's the same what we do with browsers: we reduce the browser's role to basic rendering processing - and push the logic out of the browser into some program/JavaScript control layer.

Result: RISC-HTML is clearly the future of our rich client framework! It's the combination out of "zero installation" for the end user and at the same time "zero maintenance" on the developers' side. Well, the word "zero" is maybe a bit too aggressive... - but it's fair to say that maintenance effort is drastically decreased.

Check out the information at and test drive the RISC-HTML based demo environment:

Dienstag, 20. Oktober 2015

XI. CaptainCasa Community Meeting

CaptainCasa is a community of European ISVs defining and using a Java based User Interface for significant parts of their applications. The rich client framework "CaptainCasa Enterprise Client" is the output of this community - and available both in unrestricted free and commercial licenses. The framework was transferred from Java-Swing to JavaFX in the recent years.

The XI. Community Meeting is scheduled for Dec 03rd 2015. The meeting is held in Schwetzingen, close to Heidelberg, Germany.

Everyone is invited who is technically interested in CaptainCasa, JavaFX, rich client technology in general. Please view details here:

In case of interest register via

Regards, Björn

Montag, 12. Oktober 2015

Adaptive Container Components added to control library

Having one layout/component definition which adequately reacts on different sizing scenarios - this is what adaptive layout is about. We now added some new components to enable this within our CatptainCasa Enterprise Client, built with Java FX.

Take a look here: - also including a short demo video. Development still is going on, so adaptive concepts will be also injected into the various grid components.

Regards, Björn

Toggle between one/two lines depending on physical space available

Flexibly arrangeing whole blocks of controls according to space available

Sonntag, 27. September 2015

Application Datapool Manager was extended by OpenUI5 based client

In addition to the fully featured Java client we now also added an HTML5 based client for our demo application "Datapool Manager". This client allows the user to view and edit data within some defined data structure within the browser:

The client internally adapts its layout to the physical device of the screen - i.e. it renders differently when being started on a mobile device:

Regards, Björn

Montag, 21. September 2015

Take a look - Open UI5 based Workplace with CaptainCasa

Take a look - we published a demo workplace utilizing the SAP/Open UI5 components that are part of CaptainCasa Enteprise Client in the meantime.

The demo is available here.

Regards, Björn

Montag, 7. September 2015

Demo Application: Datapool Manager - Sharing loosely structured data

For internal communication between ourselves and our users/customers we wrote an application "Datapool Manager" - allowing to define spreadsheet-like data to be shared across users belonging to different organizations. Possible purposes are:
  • Task lists
  • Collection of any information / analysis result
    • list
    • ...requirements list
    • ...list of attendees
...the tpyical issues where you are used to defining a central Excel file and share it "somehow".

Items are tracked (who changed what?), attachments can be added in a simple way and users can discuss / add comments on items.

The client is an FX based program. The server side is a Tomcat server.

Take a look:


Mittwoch, 29. Juli 2015

Post processing of panoarama photos - FX based tool "Horizon Straightener"

...well, this is some private project - but you may use the results, if you like what I am doing here. (Terms of use: just use it!)

You may stitch certain photos to form a panorama using software like e.g. Microsoft ICE (Image Composite Editor). There are other tools available, search the Internet for "stitch panorama"... The result of stitching quite often is a panorama, in which the horizon is not perfectly straight. The effort you then have to spend to straighten the horizon is always quite some hell.

This was the reason, why I wrote a JavaFX based tool to simplify this process.

Before - after straightening Screenshot

In the tool you can draw a new horizon line in a simple way - the whole image will be re-arranged using this new horizon line.

Please feel free to use the tool, if you want to use it. Installation is available here:

Some documentation is available here:

The tool comes as .exe-setup program for Windows. The default installation location is your user's local directory. Please do NOT install it in Windows/Program Files! The installation contains "everything" that is required to run the tool (including the Java runtime).

Forgive me for not providing a MaxOS installer yet - it's just my lazyness...