Mały serwer w języku Java

0

Witam,
Mam za zadanie napisać mały serwer w języku Java, tylko po to, aby móc do niego strzelać podstawowymi komendami GET, PUT, POST i DELETE z Postamana.
Czy ktoś byłby mi w stanie doradzić jak to napisać? Albo zaproponował jakiś poradnik z neta - szukałem kilka godzin i jedyne co mi wyskakuje to Minecraft, a to chyba się ze sobą nie łączy.
Z góry dzięki za każdą odpowiedz !

4

Hasła do wyszukiwarki "Java server socket"
https://edu.pjwstk.edu.pl/wyklady/mpr/scb/W8/W8.htm

2

Javalin (https://javalin.io/), sparkjava (https://sparkjava.com/)

3

ratpack?
https://ratpack.io/

Dość minimalistyczne, swoje "strzały" będziesz miał w pięc minut.
Ale nie zamknięte na rozwój (np jak zaczniesz te "strzały" parametryzować i pozostawiać skutek)

Przy okalzji oswojenie z nowościami w Javie (funkcyjne itd)

2

Spring Boot

Co to znaczy „mały”?

1

google: rest api java
ciekawi mnie czego szukałes ze dostałeś minecrafta...

1

@Kamil Jędrzejewski:

W j. angielskim dasz radę? Bo ten Minecraft zwracany przez Google wskazuje na "nie wiadomo co było wpisane w Szukaj"

0

Wpisywałem w Google "jak napisać serwer z użyciem javy"
Mały, na tyle zebym mógł go podpiąć pod postaman i wysyłać zapytania. Dopiero jestem na początku nauki i korzystałem z fake api json serwer i podpowiedziano mi ze sam taki serwer powinienem napisać, aby się też w jakiś sposób rozwijać
W języku angielskim nie ma problemu, zauważyłem że większość dobrych kursów jest w tym języku

1

Żeby napisać prosty serwer podzbioru HTTP (nie mylić z HTTP) musisz mieć naprawdę solidne podstawy z Javy (sockety, wątki) i z działania TCP. Przychodzi mi do głowy taki plan:

  • zapoznaj się z klasycznym, blokującym Socket API
  • napisz prosty program który wystawi socket serwera, poczeka na połączenie i będzie odpowiadał w pętli tym co dostanie (echo server na samych bajtach)
  • rozwiń powyższy program tak żeby obsługiwał kilka połączeń równocześnie (każde połączenie obsługiwane w osobnym wątku)
  • dowiedz się jak wyglądają zapytania i odpowiedzi HTTP i spraw żeby Twój serwer odpowiedział na najprostsze zapytanie GET (jakaś forma prostego parsera)
  • potem sky is the limit

W praktyce nikt nie pisze serwerów HTTP ale walory edukacyjne takiego ćwiczenia na pewno są

0

@Kamil Jędrzejewski:
Idź na Udemy, tam zawsze promocje po 40zł za kurs.
Przeglądaj, sprawdzaj co by ci pasowało, co wydaje się, że ci pasuje do zaliczenia.
"Z palca" to jak podsumował @damianem
Ale projekt na zaliczenie jest napisany/nienapisany więc wybierz coś pod swój zasób wiedzy i po prostu rób z kursu i ucz się robiąc kurs.

3
Kamil Jędrzejewski napisał(a):

Wpisywałem w Google "jak napisać serwer z użyciem javy"

Nie żebym się czepiał, ale nad wyszukiwaniem informacji musisz jeszcze troszkę popracować.
To wiodąca umiejętność.

0
damianem napisał(a):

W praktyce nikt nie pisze serwerów HTTP ale walory edukacyjne takiego ćwiczenia na pewno są

Niedokończone, nigdy nie dotestowane projekty niekoniecznie są nauką.
Niektóre mogą tylko głupio nauczyć "nieomylności".
Inne "przyklepią" złe nawyki.
A środowisko wspólbieżne (w szerokim sensie słowa) może mieć multum niewidocznych błędów, prawie jak w C.

Jeśli na jakimś etapie jest się zbyt zielonym, by postawić sobie kryteria serwera HTTP, to jak będzie z tzw "odbiorem" ?

@Kamil Jędrzejewski
Niejasno piszesz o motywacji.
Kazano Ci, zalecono, doradzono, chcesz mieć coś niekoniecznie w 100% z własnym kodem, ale zaufanego i w dobrej architekturze? Niepotzrebne skreślić.

2

Zgadzam się z @AnyKtokolwiek. Po pierwsze błędem jest pisanie zapytań do google w polskim języku, po drugie to kokretnie zapytanie możesz zrobić w formie kilku słów kluczowych np
"java lightweight rest server"

0
AnyKtokolwiek napisał(a):

Nie żebym się czepiał, ale nad wyszukiwaniem informacji musisz jeszcze troszkę popracować.
To wiodąca umiejętność.

Różne są opinie co programista powinien wiedzieć, czego nie musi, jakie metody stosować.

Ale jest jedna najważniejsza metoda: StackOverflow Driven Development.
Ją musisz opanować.

0
jarekr000000 napisał(a):

Javalin (https://javalin.io/), ...

Małe przeprosiny z serwerami servletowymi? (Żart)

Próbuję "wtórnie" znaleźć motywację tego projektu, funkcyjne handlery REST nad klasykiem ogólnego HTTP czyli Jetty 1) ?
Armata na wróble (ew. wiatrówka na słonie) ?

Dlaczego nie bez-servletowo? Czy jednak twórcom żal, i pasuje czasem na tym samym porcie pohostować coś tradycyjnego?

*1) bez sarkazmu, szanuję jako zasłużony lekki kontener servletów
*

0

@AnyKtokolwiek:

Javalin i SparkJava nie są servletowe.

Może chodzą i sobie na jetty, ale użytkownik żadnych servletów nie robi.

2

Dopóki @Kamil Jędrzejewski nie wyjaśni po co mu ta backendowa część i na jakie to ewentualnie zaliczenie to można pół internetu tutoriali i rozwiązań zaproponować.

Jak na zaliczenie to jakieś wskazówki muszą być podane ze strony prowadzącego zajęcia.
I byłoby dobrze, gdyby OP trzymał się w jakimś stopniu wskazówek.

0

Ogólnie to wygląda tak: chcę się przebranżowić uczę się na testera, a pomaga mi przy tym osoba, która zawodowo pracuję o 20lat jako programista JS. Wie, ze jedna firma potrzebuje testerow i powiedzial mi czego się powinienem nauczyc, m.in Postmana, REST API i SOAPUI, selenium. Doradził mi że skoro w postmanie umiem wywołać zapytania do fake api servera to może powinienem napisać swoj serwer i wysłać do niego zapytania, abym poznał to wszystko z drugiej tez strony. Jak cos nie jest zrozumiałe, to mówcie, postaram się lepiej wyjaśnić.
Chyba, że jest takie coś jak taki serwer online, którego nie trzeba tworzyć, tylko wpisać swój kod do pobrania
Dzięki za wszystkie rady!!!!

1

@Kamil Jędrzejewski:

Rada wydaje się oderwana od życia. Oszczędzę sobie słów o locie w kosmos.
Żeby położyć książkę na drewnianym regale, nie musisz zrobić własnoręcznie kamiennej siekierki.

O wiele większy pożytek odniesiesz, jak na bazie czegoś gotowego w dni / godziny /minuty (w miarę nabierania wprawy) urobisz środowisko wg oczekiwań, niż walcząc miesiącami z pisaniem ułomnego serwera. Czyli komponentowy drewniany regał z Ikei.

Taka ilustracja.
Masz serwer własnymi pazurami napisany do celów testowania drugiej strony. Leci jakiś błąd / wyjątek - gdzie jest "wina"? W rozwiązaniu, które testujesz, czy w twoim toolu, które nigdy nie stanęło w warunkach granicznych (pewnej ilości req/s, pewnej długości bajtów, połączenia warunków etc)

Kamil Jędrzejewski napisał(a):

abym poznał to wszystko z drugiej tez strony.

tego nie da się nauczyć "brutal force", czy "naiwnie" klepiąc praktykę na czas, na ilosć itd. Trzeba duuużo teorii i doświadczenia. Inaczej nawet nie zinterpretujesz swoich błędów (a bez tego nie nauczysz się) - o ile będziesz miał przynajmniej częściowe wyniki.

2
Kamil Jędrzejewski napisał(a):

Doradził mi że skoro w postmanie umiem wywołać zapytania do fake api servera to może powinienem napisać swoj serwer i wysłać do niego zapytania, abym poznał to wszystko z drugiej tez strony. Jak cos nie jest zrozumiałe, to mówcie, postaram się lepiej wyjaśnić.

Kiedyś za takie rady wyzywało się człowieka na pojedynek na szable, ale kiedyś to byłą kultura i cywilizacja, a teraz jest postapo :(

1
Kamil Jędrzejewski napisał(a):

osoba, która zawodowo pracuję o 20lat jako programista JS. Wie, ze jedna firma potrzebuje testerow i powiedzial mi czego się powinienem nauczyc,

I dlatego mówił o programowaniu w Java?

Na pewno? A nie w JavaScript?

Postawić taki mini-backend w NodeExpress to jednak nie to samo co w Plain Java.

Do spróbowania sił z postmanem polecam gotowce online:
klasyk
https://jsonplaceholder.typicode.com/
i może
https://reqres.in/

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