Sunday 26 November 2017

New project : wiki and JavaHelp replacement

I have developed a new Java project from some time which allows to generate a wiki from a set of XML-formatted files.

The reason for this is that some time ago sourceforge removed their default mediawiki implementation. I created an extensive wiki then for the j661 project, which was lost except if I set myself again this wiki on sourceforge with the appropriate server, or used the new (simpler) wiki they provided. This was however still a problem even if I did this because the help content could not be easily shared (for example, I would like to be able to generate a documentation as a website and allow users to download the documentation.

There are a lot of offerings available, but those which are using a server have the same problem. And sometimes they might decide to change the format, for example with confluence.

I then decided to create a Java project to allow to generate a "static" wiki, called https://sourceforge.net/projects/docjgenerator/. This works very well for my use cases, I now use this tool for the documentation for all my open source (or even closed source) projects. The generation has many options, it is possible to perform the generation on the command-line, from a GUI, or from ant. The XML-based syntax is also really rich (and IMO not more complicated than mediawiki is, and I edit on wikipedia a lot). It is even possible to create article with a subset of the mediawiki syntax if you want.

Recently I also added a JavaHelp-like content generation to the generator. basically the same content specification can produce a zip file which can be used to add a Help component in a Swing or JavaFX application.


Tuesday 6 September 2011

ARINC 661 Server on Android

Well the ARINC 661 Server now works on Android. To try it, just go to the J661 project here: href="http://sourceforge.net/projects/j661/.

The Android environment is really a nightmare, and the API is not very good too. But it is still close enough to Java to allow to have one only framework working on both Java swing and Android (I think that 80% of the code or more is not specific to any of the two frameworks).



There is a tutorial here explaining how to use it.

I am now coming back to the "regular" Java Server work, and also beginning to port the Server on iOS ;)

Monday 13 June 2011

Android SDK...

I don't own an Android device (and don't plan to), but I tried today to play with the Android emulator on PC to see how it works. Well I don't know about the SDK yet, but the emulator is really not very good:

Just installing what is necessary on Eclipse is really not very straightforward. You have to install the SDK, then configure the SDK, then install Eclipse, then install the ADT plugin on Eclipse, then configure it. If you are lucky, you are OK, but it's not easy to know what you are doing. And you must not make any mistake when you download the necessary parts of the SDK: what do you need to install? What are the compatibility packages for Android? Are there any settings that must be identical on the SDK and the ADT plugin? Nothing is explained anywhere.

Then you compile the samples provided with your version of the SDK. Beware, they are not available with all versions, so I choose to stick with a version - 2.2, for which there was an SDK platform and samples available.

Then run your samples app. The good thing, it's launching. The bad thing, it take ages to launch (on my good PC, approximately 7 minutes, even with the project already compiled), and it signals that there's a problem of signature... mm, for a sample which was directly downloaded from google website, it's not very professional.

At least, it runs even with the error messages warning you that the app will close very soon. And it works, but it's really not responsive at all, you wonder for every click if it will do something or if it will hang forever.

There is no comparison with the iOS SDK provided by Apple. XCode and the emulator both work like a charm, and launch super quickly. I'm fed up with Google seemingly considering that it's not a problem to have a sub-par SDK just because it's for a free and Open Source product:

  • Android is not entirely Open Source

  • Apple SDK is free if you use it on your Mac

  • NetBeans / the JDK and many other Open Source tools are entirely free and very responsive

Friday 6 May 2011

First draft of ARINC 661 standard supp 5 released on ARINC website

The first draft of the ARINC 661 standard supplement 5 version is available for some time on the ARINC web site free of charge. This document purpose is primarily for remarks from the general public, but you have all the latest standard draft there. Don't hesitate to download it (it's free and legal to do it, what is not free is the final versions of the standard).

The document is here: http://www.aviation-ia.com/aeec/projects/cds/index.html. It's the "Strawman for Draft 1 of Supplement 5 to ARINC Specification 661" link.

If you have questions or remarks about it, feel free to ask about it here or on the j661 project forum.

Sunday 6 March 2011

j661 Server ln Mac OS X

I've just bought a Mac Book to do some development on iOS (I hqve an iPhone and pkan to buy an iPad 2 when it will be available in France). First let me say that there is almost no configuration necessary for being able to use it. And despite all rants about Apple support for Java, Java 6.0 JDK is already installed ;)

Well while I downloaded XCode, I wanted to check if the j661 Server could run on Mac OS X out of the box. Well it does. Which is only natural, because it is one of the reason why Java is around there, isn't it?

There's nothing much to say, if you own a Mac, just download the last binaries fron the project page. double-click on arincEditor.jar, and enjoy ;)

Sunday 27 February 2011

j661: creating a simple User Application

