Summary
First, ignore all this for development unless you have a reason to use the unique capabilities of the native code libraries.
Second, you can safely ignore all of this production if you don't need the performance the native libraries provide or some unique capability of the native libs.
Third, if you do use the native libraries then
test in that configuration during development (personal experience talking here)
Fourth, to use the native libraries you must have: tcnative-1 XOR (libtcnative-1 AND libeay32 AND libapr-1) in your path. tcnative-1 is searched for first and if found, libtcnative-1 is not used.
Gory Details
Tomcat is looking for one of two files, either tcnative.dll or libtcnative-1.dll (assuming Windows extension names) in your PATH. If one of these is found then it will use native code for the sockets. That behavior can be controlled by specifying the class name of the protocol implementation in your connector elements in server.xml. e.g.
will use native sockets.
tcnative-1 is usually in the Tomcat distribution, look in your Tomcat bin directory. tcnative-1 is a grouping of libtcnative-1, libeay32 (the OpenSSL library) and libapr-1 (the Apache runtime libray) and can be used by itself to enable native sockets. If libtcnative-1 is loaded, and not tcnative-1, then libeay32 and libapr-1 must also be available because libtcnative-1 depends on them.
In production it is recommended that the three libraries be used individually so that patches may be applied to each library as needed. Doing so requires building the libraries but that is really not so bad. The source code distributions contain build instructions. If you either have or have access to some C/C++ experience then it is even easier. Just allocate a day or so to collect all the required tools and to set up the environment, after that it is just a couple of command lines.>