Named pipes are much more difficult to get than using sockets. Conceptually, they are simpler. However, making them reliable and reasonably fault tolerant is much more difficult than for sockets.
I would suggest you reconsider sockets, this is for communication between processes. Can you explain why you cannot use sockets? The reason I'm asking is because named pipes actually used sockets on the loop in reality.
A named pipe is an OS design. You can create a named pipe in your OS, and then you can get it as if it were a file using Java and C or any other program. Communication between processes through a file is very difficult to obtain the right (if not impossible). For example, you do not suspect that when you write to a named pipe, everything reads something, unless you create your own flow control protocol. (It is very difficult to check in all cases)
You may have heard of PipedInputStream and PipedOutputStream, and these classes can only be used in the same process (which makes them pretty useless)
EDIT: If you want an independent view of the most common and possibly the most reasonable way to send data, I suggest you try Google.
java sockets - 2,210,000 hits java named pipes - 90,000 hits
Thus, perhaps sockets are 25 times more intelligent than named pipes. (and more supported as there are more textbooks and people who have experience with them)
source share