Da passagem fornecida, extraia as linguagens de programação suportadas pelo Flink. Separa-as com uma vírgula.
O Flink fornece um motor de streaming de alta taxa de transferência e baixa latência, bem como suporte para processamento de tempo de evento e gerenciamento de estado. Os aplicativos do Flink são tolerantes a falhas em caso de falha da máquina e suportam semântica exatamente uma vez. Os programas podem ser escritos em Java, Scala, Python e SQL e são automaticamente compilados e otimizados em programas de fluxo de dados que são executados em um cluster ou ambiente de nuvem.
Java, Scala, Python, SQL