Menu

eBus / News: Recent posts

eBus 7.6.2: Merry Christmas!

eBus release 7.6.2


*** ATTENTION ***

  As of release 6.0.0, eBus is now based on Java 11.
  eBus does *not* use modules at this time. Therefore include
  eBus jars in -classpath and not -modulepath.

  The eBus license also converted from LGPL 2.1 to
  Apache License 2.0. The reason for the license change is
  due to Apache License 2.0 being more end-user friendly that
  LGPL 2.1.... [read more](/p/ebus/news/2025/12/ebus-762-merry-christmas/)
Posted by Charles Rapp 2025-12-15

eBus 7.6.0: Happy New Year!

Release 7.6.0 made the following changes:

Feature Requests:

  • Ticket 40: Added ERequestMonitor role.
    Request monitor is able to monitor request, reply, and
    cancellation message coversation between a requester and a
    local replier. Feed scope is local only and cannot be
    changed. Also request monitors do not know whether a
    request feed is up or not. This means that messages arrive
    without warning.... read more
Posted by Charles Rapp 2025-01-03

eBus 7.5.0: Merry Christmas!

eBus 7.5.0 Downloads


*** ATTENTION ***

  As of release 6.0.0, eBus is now based on Java 11.
  eBus does *not* use modules at this time. Therefore include
  eBus jars in -classpath and not -modulepath.

  The eBus license also converted from LGPL 2.1 to
  Apache License 2.0. The reason for the license change is
  due to Apache License 2.0 being more end-user friendly that
  LGPL 2.1.... [read more](/p/ebus/news/2024/12/ebus-750-merry-christmas/)
Posted by Charles Rapp 2024-12-17

eBus 7.4.0: Keeping an eye on things.

Release 7.4.0 made the following changes:

Feature Requests:

  • Ticket 35: Improved net.sf.eBusx.monitor API.
    Existing eBus monitoring package updated to make API easier
    to understand and use. Changes are to what notification and
    request/reply messages are supported by the monitor
    package. It is now possible for a monitoring application to
    use an EMultiSubscribeFeed to access all locally and/or
    remotely monitored eBus application.... read more
Posted by Charles Rapp 2024-09-04

eBus 7.3.0: Keeping time.

Release 7.3.0 made the following changes:

Feature Requests:

  • Ticket 33: Switch to org.slf4j logging framework.
    Since its inception, eBus used java.util.logging framework
    since that was the only framework guaranteed to be available
    20 years ago.

    With the rise of Maven and Gradle, other logging frameworks
    are easily obtained. Given this, eBus API now uses slf4j,
    a logging framework which supports any number of underlying
    logging frameworks. This means that eBus will use the logging
    framework the application chooses.... read more

Posted by Charles Rapp 2024-06-22

eBus 7.2.0: Message stores for historic feed.

Release 7.2.0 made the following changes:

Feature Requests:

  • Ticket 32: Add IEMessageStore implementations.
    Provide two message store implementations: in-memory and SQL.
    In-memory stores a fixed number historic messages using a
    ring buffer. These messages are not persisted.

    The second stores eBus messages in an SQL database. User is
    required to provide code which stores, retrieves, and decodes
    eBus messages to and from the database.... read more

Posted by Charles Rapp 2024-01-20

eBus 7.1.0: Minor improvements and bug fix.

Release 7.1.0 made the following changes:

Feature Requests:

  • Ticket 30: Add generic parameter to NotifyCallback.
    Currently, NotifyCallback requires method signature to accept
    a ENotificationMessage parameter. This means that the
    NotifyCallback method has to downcast the message parameter
    to the target message type.

    Adding the generic parameter:

    public interface NotifyCallback<t extends="" enotificationmessage="">... read more</t>

Posted by Charles Rapp 2023-12-14

eBus 7.0.0: Reliable UDP connection.

Release 7.0.0 made the following changes:

Feature Requests:

  • Ticket 17: Add reliable UDP connection.
    Since UDP packets may either be dropped or arrive
    out-of-order, a reliable UDP connection is now in
    net.sf.eBus.client package. This implementation uses the
    simplest form of reliability: only one application message
    may be in flight at a time. Only when the in flight message
    is acknowledged may the next message be transmitted.... read more
Posted by Charles Rapp 2023-10-09

eBus next release: 7.0.0

Reliable UDP Connection.

eBus release 7.0.0 will introduce a simple reliable UDP connection guaranteeing UDP packets arrive in order and no missing packets. More about this later.

Deprecated method removal.

Release 7.0.0 will also be dropping the deprecated feed open methods and related methods and data members. This means that feeds may only be created using the associated builder. If still using feed open methods, then moving to eBus release 7.0.0 will require code changes.

Posted by Charles Rapp 2023-08-06

eBus 6.6.0: Going Mobile

eBus 6.6.0: Going Mobile

Release 6.6.0 made the following changes:

