Unity and Java is kind of like apples and oranges
Unity is a complete, polished, high-end game engine with a convenient to use editor (= authoring tool), a very smart approach to scripting, a very nice API, an awesome art pipeline and much more. Unity has a physics engine integrated, which is rather easy to use; it has built in networking (multiplayer networking with state synchronization - not just “sockets”, also as easy as networking can be to use) and much much more.
Java is just a programming language - and a set of APIs. So it is kind of a “programming platform” like .NET, for example (let’s say .NET is like Java for historical reasons). With Unity, since it uses Mono for scripting (languages C#, which is quite similar to Java, its own breed of JavaScript or Boo), the “programming platform” is a part of the game engine. A powerful part, but compared to the whole a small part. Since Mono is equivalent to .NET, and .NET is basically equivalent to the Java Platform (Standard Edition), you could say that all the power that Java has is at your finger-tips with Unity scripting, but you only use that for what needs to be scripted.
If you’re using Java you still need to develop a game engine based on Java, or look for an existing one. If you do it all on your own, you’ll spend a couple of years with Java before you have any chance of getting close to the feature-set that Unity provides for a few dollars of licensing costs (and maybe a Mac, if you don’t have one yet and don’t want to wait for the Windows edition of Unity). And when you get there (which you only will if you are an extremely skilled developer), you’ll realize that the outcome is just not the same because Java has rather severe limitations when it comes to realtime 3D.
So, to sum it up: If you want to create a 3D game, Unity is the fun and fast way - in the end the cheapest way to get there, if your time is worth any money. If you already are a programmer, it’s likely that you’ll get something cool up and running within weeks - and coding, while necessary, is only a part of what you’re doing (a very significant part happens in the Unity editor, which is basically a game authoring tool).
Using Java for creating a 3D game is the painful and slow way. I don’t know if there are any cool Java-based game engines out there - but if you want to compare something, you’d have to look for the best Java-based game engine and then compare the feature set of that game engine with that of Unity. And: You’d also have to compare the quality of the endproducts.