Batchable, @future, and Queueable are interfaces in Apex that allow for asynchronous and batch processing.
Batchable is used for processing large numbers of records asynchronously in batches of up to 50 million records. It defines start(), execute(), and finish() methods and allows scheduling batch jobs to run at a specific time. However, there are limits such as only 5 concurrent batch jobs and no @future calls allowed within a batch.
@future allows for simple, frequent asynchronous processing of single records through static void methods but only supports primitive arguments. It has no concurrency limits but parameters are limited and jobs cannot be chained.
Queueable is used when Batchable and @future need to be combined, such