Jeżeli nie chcesz codziennie uczyć się czegoś nowego i doskonalić swój warsztat pracy, to IT chyba nie jest dla Ciebie. Pracując w IT przechodziłem przez zafascynowanie nowymi technologiami oraz znużenie powtarzalnością “nowych technologii”.

Nauka

Dosłownie wieczna nauka, czy tego chcesz czy nie. Jeżeli samemu nie znajdziesz czasu na nauke, to będzie wymagał, tego od Ciebie pracodawca. Niezależnie czy programujesz (dev), testujesz oprogramowanie (test) czy zarządzasz serwerami (admin) musisz uczyć się nowych rzeczy. Na programowanie składa się wiele elementów, nie tylko język programowania, są jeszcze algorytmy, bazy danych, cloud, jest czego się uczyć.

Doskonalenie

Skoro nauczyłeś się już nowych rzeczy, to za jakiś czas, na pewno będzie nowsza wersja narzędzia Y, które używałeś i niezbędne będzie doskonalenie się w tym zakresie. Czy, aby na pewno dobrze znasz używane narzędzie? Kiedy ostatnio czytałeś jego dokumentację techniczną? Zawsze można dowiedzieć się czegoś nowego i poćwiczyć z istniejącym narzędziem, ale w innej konfiguracji. Można optymalizować istniejące rozwiązania.

Nowe technologie

To, jak to jest z tym zafascynowanie nowymi technologiami oraz znużeniem powtarzalnością “nowych technologii”?

Zafascynowanie

Zafascynowanie nowymi technologiami związane było z ich potencjalnie nowymi możliwościami. Technologia Y miała rozwiązać problem Z, nie zawsze tak było. Mnie zawsze interesowało poznawanie nowych rzeczy i nadal tak jest. Dla mnie naturalnym jest, że jak trzeba poznać nową technologię, to angażuję się na 100% w jej poznanie.

Pamiętam jak z aplikacji desktop pisanych w Java Swing przechodziliśmy na aplikacje web, dostępne przez przeglądarkę. Aplikacja desktop wymagała tylko uruchomienia gotowego pliku JAR, no i może jeszcze znajomości wzorca MVC. Dla aplikacji web należało poznać jak działają serwery, protokuł HTTP, nauczyć się HTML’a, nowych frameworków. W międzyczasie, gdzieś pojawiły się rozwiązania low-code i no-code, o których pisałem w innym artykule Low-code i No-code – czy generatory kodu źródłowego zastąpią programistów?

Znużenie

Znużenie nowymi technologiami nie wynikało z braku chęci poznawania nowych rzeczy, ale po pewnym czasie okazywało się, że wszystko jest podobne do siebie i działa na podobnych zasadach – wszystko, to samo. Warto dostrzec powtarzający się wzorzec i na ich podstawie budować solidną bazę do dalszego rozwoju.

Zmiana bazy danych z Oracle na PostgreSQL, już, to widziałem, po prostu język SQL i coś do zarządzania bazą danych. Serwer aplikacyjny JBoss, zmiana na Glassfish, już, to widziałem, domeny, klastry, źródła danych, panel administracyjny. Aplikacje desktop w JavaFX zamiast Java Swing, już, to widziałem, wzorzec MVC, akcje jako callback na przyciskach, no dobra, tu było lepiej, ale dowiedziałem się o tym po czasie. O frameworkach opiszę więcej poniżej w sekcji “wszytko to samo”.

Wszystko to samo

Dlaczego używam stwierdzenia, że wszystko to samo? Baza wiedzy i rozwiązań technologicznych w IT jest w miarę niezmienna. Elementami, które się zmieniają, to nazwy i wersje narzędzi, frameworków które korzystają z tych podstawowych rozwiązań. Pozwolę sobie celowo pominąć AI, która trochę namieszała w IT, ale zapewne z czasem i AI stanie się bazą do innych rozwiązań w IT.

Podstawowe technologie i rozwiązania

