Что требуется для создания приложения, котрое будет постоянно работать на каком-то сервере (к примеру FTP)?
Приложение не может работать на FTP сервере. FTP сервер нужен для передачи файлов, потому что это просто File Transfer Protocol.
А требуется вам немного глубже понимать как работают программы и что такое сеть, потому что в данный момент ваш вопрос сформулирован крайне некорректно и полезный совет вам дать сложно.
Условия "работа в интернете" (а не локальной сети) и "24/7" задают особые требования, которыми можно пренебречь при разработке какой-то "ерунды" и часто это делают, а у вас не будет работать такое.
Например, для надежной связи (пропадает Wi-Fi, контакт в кабеле...) нужно изучить протокол TCP, понимать, когда происходят "обрывы", как их выявлять вообще. Я исследовал с помощью сетевого сниффера Wireshark, собственно вынимая кабель и отключая Wi-Fi-роутер (хотел мудрить что-то особое на Arduino и т.п., но не было денег, да и без этого вполне смог обойтись) и, конечно же, читал теорию - форумы, статьи, только на практике понимал.
Насчет "интернета", кроме надежной связи тут есть еще нюанс - боты, их гораздо больше чем я думал, а логика их непонятна, сервер только что зарегистрирован, порт естественно не 80 и т.п., но тем не менее не проходит и суток, как перебрав все порты появляется бот и отправляет непонятно что, и сервер "вылетает" с ошибкой по парсингу, так что надо учитывать сразу же, иначе они помешают уже на этапе тестирования.
Еще алгоритмическое мышление здесь важно, у меня с ним было очень плохо, поэтому сначала было тяжело работать с кодом, в котором каждая строчка "завернута" в try-catch, а в catch находится еще пять строчек (логирование и т.п.) и еще непонятно что именно лучше делать в каждом catch, то ли клиента отключать, то ли что. :) Но, вода и камни точит - привык.
А теперь о библиотеках... Вся эта тирада из четырех абзацев к тому, что так и не нашел я библиотек, которые бы сделали все перечисленное за меня, все они слишком абстрактны, а искал очень хорошо и умею это гораздо лучше, чем писать, но результат, только время зря потратил, так что - делать самим!
Языки - тоже пробовал разные - без разницы, что привычнее и подходит для других требований задачи, на том и пишете.