Interix. Microsoft's Unix. It runs on the NT kernel alongside win32 as another process personality. Most windowses come with the Interix core, and you can get the userland part from Microsoft --- it's called Services For Unix these days, I think. It even comes with GCC. It's a pretty nice piece of work, behaving just like an old school Unix.
But it's largely been abandoned by Microsoft and is buggy as hell and difficult to install; and its an old old-school Unix, so it's missing a lot of the modern system calls and libraries that make Unixes nice. (I don't even know if win10 supports it.)
...that page cites one of my projects as a reference? May all the gods have mercy on our souls...
Yeah, it's obviously been destaffed at Microsoft. There's a blog, last updated years ago. http://blogs.msdn.com/b/sfu/
I know it's likely to be impossible, but if anyone at Microsoft's reading this (and chances are they are), whacking all the source code up on codeplex or github would be awesome. It worked so, so much better than Cygwin.
Not sure about Java, but Scala works fine for me in cygwin after doing this[1][2]. I'd have to have a more detailed example (that I can reproduce myself) of what gets messed up though if it's something beyond that, since I can't remember anymore exactly what else I had to do offhand.
Cygwin does not alter the behaviour of existing programs. It is a DLL that can be compiled into new programs to provide lots of POSIX/Linux compatibility. It also comes shipped with lots of pre-compiled Linux binaries of common tools.
If you run your pre-existing JRE, its behaviour won't change. If you run a JRE compiled with cygwin (I've no idea if they provide one or not) then it will have UNIX-style path support.
But it's largely been abandoned by Microsoft and is buggy as hell and difficult to install; and its an old old-school Unix, so it's missing a lot of the modern system calls and libraries that make Unixes nice. (I don't even know if win10 supports it.)