{"id":42181056,"url":"https://github.com/atraplet/ecos4j","last_synced_at":"2026-01-26T22:04:23.973Z","repository":{"id":214357647,"uuid":"692805795","full_name":"atraplet/ecos4j","owner":"atraplet","description":"ECOS Solver for Java","archived":false,"fork":false,"pushed_at":"2025-07-22T15:23:28.000Z","size":232,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-22T17:30:46.673Z","etag":null,"topics":["conic-optimization","conic-programs","convex-optimization","interior-point-method","java","linear-programming","operations-research","optimization","optimization-algorithms","quadratic-programming","semidefinite-programming"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atraplet.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,"zenodo":null}},"created_at":"2023-09-17T16:30:16.000Z","updated_at":"2025-07-22T15:23:30.000Z","dependencies_parsed_at":"2024-02-14T17:53:55.913Z","dependency_job_id":"f6f9f19e-2d3b-473b-a112-e04b53d66f8d","html_url":"https://github.com/atraplet/ecos4j","commit_stats":null,"previous_names":["atraplet/ecos4j"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/atraplet/ecos4j","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atraplet%2Fecos4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atraplet%2Fecos4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atraplet%2Fecos4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atraplet%2Fecos4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atraplet","download_url":"https://codeload.github.com/atraplet/ecos4j/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atraplet%2Fecos4j/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28789721,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:49:50.245Z","status":"ssl_error","status_checked_at":"2026-01-26T21:48:29.455Z","response_time":59,"last_error":"SSL_read: 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":["conic-optimization","conic-programs","convex-optimization","interior-point-method","java","linear-programming","operations-research","optimization","optimization-algorithms","quadratic-programming","semidefinite-programming"],"created_at":"2026-01-26T22:03:44.562Z","updated_at":"2026-01-26T22:04:23.954Z","avatar_url":"https://github.com/atraplet.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Note\n\nThe repository of the underlying solver ECOS is inactive. Moreover, ECOS has known issues with performance and numerical stability. \nHence, we decided to stop the development of ecos4j and to archive it.\n\nIf you are interested in solving convex optimization problems with Java, then you may use our project [clarabel4j](https://github.com/atraplet/clarabel4j).\nThe underlying native solver Clarabel improves the algorithm and implementation of ECOS and is under active development.\n\n# ECOS Solver for Java\n\n[![Build](https://github.com/atraplet/ecos4j/actions/workflows/build.yml/badge.svg)](https://github.com/atraplet/ecos4j/actions/workflows/build.yml)\n[![Codecov](https://codecov.io/github/atraplet/ecos4j/graph/badge.svg?token=S8TXRQ4UAZ)](https://codecov.io/github/atraplet/ecos4j)\n[![Maven Central](https://img.shields.io/maven-central/v/com.ustermetrics/ecos4j)](https://central.sonatype.com/artifact/com.ustermetrics/ecos4j)\n[![GPLv3 licensed](https://img.shields.io/badge/license-GPLv3-blue)](https://github.com/atraplet/ecos4j/blob/master/LICENSE)\n\n*This library requires JDK 23 as it depends on\nJava's [Foreign Function and Memory (FFM) API](https://docs.oracle.com/en/java/javase/23/core/foreign-function-and-memory-api.html).*\n\necos4j (ECOS Solver for Java) is a Java library that provides an interface from the Java programming language to the\nnative open source mathematical programming solver [ECOS](https://github.com/embotech/ecos). It invokes the solver\nthrough\nJava's [Foreign Function and Memory (FFM) API](https://docs.oracle.com/en/java/javase/23/core/foreign-function-and-memory-api.html).\n\n## Usage\n\n### Dependency\n\nAdd the latest version from [Maven Central](https://central.sonatype.com/artifact/com.ustermetrics/ecos4j) to\nyour `pom.xml`\n\n```\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.ustermetrics\u003c/groupId\u003e\n    \u003cartifactId\u003eecos4j\u003c/artifactId\u003e\n    \u003cversion\u003ex.y.z\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Native Library\n\nEither add the latest version of [ecos4j-native](https://github.com/atraplet/ecos4j-native)\nfrom [Maven Central](https://central.sonatype.com/artifact/com.ustermetrics/ecos4j-native) to\nyour `pom.xml`\n\n```\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.ustermetrics\u003c/groupId\u003e\n    \u003cartifactId\u003eecos4j-native\u003c/artifactId\u003e\n    \u003cversion\u003ex.y.z\u003c/version\u003e\n    \u003cscope\u003eruntime\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\nor install the native solver on the machine and add the location to the `java.library.path`. ecos4j dynamically loads\nthe native solver.\n\n### Run Code\n\nSince ecos4j invokes some restricted methods of the FFM API, use `--enable-native-access=com.ustermetrics.ecos4j`\nor `--enable-native-access=ALL-UNNAMED` (if you are not using the Java Platform Module System) to avoid warnings from\nthe Java runtime.\n\n## Build\n\n### Java bindings\n\nThe directory `./bindings` contains the files and scripts needed to generate the Java bindings. The actual bindings are\nunder `./src/main/java` in the package `com.ustermetrics.ecos4j.bindings`.\n\nThe scripts depend on the [jextract](https://jdk.java.net/jextract/) tool, which mechanically generates Java bindings\nfrom native library headers.\n\nThe bindings are generated in two steps: First, `./bindings/generate_includes.sh` generates the dumps of the included\nsymbols in the `includes.txt` file. Replace absolute platform dependent path with relative platform independent path in\nthe comments. Remove unused includes. Second, `./bindings/generate_bindings.sh` generates the actual Java bindings.\nAdd `NativeLoader.loadLibrary.` Remove platform dependent layout constants and make the code platform independent.\n\n## Release\n\nUpdate the version in the `pom.xml`, create a tag, and push it by running\n\n```\nexport VERSION=X.Y.Z\ngit checkout --detach HEAD\nsed -i -E \"s/\u003cversion\u003e[0-9]+\\-SNAPSHOT\u003c\\/version\u003e/\u003cversion\u003e$VERSION\u003c\\/version\u003e/g\" pom.xml\ngit commit -m \"v$VERSION\" pom.xml\ngit tag v$VERSION\ngit push origin v$VERSION\n```\n\nThis will trigger the upload of the package to Maven Central via GitHub Actions.\n\nThen, go to the GitHub repository [releases page](https://github.com/atraplet/ecos4j/releases) and update the release.\n\n## Credits\n\nThis project is based on the native open source mathematical programming\nsolver [ECOS](https://github.com/embotech/ecos),\nwhich is developed and maintained by [embotech](https://www.embotech.com), Alexander Domahidi, and others.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatraplet%2Fecos4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatraplet%2Fecos4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatraplet%2Fecos4j/lists"}