{"id":36820666,"url":"https://github.com/lbovolini/crowd","last_synced_at":"2026-01-12T14:00:10.358Z","repository":{"id":40523764,"uuid":"148046983","full_name":"lbovolini/crowd","owner":"lbovolini","description":"Java Distributed Computing Library","archived":false,"fork":false,"pushed_at":"2024-06-18T00:59:36.000Z","size":711,"stargazers_count":1,"open_issues_count":11,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-18T15:41:23.111Z","etag":null,"topics":["android-library","distributed-computing","java","mobile-computing","parallel-computing"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lbovolini.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-09T17:02:47.000Z","updated_at":"2024-06-18T00:59:41.000Z","dependencies_parsed_at":"2024-06-17T15:30:25.148Z","dependency_job_id":"aad231ee-40c9-4724-8bce-c76bde732d18","html_url":"https://github.com/lbovolini/crowd","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lbovolini/crowd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lbovolini%2Fcrowd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lbovolini%2Fcrowd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lbovolini%2Fcrowd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lbovolini%2Fcrowd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lbovolini","download_url":"https://codeload.github.com/lbovolini/crowd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lbovolini%2Fcrowd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28340190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-library","distributed-computing","java","mobile-computing","parallel-computing"],"created_at":"2026-01-12T14:00:08.001Z","updated_at":"2026-01-12T14:00:10.209Z","avatar_url":"https://github.com/lbovolini.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![CI](https://github.com/lbovolini/crowd/actions/workflows/main.yml/badge.svg)  [![Coverage Status](https://coveralls.io/repos/github/lbovolini/crowd/badge.svg?branch=main\u0026kill_cache=1)](https://coveralls.io/github/lbovolini/crowd?branch=main) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nLightweight, zero dependencies and simple Java asynchronous non blocking distributed computing\nlibrary where devices can enter or leave at any time, does not require any extra conﬁguration on\nmachines and supports remote class and native library loading\n\n## Features\n\n- Distributed and parallel master worker computing\n- Supports remote class loading\n- Supports remote native library loading (.so, .dll)\n- Devices can enter or leave computation at any time\n- Fault tolerance mechanism via exceptions and timeouts\n- ~~Provides runtime conversion of java class file to Android dex format~~\n- Modular architecture\n- No configuration required\n\n## Maven\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.lbovolini.crowd\u003c/groupId\u003e\n  \u003cartifactId\u003ecrowd-benchmark\u003c/artifactId\u003e\n  \u003cversion\u003e0.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.lbovolini.crowd\u003c/groupId\u003e\n  \u003cartifactId\u003ecrowd-classloader\u003c/artifactId\u003e\n  \u003cversion\u003e0.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.lbovolini.crowd\u003c/groupId\u003e\n  \u003cartifactId\u003ecrowd-client\u003c/artifactId\u003e\n  \u003cversion\u003e0.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.lbovolini.crowd\u003c/groupId\u003e\n  \u003cartifactId\u003ecrowd-core\u003c/artifactId\u003e\n  \u003cversion\u003e0.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.lbovolini.crowd\u003c/groupId\u003e\n  \u003cartifactId\u003ecrowd-server\u003c/artifactId\u003e\n  \u003cversion\u003e0.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.lbovolini.crowd\u003c/groupId\u003e\n  \u003cartifactId\u003ecrowd-discovery\u003c/artifactId\u003e\n  \u003cversion\u003e0.0.1\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Requirements\n\nThis library requires some software to provide access to resources (class files, jar packages and native libraries) if any is required by clients, like **Lighttp**.\n\n## Properties\n\n```bash\ncodebase.url\n```\n\nDefines the URL that identifies the location of class and jar resources.\n\nDefault value is \"file:\" \n\nRequired for remote class loading\n\nServer only\n\n[//]: # (Module: ...crowd.discovery Class: CodebaseUtils)\n\n\n\n```bash\ncodebase.root\n```\n\nPoints to root path of resources.\n\nDefault value is some temporary directory path\n\nRequired for remote resource loading\n\nServer only\n\n[//]: # (Module: ...crowd.discovery Class: CodebaseUtils)\n\n\n\n```\nlib.url\n```\n\nDefines the URL that identifies the location native library resources.\n\nDefault value is \"file:\" \n\nRequired for remote native library loading\n\nServer only\n\n[//]: # (Module: ...crowd.discovery Class: CodebaseUtils)\n\n\u003cdetails\u003e\n\u003csummary\u003eShow All\u003c/summary\u003e\n\n\u003cp\u003e   \n\n\n```\ncodebase.url.separator\n```\n\nDefault value is: \" \"\n\n[//]: # (Module: ...crowd.discovery Class: URLUtils)\n\n```\nclassloader.custom\n```\n\nTells application to use a custom classloader defined in \"classloader\" property below.\n\nDefault value is: \"False\"\n\n```\nclassloader\n```\n\nThis property defines the canonical class name of alternative classloader to be used if \"classloader.custom\" property is true.  \n\n~~Default value is \"com.github.lbovolini.crowd.android.classloader.AndroidRemoteClassLoader\"~~\n\n~~Optional, use only if alternative classloader, that is not AndroidRemoteClassLoader, is required.~~\n\nClient only\n\n[//]: # (Module: ...crowd.classloader Class: RemoteClassLoaderService)\n\n\n\n```\ncache\n```\n\nSee: https://docs.oracle.com/javase/7/docs/api/java/net/URLConnection.html#setUseCaches(boolean)\n\nDefault value is \"false\"\n\n[//]: # (Module: ...crowd.classloader Class: FileDownloader)\n\n\n\n```\npool.size\n```\n\nDefault value is: See https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#availableProcessors()\n\n[//]: # (Module: ...crowd.client Class: ClientRequestHandler)\n\n\n\n```\nport\n```\n\nDefines the value of TCP port used during client channel binding \n\nDefault value is \"8081\"\n\n[//]: # (Module: ...crowd.client Class: ClientWorkerFactory)\n\n\n\n```\nmulticast.ip\n```\n\n\n\nDefines the multicast ip address\n\nDefault value is \"225.4.5.6\"\n\nWarning: This is a shared property between client and server, thus, must be equal in both\n\nRequired\n\n[//]: # (Module: ...crowd.client Class: MulticastClientWorkerFactory)\n\n\n\n```\nmulticast.interface\n```\n\nDefines the name of local network interface that will be used by multicast channel group\n\nDefault value is: See com.github.lbovolini.crowd.core.util.HostUtils.getNetworkInterfaceName()\n\nRequired \n\n[//]: # (Module: ...crowd.client Class: MulticastClientWorkerFactory)\n\n\n\n```\nmulticast.server.port\n```\n\nDefines the value of UDP server port\n\nDefault value is \"8000\"\n\nWarning: This is a shared property between client and server, thus, must be equal in both\n\nRequired\n\n[//]: # (Module: ...crowd.client Class: MulticastClientWorkerFactory)\n\n\n\n```\nmulticast.client.port\n```\n\n\n\nDefines the value of UDP port used during client channel binding \n\nDefault value is \"8011\"\n\nRequired\n\n[//]: # (Module: ...crowd.client Class: MulticastClientWorkerFactory)\n\n\n\n```\nclass.path\n```\n\nDefines the absolute path of where downloaded class and jar files will be placed\n\nDefault value is: Value of java.io.tmpdir property\n\n[//]: # (Module: ...crowd.client Class: Agent)\n\n\n\n```\nlib.path\n```\n\nDefines the absolute path of where downloaded native library files will be placed\n\nDefault value is: Value of java.io.tmpdir property\n\n[//]: # (Module: ...crowd.client Class: Agent)\n\n\n\n// !TODO\n\n```\ncodebase.root\n```\n\n[//]: # (Module: ...crowd.server Class: MulticastServerWorker)\n\n\n\n\n```\nmulticast.ip\n```\n\n[//]: # (Module: ...crowd.server Class: MulticastServerWorkerFactory)\n\n\n\n```\nmulticast.server.port\n```\n\n[//]: # (Module: ...crowd.server Class: MulticastServerWorkerFactory)\n\n\n\n```\nmulticast.interface\n```\n\n[//]: # (Module: ...crowd.server Class: MulticastServerWorkerFactory)\n\n\n\n```\nhostname\n```\n\nHostname used during bind of TCP channel\n\nDefault value is:  HostUtils.getHostAddressName()\n\n[//]: # (Module: ...crowd.server Class: Crowd)\n\n\n\n```\nport\n```\n\nDefault value is: \"8081\"\n\n[//]: # (Module: ...crowd.server Class: Crowd)\n\n\n\n```\ndex.version\n```\n\n~~Represents the minimum SDK version of Android API used by dex bytecode converter.~~\n\n~~Default value is: \"26\"~~\n\n~~Android only~~\n\n[//]: # (Module: ...crowd.classloader.android Class: AndroidRemoteClassLoader)\n\n\n\n```\ndex.optimize\n```\n\n~~Tels if dex bytecode should be optimized.~~\n\n~~Android only~~\n\n~~Default value is: \"true\"~~\n\n[//]: # (Module: ...crowd.classloader.android Class: AndroidRemoteClassLoader)\n\n\u003c/p\u003e\n\u003c/details\u003e  \n\u003cbr/\u003e\n\n## How to use\n\n- See Wiki\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flbovolini%2Fcrowd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flbovolini%2Fcrowd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flbovolini%2Fcrowd/lists"}