Apache Flink® is a battle-hardened stream processor widely used for demanding real-time applications. Its performance and robustness are the results of a handful of core design principles, including a share-nothing architecture with local state, event-time processing, and state snapshot (for recovery).
If you are interested in learning what makes Flink tick, and how it handles some common use cases, check out the Apache Flink® 101 course on Confluent developer
If you are ready to start building your Flink application in Java, this step-by-step course will be a simplified guide for you: Building Apache Flink Applications in Java
You may also be interested in these resources: