Java Enterprise

Java Enterprise jest obecnie standardem tworzenia zaawansowanych systemów internetowych. Jej ogromne możliwości wymagają jednak dużego doświadczenia.

 
 
 

Jak to się zaczęło?

W dwutysięcznym roku wiele firm łamało sobie głowy jak tworzyć systemy internetowe. My mieliśmy już kilka lat doświadczenia w tej dziedzinie, zaczęliśmy robić duże systemy i stanęliśmy przed dużo trudniejszą decyzją. Na którą technologię postawić, aby realizować naprawdę duże systemy i zapewnić im stabilny rozwój przez lata? Zdawaliśmy sobie już wtedy sprawę, że prawdziwymi ekspertami możemy być tylko w jednej technologii.

Na rynku królowały dość proste technologie skryptowe. Większość stron internetowych robiło się za pomocą zwykłego, statycznego html'a, gdzieniegdzie dodając skrypty CGI. W tym samym czasie PHP kusił niewielkim progiem wejścia dla nowych deweloperów, a ASP stojącą za nim potęgą Microsoft'u. Stosunkowo młody język Java i jeszcze młodsza Java Enterprise nie stanowiły dla tych technologii oczywistej alternatywy.

O rezygnacji z ASP zdecydowało nasze przywiązanie do Linux'a i chyba jakaś podświadoma chęć przełamania hegemonii Microsoft'u. Z kolei w PHP mieliśmy poczucie jakiegoś bezładu, tymczasowości i niestabilności. Intuicyjnie czuliśmy, że potrzebujemy bardziej stabilnej podstawy dla naszych rozwiązań. Czegoś co da nam możliwość panowania nad złożonością oprogramowania. Java jako obiektowy język programowania dawał taką nadzieję, a pierwsze doświadczenia z raczkującą jeszcze Java Enterprise okazały się obiecujące.

Postanowiliśmy odważnie wkroczyć w technologię Java Enterprise i zainwestowaliśmy naprawdę duże pieniądze w nasz rozwój w tej dziedzinie.

Odważne decyzje procentują

Nasza intuicja inżynierska nie zawiodła. Mimo dość wysokiej ceny wejścia w nową technologię, dała nam ona wtedy ogromną przewagę. Za jednym zamachem otrzymaliśmy:

  • porządny model serwletowego API, w tym takie dobrodziejstwo jak sesja – pewnie niewiele osób pamięta, że w 2000 roku w PHP coś takiego nie istniało,
  • prosty i wygodny model transakcji rozproszonych,
  • dobre API dostępu do bazy danych i zarządzanie połączeniami do bazy na poziomie serwera,
  • kilka innych dość rewolucyjnych koncepcji.

Inwestycja w nową technologię zwróciła się z nawiązką. Od tamtej pory Java Enterprise stanowi podstawę wszystkich realizowanych przez nas rozwiązań, a my jesteśmy ekspertami w tej dziedzinie.

Korzyści

Zastosowanie w rozwiązaniach internetowych technologii Java Enterprise przynosi szereg korzyści. Według nas najważniejsze z nich przedstawiamy poniżej.

Standard aplikacji internetowych

W skali światowej Java Enterprise jest obecnie standardem tworzenia zaawansowanych, transakcyjnych systemów internetowych. Dojrzałość, popularność oraz wsparcie przez największych światowych dostawców oprogramowania gwarantuje dostęp do wysokiej jakości produktów, komponentów oraz narzędzi deweloperskich. Ma to szczególne znaczenie w przypadku rozwiązań, którym chcemy zapewnić stabilny rozwój przez wiele lat.

Dostępność gotowych komponentów

Dla Javy dostępna jest duża liczba bibliotek realizujących funkcjonalność wykraczającą daleko poza sam język. Dużą część z nich stanowią biblioteki rozpowszechniane na zasadach Open Source. Równie duża część dostępna jest w postaci pakietów komercyjnych.

Wsparcie integracji systemów

Technologia Java Enterprise i narzędzia dla niej dostępne wspierają wszystkie liczące się techniki i technologie wymiany danych. W szczególności przygotowani jesteśmy na synchroniczną lub asynchroniczną wymianę danych, która może być inicjowana przez dowolną stronę w tej wymianie uczestniczącą. Możemy do tego wykorzystać kolejki JMS, wywołania usług sieciowych (Web Services), REST (np. XML over HTTP), przesyłanie danych za pomocą protokołu FTP (np. XML over FTP), wreszcie w przypadkach szczególnych integrację przez dedykowaną bazę danych.

Wydajność i skalowalność rozwiązań

Java Enterprise jest idealnym rozwiązaniem do budowy systemów internetowych o wysokiej wydajności i jednocześnie skalowalności względem obciążenia ruchem generowanym przez użytkowników. Posiadamy duże doświadczenie w testowaniu i optymalizacji wydajnościowej systemów internetowych, czego potwierdzeniem są wykonane przez nas wdrożenia obsługujące wiele tysięcy transakcji biznesowych na sekundę.

Przenośność rozwiązań

Java została zaprojektowana zgodnie z zasadą "compile once, run everywhere". Przygotowane rozwiązanie w postaci binarnej może zostać uruchomione na każdym systemie, na którym dostępna jest maszyna wirtualna Javy. Oznacza to otwartość dla wszystkich platform sprzętowych (od komputerów podręcznych do maszyn klasy mainframe) oraz systemów operacyjnych (Unix, Windows, Solaris, MacOS itd.). Prace nad specyfikacjami dotyczącymi poszczególnych fragmentów technologii Java prowadzone są przez wszystkich liczących się twórców oprogramowania na świecie, co zapewnia wysoki poziom standaryzacji i faktyczną przenośność rozwiązań.

