{"adoption": {"forks": 160, "observed_at": "2026-08-28T04:04:33.210908+00:00", "stars": 1376}, "canonical_url": "https://ross.abutalabs.com/products/j2cl", "card": {"archived": false, "artifact_type": "library", "description": "Java to Closure JavaScript transpiler", "domain": ["compilers", "web-development", "programming-languages", "developer-tools"], "enriched": true, "function": ["compiler", "build-tool", "developer-tools"], "health_score": 98, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["google/j2cl"], "name": "google/j2cl", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-08-26T18:34:18+00:00", "repo": "google/j2cl", "stars": 1376, "tags": ["transpiler", "java-to-javascript", "closure-compiler", "gwt", "wasm", "bazel", "jsinterop", "web-server"], "topics": ["j2cl", "java", "javascript", "transpiler", "compiler", "gwt", "wasm", "wasmgc"], "urls": [], "use_cases": ["reuse existing Java libraries in a JavaScript web application", "compile Java code to JavaScript for the browser", "build web apps with Java on the frontend", "transpile Java to WebAssembly", "share business logic between Java backend and web frontend", "migrate a GWT application to modern tooling"], "what_it_is": "J2CL is a transpiler from Google that converts Java source code into Closure-style JavaScript, tightly integrated with Closure Compiler for optimization. It also supports compiling Java to WebAssembly and is the technology behind Google's GSuite apps like Gmail and Docs.", "when_to_avoid": ["you are starting a greenfield frontend project with no Java investment", "you need full Java runtime semantics or reflection-heavy libraries", "you want a simple build without Bazel", "you need stable, finalized Wasm support"], "when_to_choose": ["you have substantial Java code or Java libraries (Guava, Dagger) you want to run in the browser", "you want strong static typing and cross-language type checks in frontend code", "you already use Bazel and Closure Compiler tooling", "you want to target WebAssembly from Java"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/j2cl", "repo": "google/j2cl", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "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:04:33.210908+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.210908+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:40:30.101821+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fb18638d367f8becf896172d752a270efd3e31081220cb93d7f9028ffd058e", "fetched_at": "2026-08-28T04:04:33.210908+00:00", "kind": "readme", "missing": false, "url": "https://github.com/google/j2cl"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 53}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3361, "days_push": 7, "days_rel": 153, "gap_med": 140.5, "n_releases_24m": 3}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}