The GNU Lesser General Public License is the CopyLeft, but unlike the regular GnuGeneralPublicLicense, the LGPL permits the use of licensed code in proprietary programs.
The LGPL is available at http://www.gnu.org/copyleft/lesser.html.
RichardStallman feels that true-believers of FreeSoftware should use the LGPL only in a very few situations. He takes this stance in an essay at http://www.gnu.org/philosophy/why-not-lgpl.html, which is worth the read even if it doesn't change your mind.
Others feel that true-believers of FreeSoftware should use the LGPL where ever appropriate, but especially on libraries for which copyleft protection is desired. Attempting to enforce the derivative-work clauses of the GPL on an aggregate work into which a stand-alone library is linked comes dangerously close to enforcing a copyright on an API or user interface.
Questions
How would this relate to a Java program that uses an external jar? Does this count as linking if I need the external jar to compile/run? What if I distribute my application with the external jar in a zip or rpm?
RichardStallman's position is that a dynamically-linked library is no different from a statically-linked library in regard to how the GPL or LGPL covers it. All code that must be loaded together at run-time in the same process constitutes a single "work", and so all the pieces must have compatible licensing terms for the work as a whole to be used legally. (If components communicate via an InterProcessCommunication facility, then they do not constitute a single work.)
Of course, many people disagree with Stallman's position, because it seems to represent a rather narrow and archaic view of what "linking" is. The GPL was created back when statically-linked libraries were the most common means of library usage, and includes no special provisions for dynamic linking. Supposedly, future versions of the GPL and LGPL will improve this situation.
It should be noted that the law (both statute and case law) in various countries, and not Stallman, get to decide what constitutes a derived work in software. Just because RMS says that programs which use a library are derived works of said library, doesn't make it so. Congress, or a judge (in absence of specific direction from Congerss) might decide differently.
One argument against counting dynamic linking as a derived work is the problem of substitutability. I have a program X which links dynamically against any library which implements an interface Y. There are three libraries implementing Y which a user/distro might care to install; one of which is GPLd, one which is BSDd, one which is proprietary. Is my program X, as I distribute it, a derived work of any of them? Does an end-user who executes X create a new derived work, based on X and whatever version of Y is installed on his/her system? Is it a copyright violation for a user to run programs which link to an implementation of Y contrary to the wishes/license with which Y is distributed? (MicroSoft has quite a few DLLs which contain the EULA provision that executables that link to them may only run on Windows--in other words, use of the DLLs under Wine or some other environment, even if the DLL is legitimately purchased, is a no-no. Is this enforceable?)