Poniżej w dużym uproszczeniu opisałem, niektóre podstawowe technologie/rozwiązania:

  1. Podstawą dla większości aplikacji web, jeżeli chodzi o komunikację klient-serwer jest protokół HTTP.
    • W kwestii strony wizualnej, to podstawą jest język HTML, Javascript oraz style CSS.
  2. Przechowywanie i dostęp do danych, to w większości przypadków bazy danych niezależnie od typu (SQL, NoSQL).
    • Tutaj wyróżniamy tabele, zapytania, operacje CRUD.
  3. Zarówno aplikacje web jak i bazy danych muszą działać na jakimś serwerze, a tu należy znać podstawy administracji serwerów.
    • Komunikacja sieciowa np. adres IP i port.

Podstawa rozwiązań opartych o język Java

Co jest podstawą dla technologii/rozwiązań w języku Java?

  1. JDBC (Java Database Connectivity) API – komunikacja z dowolną relacyjną bazą danych.

JDBC (Java Database Connectivity) API – Official Documentation

The JDBC™ API provides programmatic access to relational data from the Java™ programming language. Źródło: https://docs.oracle.com/javase/tutorial/jdbc/overview/index.html

Hibernate ORM korzysta z JDBC

Hibernate is concerned with data persistence as it applies to relational databases (via JDBC) Źródło: https://hibernate.org/orm/
  1. Java/Jakarta Servlet API – komunikacja klient-serwer.

Java/Jakarta Servlet API – Official Documentation

A servlet is a Java programming language class that is used to extend the capabilities of servers that host applications accessed by means of a request-response programming model. Źródło: https://docs.oracle.com/javaee/5/tutorial/doc/bnafe.html

SpringMVC korzysta z Java/Jakarta Servlet

This part of the documentation covers support for Servlet-stack web applications built on the Servlet API and deployed to Servlet containers. Individual chapters include Spring MVC […] Źródło: https://docs.spring.io/spring-framework/reference/web.html
  1. HTML i ExpressionLanguage (EL) – “wymiana danych backend-frontend i vice versa”.

Expression language (EL), język wyrażeń, np. ${} jest powszechnie używany w tworzeniu stron internetowych za pomocą frameworków. Gdzie wyrażenia w nawiasach klamrowych {} są przetwarzane, a ich wyniki są renderowane w interfejsie użytkownika. Expression language (EL) jest również używany w frameworkach i bibliotekach front-end jako sposób na osadzanie dynamicznych danych lub wyrażeń w składni podobnej do HTML – <h1>Hello, ${name}</h1>


Ad. 1. Większość narzędzi do komunikacji z bazą danych w języku Java używa JDBC API np.: Hibernate, MyBatis, Jdbi, Spring JDBC Template.

Ad. 2. Niezależnie od wybranego frameworka web w języku Java podstawą będzie Java/Jakarta Servlet API np.: Thymeleaf, Tapestry, Play Framework i wiele innych.

Ad. 3. Sporo frameworków i bibliotek używa Expression Language (EL) np. Thymeleaf lub ma swoje oddzielne EL np. Spring Expression Language (SpEL).

Jednak coś innego

W trakcie mojej pracy jako programisty Java rewolucje były dwie.

  1. Przesiadka z Java EE na Spring Framework. Dlaczego, to takie ważne pisałem w artykule Używamy „starych” frameworków – Java EE vs. Spring Framework – Dawid kontra Goliat.
  2. Zmiana IDE z Eclipse IDE na IntelliJ IDEA.

Podsumowanie

Mam nadzieję, że w dzisiejszych szybko zmieniających się technologicznie czasach nie trzeba nikogo przekonywać, że adaptacja przez naukę jest kluczem do sukcesu. Żeby nie było, że tylko narzekam, to jestem wdzięczny za proces, który przeszedłem z nowymi technologiami w świecie IT, konkretnie związanym z programowaniem. Wiem jaką muszę mieć bazę techniczną, żeby w miarę płynnie przełączyć się z rozwiązania Y na nowe rozwiązanie Z – “bo wszystko, to samo” 😉

Thumbnail background photo by Tom Fisk from www.paxels.com edited in GIMP.