Saturday May 11, 2013

EPUB Open Toolbox (Part 1)

The start of an open source EPUB editing tool in Java. Right now, you're able to open EPUB files, view their content (the JavaFX WebView is used to display the XHTML content), and even extract the content of EPUB files so that they can be edited in a new EPUB project type, prior to letting you recreate the EPUB file from the project. Click to enlarge the image below.

The Java API used to inspect EPUB files is:

Ultimately, the aim is to replicate the EPUB functionality of Sigil and Oxygen. The sources (and binaries) will be available here on (but not yet right now):

The application is modular on the NetBeans Platform, uses the JavaFX WebView, and is built on Maven. Is there a WYSIWYG editor based on the JavaFX WebView out there? Would be great to integrate it, instead of the bare WebView component currently used in this project. Therefore, right now, there's no editing support in the WebView, though the raw XHTML files can be edited, with the support of the standard NetBeans tools, e.g., syntax coloring, code completion, and validation.

Continue to part 2...

Friday May 10, 2013

Aquatic Robotic Management Software on the NetBeans Platform

Jessiko is robot fish technology created by Robotswim in France. The technology was first exhibited at the French Pavilion at the 2012 World Expo in South Korea. It is currently marketed at events and for luxury decorations, such as at luxury hotels, restaurants, commercial centers, museums, and waiting rooms.

The Robotswim management software, named Jessikommand, offers robotic research teams and teachers a unique development and learning platform with access to cutting edge software and technologies. Together, the originality of an aquatic fish robot, 3D locating capabilities, and inter-robot communication make Jessiko a full and powerful system. Also, Jessiko opens the door to collaboration with biologists, thanks to its capacity to integrate with the living world.

Jessikommand is an integrated environment on the NetBeans Platform. It has been designed for trying out Jessiko features, letting you control aquatic robots, while also enabling you to display real-time status of elements such as robots and beacons:

The main features of Jessikommand are as follows:

  • Transmitter control. Connect to the concentrator without any configuration.
  • Direct control. Control one or more Jessiko robots using your keyboard.
  • World design. Create your own “world” with robots, beacons, and remotes.
  • Battery monitoring. Check batteries of active robots.
  • Radar view. Check internal vision of robots
  • Debug systems. Read reports from internal Jessiko variables.
  • Check distance. From elements to beacons, enabling finding of nearest beacon.
  • Emergency stop. Immediately disable all active elements within the beacons range.
  • Intuitive GUI. You can adapt Jessikommand to your needs using its flexible GUI.
  • Cross-platform. Jessikommand is available for Microsoft Windows and Linux.

More info:

Thursday May 09, 2013

Military Chemical & Biological Modeling Software on the NetBeans Platform

The Joint Expeditionary Collective Protection (JECP) Program is part of the Joint Program Executive Office for Chemical and Biological Defense, which is the Joint Services single focal point for research, development, acquisition, fielding, and life-cycle support of chemical and biological defense equipment and medical countermeasures.

In developing a family of transportable shelter systems, the JECP provides collective protection to joint expeditionary forces and their assets. These shelter systems range from two-person passive filtration tents to large multiperson shelters that can be combined together to provide active filtration and internal environmental conditioning.

The objective of the JECP System Performance Model (SPM) is to model the collective protection performance of each JECP shelter and predict the level of exposure to chemical and biological (CB) agents experienced by personnel inside the toxic-free area (TFA). Exposure within the TFA can occur as a result of agent infiltration through barrier materials, air locks, closures, seams, filters, and from personnel entering or exiting the TFA.

The SPM provides a cost-effective method for predicting system collective protection performance while interacting within a complex environment, allowing users to create realistic operational scenarios. Also, the SPM improves the test and evaluation (T&E) planning process by simulating results for testing environments that are otherwise too dangerous, complex, or expensive to physically test.

From Leading Edge Magazine - Chemical, Biological, and Radiological Defense, April 2012, page 157: 

