I still remember shipping the entire game logic for a title on the PSP inside of a 400kb block and that's was before the days of luajit. It's really an incredible language and I really wish it saw more mainstream use.
2. Not exactly. In JS, every file with an "import" or "export" statement somewhere is its own module.
3. You can write code like this for the browser. Most browsers support ES modules now. However, you do need a bundler tool like Webpack if your code depends on other node modules.
Turns out there's already a Lua-in-Java project that goes by LuaJ: https://github.com/luaj/luaj