Technologie

 

Przykładowe języki programowania (stos) projektu realizowanego siłami własnymi ARiMR w Departamencie Informatyki

 

 

 

1. Java– wersja 11 – wykorzystywana w warstwie backendowej — współbieżny, oparty na klasach, obiektowy język programowania ogólnego zastosowania. Java jest językiem tworzenia programów źródłowych kompilowanych do kodu bajtowego, czyli postaci wykonywanej przez maszynę wirtualną. Język cechuje się silnym typowaniem.

2. Kotlin– wersja 1.3+ - wykorzystywany w warstwie backendowej – statycznie typowany wieloparadygmatowy język programowania działający na maszynie wirtualnej Javy. Język został zaprogramowany z myślą o pełnej interoperacyjności z innymi językami działającymi na maszynie wirtualnej Javy. Zawiera takie elementy jak eliminację błędów odwołania (nullpointer-safety), funkcje rozszerzeń oraz notację infiksową.

3. TypeScript– wersja 3.9+ – wykorzystywany w warstwie frontendowej – wolny i  twartoźródłowy język programowania stworzony przez firmę Microsoft jako nadzbiór języka JavaScript. Umożliwia on opcjonalne statyczne typowanie oraz programowanie zorientowane obiektowo oparte na klasach. Aplikacje napisane w TypeScript kompilują się bezpośrednio do języka JavaScript.

Baza danych:

1. PostgreSQL– wersja 11.5+– otwarto-źródłowy system zarządzania relacyjnymi bazami danych kładący nacisk na rozszerzalność i zgodność z SQL. Wspiera transakcje z właściwościami ACID (niepodzielność, spójność, izolacja, trwałość), automatycznie aktualizowane widoki, wyzwalacze, klucze obce i procedury składowane. Został zaprojektowany do obsługi szeregu obciążeń, od pojedynczych maszyn po hurtownie danych lub usługi sieciowe z wieloma równoczesnymi użytkownikami.

2. Hibernate– wersja 5.1+ – otwarto-źródłowy framework do realizacji warstwy dostępu do danych. Zapewnia on przede wszystkim translację danych pomiędzy relacyjną bazą danych a światem obiektowym. Opiera się na wykorzystaniu opisu struktury danych za pomocą języka XML, dzięki czemu można rzutować obiekty, stosowane w obiektowych językach programowania, takich jak Java bezpośrednio na istniejące tabele bazy danych. Dodatkowo zwiększa wydajność operacji na bazie danych dzięki buforowaniu i minimalizacji liczby przesyłanych zapytań.

3. Liquibase– wersja 3.8+ – otwarto-źródłowa, niezależna od bazy danych biblioteka do śledzenia, zarządzania i wprowadzania zmian do schematu bazy danych. Pozwala na łatwiejsze śledzenie zmian w bazie danych.

Frameworki oraz biblioteki:

1. Spring— wersja 5.2+ - dostarcza wszechstronny model programistyczny oraz konfiguracyjny dla nowoczesnych aplikacji biznesowych opartych o Javę na jakiejkolwiek platformie wdrożeniowej. Spring oferuje takie rozwiązania jak wstrzykiwanie zależności, odwrócenie sterowania dzięki swojemu kontenerowi, szablon Model-Widok-Kontroler, szablon dostępu do danych, zarządzania transakcjami, programowania aspektowego oraz obsługi testowania.

2. Spring Boot— wersja 2.3+ - narzędzie, który pozwala zminimalizować ilość konfiguracji, dostarcza wbudowane kontenery aplikacji sieciowych (nie trzeba wdrażać plików) oraz automatycznie konfiguruje Springa, oraz biblioteki spoza pakietu Springa. Jest to rozwiązanie, które stawia konwencję ponad konfiguracją (convention over configuration)

