JUVE uniwersalny framework aplikacji

Przeznaczenie

JUVE jest frameworkiem aplikacji stworzonym dla elastycznego i szybkiego tworzenia systemów o wysokich wymaganiach dotyczących skalowalności i wydajności. JUVE powstał w środowisku języka JAVA, ale jego implementacja nie wykorzystuje żadnych specyficznych dla JAVY mechanizmów i bibliotek. Obecnie istnieje kilka implementacji JUVE w innych językach programowania. Szybki rozwój nowych architektur takich jak np. EJB powoduje, że warto postawić pytanie, czy tworzenie aplikacji w oparciu o jedną, specyficzną architekturę jest racjonalne i zabezpiecza jej przyszłość. Obecnie powstają np. nowe architektury serwerów aplikacji w oparciu o XML, znane problemy z wydajnością aplikacji korzystających z architektury EJB są chlebem powszednim tak wielu projektów. JAVA jest językiem programowania wysokiego poziomu, kod JAVY jest interpretowany przez maszynę wirtualną, co powoduje, że jej stosowanie w "wielkich" aplikacjach wymaga bardzo precyzyjnego i pełnego kompromisów korzystania z mechanizmów języka.

JUVE jest frameworkiem aplikacji i architekturą, która odpowiada na te dylematy w prosty i solidny sposób dla szerokiego zakresu zastosowań: od prostych aplikacji jednowarstwowych do skomplikowanych systemów wielowarstwowych. JUVE stworzono pierwotnie w języku JAVA, ale JUVE jest łatwo przenaszalne i nie korzysta z żadnych specjalnych mechanizmów JAVY. JUVE stara się wspomagać stosowanie metod objektowych w procesie tworzenia aplikacji.

Aplikacje tworzone na bazie JUVE mogą zostać zastosowane w różnych konfiguracjach architektury, bez konieczności zmian w kodzie !

  • jako aplikacja instalowalna standalone

  • w architekturze klient/serwer pod kontrolą serwera aplikacji J2EE/EJB

  • w architekturze klient/serwer pod kontrolą serwera aplikacji AVAX

Dzięki zastosowaniu zmodyfikowanego wzorca architektury dla klienta aplikacji MVC+ możliwe jest stosowanie różnych bibliotek GUI bądź interfejsu Web/HTML bez konieczności zmian w warstwach model i controller.

Niezależność od języka programowania oraz model driven development ( wiedza i rozwiązania opisane są w modelu, kod jest częściowo generowany ) powodują wysoki stopień wykorzystania gotowego kodu w trakcie tworzenia nowych modułów, nowych systemów, przenoszenia w inne języki programowania, środowiska itd.

JUVE stosuje w warstwie komunikacji rozwiązania oparte o standard Web Services i dzięki temu zapewnia z jednej strony elastyczność stosowania, z drugiej strony pewność, że tworzone oprogramowanie jest nowoczesne i ma przed sobą przyszłość.

JUVE korzysta w krytycznych warstwach z własnych rozwiązań ( marshalling objektów, mapping OO/SQL ), zapewniając wysoką wydajność kodu i dając podstawy w powiązaniu z serwerem aplikacji AVAX do realizacji super skalowalności systemu.

Technologia


JUVE jako koncepcja architektury zaimplementowane jest w językach JAVA, C++. Wersje w językach Delphi i C## są obecnie tworzone. JUVE jest objektowo-zorientowane i definiuje kilka klas bazowych, które są specjalizowane podczas realizacji aplikacji. JUVE korzysta i wspomaga stosowanie warstwowego wzorca architektury. Główną warstwą jest warstwa domenowa, która zawiera klasy objektów biznesowych. Warstwa domenowa stosowana jest symetrycznie na kliencie i serwerze. Standardowy scenariusz przetwarzania danych (czytanie objektów z bazy danych, transmisja objektów pomiędzy serwerem i klientem, zmiana danych na kliencie, transmisja zmian do serwera, zapamiętanie zmian w bazie danych) jest realizowana w ten sposób, że objekty (pojedyncze objekty, listy objektów, drzewka objektów, grafy objektów) przekazywane są pomiędzy serwerem i klientem korzystając z własnej, zoptymalizowanej serializacji objektów. Symetryczne korzystanie z modelu domeny oznacza, że klasy domeny wykorzystane są zarówno na serwerze jak i na kliencie. Ta technika jest przeciwieństwem typowej techniki opartej o wzorzec proxy, stosowanej w innych architekturach.

Język XML stosowany jest przez JUVE jako standardowa metoda komunikacji. Aby móc spełnić wysokie wymagania dotyczące szybkości transmisji, JUVE oferuje również własną, wyspecjalizowaną serializację. Dzięki wykorzystaniu języka XML serwer napisany w języku JAVA może komunikować z klientem napisanym w  C++.

