Java

Switch expressions

Switch expressions w Java 13 – nowa składnia switchy

Switch expressions to kolejna z nowości w Javie 13. Dzięki tej zmianie, kod może wyglądać dużo prościej i czytelniej, a co za tym idzie będzie się pojawiać mniej błędów. Wciąż jest to wersja preview funkcjonalności, która pojawiła się w Javie 12. Jednak po feedbacku ze strony programistów doczekała się kilku zmian. W nowej odsłonie języka zdecydowano się pozostawić ją nadal jako preview tego co nas czeka w kolejnych wydaniach.

Całość zmian opisana jest w JEP 354 (JEP – Java Enhancement Proposal). Wspominałem też o tych zmianach w poprzednim wpisie o wszystkich nowościach w Javie 13. Jednak jest to dość obszerny i ciekawy temat, więc zdecydowałem się poświęcić mu osobny wpis. Pokażę w nim jak używać nowej składni oraz jakie zmiany zaszły w wykorzystaniu starej na różnych przykładach. Dodam też porównanie jak by to wyglądało przed wprowadzeniem zmian.

Czytaj więcej »Switch expressions w Java 13 – nowa składnia switchy

Text Blocks Java 13 – czyli bloki tekstu w kodzie

  • Michał 
  • Java

Text Blocks to jedna z nowych funkcjonalności która weszła jako preview w Javie 13. Oznacza to, że jest to nowy element języka, w pełni wyspecyfikowany, w pełni zaimplementowany, ale może zostać jeszcze zmieniony po informacji zwrotnej od developerów którzy zaczną z niej korzystać.

O blokach tekstu wspomniałem już w poprzednim artykule o wszystkich nowościach w Javie 13: https://blog.mloza.pl/java-13-nowe-funkcjonalnosci-szczesliwej-trzynastki/. W tym poście postaram się napisać szerzej i podać więcej przykładów wykorzystania. Cała specyfikacja jest dostępna tutaj: JEP 335.

Bloki tekstu ułatwiają pracę z wielolinijkowymi Stringami. Nie trzeba ich konkatenować żeby dobrze wyglądały i nie psuły czytelności kodu. Nie musimy dodawać specjalnych znaków do łamania linii. Nasz kod też będzie lepiej wyglądał ponieważ możemy dodać wcięcia w kodzie które zostaną usunięte w preprocesingu. Jeśli programowałeś w innych językach (np. w Pythonie) to powinieneś być zaznajomiony z tą koncepcją.

Czytaj więcej »Text Blocks Java 13 – czyli bloki tekstu w kodzie

Java 13 – nowe funkcjonalności sczęśliwej trzynastki

17 września pojawiła się nowa wersja Javy oznaczona numerkiem 13. Mam nadzieję, że nie będzie to pechowa wersja i będzie działać jak trzeba. Java 13 wprowadza kilka nowych funkcjonalności. Poniżej możesz znaleźć listę JEPów (Java Enhancement Proposal) wprowadzonych w nowym wydaniu wraz z odnośnikami do oryginalnych opisów.

Czytaj więcej »Java 13 – nowe funkcjonalności sczęśliwej trzynastki

Spring Boot – Spring Data JPA część II: Powiązania między tabelami

W pierwszej części postu, Spring Boot – Interakcja z bazą danych czyli Spring Data JPA, opisywałem jak się połączyć z bazą i jak stworzyć pierwszą encję. W tej części postaram się pokazać jak możemy zdefiniować powiązania pomiędzy encjami oraz jak możemy wykonywać zapytania z ich użyciem.

Czytaj więcej »Spring Boot – Spring Data JPA część II: Powiązania między tabelami

Wsparcie dla pola typu JSONB w PostgreSQL dla Spring Data JPA + Hibernate

Od wersji 9.4 PostgreSQL oferuje nowy typ danych którym jest JSONB. Wcześniej w wersji 9.2 został wprowadzony typ JSON który przechowuje dane w tym formacie w wersji tekstowej. Wymagało to parsowania danych przed wykonaniem jakiejkolwiek operacji na nich. JSONB przechowuje zdekomponowane dane binarne, dzięki czemu mamy do nich szybszy dostęp. Dodatkowo możemy ich użyć do tworzenia indeksów, joinów itp.

