Java z ambicjami

Publikując JDeveloper 10g, Oracle pokazuje, że mierzy wysoko. W dziedzinie narzędzi programistycznych firma najwyraźniej chce iść w ślady IBM Rational i Borlanda.

Publikując JDeveloper 10g, Oracle pokazuje, że mierzy wysoko. W dziedzinie narzędzi programistycznych firma najwyraźniej chce iść w ślady IBM Rational i Borlanda.

Oracle twierdzi, że JDeveloper 10g jest przeznaczony dla tych programistów, którzy nie znają wszystkich niuansów EJB i innych technologii wchodzących w skład J2EE.

Firma dąży do tego, by "standardową" aplikację bazodanową w Javie można było stworzyć tak, jak w tradycyjnych narzędziach Oracle Forms (4GL). Oczywiście, pakiet umożliwia też tworzenie rozbudowanych aplikacji trójwarstwowych, ale głównym celem jest "uproszczenie" podstawowych operacji - powiązanie obiektu EJB lub kontrolki prezentacyjnej z tabelą czy innym źródłem danych.

Wysiłki nakierowane na uproszczenie tworzenia aplikacji zyskają dodatkowe wzmocnienie, gdy tylko zostanie zatwierdzona i rozpowszechniona kolejna wersja pakietu JDK (1.5). Przyniesie ona zmiany w języku programowania - które sprawią, że pisanie aplikacji będzie "prostsze" (pisaliśmy o tym m.in. w CW 7/2004).

Ciekawy framework

Kluczowym elementem wyróżniającym JDeveloper wśród innych narzędzi programistycznych Java jest Oracle Application Development (ADF). To zestaw połączonych technologii będących warstwą nadbudowaną nad mechanizmem Model-View-Controller realizowanym przez Apache Struts.

ADF opiera się na czterech podstawowych warstwach. Warstwa Business Service odpowiada za dostęp do źródeł danych oraz realizację logiki biznesowej. Warstwa Model wykonuje określone operacje, wykorzystując warstwę biznesową - jest modelem aplikacji. Warstwa Business Service składa się z "komponentów" usługowych, zaś Model definiuje to, jak mają wyglądać interakcje między nimi, co w istocie stanowi aplikację.

W ADF przyjęto, że aplikacja kliencka komunikuje się bezpośrednio z warstwą Model. W przypadku aplikacji Web i systemów mających działać w sieciach bezprzewodowych występuje dodatkowy pośrednik tzw. Kontroler. Pozwala on określać przepływ informacji pomiędzy interfejsem WWW a warstwą Model.

Modelowanie aplikacji

Java z ambicjami

Dzięki ADF wiele obiektów w Oracle Jdeveloper 10g może mieć postać uproszczoną

Kolejna nowość JDeveloper 10g to możliwość tworzenia warstwy biznesowej za pomocą wbudowanego w pakiet narzędzia do modelowania UML. Dostępne są tu mechanizmy do modelowania diagramów aktywności, diagramu klas oraz przypadków użycia. Wspierana jest także architektura MDA (Model Driven Architecture). W narzędziu do projektowania UML w JDeveloper 10g wprowadzono także koncepcje: modeli niezależnych od sposobu implementacji (PIM - Platform Independent Models) oraz modeli związanych z konkretną technologią (PSM - Platform Specific Models).

Projektując aplikację w UML w JDeveloper 10g, tworzy się np. specyfikację "klas" przechowujących określone informacje. Definiując model typu PSM, podaje się, że np. określona klasa jest "zwykłą" klasą Javy, komponentem EJB, komponentem ADF itp. W JDeveloper na jednym "obszarze" projektanta można równocześnie utworzyć diagram klas i przypadki użycia - bardzo to ułatwi tworzenie dokumentacji wg modelu.

Wśród dostępnych obiektów biznesowych pojawił się prosty, ale pożyteczny komponent o nazwie TopLink. Pozwala on określić związek pomiędzy klasą a strukturą bazodanową. W wielu przypadkach może on być ekwiwalentem komponentu ORM (Object-Relational Mapping). TopLink pozwala tworzyć "lokalne" tabele, definiować kwerendy w języku EJBQL, informować o zmianach itp. Dodatkowo istniejące obiekty EJB można bez problemu automatycznie kojarzyć z tabelami w bazie danych. Z punktu widzenia aplikacji obiekt TopLink zachowuje się tak jak każde inne "źródło danych".

