Forklifts, Scanners and IoT: "The Lone Java EE Hacker" at OSRAM
An interiew with Kai Buhne, System Supervisor at OSRAM and airhacks alumni:
Kai, could you please briefly introduce yourself? What is your Java / Java EE background?
My computing experience started back in the 1980's with an Amstrad CPC 464 backed by the Z80 microprocessor. I really enjoy programming and I also have a great affinity for IT hardware.
I am a holding a degree in computer science with business. My technical specialization in this area contains software engineering, knowledge based systems, database design and SAP.
Before I attended OSRAM GmbH I worked as an technical consultant. My current assignment is focused to assist the specialty lighting customer quality management division in IT related technical questions.
Before Java I used Object Pascal, Modula- 2, ANSI/ ISO C and a functional language similar to Haskell. Java is my favorite programming language for about 14 years now. With Java EE or J2EE as it was called back then I started in 2004.
What applications have you built with Java EE? You told me about interesting scenarios with forklifts scanners and state machines.
In the past I was involved in the development and maintenance of core banking systems, logistic systems, insurance and health insurance systems partly based on Java EE.
After getting more responsibilities on my current job I was enabled to develop a logistic system on my own for a primary material plant on OSRAM site in Berlin for production of quartz glass. The system is responsible for tracking the different material lots and controls the logistics workflow from notification of dispatch to inbound shipment up to the furnaces that melt the quartz sand into glass.
The primary material production makes extensive use of handheld barcode readers with embedded locked down web browsers for displaying the appropriate working steps to the people in production. All mobile user interfaces were realized in pure JSF 1.2 (JSP) and later in JSF 2.1 (Facelets) and the screen layout is CSS based and you can switch to new hardware devices and screen resolutions without any problems. The wizard like step logic is realized with custom JSF conversion and validation mechanisms and the state machine behind this is tied together by CDI and EJB beans. Really every step is handled via barcode scanning so the barcode readers itself do not need any human input via their keyboards and that means there are no media breaks even the SAP booking process is automatized in the background by reaching an appropriate state in the workflow.
Weighing systems were built into the hydraulics of some forklifts that send weighing tickets via WiFi so the receiver station is able to read them via serial interface (Comm API) and can push the data directly into the database. The ticket extraction and transformation is done by a standalone Java program that runs as a service on different Windows machines. It is specialized in "understanding" weighing tickets from different scale vendors. The same application is also used to submit the weighing data from different kind of scales including also heavy load floor scales.
The system runs 24x7 without any bigger problems since 2011.
You are the only Java developer at OSRAM. Are you happy with Java / Java EE productivity?
There were some other Java developers on different locations in the past but most of our core programmers do SAP ABAP or VB .NET technologies and even VBA is used on various occasions. At the moment to be honest I would say we are 1.5 developers here on plant Berlin ;-) I just ramp up a colleague again to whom I taught Java/ JEE some years ago to get some maintenance stuff done with the primary material system because I have got new responsibilities now.
The logistic system I described above started originally on a simple Apache Tomcat server but the use of JPA and programming of transaction management was very time consuming so the pragmatic way was to switch to a real JEE server so this was a huge productivity improvement.
Yes I am very happy with Java productivity at the moment. In my opinion Java/ JEE is a great tool to smoothly transform real world business cases into IT- based systems.
Did you had the chance to chat with other attendees during the airhacks? If yes, what was the most interesting project / problem / situation in the workshops?
Yes I talked to some people at the workshop. I can remember we were overwhelmed after attending the third day by the mere amount of input you gave to us. After day two I even dreamt of Java EE at night ;-)
How much code have you deleted after the airhacks workshop?
I could delete quite a lot of boilerplate code. It even started before I attended because I had seen some of your screencasts. Your pragmatic way of doing things in Java, JEE and JavaFX helped me a lot. Thank you for some fresh insights.
What about the performance. Is Java EE fast enough?
For my purposes JEE performs fast enough.
The only bottleneck I had was on the JPA side but after rethinking of cache strategies for fast changing and slow changing data and properly cascading between entities this was no longer a problem. I also had to optimize the structure of the database with indexes, compression as well but this was not JEE related.
What was your craziest Java EE hack?
One of the craziest hack was on the frontend side in JSF 2.1 with Facelets when I started to just use a single template for the mobile masks in which I exchanged via EL all the components inside every time the workflow switches to a "new" mask in the next process step. With your helpful example in the workshop I could even exchange the validators and converters on runtime for one text field where the scanner data goes in which caused trouble to me before.
What are the challenges you are currently facing?
At the moment I spent quite a lot of time in building a merely intelligent framework to transform various kinds of MS Excel datasheets from SAP BW and other sources from around the globe into Java objects and represent the data on dashboard screens. For correct recognition and conversion of the very differently structured spreadsheets I gave the new system quite some knowledge about the OSRAM specific product data to enable it to handle the data import autonomously. I think it can be seen as a very specialized knowledge based system for analyzing monthly quality data.
On the frontend side I am writing some custom Java FX controls specifically related to representation of balanced score cards so you can create new multi dimension data matrices and represent them on the fly. The communication between JavaFX Frontend and JEE Server will be realized by using web services.
Would you choose Java EE again?
Yes of course because it is reliable and I can stay focused on the business logic.
As a part time programmer it is really challenging to solve problems within different business segments so I have to try to be ultra-pragmatic to be able to keep track of my code and the daily not Java related business which also has to be done.
How can we find you at the internet? Any resources?
I am sorry but I have no resources so far. In my spare time I have just enough to do to keep my little kids happy so I have no time at the moment for open source activities.
Last question: Which IDEs, Tools, Applicationsservers are you using?
I used MyEclipse and Eclipse for several years but switched completely to NetBeans which I use for about three years now together with JavaFX Scene Builder and Chrome. For dependency and build management Apache Ivy and Apache Ant still serve me well and for some new projects I also use Maven. Source code version control is handled via Subversion server. On application server side Apache TomEE Plume is used and some somewhat customized Apache Tomcat 6 & 7 servers are still in use. For database management and ER modeling I use TOAD Data Modeler and Oracle SQL Developer.
Kai, thank you for the interview!