Yeah. Julia's had that since (at least) 1.0. Environments are built-in, and you specify project dependencies in a Projects.toml file https://pkgdocs.julialang.org/v1/toml-files/.
Small nitpick; its Project.toml (or JuliaProject.toml, to avoid name clashes) not Projects.toml
Or you can activate a local project in a directory, add packages and the Project.toml gets created for you.
Since 0.7 (which was 1.0 with deprecations)
In julia 0.6 and before it was exactly as bad as described.
(though there were things like Playground.jl to kind of work around it)