Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

Java

Kategoria: Technologia

Dla programistów Java

  • 69 członków
  • 6 wpisów

Debiutant

w Java

2piorunów

Zapomniane (niestety nie) architektury w Javie

Przekonanie o wystarczalności wzorców projektowych oraz zbioru zasad programistycznych kończy się powstaniem kolekcji trochę bardziej skomplikowanych CRUDów. O tym, że architektura całego systemu jest ważna, przekonywał często Sławomir Sobótka. Krytykując przerośnięte CRUDy

Debiutant

w Java

1piorunów

Hejtownicy potrzebuje małej podpowiedzi bo nigdzie nie mogę znaleźć satysfakcjonującej odpowiedzi.

Mam projekcik w któym mam encję która ma 11 pól i ostatnie pole jest plikiem pdf. W jaki sposób prawidłowo powinienem przechowywać w DB dokument? Czy mam zakładać jakąś bazę plikową czy może przechowywać ścieżki na AWS (nigdy nie miałem doczynienia z tym).

Technologie Java, spring, mysql

Pokaż więcej komentarzy (2)

Gwiazdor

w Java

26piorunów

Mikroserwisy, wszędzie mikroserwisy. Tylko jak testować to w praktyce? Podejść jest wiele, jedno z nich to testy integracyjne. W ramach teorii tak zwanego "black box testing" nie powinniśmy ingerować w wewnętrzne komponenty systemu a jedynie weryfikować wejście i wyjście z systemu.

Oczywiście jest to łatwe w teorii, nieco trudniejsze w praktyce. Jak więc poradzić sobie z wyzwaniem pt. po wywołaniu HTTP powinien być komunikat w Kafce? Na przykład przy pomocy biblioteki testcontainers: https://www.testcontainers.org/, która pozwala uruchomić wasz serwis oraz jego zależności w postaci kontenerów. Naturalnie symulowanie całego klastra np. kubernetes mija się z celem, natomiast z powodzeniem można dorzucić przynajmniej tę część infrastruktury, która zapewnia komunikację.

Testcontainers poza podstawową funkcjonalnością pozwalającą na uruchomienie dowolnego kontenera z kodu Javy, dostarcza również moduły dla PostgreSQL, MySQL, Cassandra czy też ElasticSearch - lista kontenerów do przejrzenia: https://mvnrepository.com/artifact/org.testcontainers. Z ciekawszych rzeczy - można uruchomić z testem również selenium, które działa w kontenerze, bez konieczności aranżowania wszystkich zależności systemowych potrzebnych do uruchomienia przeglądarki. Brzmi świetnie, nieprawdaż? :slightly_smiling_face:

 

Gwiazdor2piorunów

@Kazix Chodzi głównie o przygotowanie testu w trakcie którego zamieniając komponent na potrzeby testu z docelowego (np. baza danych, kolejka JMS lub topic Kafki na implementację in-memory) pośrednio ingeruje się w zachowanie systemu. Twój test wciąż jest integracyjny, ponieważ wchodzić w interakcję na wyższych warstwach, ale do weryfikacji wyników wymaga wymiany warstw niższych.

GURU1piorunów
ale nie da rady ogarnąć kolejek

@splatch dlatego napisałem przy wiremocku rest call. Te 2 narzędzia się uzupełniają - testcontainers do stawiania faktycznej bazy/kolejki itd, wiremock do "mockowania" innych mikroserwisów z których korzysta testowany komponent.

Pokaż więcej komentarzy (6)

Gwiazdor

w Java

7piorunów

Jedna z rzeczy, która mnie bardzo irytuje w Javie to toporność interakcji z systemem operacyjnym. Rozumiem, że JVM jest przenośne i tak dalej, ale ile trzeba się naszarpać, żeby wywołać coś z biblioteki SO/DLL przekracza ludzie pojęcie. Mam nadzieję, że zmiany z FFI (foreign function interface) do użycia i wywołanie funkcji z bibliotek systemowych przestanie być udręką.

Dla jasności programiści JVM mają do dyspozycji JNI, które wymaga kompilacji kodu natywnego, żeby ten można było wowłać z poziomu JVM. Z mniej topornych opcji mam JNA (oparte o libffi), które jest dość wolne, oraz nieoficjalne api jnr-ffi.

Dla zainteresowanych https://openjdk.org/jeps/424 i https://github.com/jnr :slightly_smiling_face:

Gwiazdor0piorunów

@DexterFromLab To prawda, z tym że jako język/platforma nadaje się do GUI i aplikacji wysokopoziomowych. Niekoniecznie jest w tym dobra, ale ma tę przewagę nad innymi platformami, że zmiana architektury procesora czy systemu operacyjnego nie ma dużych implikacji. Druga kwestia, że jest sporo aplikacji wysokopoziomowych typu klient/server, w których można z powodzeniem wykorzystać JVM.

Pokaż więcej komentarzy (2)

Specjalista

w Java

4piorunów

Java 17 będzie lepiej generować liczby losowe

https://www.infoworld.com/article/3606833/jdk-17-whats-in-store-for-java-17.html