Jądro JUVE zawiera mechanizmy, które wspomagają:

  • wykorzystanie warstwowego modelu architektury aplikacji
  • efektywne korzystanie z objektowo zorientowanych metod inżynierskich w procesie tworzenia aplikacji
  • zarządzanie stanami objektów
  • serializację objektów w języku XML i własnym
  • implementację warstwy dostępu do bazy danych

Warstwa dostępu do bazy danych w JUVE nie wykorzystuje skomplikowanych narzędzi do realizacji OO/RDBMS mapping, lecz dostarcza kilka klas bazowych i definiuje sposób implementacji dostępu do bazy danych. Sam dostęp musi być zrealizowanych przez tworzącego aplikację. Stosowanie gotowych narzędzi do realizacji dostępu jest możliwe, ale nie zalecane. Powód: dostęp do bazy danych musi spełnić wysokie wymagania dotyczące szybkości, co powoduje, że nie można akceptować żadnych ograniczeń w stosowaniu mechanizmów języka SQL, niezbędne jest korzystanie z debuggerów itd. To wszystko jest możliwe jedynie wtedy, gdy kod jest znany, programista może korzystać z debuggera dla danego języka (np. JAVA ). Większość realizowanych transakcji korzysta ze skomplikowanych kwerend w języku SQL, co sprawia, że korzyści wynikające ze stosowania gotowych narzędzi są mniej atrakcyjne. Komunikacja w JUVE jest wysoce przenaszalna, istnieją implementacje wykorzystujące sockety, RMI, EJB. JUVE oferuje również własny, wysoko skalowalny serwer aplikacji. Dzięki mocnemu wykorzystaniu XML, JUVE jest przygotowana na rewolucję WebServices/SOAP.

UVE nie korzysta z żadnych technik metamodelowych, wszystko jest widoczne dla programisty. Przeciętny programista z doświadczeniem w zakresie technik objektowo-zorientowanych (UML) może opanować tworzenie aplikacji z użyciem JUVE w szybkim tempie.

Główne moduły

