2012. június 15., péntek

Duke's Choice Award registration


My registration to Oracle's Duke's Choice Award...


Company URL: http://dust-framework.org/

Company Name: Hajnalvilag Foundation

Company's Industry/Vertical: Networked systems in hybrid running environments

Your Name: Lorand Kedves

Your Title: software architect, founder

What is the name of your product/technology/innovation: Dust Framework

Please list the specific Java technologies and versions you are using in this entry: Java SE 6

Any other technologies:
Reusing elements of the Dust concept in quick evaluation projects in Windows 7: C# / WPF; iOS: Objective C / Cocoa

Provide a 500 word (or less) description of your product/technology/innovation:

Von Neumann's invention was to define a „generic computer” instead of solving all new tasks with custom machines. This fundamentally changed computer technology, although it seemed “less efficient”: introduced an intermediate layer between the hardware and the required service. However it allowed optimizing and miniaturizing the “generic hardware”, and separating the function implementation from it, thus raised computing to a completely new, previously invisible level.

The same problem exists for software: we do have generic software patterns, but no directly reusable implementations, so we re-implement roughly the same services for each task or at least each version of the runtime environment. The same applies to data: for example the Person type exists in thousands of incompatible definitions and runtime environments, in millions of applications.

Dust creates the basic terms of “generic software”, like defining the types themselves (in a self-contained manner, using entities of Type type), the life cycle of the data items (temporal and persistent entities), their separation from the business logic implementation (binds them at runtime), their communication (sends message entities through channels instead of direct calls), managing data streams (converting between character data and entities using language definitions), etc.

There are interesting findings along the way, like
 - instead of building class hierarchies, we can use flat, yet sometimes dependent aspect lists inside an entity instance. This allows adding new aspect to an already existing instance, persist it and use just like it was there when the entity was created;
 - by implementing the elements of the EBNF language definition, any language that can be described in EBNF, can be parsed and written by using the appropriate tree of these element instances. This means independence from storage format and also from platforms: you can define the format itself as a graph of EBNF element entities;
 - writing the parser in event-based approach revealed that what looks “backtrack” from one side is in fact a parallel event processing from the other;
 - analyzing “project and resource management” shows that it is the same as writing computer software codes and scheduled tasks - and with EBNF components, the actual code is just a serialized form of a graph of algorithm nodes...

These concepts are not limited to Java language, can also be used in other platforms after implementing the core components. In fact, I have just found that Objective C and various services of the Cocoa framework are very similar to Dust, but of course locked to the Apple environment.

The Dust Framework is the result of almost 20 years of programming experience, but is also a one-man show. It contains lots of documentations and some parallel, POC level implementations like the aspect-entity based type management (until the start of DustLab, where you can edit the aspects of entities on property sheets automatically generated by the Types of the aspect); the EBNF serializer; and also a 3-week C# test with an application structure in JSON. Now it is suspended due to financial reasons.


In addition to your nomination, are there any other ways in which Java technology is helping your company:


Working with Java in big data management systems gave me lots of experience with modular, plugin-based systems. Java frameworks like Spring or OSGI, features like reflection or AOP convinced me that I am on the right track.

The flexibility of Java, and the great Java community makes it very likely that the first implementation of DustLab (the designer environment of Dust, something like a UML tool but creating the actual Dust runtime configurations and sources) if I ever have the chance to make it, will also be Java.


Which partner did you use (if any) to help you with this project:

I must thank a lot to the enthusiasm of Randy Pausch.