Skip to content

SirCipher/swimci

Repository files navigation

Swim System Java Implementation

package documentation chat Known Vulnerabilities

The Swim System Java implementation provides a self-contained distributed software platform executing stateful Web Agent applications. Swim System encompasses the Swim Core foundation framework, the Swim Mesh distributed microkernel and Web Agent framework, and the Swim Polyglot multi-language virtual machine framework.

Umbrella Framework

The Swim System umbrella framework provides a self-contained distributed software platform for building stateful, massively real-time streaming applications that run on any Java 8+ VM. Swim System has no external dependencies beyond a minimal JVM.

The Swim Core framework implements a dependency-free foundation framework, with a lightweight concurrency engine, incremental I/O engine, and flow-controlled network protocol implementations. Swim Core consists of the following component libraries:

  • swim-util – extended collection, iterator, and builder interfaces, lightweight cache sets and maps, and other foundational utilities.
  • swim-codec – incremental I/O; functional parsers and writers; display, debug, and diagnostic formatters; and Unicode and binary codecs.
  • swim-collections – immutable, structure sharing collections, including hash array mapped tries, finger tries, B-trees, and S-trees (sequence trees).
  • swim-args – composable command line argument parser.
  • swim-structure – generic structured data model, with support for selectors, expressions, and lambda functions. Used as a common abstract syntax tree for Recon, JSON, XML, and other data languages.
  • swim-recon – object notation with attributes, like if JSON and XML had a baby.
  • swim-json – JavaScript Object Notation (JSON) codec that incrementally parses and writes swim-structure values.
  • swim-xml – eXtensible Markup Language (XML) codec that incrementally parses and writes swim-structure values.
  • swim-csv – Comma-Separated Values (CSV) codec that incrementally parses and writes swim-structure values.
  • swim-avro – Apache Avro codec that incrementally parses and writes swim-structure values.
  • swim-protobuf – Protocol Buffers (protobuf) codec that incrementally parses and writes swim-structure values.
  • swim-decipher – universal decoder that detects and incrementally parses Recon, JSON, XML, Protobuf, raw text, and binary data formats as swim-structure values.
  • swim-math – mathematical and geometric structures, including rings, fields, vector modules and spaces, affine spaces, tensor spaces, probability distributions, and associated operators.
  • swim-security – signing and encryption of swim-structure values using the JSON Web Key (JWK), JSON Web Signature (JWS), JSON Web Token (JWT), and OpenID standards.
  • swim-spatial – geospatial projections and spatial collections, including sparse prefix Q-trees optimized for continuous n-body geofencing and real-time spatial clustering and reduction.
  • swim-streamlet – stateful, streaming component model for application componets that continuously consume input state from streaming inlets, and continuously produce output state on streaming outlets.
  • swim-dataflow – compiler from swim-structure expressions to live-updated data models.
  • swim-observable – collection interfaces that notify registered observers of precise state changes.
  • swim-uri – rich object model for working with Uniform Resource Identifiers, URI subcomponents, and URI patterns, including an efficient and safe codec for parsing and writing compliant URI strings.
  • swim-deflate – DEFLATE codec that incrementally compresses and decompresses streams.
  • swim-mqtt – MQTT packet model and wire protocol codec that incrementally decodes and encodes MQTT streams without intermediate buffering.
  • swim-http – HTTP message model and wire protocol codec that incrementally decodes and encodes HTTP streams without intermediate buffering.
  • swim-ws – WebSocket frame model and wire protocol codec that incrementally decodes and encodes fragmented WebSocket streams without intermediate buffering.
  • swim-warp – WebSocket protocol for dynamically multiplexing large numbers of bidirectional links to streaming API endpoints, called lanes, of URI-addressed distributed objects, called nodes, that run stateful distributed processes, called Web Agents.
  • swim-concurrent – timer, task, and continuation passing style interfaces, with lightweight scheduler and execution stage implementations.
  • swim-db – lock-free document store—optimized for high rate atomic state changes—that concurrently commits and compacts on-disk log-structured storage files without blocking parallel in-memory updates to associative B-tree maps, spatial Q-tree maps, sequential S-tree lists, and singleton U-tree values.
  • swim-io – explicitly flow-controlled, non-blocking, parallel I/O engine, with swim-codec-modulated socket modems, and TCP and TLS transports.
  • swim-io-mqtt – MQTT socket modem for concurrently transporting explicitly flow-controlled MQTT streams over a network without blocking or intermediate buffering.
  • swim-io-http – HTTP client and server socket modems for pipelining and concurrently transporting explicitly flow-controlled HTTP streams over a network without blocking or intermediate buffering.
  • swim-io-ws – WebSocket modem for concurrently transporting explicitly flow-controlled WebSocket streams over a network without blocking or intermediate buffering, and swim-io-http requesters and responders for upgrading HTTP client and server modems to WebSocket modems.
  • swim-io-warp – WARP socket modem for multiplexing and concurrently transporting prioritized, explicitly flow-controlled WARP treams over a network, without blocking or intermediate buffering
  • swim-web – high-level web server API and routing DSL, with HTTP, WebSocket, and WARP routing directives.

The Swim Mesh framework provides the Web Agent API, and implements a distributed WARP microkernel. Swim Mesh consists of the following component libraries:

The Swim Polyglot framework provides multi-language API bindings and GraalVM integration for embedding guest languages into swimOS applications. Swim Polyglot consists of the following component libraries:

Usage

To embed the Swim Kernel directly into your application, add the swim-server library to your project's dependencies.

Gradle

compile group: 'org.swimos', name: 'swim-server', version: '3.10.0'

Maven

<dependency>
  <groupId>org.swimos</groupId>
  <artifactId>swim-server</artifactId>
  <version>3.10.0</version>
</dependency>

Development

swimOS runs on any Java 8+ VM with a minimal java.base classpath. swimOS uses Gradle as its standard build system. The included gradlew script can be used to build the platform.

Setup

Install a Java 8+ JDK, such as OpenJDK or GraalVM.

Compiling sources

swim-system-java $ ./gradlew compileJava

Running tests

swim-system-java $ ./gradlew test

Building documentation

swim-system-java $ ./gradlew :javadoc

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages