Menu

Home

Aubin Mahe

Hello reader, you're welcome!

The main goal of the Java Dynamic Component Framework (jdcf) is to simplify the writing of individual Java components, parts of distributed networked application.

A simple XML model (or DSL in a future) is used to describe the application capacities, architecture, and deployment.

Supported interaction between components are:

  • Data, eventually combined with an event raised by the writer to wake-up the reader(s) (activating flag in XML)
  • Services, synchronous or asynchronous with and without callback for handling returned value
  • Events, only asynchronous

Absolutely no code generation is used, design time checking of the code is made by an annotations processor: @Read, @Writes, @Send, @Receives, @Uses, @Offers to ensure application conformance to XML model.

Threading Model

In JDCF application, processes (JVM) may be hosted by one or many computers.

Each process may host one or many components.

Each process listen to others processes in a dedicated thread.

Periodic components have their own active thread.

Each component have a dedicated thread and a private event queue, to handle requests :

  • call of offered services by other components
  • returns of data from used service offered by other components
  • receiving events
  • receiving data published by other components

Each process host a generic proxy, providing component the ability to use services of other components.

No difference is made between components hosted by the same process, by the same computer or by a remote computer. All the communication are made by sending UDP datagrams.

Pluggable protocols

  • UDP/IP was the first protocol used to communicate between JDCF's peers but it's not reliable on switched network
  • TCP/IP was added recently, but no reconnection is done in case of connection loss. A lot of work need to be done.
  • HTTP/TCP/IP is planned, brainstorming is in progress ;-)

Sample

Here is a (very) simple application source tree :

  • The model of the application is described in an XML file: demo_01-Application.xml
  • Compilation uses a provided annotation processor, which
    • checks the model
    • checks the code in regard of the model
    • generates a graph as a PNG image, like this:
      Relationship
  • org.dcf.demo.consumer (package)
  • org.dcf.demo.producer (package)
  • org.dcf.demo.model (package)
  • The application is paused after startup, controlled by a monitoring UI (screen shot taken from demo-02):
    Monitoring of Demo-02

JavaDoc

Home page of JavaDoc

TODO

  • C/C++ support
  • Data distribution system (DDS):
    • Samples/Topics/Data-keys concepts
    • Control of emission and reception rates, may be different thanks to policies concept
  • Performance case study
  • Streaming:
    • like a pipe, by declaring buffers on server side and clients side
    • Control of emission and reception rates, may be different thanks to policies concept

Project Admins:


Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.