Android uses a single Zygote process that forks to start a new application. This optimization is possible because all Android applications start in the same environment; there is very little to do (mainly set the user and load the application code) to launch an application. This optimization is effective because there is little to do, especially since the Zygote process already has the libraries linked in.
On a unix system, the assumptions that underlie Zygote are not met. Each process starts with its own environment variables, its own open files, its own usage limits, its own user and groups, etc. You can't transfer all these properties from one process to another (you can transfer some, but even then that would mean additional startup time). Furthermore, there is a wide range of different libraries used by different applications; each application would have to load its own. A Zygote-like optimization is neither possible in general nor, in many cases, really helpful even when it's possible.
You can write a Java program that's a daemon. It's something you have to manage on an application-by-application basis. You can make your application start as a daemon and fork when it gets a new request. It's up to you to decide what to do when forking.