Java components in Mule allow developers to package custom Java code that executes when a message is received. There are two types of Java components: DefaultJavaComponent and PooledJavaComponent. To configure a Java component, only the class name is required. Interceptors can provide additional services like logging. Entry point resolvers determine which method is called, like the reflection entry point resolver which uses method arguments. Component lifecycles can be customized using interfaces like LifecycleAdaptor.