The approach taken for SPM development leverages the open source NetBeans application platform. This approach allows for highly modular application development while making extensive reuse of mature software components. In developing any application that has a significant number of capabilities, there are typically a large number of “boilerplate” features that must be implemented in order to make the domain-specific capabilities accessible by the user. Many of these application components are taken for granted by most users (i.e., menus, drag and drop, cut/paste, undo/redo, open/save) but are very time-consuming to develop. The NetBeans Platform provides a large portion of these common application capabilities as reusable components. This drastically reduces the development time required to implement a new application by allowing developers to focus primarily on the domain specific capabilities instead of the "boilerplate" code.

The NetBeans Platform is an open-source framework that has been steadily maturing over the course of almost a decade. NetBeans is most commonly known as the host environment for the highly popular NetBeans integrated development environment (IDE) which, in many ways, outperforms commercial IDEs, such as Microsoft’s Visual Studio. The NetBeans Platform provides a large set of reusable software components that allow for rapid development of highly modular applications. The workflow for developing applications that leverage the NetBeans Platform is built into its IDE, which makes constructing new applications and modules very straightforward. Because of its flexibility and maturity, SPM developers chose to implement SPM capabilities on top of the NetBeans Platform, which affords a great deal of flexibility that can easily accommodate changing requirements and data structures.

The various models and capabilities that need to be managed by SPM can be nicely encapsulated inside NetBeans modules. Each module has well-defined interfaces that govern which portions of the module’s code are exposed to other modules. In addition, modules must specifically state dependencies on other application modules in order to access exposed classes. This ensures that all application dependencies can be quickly determined, thus providing better software maintainability.

Screenshots below, the first shows the JECP SPM interface and the second shows the JMAT Visualization Package:

The JMAT Visualization Package software allows analysts to "playback" a scenario in order to view how contaminants move externally and internally. This visualization, coupled with various reports and plots, allows the user to determine the overall performance of JECP shelters, air locks, and other components when faced with a variety of attacks, configurations, and environmental conditions.

The above and further info is all publicly available here: (from page 152 to 159)

Wednesday May 08, 2013

Graphic/Touch Panel System Development on the NetBeans Platform

