{"adoption": {"forks": 515, "observed_at": "2026-08-28T04:07:28.524176+00:00", "stars": 2893}, "canonical_url": "https://ross.abutalabs.com/products/hackjava", "card": {"archived": false, "artifact_type": "learning-resource", "description": "《Java安全-只有Java安全才能拯救宇宙》Only Java Security Can Save The Universe.", "domain": ["security", "tutorials", "awesome-lists", "developer-tools"], "enriched": true, "function": ["security", "vulnerability-scanning", "penetration-testing", "documentation"], "health_score": 20, "homepage": null, "language": null, "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["HackJava/HackJava"], "name": "HackJava/HackJava", "platform": ["jvm", "cross-platform"], "pushed_at": "2023-08-04T09:07:01+00:00", "repo": "HackJava/HackJava", "stars": 2893, "tags": ["java-security", "code-audit", "vulnerability-analysis", "awesome-list", "curated-resources", "chinese-language"], "topics": ["hackjava", "0e0w", "javasec", "javasecurity", "hackaspx", "fuckphp", "hackgolang"], "urls": [], "use_cases": ["learn java security from scratch", "find java code audit resources", "study java deserialization vulnerabilities", "build a java vulnerability practice lab", "find java security books and tutorials", "learn to audit java web applications"], "what_it_is": "A curated Chinese-language collection of Java security learning resources covering vulnerability analysis, code auditing, security tools, and vulnerable environments. It aggregates books, tutorials, notes, and reference materials for studying Java application security.", "when_to_avoid": ["you need a runnable security tool rather than a resource list", "you need English-only documentation", "you need actively maintained content after 2023"], "when_to_choose": ["you want a curated index of Java security learning materials", "you are starting out in Java code auditing or vulnerability research", "you need pointers to vulnerable Java environments and tools"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hackjava", "repo": "HackJava/HackJava", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.524176+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:48:14.994801+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6fd1595c097e5141219b210133d2e7ddffa62111cff61794135e8619381398ce", "fetched_at": "2026-08-28T04:07:28.524176+00:00", "kind": "readme", "missing": false, "url": "https://github.com/HackJava/HackJava"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1882, "days_push": 1125, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}