Kojarzenie obiektów ze źródłami danych w JDeveloper 10g (bez względu na to, czy z konkretną "tabelą", czy z innym komponentem) sprowadza się do "przeciągania i upuszczania" obiektów. Obsługiwane są standardowe metody zgodne z JSR 227.

Modelowanie bazy danych

W przypadku produktów Oracle nie może zabraknąć narzędzi do modelowania baz danych. Możliwości JDeveloper 10g w tej dziedzinie można uznać za "wystarczające". Istnieje możliwość definiowania diagramów i tworzenia nowego schematu bazodanowego na podstawie już istniejącego. Dzięki rozbudowanemu modułowi do pracy w trybie offline, do definiowania bazy wcale nie jest potrzebne ciągłe połączenie z Oracle - po uzyskaniu połączenia zmiany są automatycznie synchronizowane.

Z poziomu JDeveloper można od razu przeglądać dane w utrwalonych widokach (Materialized Views). Ciekawym pomysłem są filtry nakładane na dowolny węzeł-pojemnik w przeglądarce schematów. Za jego pomocą możliwe jest łatwe ograniczenie widoku obiektów tylko do tych naprawdę istotnych. Oczywiście, struktura bazodanowa może też powstać półautomatycznie - na podstawie modeli UML czy komponentów EJB.

Interfejs użytkownika

Tworzenie interfejsu użytkownika w Oracle JDeveloper 10g nie odbiega w zasadzie od innych narzędzi tego typu. JDeveloper pozwala na graficzne projektowanie stron JSP, wykorzystywanie kontrolek, wzorców stron itp. Dzięki nowemu framework wiele elementów ma bardzo prostą postać.

W ramach Oracle ADF opracowano obiekty ADF UIX pozwalające w sposób deklaratywny określić złożone pojemniki wyświetlające dane. Niestety, przynajmniej na razie nic nie wiadomo na temat wsparcia Oracle dla Java Server Faces czy portletów. ADF JClient to "nakładka" na Java Swing, która pozwala znacznie ujednolicić kojarzenie obiektów z danymi w tzw. bogatym kliencie.

W Swing "widok" i kontroler funkcjonują jak jedno. Przykładowo, specjalny delegat jest wywoływany w momencie zmiany stanu danej kontrolki (np. wyboru opcji z listy). Dane są uaktualniane za pośrednictwem zdarzenia obsługiwanego przez kontroler Swing UI Delegate. Specjalne okno ADF Data Control Palette pozwala graficznie określić źródło danych dla komponentu Swing - odwołuje się bezpośrednio do tego, co oferuje model danych.

Warto też dodać, że Oracle cofnął wsparcie dla tzw. komponentów DAC - mechanizmu, który w starszych wersjach środowiska pozwalał obiektowi samodzielnie przyporządkować się danym.

Wygodne IDE

W edytorze kolejne pliki są otwierane w oddzielnych zakładkach. W JDeveloper można definiować grupy zakładek i np. szybko je zamykać, a potem ponownie otwierać jednym kliknięciem. W środowisku została zintegrowana przeglądarka do plików pomocy - niestety, tylko tych dotyczących JDeveloper. Nie ma możliwości, by łatwo dołączyć dokumentację platformy Java czy własnych opisów Javadoc.

W edytorze bardzo ułatwiono wprowadzanie tekstu. Wiele operacji jest "podpowiadanych" w trakcie pisania. Często używane schematy struktury (wyjątki, akcesory itp.) są generowane automatycznie. Widok struktury kodu Javy upraszcza nawigację. Do tego środowisko Oracle obsługuje trzy podstawowe operacje refaktoringu: Extract/Rename/Move. Szkoda jednak, że nie są one dostępne w menu kontekstowym. W środowisko wbudowano też proste narzędzia do analizy jakości kodu. Generują one raporty z odpowiednimi metrykami, a także pozwalają wykryć standardowo popełniane błędy.

Profilowanie i śledzenie

JDeveloper wspiera mechanizm kompilacji w trakcie śledzenia programu. Wykonywana w tym trybie podmiana fragmentu kodu ma jednak pewne ograniczenia. W pakiet wbudowana jest ciekawa opcja - PopFrame. Pozwala ona szybko powtórzyć określony ciąg wywołań na podstawie zawartości stosu. W ten sposób programista może zmienić fragment funkcji, pozwolić JDeveloper "podmienić go" w maszynie wirtualnej, a następnie bez zatrzymywania programu powtórzyć istotny ciąg operacji.