Feature Requests:

  • Ticket 25: Make eBus API Android-compatible
    This required removing use of java.lang.management package. Added net.sf.eBus.util.ERuntime class which provides static method isAndroid which returns true if running on Android Runtime (ART). eBus API v. 6.6.0 is verified as being Android-compatible.
  • Ticket 26: Make StatusReporter a functional interface.
    net.sf.eBus.util.logging.StatusReporter is now marked with @FunctionalInterface allowing compatible methods to be used for status reporting.
  • Ticket 27: Use SocketAddress for binding.
    Server and client TCP and UDP sockets (both secure and cleartext) may now be bound to a SocketAddress rather than just a port. Previous methods which only bound to a port is still supported but will use the wildcard address.... read more
Posted by Charles Rapp 2023-07-29

eBus 6.5.0: Alternate message compiler.

Release 6.5.0 made the following changes:

  • Ticket 24: Alternate message compiler
    eBus uses javassist to generate message
    serializer/de-serializer class at run time. But javassist may
    either not be available or valid in a given environment. An
    alternate message compiler using java.lang.invoke to access
    message fields when serializing and message builder set
    methods when de-serializing.... read more
Posted by Charles Rapp 2023-06-19

eBus 6.4.1: Correction

Release 6.4.1 made the following changes:

  • Add static method:

    EFeed.createDispatcher(EConfigure.Dispatcher)
    

    which allows an eBus Dispatcher and it subordinate threads to
    be created dynamically post-JVM initialization.

  • Corrected MavenCentral release adding in missing historic
    feed package.

  • Top-level eBus pom.xml now uses <dependencymanagement> tag.</dependencymanagement>

There are four download folders:... read more

Posted by Charles Rapp 2023-05-27

eBus 6.4.0: decimal4j

Release 6.4.0 made the following changes:

  • Feature 22: Support org.decimal4j.api.Decimal in eBus
    messages.

    Added org.decimal4j.api.Decimal as a supported type in eBus
    messages. All immutable decimal4j classes implementing
    the Decimal interface are supported.

  • Feature 23: Cleaned up net.sf.eBus.client.EMultiFeed API.

    Moved EMultiFeed classes to Builder paradigm for creating
    EMultiPublishFeed, EMultiSubscribeFeed, EMultiRequestFeed,
    and EMultiReplyFeed.... read more

Posted by Charles Rapp 2023-05-27

eBus v. 6.3.0: New Year, New Release

Release 6.3.0 made the following changes:

  • Added historic publisher and subscriber feeds in package
    net.sf.eBus.feed.historic. An historic publisher both posts
    notification messages to active subscribers, persist those
    messages to a user-specified message store, and reply to
    requests for historic (previously persisted) notification
    messages.

    An historic subscriber is capable of requesting and merging
    both historic and live notification message feeds and
    forwarding those messages to the subscriber in the same
    manner as with ESubscriber.... read more

Posted by Charles Rapp 2023-01-02

eBus v. 6.2.0: Monitoring and Exhausting.

Release 6.2.0 made the following changes:

  • Added new net.sf.eBus.client.IMessageExhaust interface. User
    can implement this interface and register it with eBus via
    net.sf.eBus.client.EFeed.setExhaust(IMessageExhaust)
    method. Every message passing through eBus is then offered to
    IMessageExhaust.exhaust(EMessage). The message exhaust
    implementation then decided if and how to persist the eBus
    message.... read more
Posted by Charles Rapp 2022-11-01

eBus 6.1.0: Minor Improvements.

Release 6.1.0 made the following changes:

  • The preferred technique for creating single feeds (EPublishFeed, ESubscribeFeed, ERequestFeed, and EReplyFeed) is now using the feed's Builder sub-class. A Builder instance is obtained via the class' static "builder()" method. See feed Javadoc API or eBus Programmer's Manual for detailed explanation on how to use the feed Builder.
    The single feed open methods are now deprecated.

  • Added EClient static method... read more

Posted by Charles Rapp 2022-02-20

eBus 6.0.1: Clean up vulnerabilities.

Maven Central showed two vulnerabilities in eBus 6.0.0 in the dependencies used:
* CVE-2020-8908
(https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8908)
Corrected by moving from JUnit version 4.12 to 4.13.1.
* CVE-2020-15250
(https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-15250)
Corrected by moving from com.google.guava version 27.0.1-jre to 31.0.1-jre

This release includes no new eBus source code. Only changes to eBus dependencies.

Posted by Charles Rapp 2022-01-15

eBus 6.0.0: Merry Christmas

eBus 6.0.0: Merry Christmas

