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
...