As you may already know, the ARINC 661 standard is defined around an architecture where:

  • An ARINC 661 Server (also called ARINC 661 Kernel), which is a part of the Cockpit Display System (CDS) is initialized with a set a ARINC 661 Definition Files, and is responsible for the the User Interface

  • System Applications (called user Applications or UA in the standard) handle the logic, and are able to communicate to the Server to change widget parameters that were created at initialization. From the other side, the Server send to the User Application user events on widgets (such as clicks on buttons, change of text fields, etc...)



The ARINC 661 standard makes the UI definition very simple, but there is still the burden of developing the User Application part. The j661 project already provides a generic API which simplifies greatly the User Application / ARINC 661 Server communication, but you still need to develop the User Application code itself.

The Embedded Client framework provided in the project further simplifies this process, at least for prototyping User Applications. This framework is built under the following architecture:

The Embedded Client is a generic User Application with, contrary to the Client provided in the j661 project, has a minimal Graphical user interface, and is much more configurable.

The Embedded Client has the following features:

  • It is possible to start only a User Application, without any associated Server. Note that in this case the arincServer.jar and all associated libraries don't need to be provided

  • It is possible to start a User Application, and it's associated Server, sharing the same configuration properties

  • It is possible to add any list of Scripts to the User Application, to code the logic. Note that as it is the case for an ARINC 661 library embedded in a Java application, the scripts will use the Client java API

  • It is possible to add a list of DataProviders to the User Application, and wire the datas returned by the DataProviders to ARINC 661 parameters



A DataProvider is a source of data that can be plugged to an Embedded Client. To the DataProvider is attached an XML configuration file which defined the correspondence between the datas and the ARINC 661 properties. This way, it is possible to define the communication from the System Datas to the Client (User Application) by only defining a XML configuration file. No more code to write, you only need to wire the system datas to the ARINC 661 properties.

An example of this is provided in the j661 project: The FGPlayback contrib allows to read a FlightGear playback scenario by only defining an XML configuration file wiring the FlightGear variables to the ARINC 661 properties. For example:

<dataProvider provider="FGPlayback">
<context name="testLayer" layerID="1" appliID="1" />
<inputs>
<input context="testLayer" widgetID="1" paramID="A661_STRING"
equ="$1">
<data name="latitude-deg" />
</input>
<input context="testLayer" widgetID="5" paramID="A661_STRING"
equ="$1">
<data name="longitude-deg" />
</input>
<input context="testLayer" widgetID="3" paramID="A661_ROTATION_ANGLE"
equ="$1">
<data name="heading-deg" />
</input>
<input context="testLayer" widgetID="10" paramID="A661_ROTATION_ANGLE"
equ="$1">
<data name="roll-deg" />
</input>
</inputs>
</dataProvider>

Saturday 12 February 2011

Eclipse, you are bloated

I'm using Netbeans for my day-today java projects, and I really have difficulties when I have to use Eclipse, but I often think that part of it is due to me being new to Eclipse rather than Eclipse itself. However, I also often find that there are real problems with Eclipse, and that my problems are not just coming from my own perception.

Some days ago, I had to install Google Web Toolkit, which is basically an Eclipse Plug-in allowing to generate some complex Javascript code using Java source code . The Java source compilation does not compile Java binary code, but Javascript code, and you can also use a very well done UI designer to create your UI by drag-and-drop rather than having to use complex Javascript libraries.

But this post is not about GWT, on which I have nothing bad to say, but about Eclipse itself, because GWT is an Eclipse plug-in.

First installing Eclipse itself (I used the last Helios version) take ages, in fact it takes so much time (and often it is freezed during the process) that you often think that there may be a problem. And I'm just talking about the first Eclipse internal configuration after you had unzipped the file containing the Eclipse file structure (what, no proper installer?).

Second installing plug ins is really awkward. You have to know the exact URL of the files to be able to download them (from Eclipse), and you HAVE to do it in Eclipse itself. And the UI to choose them is really poorly designed (it seems that you can't put a load of different URLs and download them all at once, you have to download the:m one by one). As for Microsoft software, it also seems that you have to restart Eclipse a lot of times in the process.

Another problem is that if you have to use Eclipse with it's plug-in on a PC not connected to internet, it's really difficult to do so. Basically you have to download it on the spot (something which is not always possible). Which is really awkward considering that there is no proper installer for the core Eclipse itself.

I also have to mention the fact that Eclipse is generally slow (that is, if you succeeded in the previous steps).

I really don't know how Eclipse can be so successful, where it has so much major shortcomings. I have to say that none of these problems exist in Netbeans: finding and downloading plugin-ins is really simple, you can do this by internet or using local files, installing Netbeans is REALLY shorter, and it's generally much more responsive. You can even copy an entire Netbeans directory with it's plugins, and it's working with really minor changes in the configuration (in fact, only one, the path of the JDK).