Official home of the ILO tools and the ILO format

This is the official site of the ILO Tools and the ILO format.

What is ILO format

ILO stands for Internet Labeled Objects. ILO is a general purpose binary format for interchangin of information. ILO is desigened like SML to let a reader to figure aout the main content of the object reading the labels of the information included in it.

What is ILO Tools Project

ILO Tools is the project that begins the developement of the ILO format. The ILO Tools project has three goals:

  • ILO Format. Is the formal description of the ILO binary format. This document defines the format of the ILO Objects, the different character encodings of the labels and the way that serialization works with ILO Objects.
  • ILO Java API. Is an example application program interface to show how to use ILO format in Java applications. This API lets you to serialize an object like an ILO object, retrieve the object from a file o stream and inspect the labels, values, objects and binary data enclosed in an ILO Object.
  • ILO Tools. Is a set of sample java tools that demostrates the use of the ILO format.Logo

Features of the ILO format

The ILO format has a lot of advantages over other binary or text formats:

  • Small obgects. The size of objects is small as possible.
  • Can hold large objecs. With simple ILO object we can create objects of 64 bits lengths. This is enough for most applications. With compound ILO objects, in wich each ILO object encapsulates a part of a very large collection of ILO object, we can store more than 64bits size objects.
  • Structured format. The ILO object has a structured format. Every ILO object is composed of pairs o label-value, and each value can be a string, a binary value or also a new ILO object.
  • Smart hanling of ISO Latin1, UTF8 and UNICODE strings. With ILO objecs you can use internacionalized strings and you haven't to pay attention to character encoding. A very simple ILO parsers calculates the right character encoding for you.
  • Simple parsing of ILO objecs. The ILO format have a structure that helps paraers to nandle ILO object faster and whith less compsuption of resources than other formats.
  • Human readable labels. In ILO object all the information is stored in labelled values, that helps human readers to figure out the content of the ILO object, if the designer of the ILO object do it in a smart way.

ILO vs. XML

XML was designed to store arbitrary labeled and structured text data in a plain text file. To store binary data all the bytes must be encoded in text data. Also the need for support a great variety of different character encoding schemes adds an extra complexity to the XML text format.

You can think in the variety and complexity of the differents parsers available to read an store XML objects in the differents operating systems today.

ILO has been designed to store arbitrary labeled strings and binary data in a binary object or file. This is the main difference.

  • First point: the ability to human reading of the xml files. Simple xml files can be read with a simple text editor. This holds very well when you use simple characters encoding, like ASCII or ILO Latin1. But when your file have strings whit text in other character encodings (UTF8, arabic, asian, etc...) you need a special text editor. Then you need a tool to read the xml file. With ILO object you alwais need a simple tool to read the data. But this tool is very easy to code, for example in modern languages like java, C# and many others. If the ILO objects contains data thar are strings in ISO Latin1 you can make a simple filter thar shows the content of the ILO object in a simple console. Or maybe you can create a very simple filter to show the ILO object like a web page, using UTF8 encoding. Then you can read and navigate through the ILO object whith any web browser that supports UNICODE (all major browsers).
  • ILO was designed with size and perfomance in mind. If you need to store a mixed text and binary data object in an XML object, the resulting XML file will be very large. In ILO objects, binary and string data alwais uses the more efficient encoding. For example, if your make a protocol to exchange mail, the complexity of the protocol is reduced notabilly, and the efficience of data exchange is increased also.
  • ILO objects are more efficient in memory ussage than xml objecs. For example if you have a ILO object composed by three ILO objects, and you need to load only the third object, you only read a few bytes at the beginning of the ILO object, jumps to the beginning of the second, reads o few bytes more and finally jumps to the beginning of the third ILO object. With xml files you need to read and decode ALL of the file until the beginning ot the third object. Also if you use indexed ILO objecs you can jump to the desired ILO subobject even faster.
    Working...