Serious Integrated provides hardware, software, and services for front panels. The company focuses on replacing buttons with graphic touch screens. The project is moving along very well. SHIPTide, the related GUI development toolsuite on the NetBeans Platform, was published publicly in beta on the website (at in October 2012 and there are dozens of customers using it.

You can layout your GUI, define events or actions, build your resource library, and create a package that you can upload to your hardware with ease:

What SHIPTide does is similar to Adobe Flash and Flash Builder, but for graphic/touch front panel hardware modules that use very low end 32-bit processors. Some of these have as little as 128KB RAM. Integrated into SHIPTide is SHIPEngine, which is similar to Adobe Flash Player, but fits in <512KB of ROM on the module. SHIPTide is the PC/MAC/Linux based tool that helps you create your GUIs. 

Features of SHIPTide:

  • WYSIWYG manipulation of GUI pages.
  • Automatic translation of jpg/gif/bmp/tiff/png image files.
  • Automatic translation of TTF fonts.
  • Full UTF-8 support with Multilanguage support for the target GUI, including auto-codeset-subsetting for large fontsets, such as Japanese.
  • Built-in ANTLR/BNF grammar and Java-lite-like compiler for our scripting language, SHIPSail.
  • Complete GUI compiler (similar to that Adobe would have to build .swf files) that combines layout, resources, compiled code, etc into a single "cargo" file that gets loaded into data-FLASH memory on the target hardware module; this is beginning to include some incremental compiler elements, for instance image compilation is cached so it only happens once.
  • Built-in USB connectivity to the target hardware so you can craft/build/download/test in seconds.
  • The NetBeans Platform update mechanism is leveraged.

Here's a picture of one of the front panel modules that is the "target" for the tool:

The above is is a 4.3" WQVGA (480x272) touch screen module. It is powered by a Renesas RX MCU running at 100MHz, and has 8MB total RAM.

There are a lot of items on the roadmap, including enhanced USB communications, better font management, some level of drag-n-drop in the GUI layout itself, better tools for managing translation(s), and live remote-debugging of SAIL scripts on the target from within SHIPTide.

More info:

Especially the SHIPTide video library is very nice, showing the features of the application in some detail, i.e., showing the features anyone can create in their own applications on the NetBeans Platform:

Tuesday May 07, 2013

RunStopSimulator: Complete Infrastructure for Simulator Software (Part 1)

Let's imagine we're creating simulation software. In other words, we have some kind of XML file (such as a SubSim Simulation File) and we want to process that file, i.e., use it to simulate something. What are the requirements for software that has the above (admittedly vague) description?

Well, first of all, we somehow need to open our file into the simulator or, at least, access it from the simulator in some way. Then, we need to be able to start the simulation and, once it has started, we shouldn't be able to start it again, until it has stopped. While it is running, we should be able to stop the simulation. We should show the current progress of the simulation to the user. We should also be able to run simulations on multiple files at the same time. And, finally, we should create an infrastructure that lets contributors easily plug in new simulations, since our XML files can be used as the basis of multiple different kinds of simulations, i.e., different algorithms or processors or filters need to be applied to our data and we don't know up front what all those simulations are going to be, hence we need a flexible architecture allowing for simple integration of external contributions.

OK. So, all the above is available out of the box and for free right here:

In other words, the above is an infrastructure for your own simulation software, which looks exactly like the below. Right now, only files with "Simulation" as the root element of the XML file are supported but all you need to do to change that is to go to line 38 of the SimDataObject class and change the root element to anything else.

As you can see, the green start button is enabled when a file conforming to the predefined root element has been opened, which can be done via File | Open File or via the Favorites window from the Window menu.

Once the simulation is running, the green start button is automatically disabled, the red stop button is enabled, and the progress bar starts up:

Multiple files can be run and stopped together:

When the red stop button has been clicked for one file, the green start button becomes enabled, but only for the file where the simulation has stopped. For the other files, which are still being handled, the green start button remains disabled.

And the architecture is clear, easy to understand, and modular:

New simulations are added to the simulator by implementing SimulationProcessor and registering it in the NetBeans service registry:

@ServiceProvider(service = SimulationProcessor.class)
public class SimpleSimulationProcessor implements SimulationProcessor {
    public void process(FileObject fo) {
        OutputWriter writer;
        InputOutput io = IOProvider.getDefault().getIO(fo.getNameExt(), false);;
        writer = io.getOut();
        try {
            List asLines = fo.asLines();
            for (String string : asLines) {
        } catch (IOException ex) {

The simple processor, above, does nothing more than print the lines of the XML file into the Output window. But, since you can work with the file in any way you like, i.e., from the FileObject you have access to, you can parse it any way you like, or filter it however you need, all within a module dedicated to the specific task for which the filter/parser/algorithm exists.

Feature requests for the simulator infrastructure are more than welcome in the comments to this blog. If someone uses it as the basis of their own simulator software, that would be good to know about!

Monday May 06, 2013

JavaOne Russia 2013

I'd like to interrupt the relentless stream of data on new NetBeans Platform applications, made possible despite the fact that everyone is supposedly only creating mobile and web apps nowadays, which has been going on consistently one per day in this blog every day for over a month, weekends included, well spotted and supported by Kevin Farnham on and Yolande Poirier in "Everything on the NetBeans Platform", to briefly report on something slightly different. I recently attended JavaOne Russia in Moscow, last month, 23 and 24 April, 2013. Around 2000 attendees, approximately twice as many as last year. That statistic on its own indicates it was a great conference. I attended last year too. Clearly this year was bigger and better.

Duke's Choice Award

The big news from a NetBeans point of view (but also, of course, Java in general) was that one of the three Duke's Choice Award winners was the air traffic control system created in St. Petersburg on the NetBeans Platform. From

VNIIRA created an air traffic control system, consisting of dozens of Java NetBeans modules, that allows tracking of hundreds of flights using primary and secondary surveillance radars. Application features include flight tracking, conflict detection and resolution, data display from various sources, together with playback and recording of all system events and user actions. Using the modular NetBeans Platform, the team was able to compose features from multiple modules to provide the necessary functionality tailored to various roles, from flight executive officer to air traffic controller to combinations of these.

A screenshot:

I discussed this application some time ago here:

Alexandre Teterin and Mikhail Kuznetsov, two of the key developers on the above project, were at the conference too. It was great to meet them. Afterwards, Alexandre pointed me to the link below about the news about the Duke’s Choice Award on the site of the major Russian government news agency ITAR-TASS:

Also, this news was cited by another official agency, INTERFAX:

Alexandre writes: "Maybe this news will help in hotting up the attention of government (and private) enterprise management to the usefulness of the NetBeans RCP."

Some other applications in and around Russia that have been created on the NetBeans Platform include Platypus Platform, Silver Solution Studio, ObjectsX, Epictetus Database Manager, and a set of reservoir simulator applications.

Unlocking the Java EE Platform with HTML5

I led a hands on lab on the NetBeans IDE tools for creating hybrid Java EE / HTML5 applications, to a packed out room:

In general, I think everyone learnt something from the lab, they were all using NetBeans IDE 7.3, creating Java EE applications (especially using JPA and JAX-RS), and displaying the results in a an HTML5/JavaScript client:

The PDF used in the lab can be found here:

And another way to attain the same result is to follow the instructions in this article:

Strategies for Loose Coupling for the Java Desktop

Later in the conference I did a session on loose coupling in Java desktop applications, using patterns and strategies from the NetBeans Platform. Unfortunately, at the same time as my session, Paul and Gail Anderson were doing a very similar session, about the NetBeans Platform and JavaFX. Together, we had about 80 attendees, so we could have had a full room if our attendees hadn't beeen split across two sessions.

Here's an impression from my session, Alexandre Teterin was there too, he talked a few minutes about the air traffic control system that won the Duke's Choice Award. Unfortunately, I didn't take a pic of him while he was talking!

Most of the presentation was a generic introduction to the NetBeans Platform. The reasons for using the NetBeans Platform were covered, many examples were shown, and key concepts, such as "Module" and "TopComponent" and "Node" were touched on:

I then discussed in detail a real life use case, based on Alexandre's scenario, i.e., an air traffic control system. The imaginary requirement is that an air traffic control system needs to be developed, for managing runways and their engineers, but that the implementations for our two customers, one in Moscow and the other in St. Petersburg, need to be slightly different. The imaginary Moscow airport has multiple runways, while the imaginary St. Petersburg airport only has one runway. Hence, the feature for reassigning engineers to different runways is only relevant to Moscow, not to St. Petersburg.

How to create a codebase that effectively handles the above requirements? I discussed that the starting point would be to create a RunwayFramework, i.e., a suite of modules that provide base functionality for all implementations. Next, on top of that basis, two applications, one for Moscow, one for St. Petersburg, can be created. Each runway (with imaginary names such as "Pushkin") is defined within its own module and loaded into the system at runtime, so that the application can be extended via modules, either at design time or runtime.

The above structure is visualized as follows in the IDE:

And here's the Moscow implementation, each top node in the Runway Viewer showing the available runways, with their engineers, together with a button in the toolbar that is highlighted when an engineer is selected, so that the selected engineer can be reassigned to another runway. Clicking on a runway shows the runway (in the prototype below, each runway is simply an image of course):

Next, here's the St. Petersburg implementation, which only has one runway, hence there's no button in the toolbar (other than the Save button, which is there too in the Moscow implementation) for reassigning engineers to runways:

A few people have expressed an interest in playing with this code and adapting it to other purposes. Here each of the above can be found and downloaded:

In addition to the above, I attended sessions on JavaFX (by Steve Chin and Jim Weaver), as well as a Steve Chin session on the Raspberry Pi. Good times with Paul and Gail Anderson, in particular, too, wandering around a very tall shopping mall on the last night especially.

And, finally, I spent a lot of time at the Tretyakov, I especially liked the collection of late 19th century Russian paintings.

In short, JavaOne Russia was great, I really enjoyed it, great to be in Moscow, and I met a lot of cool Java developers at the same time.

Sunday May 05, 2013

Gas Meter Maintenance Software on the NetBeans Platform

Elster is worldwide market leader and specialist in Flow Measurement & Control Equipment and Systems focused on gas.

enSuite is software created by Elster on the NetBeans Platform for parameterization and maintenance of new Elster meters, such as the EK280 volume converter, flow computer FC1 and ultrasonic meter Q.Sonic-plus. 

More info:

Saturday May 04, 2013

Physical Security Visualization Software on the NetBeans Platform

AVERT by the ARES Corporation is a 3D security optimization software on the NetBeans Platform for visually depicting, analyzing, and optimizing physical security. It measures security investment costs, evaluates the effectiveness of existing and planned countermeasures, and allows you to make the most of your existing or planned security budgets.

AVERT is the only security optimization software to receive a Department of Homeland Security SAFETY Act Certification, providing additional liability coverage to AVERT’s customers. It provides repeatable, validated, and proven metrics to assess threats and vulnerabilities and increase overall security system effectiveness.

More info:

Friday May 03, 2013

Chemoinformatics Analysis Software on the NetBeans Platform

ScreeningAssistant 2 is a free and open-source application on the NetBeans Platform that can be used to perform various simple as well as advanced chemoinformatics analysis around chemical libraries.

The application complements the growing ecosystem of modeling tools by providing a set of chemoinformatics facilities integrated in a database environment. It facilitates the management of chemical libraries through an intuitive and interactive graphical interface and provides a set of advanced methods to analyse and exploit their content.

More info:

Thursday May 02, 2013

Workflow Modeling Software on the NetBeans Platform

With the Process Designer by Consol, you can constantly optimize your business processes. Whether individually based on your needs or on the basis of best practice workflows from over 10 years of project experience, this NetBeans Platform application is a tool for workflow modeling:

Wednesday May 01, 2013

Medical Informatics Software on the NetBeans Platform

Candelis, a medical informatics company based in Newport Beach, California, develops innovative, cost-effective solutions for the healthcare IT industry, specifically focused on image visualization, workflow, archival, and reporting.

The ImageGrid Platform by Candelis is a feature rich and yet cost effective modular application created on top of the NetBeans Platform. It consists of a suite of sophisticated image archiving, image management, visualization tools, and workflow optimization capabilities, which are closely integrated with state-of-the-art hardware.

Shown below, for facilities providing Mammography services, an optional, tightly-integrated Mammography Tracking Module provides the ability to address workflow requirements specific to the field of Mammography. The Mammography Tracking Module tracks relevant exam results, pathology results and follow-ups, generates patient letters and administrative reports automatically, provides seamless integration with the National Mammography Database, and ensures compliance with regulatory bodies.

A scheduler is also included:

Shown below, the ImageGrid Mammography Viewer can be used in conjunction with other tools to increase a radiologist’s productivity by allowing multi-modality diagnostic reading from a single workstation and using a consolidated worklist:

And here is yet another view, showing an abdomen case, with maginification switched on:

More details:


Geertjan Wielenga (@geertjanw) is a Principal Product Manager in the Oracle Developer Tools group living & working in Amsterdam. He is a Java technology enthusiast, evangelist, trainer, speaker, and writer. He blogs here daily.

The focus of this blog is mostly on NetBeans (a development tool primarily for Java programmers), with an occasional reference to NetBeans, and sometimes diverging to topics relating to NetBeans. And then there are days when NetBeans is mentioned, just for a change.


« May 2013 »