Czy Java Enterprise ma jakieś słabe strony?

Według nas największa trudność w stosowaniu Java Enterprise paradoksalnie wynika z szerokich możliwości, jakie daje one twórcom systemów. Bogactwo technologii wchodzących w skład standardu JEE może przyprawić o zawrót głowy, szczególnie początkującego dewelopera.

Próba użycia wszystkich komponentów JEE naraz w jednym projekcie nieodwołalnie musi skończyć się katastrofą. Trzeba nauczyć się umiejętnie wybierać dostępne komponenty i właściwie je stosować we własnym projekcie. To z kolei wymaga sporej wiedzy i doświadczenia.

Jednym słowem z Javą Enterprise trzeba umieć się obchodzić. Niestety wymaga to dużych inwestycji we własną edukację oraz wykonania co najmniej kilku niebanalnych projektów. My te lekcje mamy już za sobą, a naszym doświadczeniem umiemy podzielić się z Klientami i innymi deweloperami.

Java Enterprise to za mało

Jako jedni z pierwszych zauważyliśmy, że jakkolwiek Java Enterprise tworzy solidne podstawy budowanym przez nas systemom, to jednak nie dostarcza kompletu narzędzi, za pomocą których można je w pełni efektywnie implementować. Po krótkich przygodach z niedoskonałymi, jak na tamte czasy, frameworkami webowymi postanowiliśmy zbudować własne narzędzie. Od ponad dziesięciu lat rozwijamy własne środowisko programistyczne OneWeb, które pozwala szybko i efektywnie tworzyć nawet najbardziej złożone systemy internetowe dla naszych Klientów.

Architektura budowanych systemów

Zgodnie z modelem tworzenia rozwiązań w technologii Java Enterprise realizowane przez nas systemy mają strukturę warstwową. Dzięki temu stają się one koncepcyjnie prostsze, a jednocześnie bardziej wydajne, skalowalne i stabilne. Ogólny zarys tego typu architektury przedstawiamy poniżej.

Warstwa dostępu

Warstwa dostępu jest odpowiedzialna za rozproszony (sieciowy) dostęp użytkowników do aplikacji. Zapewnia ona, za pomocą lekkich klientów (przeglądarki WWW), zunifikowany, standardowy sposób komunikacji z systemem przy wykorzystaniu protokołu HTTP. Odpowiedzialna jest za dostarczenie bezpiecznych, szyfrowanych kanałów przesyłania danych oraz wstępne uwierzytelnienie i autoryzację końcówek klienckich. Głównymi elementami warstwy są przeglądarka internetowa oraz serwer HTTP. Przeglądarka internetowa może pracować na różnych urządzeniach fizycznych począwszy od komputerów PC, przez urządzania klasy PDA, smartphony, po telefony komórkowe. Jednocześnie przeglądarka zapewnia środowisko do wykonywania kodu po stronie użytkownika (np. Javascript, Flash), co służy do wzbogacania interfejsu i ulepszania interakcji użytkowników z systemem.

Warstwa prezentacji

Warstwa ta jest odpowiedzialna za wygenerowanie interfejsu użytkownika, który jest następnie interpretowany przez przeglądarkę internetową. W warstwie tej główną rolę odgrywa kontener serwletów, który jest częścią składową serwera aplikacji. W kontenerze serwletów funkcjonuje platforma OneWeb. W takim środowisku osadzone są komponenty oraz logika prezentacyjna aplikacji dla poszczególnych grup użytkowników. Komponenty prezentacyjne rozwiązania korzystają z komponentów dostarczanych przez warstwę logiki biznesowej (warstwa aplikacji).

Warstwa aplikacji

W warstwie tej realizowany jest rdzeń systemu. Stanowi ona implementację modelu systemu od strony komponentów biznesowych. W ramach tej warstwy, technologia Java Enterprise oraz platforma OneWeb zapewnia realizację funkcjonalności biznesowej. Na warstwę tę składa się szereg mechanizmów wspomagających tworzenie rozproszonych, transakcyjnych aplikacji internetowych. Komponenty logiki biznesowej tworzone są jako usługi platformy OneWeb.

Warstwa integracji

Współczesne aplikacje internetowe zazwyczaj nie pracują w izolacji. W przeważającej większości muszą się komunikować z szeregiem systemów zewnętrznych, które siłą rzeczy ulegają zmianom w innym cyklu niż tworzony przez nas system. Dlatego wydzielenie warstwy integracji separuje logikę integracji od logiki biznesowej, tym samym ułatwiając konserwację systemu w przypadku zmian czy wymiany systemów zewnętrznych. W warstwie tej może funkcjonować wiele technologii integracyjnych, z których część została zaznaczona na rysunku. Technologie te pozwalają zastosować szeroki wachlarz technik integracji systemów, tak aby integrację z każdym systemem zewnętrznym można było przeprowadzić w optymalny sposób.

Warstwa danych

W warstwie danych grupujemy pod względem logicznym wszystkie źródła danych, z których korzystają realizowane przez nas systemy. Oczywistym elementem tej warstwy jest baza danych, w której przechowywane są dane, na których operuje tworzony system. Ponadto w warstwie tej znajdują się zazwyczaj takie systemy, jak usługi katalogowe, pocztowe czy systemy wewnętrzne klientów. Oczywiście fizyczna architektura tej warstwy jest zazwyczaj bardziej złożona, choćby ze względów hostingowych, sieciowych czy bezpieczeństwa.