Downloads
Here we provide you a collection of links to find and download files (pieces of software, source codes, documents, public licenses etc.) from SWDES and from contributing users. After you followed one of these links, to download a file please click on its respective title. Depending on the content and its owner, you might be asked to accept a license agreement or data protection agreement between you and the content owner.
In case of any issues or questions regarding the files provided here, please get in touch with the respective creator or licensor. Please note: we accept no liability whatsoever for the content which has been provided here by contributors. See also our Disclaimer.
The Liberal Licenses are innovative public licenses, which are suitable for any material protected by copyright laws, in particular software.
Java projects
A Java library containing some basic classes and implementations of basic concepts, e.g. basic cache, locking, utility classes, etc.. Most of the other Java projects listed here depend on this library.
A reference implementation of the Calling Broker pattern in Java. Enables true multimethods (multiple dispatch) in Java. Dispatches on method level by any arbitrary context. Can be used on top of any creational pattern and existing creational framework, such as dependency injection frameworks.
A complex reference implementation of the Creator pattern in Java (JEE) including object life cycle management, thread management, AOP-like capabilities, multiple dispatch by any arbitrary dynamic context, etc. Includes packages to support and integrate with common JEE web servers. By its usage of the JGEN project to generate the creator classes, Creator is even much quicker and easier to use.
A very complex Java framework that mediates announcements and arbitrary objects (related to arbitrary topics) sent by publishers to be received by subscribers. Using JAM is a simple one-liner in most cases. Implements object oriented patterns, such as publish-subscribe, mediator, specification, decorator, etc. Can work in a synchronous or asynchronous manner, on a single thread or concurrent, immediate or scheduled, over networks or directly within the same JVM instance. Supports to push and to pull data in dynamic chunk sizes, supports direct value change propagation, asynchronous exception handling and much much more. Includes packages to integrate with common logging APIs.
A template engine, primarily used to generate Java code. Uses setups and presets in pure Java to offer unlimited possibilities without the need to learn a DSL or the like. The JGEN core makes heavily use of the Navigator project and thus it is also used as an example to demonstrate how to use navigators.
A reference implementation of the Navigator pattern in Java. Enables to navigate on any object graph, including cyclic ones, in order to retrieve data or to alter data referenced by that graph or to alter the graph's structure. The graph navigation by these navigators offers powerful features beyond a simple graph traversal including choices of navigation strategies and log books. Can be used also for a navigation-oriented architecture where the access to domain model members is reserved for navigators, thus decoupling the members of the domain model from each other, which allows e.g. for easier model changes.
A utility project for a lightweight and easy to use tracing / tracking of a programs execution path even in a multithreading environment with reused threads, along with typical tracing measurements, in local developer tests and the like.
A lightweight framework framework to apply a Design by Contract (DbC) coding style. Additionally, SafeR provides operations for checks which return a boolean value. SafeR supports DbC in two ways: with safe reference objects and with static operations. While the latter is the same approach as seen typically in "Assert" classes with static operations, the former is the preferred approach wherever possible. Safe reference objects can be seen as (immutable) containers or wrappers which assert that the references they contain are in the specified / expected state. By using the type of a safe reference class as parameter type or return type of an operation, the caller of the operation is forced to comply with the contract at compile time.
A double ended array list. The DearList can be used as list and as deque (double ended queue). The DearList can be many times, e.g. thousends of times, faster than a classical single ended array list, when adding or removing elements in the head area of the list (depending on the number of elements contained in the list). The DearList can also shrink and not just grow. Growing and shrinking of the DearList can be configured and controlled very fine-grained. The DearList employs a CowIterator (copy-on-write iterator) developed for the DearList. The CowIterator allows to add and remove elements during an iteration via any operation of the list interface and not just via the iterator itself. The DearList also supports to register change event listeners.
An object-oriented database. FunDB organizes the data in pseudo-tables where individual objects can be stored in pseudo-rows as well as entire object graphs. FunDB supports queries and other (CRUD) operations also as lambda expressions which will be executed within the database. Moreover, FunDB supports to compose queries of any complexity by nestable query objects. The database can be used embedded as well as in client / server mode. The database server uses Java RMI technology to be able to handle any Java class from the client even if a class is not in its classpath.
A game engine. This game engine supports primarily turn-based games and provides enhanced support for games which are based on fields, areas, territories, zones, rooms and such. nGin relies heavily on the decorator pattern and the strategy pattern and provides the game developer many features such as fully automatic serialization, command processors and so on. Some demo games (console) are included:
- PacMan
- Chess
- Go
- TicTacToe