Tytuł może jest średni, ale nie mogłem wymyślić nic lepszego. Już tłumaczę o co chodzi.

Tworzę projekt działający na zasadzie klient-serwer, gdzie serwerem jest aplikacja uruchamiana na komputerze użytkownika, działa w tle, a klientem jest apka na androidzie (ale klientów może być i będzie więcej). Działanie wygląda tak, że klient wysyła komendę z parametrami jsonem, a serwer uruchamia tą komendę. Coś na zasadzie "pilota" do komputera. Komendy to jary ładowane w czasie pracy serwera. Baza danych - obecnie nie, w przyszłości może dla jakiejś historii czy autentykacji. Wszystkie możliwe sytuacje w których przesyłany są dane jsonem:

  • Klient wysyła zapytanie o dostępne komendy na serwerze, serwer odsyła jsona z opisem komend i ich parametrów.
  • Klient wysyła jsona z nazwą i parametrami komendy, serwer wykonuje komendę i odsyła rezultat i ew. błędy.
  • Klient wysyła zapytanie o stan jakichś długoterminowych komend

    To taki krótki opis, żebyście wiedzieli o co chodzi i ew. wskazali jakieś inne możliwości. Pytanie brzmi: jak opakować ten przesył danych? Przypominam jeszcze raz, że to aplikacja desktopowa, nie znajduje się na żadnym serwerze. Rozważam takie opcje:

  1. Przesyłanie tego wszystkiego bezpośrednio przez stream TCP - bardzo niskopoziomowe, w dodatku chyba trochę będzie zabawy z parsowaniem jsona, bo np. w przypadku Jacksona zamiast 2 linijek z ObjectMapperem musiałbym to mieszać z ich streaming api.
  2. Stworzenie API RESTowego - jako, że mam kilka różnych funkcji w aplikacji, a nie tylko przesył danych w te i wewte, to wydaje się sensowne zrobienie jakiegoś resta. Pogrzebałem trochę i wiem, że mam możliwość odpalenia prostego serwera z poziomu aplikacji, a nie tylko aplikacji z poziomu serwera. Przede wszystkim liczy się prostota dla użytkownika - nie musi nic konfigurować, po prostu dwuklik i ma działać:
    1. Jakiś prosty restowy framework typu Jersey z Jetty,
    2. jw. z Undertow, ponoć jest superszybki, szczególnie kusi to, że jest b. lekki (mniej niż 1mb)
    3. jw. z Simple,
    4. java od wersji chyba 1.6 ma wbudowany prosty serwer http, można na tym też odpalić Jerseya albo użyć czegoś innego (w tym operować bezpośrednio na requestach np.).

Co polecacie, może istnieje jakaś lepsza alternatywa?