eBus release 6.0.0 is a milestone release for this project with the following major changes:

  • eBus moves from Java 1.8 to Java 11 but does not use modules. This means that eBus jar files should be includes on the classpath and not the modulepath.
    (SF feature request #16)
  • Changed eBus license from LGPL 2.1 to Apach 2.0. This was done to make eBus more widely acceptable due to some hesitance to use open source projects using LGPL.
  • Added net.sf.eBus.net.AsyncSecureDatagramSocket class. Uses DTLS to connect two peer secure datagram sockets. Note that this security is used only when connecting datagram sockets. If AsyncSecureDatagramSocket is not connected to a peer then packets are transmitted to a target address in the clear like AsyncDatagramSocket.
    Since a datagram socket may only be connected to a single peer datagram socket this means that, if multiple secure datagram socket connections are required, then one AsyncSecureDatagramSocket is needed for each connection.
    (SF feature request #19)
  • eBus may now use secure datagrams to connect to a peer eBus application. This is similar to secure TCP connection already provided.
    (SF feature request #20)
  • Java properties-based eBus configuration is now removed from net.sf.eBus.config.EConfigureand net.sf.eBus.config.ENetConfigure classes. Command line option:... read more
Posted by Charles Rapp 2021-12-25

eBus 5.7.0: Minor updates and bug fix.

Release 5.7.0 provides the following changes:

  • Added net.sf.eBusx.time.EInterval

    An EInterval defines two instances: a begin time and an end
    time where begin time is ≤ to the end time. These time may be
    separately marked as inclusive or exclusive. If begin time
    and end time are equal then both times must be marked as
    inclusive.

    While EInterval overrides equals(Object) it does not
    implement the Comparable interface. Instead EInterval
    implements Allen's Interval Algebra via the following
    methods:... read more

Posted by Charles Rapp 2021-09-27

eBus 5.6.0: Optional request cancellation & notificiation fields.

Release 5.6.0 provides the following changes:

  • Added ERequestFeed.ERequest.cancel() method.

    Method ERequestFeed.ERequest.close() unilaterally cancels a
    request and does not allow the replier to reject the
    cancellation.

    ERequestFeed.ERequest.cancel() allows a replier the
    opportunity to accept or reject the cancel request. If
    rejected the request remains active and the replier continues
    processing the request.... read more

Posted by Charles Rapp 2021-06-12

Moving on to Java 11

Moving to Java 11

eBus has been based on Java 8 for 5 years while Java 11 has been around for almost 3 years. Since Java 11 has Long Term Support (LTS) it is time to move eBus to Java 11. Java 11 has significant improvements to performance and garbage collection which I would like to take advantage of. I plan to make the move to either the end of this year or the start of 2022.

If this move to Java 11 is a problem for you please let me know. I can be reached either here at Sourceforge as cwrapp or at rapp@acm.org If there is enough demand for continued Java 8 support, then I will release both Java 8 and 11 versions. Otherwise eBus will be purely a Java 11 API.... read more

Posted by Charles Rapp 2021-05-18

eBus 5.5.0: Multicast connections are here.

Release 5.5.0 provides the following changes:

  • Feature 11: Added multicast communication between eBus
    applications. Provides ability to transmit notification
    messages between eBus applications joined to the same group.
    The notification messages keys are defined when the multicast
    connection is opened. Multicast connections are
    uni-directional: it either posts notifications from eBus to
    the multicast group or receives notifications from the group
    and publishes to eBus.... read more
Posted by Charles Rapp 2021-05-08

eBus 5.4.0: Bug 32

Release 5.4.0 provides the following changes:

  • Bug 32: Added manual primitive/object boxing code.
    Javassist is used to generate the code to encode/decode eBus
    messages. The problem is that javassist does not support
    auto-boxing. Therefore if an eBus message has an Integer
    field, the generated code attempts to encode/decode the value
    as an int primitive. Without auto-boxing this fails. The
    generated code now distinguishes between primitive and object
    fields.... read more
Posted by Charles Rapp 2020-11-29

eBus GUI now here!

An general-purpose eBus user interface based on eBus v. 5.3.5 is now available in the release 5.3.5 Tools folder. The application is an executable JAR egui.jar and must be used with the eBus JSON configuration file egui.conf. To use, down load the jar and conf files and run the following command:

$ java -Dnet.sf.eBus.config.jsonFile=egui.conf -jar egui.jar

The application come with an extensive Help window. Bring up that window and learn how to create an eBus publisher, subscriber, requestor, and replier user interface. The user interface is easy to use because the underlying eBus API is easy.... read more

Posted by Charles Rapp 2020-09-10

eBus 5.3.5: Bug 31

Release 5.3.5 provides the following changes:

  • Bug 31: Open feeds not closed when remote application logs
    off.

  • Code clean-up and test coverage expansion continuing.

There are three download folders:

  • Libary: contains the eBus API jar files.

  • Documentation: contains the eBus Programmer's Manul in PDF and
    Javadoc folders in tar, gzipped and zip formats.

  • Source Code: snapshot of eBus NetBeans project files at release
    time.... read more

Posted by Charles Rapp 2020-08-15