Kolejne ciekawe narzędzie - CodeCoach - pozwala wykrywać nieoptymalnie napisane fragmenty kodu. Dzięki profilerowi analizującemu zdarzenia, historię wywołań i alokację pamięci - CodeCoach wskazuje miejsce kodu, które prawdopodobnie spowalnia działanie aplikacji. Ponieważ błędy popełniane przez programistów są dosyć standardowe, CodeCoach w dużej części przypadków jest w stanie nie tylko wskazać obszar występowania błędu, ale wręcz podpowiedzieć, co dokładnie trzeba zmienić.

Aby wykorzystać możliwości Profiler i CodeCoach, trzeba, niestety, zainstalować OJVM - specjalną, opracowaną przez Oracle'a, wersję maszyny wirtualnej Java. Każda inna maszyna wirtualna spowoduje także znaczne spowolnienie działania debuggera. Trzeba też pamiętać, że JDeveloper 10g jest napisany w Javie. Aby praca była wygodna, potrzeba naprawdę dużo pamięci RAM.

Ewolucja w dobrym kierunku

JDeveloper 10g coraz mniej przypomina to proste narzędzie, które powstało kilka lat temu na bazie Borland JBuilder. Tak jak w przypadku innych narzędzi IDE - Eclipse czy JBuilder - także i JDeveloper dysponuje specyfikacjami pozwalającymi rozbudowywać funkcjonalność środowiska. Przynajmniej na razie jest ich jednak niewiele.

Narzędzia dla deweloperów Oracle zdecydował się udostępniać za darmo - można je pobrać z witryny Oracle Technology Network. Można się zastanawiać, dlaczego firma nie zdecydowała się wykorzystywać dorobku zawartego w narzędziach Eclipse, które obecnie stają się najpopularniejszym zestawem IDE dla Javy. Narzędzia do modelowania są jednak odpłatne. W tym akurat przypadku wartość zestawu narzędzi Oracle'a jest dosyć wysoka, a ponadto moduł do modelowania oferowany wraz z JDeveloper 10g jest całkowicie niezależny od narzędzi programistycznych, platform czy baz danych.

W Oracle JDeveloper praktycznie nie ma narzędzi do zarządzania cyklem "życia" produktu, a tego typu narzędzia są coraz bardziej popularne przy dużych projektach. Oracle proponuje tu (choć nie wprost) narzędzia open source. W JDeveloper jest wbudowana w zasadzie tylko współpraca z systemami kontroli wersji (Oracle SCM, CVS i Rational ClearCase). W tej dziedzinie Oracle ma jeszcze wiele do zrobienia - narzędzia Borlanda (w tym StarTeam) i IBM Rational to produkty trochę innego kalibru, umożliwiające zarówno opracowanie wstępnych wymagań, jak i "czuwających" nad postępem prac.

Warto też podkreślić pewną różnicę w podejściu między JDeveloper a np. IBM WebSphere Studio. W JDeveloper, tak jak w przypadku JBuilder, główny nacisk jest kładziony na architekturę MDA. Narzędzia IBM bardziej związane są z Service Oriented Architecture.

Te dwa podejścia nie wykluczają się nawzajem - inny jest jedynie rozkład akcentów.

Graficzny kontroler

Jednym z większych problemów w aplikacji jest określanie sposobu przechodzenia użytkownika pomiędzy poszczególnymi elementami interfejsu użytkownika. W Apache Struts jest to definiowane przy użyciu specjalnego pliku konfiguracyjnego w XML. JDeveloper zawiera edytor graficzny, który pozwala rozplanować takie "przechodzenie", jednak tylko w przypadku aplikacji WWW . W przypadku bogatego klienta czegoś takiego nie ma, a szkoda, choć z drugiej strony w takich aplikacjach interfejs jest znacznie bardziej rozbudowany i zwykle komunikuje się niemal bezpośrednio z warstwą modelu.

Flirt z Mozillą

Oprócz JDeveloper i Forms Oracle pracuje także nad pełnym wykorzystaniem komponentów Mozilla jako klientów usług Oracle'a. Aplikacje internetowe Oracle'a mają być podobno w pełni kompatybilne z przeglądarkami Mozilla, ale nie tylko to. Oracle zamierza prawdopodobnie wykorzystać w przyszłości opracowane w ramach projektu Mozilla biblioteki XUL pozwalające oprogramowywać interfejs przeglądarki. Możliwe też, że Oracle wykorzysta XPT - model komponentowy umożliwiający rozszerzanie funkcjonalności Mozilli.


TOP 200