/crowd

Java Distributed Computing Library

Primary LanguageJavaMIT LicenseMIT

CI Coverage Status License: MIT

Java Asynchronous Non Blocking Distributed Computing Library

Warning This project is under development. Please, don't use it in production, it's very unsafe, it's your own risk.

Features

  • Distributed and parallel master worker computing
  • Supports remote class loading
  • Supports remote native library loading (.so, .dll)
  • Devices can enter or leave computation at any time
  • Fault tolerance mechanism via exceptions and timeouts
  • Provides runtime conversion of java class file to Android dex format
  • Modular architecture
  • No configuration required

Requirements

This library requires some software to provide access to resources (class files, jar packages and native libraries) if any is required by clients, like Lighttp.

Properties

codebase.url

Defines the URL that identifies the location of class and jar resources.

Default value is "file:"

Required for remote class loading

Server only

codebase.root

Points to root path of resources.

Default value is some temporary directory path

Required for remote resource loading

Server only

lib.url

Defines the URL that identifies the location native library resources.

Default value is "file:"

Required for remote native library loading

Server only

Show All

codebase.url.separator

Default value is: " "

classloader.custom

Tells application to use a custom classloader defined in "classloader" property below.

Default value is: "False"

classloader

This property defines the canonical class name of alternative classloader to be used if "classloader.custom" property is true.

Default value is "com.github.lbovolini.crowd.android.classloader.AndroidRemoteClassLoader"

Optional, use only if alternative classloader, that is not AndroidRemoteClassLoader, is required.

Client only

cache

See: https://docs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#setUseCaches(boolean)

Default value is "false"

pool.size

Default value is: See https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#availableProcessors()

port

Defines the value of TCP port used during client channel binding

Default value is "8081"

multicast.ip

Defines the multicast ip address

Default value is "225.4.5.6"

Warning: This is a shared property between client and server, thus, must be equal in both

Required

multicast.interface

Defines the name of local network interface that will be used by multicast channel group

Default value is: See com.github.lbovolini.crowd.core.util.HostUtils.getNetworkInterfaceName()

Required

multicast.server.port

Defines the value of UDP server port

Default value is "8000"

Warning: This is a shared property between client and server, thus, must be equal in both

Required

multicast.client.port

Defines the value of UDP port used during client channel binding

Default value is "8011"

Required

class.path

Defines the absolute path of where downloaded class and jar files will be placed

Default value is: Value of java.io.tmpdir property

lib.path

Defines the absolute path of where downloaded native library files will be placed

Default value is: Value of java.io.tmpdir property

// !TODO

codebase.root
multicast.ip
multicast.server.port
multicast.interface
hostname

Hostname used during bind of TCP channel

Default value is: HostUtils.getHostAddressName()

port

Default value is: "8081"

dex.version

Represents the minimum SDK version of Android API used by dex bytecode converter.

Default value is: "26"

Android only

dex.optimize

Tels if dex bytecode should be optimized.

Android only

Default value is: "true"


How to use

...