Стандартный логгер лучше не использовать.
Лучше использовать SLF4J в связке с logback или log4j. JUL весь своеобразный велосипед, который к тому же плохо конфигурируется, если верить рассказам.
А много ли творчества в очередной разработке очередного сайта на известном от и до фреймворке?
Основная проблема, как по мне, люди хотят творцов там, где это не нужно и достаточно ремесленника. Если быть точным - там, где задач для творца нет и не водилось.
Настройте себе линукс и не тратьте деньги на мак. Если уже есть устраивающий по мощности компьютер. Если нет - покупайте прошку с 16 ГБ ОЗУ - хватит надолго для обучения и работы.
Мак вполне себе удобен для разработки, как по мне. Практически настолько же удобный, насколько и линукс. В чем то выигрывает, в чем то проигрывает.
Если я правильно понял, у вас есть возможность однократно установить нужные приложения, а потом повесить телефон. При этом у вас есть координаты всех нужных элементов. И нет постоянной сессии связи.
Соответственно вам нужно написать сервис с использованием имеющегося для андроида UIAutomation API. В нем будут две части - сетевая, в которой вы по идее разберетесь без меня, и исполняющая.
Сетевая часть отвечает за прием команд и их расшифровку. Здесь думаю все просто и понятно для вас.
Для исполняющей части вам придется задействовать UiDevice - он умеет работать с хардварными кнопками, ротацией, кликать в произвольные места экрана и бить чёрта ступой.
В идеале, вы напишете обертку вокруг него, которая позволит исполнять все допустимые им команды обрабатывая запросы на них на лету. Хотя по описанию вам хватит только клика.
Подробности стоит искать в документации: тык!. На мой взгляд, это неплохое решения для данной задачи.
Если вам все еще непонятно - давайте ночью спишемся где нибудь и обсудим подробней решение.
Эм. Про тестирование был оффтоп не относящийся к вашему вопросу.
Если я правильно понял вашу задачу - на удаленном телефоне висит приложение на которое надо тапнуть. Следовательно - можно использовать что то позволяющее тапнуть. Appium это умеет. UIAutomator это умеет. Ничто не мешает вам использовать их в качестве протокола передачи действия.
Разумееется, самый простой вариант - тапнуть пальцами. Но есть другой вопрос - зачем вам это нужно и к чему ограничения на отсутствие adb shell? Может вам еще и сессию поддерживать нельзя?
По сути, у вас должен висеть в памяти сервис (вирус, блин), который в определенное время тапнет по кнопке (разрешив тем самым списание денег, хе-хе-хе). Для этого вам достаточно использовать возможности UIAutomator для тапа по координатам или же каким то признакам кнопки (xpath, id, etc). Каким образом организовать передачу команды на UIAutomator - дело ваше, да и сложно будет подсказать не зная, откуда и как вы хотите передавать команды.
А зачем вам дублирование информации о типе ивента? WhisperEvent.EVENT_TYPING, TypingEvent.class
Имя же можно хранить в TypingEvent. Или это внешняя библиотека?
Зачем вы заинлайнили создание SocketPresenceChannel? Так же менее понятно и можно запутаться.
Кроме того, какой именно тип данных вам приходится указывать явно? Event? MessagingUser? Если Event - можно упростить выкинув имя ивента которое вы выцепляете из отдельного класса, перенеся его внутрь каждого ивента.
Appium - это имплементация протокола WebDriver для Android и iOS. Судя по отзывам - он неплохо тестирует обычные приложения для Android и как то не очень - сайты в браузерах или же обернутые во WebView сайты.
Так что вы не правы - он для тестирования обычных приложений в первую очередь нужен.
Kir ---: Тогда приложения запущенный через Wine - нативны для Linux. ЕМНИП, Microsoft написали свой Wine только для обратной задачи - запуска Linux приложений в Windows окружении. Сложно это назвать нативной имплементацией. Docker же поверх WSL работает в вашем примере?
Еще один маленький нюанс - на моей прошлой работе, с которой я ушел в марте 2017 года была Windows 7 и переходить на Windows 10 в обозримом будущем они не собирались. Так что там докер крутился как раз таки в виртуалке. И вроде как пока что статистика говорит о большом количестве Windows 7 на десктопах. Кроме того, использование WSL требует определенных телодвижений от пользователя - как минимум его нужно включить. Все этого говорит против использования Docker для деплоя приложения на Windows системах.
На самом деле мы так и не узнали - какое именно приложение пытается написать автор? Вдруг это GUI? Ну и что за библиотека такая странная, что распространяется только через Docker?
Как поговаривал мой завкаф: "Проще научить физика программированию, чем программиста физике."
По тему - полно интересных публикаций по теме нейронных сетей. Возможно, будет интересно написать бота для компьютерной игрушки умеющего выбирать оптимальную стратегию убийства мобов на определенной локации. Ручки(передвижение, скиллы) ему дать нормальные а не нарисованные. Целевой параметр - максимизация числа(или суммы баллов) убитых мобов. Не знаю, решали ли эту задачу через нейронные сети. Заодно можно сравнить затраченные ресурсы на ручную выработку алгоритма и на обучение нейронной сети. Отсюда сделать выводы.
P.S.: Реальных задач чисто по программированию не бывает. Все всегда завязано на предметную область, даже если эта область связана с CS или IT.
aol-nnov: Тут все просто - на уровень выше первого не пустого пакета.
Предположим, у нас есть пакеты:
com.jet.web.page;
com.jet.web.block;
com.jet.web.rules;
Тогда должно быть доступно простое создание пакета/класса в пакетах com.jet.web и com.jet.
P.S.: libastral.so иногда заменяет набор эвристик и анализ поведения пользователя. Да и JetBrains, судя по всему, его уже прикрутили.
P.P.S.: Но не факт что я правильно прочитал мысли автора вопроса.
bambuk26rus: В дополнение к предыдущему оратору порекомендую для начала проверить наличие такого issue. А в идеале зайти на форум IDEA и задать вопрос там.
fshp: Все, признаюсь, был не прав. Человек просто ищет повод не учить Haskell. Иначе бы он догадался бы поставить LInux в виртуалку. Ну или погуглить как поставить Haskell на windows.
P.S.: На XP запускается, дальше не смотрел. Компилятор распаковать все равно не шмог из-за ограничений виртуалки по памяти.
Лучше использовать SLF4J в связке с logback или log4j. JUL весь своеобразный велосипед, который к тому же плохо конфигурируется, если верить рассказам.