JUVE składa się z kilku modułów, które mogą być zastosowanie również niezależnie od siebie:

  • JUVE XML


    JUVE XML jest bazowym frameworkiem realizującym funkcjonalność szybkiej serializacji objektów i jest bazą do implementacji szybkiej komunikacji pomiędzy procesami i częściami systemu.

    JUVE XML w części głównej implementuje serializację w oparciu o język XML. Poza tym JUVE XML zawiera moduły realizujące szybką serializację binarną, komprymację danych, szyfrowanie danych, funkcję porównania dokumentów XML itd.

     

  • JUVE Basic


    JUVE Basic zawiera klasy bazowe niezbędne do implementacji każdej aplikacji przetwarzającej dane. Główne drzewo klas rozpoczyna się od klasy EntityState. EntityState definiuje mechanizm stanów, przy pomocy którego aplikacja może odpowiednio reagować na zmiany danych objektu czy całego grafu objektów. Klasa BasicEntity stanowi podstawę dla implementacji zapisu i odczytu danych w relacyjnych bazach danych.. Klasa StandardEntity poszerza swoje klasy bazowe o standardowe atrybuty, często stosowane w profesjonalnych systemach baz danych.

    Klasa Term jest klasą bazową dla korzystania w aplikacji z danych statycznych ( atrybuty i dane żadko zmieniane, które mogą być pamiętane w pamięci podręcznej aplikacji ).

    Klasa DatedEntity jest klasą bazową dla obsługi wszystkich objektów zależnych od daty lub czasu. Klasa PeriodEntity jest podstawą do realizacji periodyzacji w aplikacji.

    JUVE Basic zawiera również kontenery bazowe, poszerzające funkcjonalność kontenerów ze standardowych bibliotek o mechanizmy niezbędne w kontekście realizacji aplikacji w architekturze klient/serwer.

  • JUVE People


    JUVE People zawiera definicję i implementację podstawowych struktur danych do zarządzania danymi osobowymi, adresami, numerami telefonów, adresami email, itd.

    Klasy JUVE People są łatwo rozszerzalne. Na bazie tego modułu można w sposób uproszczony i szybki realizować w systemach funkcjonalność CRM/ERP/systemów księgowości.

  • JUVE Appli


    JUVE Appli zawiera struktury i funkcjonalność niezbędną do realizacji bardziej skomplikowanych aplikacji i systemów:

    - zarządzanie użytkownikami, definicja rozkazów, praw dostępu, ról użytkownika

    - zarządzanie logami systemu, procesami, definicja aplikacji i jej zasobów

    - Scheduler zarządzający czasowym sterowaniem wykonania zadań w systemie

  • JUVE Resource Management


    JUVE Resource Management Module zarządza zasobami systemowymi takimi jak sesje bazy danych, Data Stores, File Stores, itd.

    Zasoby są zarządzane w zależności od ich charakteru: sesje bazy danych mogą podlegać mechanizmowi pooling, korzystając z możliwości JDBC2 lub korzystać z innych wyspecjalizowanych algorytmów, dane statyczne lub pliki mogą być przetrzymywane w pamięci komputera i w zależności od częstości zmian ich zawartości udostępniane w odpowiedni sposób aplikacji.

    Przy pomocy tego modułu aplikacja jest w stanie w sposób optymalny wykorzystywać zasoby komputera.

  • JUVE Web Services


    JUVE Web Services jest podstawową biblioteką realizującą funkcjonalność standardu komunikacji Web Services w oparciu o model architektury SOA. Podstawą jest koncepcja tzw. JUVE Web Service Providera, przy pomocy którego interfejsy aplikacji są pogrupowane. Przy definicji interfejsów na poziomie JUVE Web Service Providera możliwe jest podejście generyczne, można też korzystac bezpośrednio z klas domenowych wysokiego poziomu.

  • JUVE Client Framework


    JUVE Client Framework jest kompletnym frameworkiem aplikacji dla realizacji części klienta aplikacji z graficznym interfejsem użytkownika. JUVE Client Framework jest niezależny od zastosowanej biblioteki GUI, przenoszenie kodu np. z biblioteki SWING na SWT jest uproszczone.

    Podstawą JUVE Client Framework jest zmodyfikowany wzorzec MVC ( nazywamy go wzorzec architektury MVC+ ), w którym współpraca warstw  View i Controller odbywa się przy wykorzystaniu abstrakcyjnych interfejsów zbudowanych według wzorca Listener Pattern. Dzięki temu osiąga się następujący cel: warstwa Controller jest praktycznie kompletnie niezależna od warstwy View i przy wymianie biblioteki GUI ( nawet przy realizacji interfejsu przy pomocy frameworku JUVE Web Client Framework w postaci stron HTML ) nie musi być zmieniana - jedynie warstwa View musi być oczywiście dopasowana, ale tu zmiany są schematyczne.

    Jako warstwa Modell stosuje się warstwę klas domenowych, bazującą na innych częściach frameworku JUVE.

    JUVE Client Framework zawiera dodatkowo klasy wspomagające implementację GUI w wybranej bibliotece ( JAVA SWING, JAVA SWT, C# Forms itd. ).

  • JUVE Web Client Framework


    JUVE Web Client Framework jest frameworkiem wspomagającym tworzenie interfejsu użytkownika przy pomocy stron HTML korzystając z frameworku bazowego JUVE Client Frameworks. JUVE Web Client Framework realizuje unikalny mechanizm: nie korzystamy ani z JSP, ani z ASP, itd.

    Generacja stron HTML w frameworku JUVE Web Client Framework odbywa się przy pomocy wzorca Template-Filter-Pattern:

    - designer stron HTML tworzy wzorce stron HTML, zaznaczając dane podlegające wstawieniu przy pomocy znaczników danych ( np. %%User%%Nazwisko%% )

    - klasa filtrujące HTML frameworku JUVE Web Client Framework filtruje wzorce stron HTML  ( które mogą być zarządzane w sposób optymalny przy pomocy  JUVE Resource Manager ) znak po znaku ( przy tym każdy 1 znak jest przetwarzana jedynie jednokrotnie !  ) i zastępuje w locie znaczniki danych przez konkretne dane

    We wzorcach stron HTML nie stosuje się żadnego kodu JAVY czy jakiegoś pseudokodu, dzięki temu proces tworzenia stron może być w dużym stopniu oddzielony od procesu tworzenia oprogramowania. Nie jest konieczne skomplikowane korzystanie z narzędzi jednocześnie wspierających tworzenie stron HTML i debuggowanie kodu aplikacji.

    JUVE Web Client Framework gwarantuje wysoką szybkość działania aplikacji i bardzo dobre wykorzystanie zasobów komputera.

Nowe możliwości dla Klienta

JUVE upraszcza proces tworzenia aplikacji poprzez zdefiniowanie solidnej i prostej bazy dla dowolnych aplikacji wielowarstwowych jak i prostych programów komputerowych. JUVE jest wykorzystywane zarówno w prostych programach komputerowych jak i w "wielkich" projektach intranetowych i internetowych. Dzięki wysokiej wydajności i szybkości aplikacji JUVE, ryzyka projektowe są minimalizowane, choć proces tworzenia kodu może być nadal szybki. JUVE wspomaga wielokrotne wykorzystanie raz stworzonych modeli i oprogramowania - zgodnie z założeniami programowania objektowo-zorientowanego.  Jako produkt uboczny aplikacji korzystającej z JUVE powstają definicje w języku XML, które mogą stanowić przyszłe standardy. Wysoka skalowalność i wydajność kodu wszystkich warstw aplikacji znacznie zmniejsza niezbędne wydatki na sprzęt.

Prezentacja PowerPoint ( PDF ): Juve Architecture Framework

Prezentacja PowerPoint ( PDF ): Juve SQL Layer Framework