Wygląda to bardzo pięknie i równie dobrze sprawdza się w praktyce, jednak Hibernate nie wspiera natywnie tego rodzaju pól. Można to jednak obejść tworząc własny typ danych oraz mówiąc mu jak może ten typ zserializować do formatu JSON. W tym poście przejdziemy przez proces tworzenia własnego typu.

Czytaj więcej »Wsparcie dla pola typu JSONB w PostgreSQL dla Spring Data JPA + Hibernate

Spring Boot Test – testowanie aplikacji w Spring Boocie

Testowanie naszych aplikacji jest bardzo ważne. Nie tylko dlatego, że pozwala znaleźć błędy, ale również pomagają w utrzymaniu kodu – daje pewność, że nie zepsuliśmy czegoś przy refaktoringu, dokumentuje użycie – można zaglądnąć do kodu testów aby dowiedzieć się jak używać jakiejś biblioteki, oraz pozwalaja na szybkie i łatwe sprawdzenie zachowania biblioteki/języka. Na przykład jeśli nie jesteśmy pewni co wywoła się pierwsze – konstruktor czy przypisanie do pola klasy – możemy stworzyć prosty kod który to sprawdzi i odpalić go w testach.

Czytaj więcej »Spring Boot Test – testowanie aplikacji w Spring Boocie

Spring Boot Web – Przekazywanie zmiennych do aplikacji przez URL czyli użycie @RequestParam i @PathVariable

W poprzednich wpisach pokazałem jak stworzyć prostą aplikację z pomocą Spring Boota. Dzisiaj chciałbym rozszeżyć tamten wpis o temat przekazywania zmiennych do aplikacji używając URL. Zakładam, że wiesz już jak stworzyć podstawowy szkielet działającej aplikacji, jeśli nie to zapraszam do przeczytania wpisu na ten temat pod adresem: http://blog.mloza.pl/spring-boot-szybkie-tworzenie-aplikacji-web-w-javie/.

W pierwszym poście na temat tworzenia aplikacji w Spring Boot pokazywałem jak możemy zmapować adres url na metodę w kontrolerze. Nie wspomniałem wtedy o tym, że możemy również w adresie zawrzeć parametry które mogą być przekazywane do naszej funkcji. Jest to bardzo użyteczne i szeroko wykorzystywane w aplikacjach. Przykładowo, możemy napisać metodę która ma za zadanie wyciągnać zawartość wpisu na blogu z bazy danych. Zamiast tworzyć oddzielne metody dla każdego wpisu i ręcznie je mapować, możemy stworzyć jedną metodę której będziemy przekazywać identyfikator wpisu. Na podstawie tego identyfikatora, metoda znajdzie odpowiedni wpis i zwróci go do przeglądarki.

Czytaj więcej »Spring Boot Web – Przekazywanie zmiennych do aplikacji przez URL czyli użycie @RequestParam i @PathVariable

Google Cloud Vision – czyli rozpoznawanie obrazów w chmurze, część 1: OCR

Google udostępniło API pozwalające na rozpoznawanie obrazów. W liście funkcjonalności możemy znaleźć wiele ciekawych pozycji:

  • Label Detection – kategoryzowanie zawartości obrazka, możemy otrzymać informację, że na obrazku znajduje się zwierzę,
  • Explicit Content Detection – wykrywanie nieodpowiedniej zawartości – takiej jak przemoc czy treści dla dorosłych
  • Logo Detection – wykrywa logo znanych marek,
  • Landmark Detection – wykrywanie znanych budowli,
  • Optical Character Recognition (OCR) – rozpoznawanie tekstu,
  • Face Detection – wykrywanie twarzy na zdjęciu,
  • Image Attributes – podaje informacje o obrazie, np. dominujący kolor

W tym poście pokażę jak skorzystać z rozpoznawania tekstu na przykładzie zdjęcia paragonu 🙂
Czytaj więcej »Google Cloud Vision – czyli rozpoznawanie obrazów w chmurze, część 1: OCR