3. Spring Data JPA– wersja 2.3+ — narzędzie ułatwiające proces implementacji repozytoriów bazujących na JPA - znacząco usprawnia implementację warstw dostępu danych, dzięki czemu Spring automatycznie dostarcza implementację typowych metod dla interfejsów

4. Spring Session– wersja 2.3+ - używane do zarządzania informacjami o sesji użytkownika – narzędzie znacząco usprawniające wspieranie klastrów sesji bez potrzeby bycia związanym ze specyficznym rozwiązaniem kontenera aplikacji, dostarcza API i implementacje do zarządzania sesjami użytkowników

5. Spring Security– wersja 5.3+ - wykorzystywane do autoryzacji i uwierzytelniania użytkowników w projekcie – narzędzie skupiające się na dostarczeniu wszechstronnych i rozszerzalnych mechanizmów autoryzacji oraz uwierzytelniania dla aplikacji Javy, ochrony przeciwko atakom oraz integrację z API.

6. Spring Statemachine– wersja 2.2+ – framework pozwalający na używanie koncepcji automatu skończonego (state machine concept), abstrakcyjnego, matematycznego, iteracyjnego modelu obliczeń w teorii automatów opartego na tablicy dyskretnych przejść między jego kolejnymi stanami, do których opisu służy diagram stanów, z aplikacjami Springa.

7. Angular– wersja 10+ – wykorzystywany w warstwie frontendowej – otwarty framework i platforma do tworzenia SPA (Single Page Application), napisany w języku TypeScript. Implementuje podstawowe i opcjonalne funkcjonalności jako zestaw bibliotek TypeScript, które importuje się do aplikacji.

8. Node.js– wersja 12.18+ – otwarto-źródłowe, wieloplatformowe środowisko uruchomieniowe o otwartym kodzie do tworzenia aplikacji typu server-side napisanych w języku JavaScript. ma architekturę sterowaną zdarzeniami (Event Driven Architecture), która umożliwia asynchroniczne operacje wejścia/wyjścia. Ma to na celu optymalizację przepustowości i skalowalności w aplikacjach internetowych z wieloma operacjami wejścia / wyjścia, a także w aplikacjach internetowych czasu rzeczywistego.

9. JUnit– wersja 5 - wykorzystywany do testowania warstwy backendowej — biblioteka zawierająca trzy niezależne komponenty – JUnit Platform – platforma do uruchamiania testów na maszynie wirtualnej Javy, JUnit Jupiter – API wykorzystywane do pisania testów, JUnit Vintage – używane do uruchamiania testów napisanych w starszych wersjach na platformie JUnit 5

10. JaVers– wersja 5.10+ - używany do audytowania encji – lekka, w całości otwartoźródłowa biblioteka służąca do audytowania zmian w danych. Używa JSON-a do serializacji obiektów, może być używany tylko dla Javy w wersji 8 lub wyższej.

11. Maven– wersja 3.6+ - wykorzystywane do zarządzania oprogramowaniem projektu – wszechstronne narzędzie służące do automatyzacji procesu budowania oprogramowania na platformę Javy (np. automatyczna kompilacja kodu, usunięcie starych plików z poprzedniego budowania projektu, pilnowanie kolejności modułów aplikacji, bibliotek oraz ich wersji, wykonywanie testów aplikacji, generowanie pliku *.jar, generowanie dokumentacji). Funkcje Maven-a są realizowane poprzez wtyczki w pliku pom.xml.

12. Primeng– wersja 9.1+– zbiór bogatych otwarto-źródłowych, eleganckich, przystępnych, wydajnych i w pełni modyfikowalnych komponentów interfejsu użytkownika dla Angulara.

13. jOOQ– wersja 3.13+ – lekka biblioteka programistyczna do mapowania baz danych w języku Java, która implementuje wzorzec aktywnego rekordu. Jej celem jest zapewnienie zarówno relacyjnego, jak i obiektowego podejścia, zapewniając Język dziedzinowy (domainspecific language) do konstruowania zapytań z klas generowanych ze schematu bazy danych.