Java Real Time - praca inżynierska.

0

Cześć!
W poniedziałek idę do, być może, przyszłego promotora z tematem pracy inżynierskiej. Na początek chciałbym dowiedzieć się czy w ogóle coś takiego jest możliwe i czy warto w to brnąć. Otóż myślałem nad budową symulatora (tutaj wstaw coś technicznego, np. procesów chemicznych w oczyszczalni ścieków) jako aplikacji czasu rzeczywistego o miękkich wymaganiach czasowych, gdzie interfejs użytkownika będzie dostępny z poziomu przeglądarki internetowej. Sam interfejs zbudowałbym korzystając z HTML, CSS, JavaScript. Na pewno potrzebna będzie baza danych. Do symulatora dodałbym mechanizm adaptacji kroku symulacji (redukcja występujących opóźnień symulacji w stosunku do czasu rzeczywistego) aby "udawać" pracę w czasie rzeczywistym w środowisku , które takie nie jest. I tutaj pojawia się główny problem - serwer. Bardzo chciałbym wykorzystać Javę do stworzenia symulatora, jednak dość słabo nadaje się ona do rozwiązań Real Time z uwagi na Garbage Collector, ponieważ ciężko przewidzieć kiedy się uruchomi a w rozwiązaniach Real Time nie możemy pozwolić sobie na nawet krótkie przerwanie programu aby GC mógł sobie posprzątać. Ważną sprawą jest również protokół komunikacyjny, który zapewni komunikację w czasie rzeczywistym, jednak wybór ten zależy również od tego w jaki sposób zostanie zbudowany serwer. Przechodząc do sedna. Słyszał ktoś o rozwiązaniach Real Time w Javie? Jeśli tak to bardzo prosiłbym o jakieś słowa kluczowe lub linki do artykułów i czy można na tym zbudować serwer :).

0

A czy przypadkiem Java nie jest popularna w High-frequency trading?

4
  1. GC to niekoniecznie problem, masz takie rzeczy jak ZGC które teoretycznie nie mają fazy stop-the-world
  2. Java jest stosowana w systemach low-latency, ale mimo wszystko to nie jest real-time. Nie masz "gwarancji" czasowych ani możliwości stosowania jakichś "przerwań". Z tego względu to raczej słaby wybór dla systemów sterowania, szczególnie takich które wymagają circuit breakerów i interlocków. Ale już w systemie z dużą bezwładnością (np. jakieś pompy wodne czy chłodzenie) pewnie spokojnie dałoby się to zrobić, bo to czy coś się wykona 5-10ms później nie robi różnicy
  3. Szukaj raczej pod low-latency i HFT, nie pod real-time
0

Dzięki wielkie za artykuły i za rady :). Próbował ktoś pisać rozwiązania RealTime w Javie? Czy implementacja kodu jest dużo bardziej złożona niż np. pisząc serwer w C++ i wykorzystując do komunikacji WebSocket? I czy miał ktoś do czynienia ze wspomnianą wyżej JamaicaVM? Nie chciałbym się wkopać z inżynierką w nie wiadomo jak złożony projekt. Niestety wymagania czasowe są raczej konieczne w pracy dyplomowej, przynajmniej osoba u której chciałbym robić pracę dyplomową tego wymaga. Chyba, że ktoś ma jakiś pomysł na projekt wykorzystujący Javę. Dodam że studiuję automatykę i robotykę, ze specjalizacją automatyka i systemy sterowania, więc sterowanie jakimś procesem byłoby tu raczej konieczne, zamiast tworzenia jakiejś fajnej gierki na telefon :).

2

Nie wiem czy hasła "web", "Web Socket", "JavaScript", "baza danych" jakoś można legalnie wiązać z hasłem "realtime".
Nie siedzę w tej branży i nie wiem do końca jak taki "symulator realtime" miałby wyglądać.

Może na zasadzie trój-warstwowej, nie wiem:

  • serwer: moduł real-time
  • serwer: pamięć współdzielona
  • serwer: serwer web
  • klient web

Nie wiem czy ten web w ogóle potrzebny. Nie wystarczy REST API?
Raczej byłbym za tym żeby zrobić z setkę benchmarków i statystyk niż żeby się jarać wyglądem czy frejmłorkiej JS który aktualnie jest na topie w tej połowie tygodnia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1