29 listopada 2006

Tworzenie aplikacji Java EE 5 z Apache Maven 2 i Glassfish

13 komentarzy
Nie było lekko, ale się udało! Skończyłem artykuł, o który zostałem poproszony jakiś czas temu, a którego tematyka była mi dosyć bliska - skorzystanie z możliwości Apache Maven 2 przy tworzeniu aplikacji Java EE 5. Aplikacja należy do niezwykle nieskomplikowanych, ale sądzę, że tym samym cel został osiągnięty. Demonstracja M2 w roli narzędzia wspomagającego tworzenie aplikacji z JSF 1.2 i EJB 3.0 z uruchomieniem jej na serwerze Glassfish jest do przeczytania w kolejnym artykule na moim Wiki - Tworzenie aplikacji Java EE 5 z Apache Maven 2 i Glassfish.

W nadchodzący wtorek - 5.12 o 18:00 - jest planowane spotkanie grupy Warszawskiej Grupy Użytkowników Java (Warszawa JUG), więc będzie okazja przedyskutować szczegóły. Może nawet uda mi się dokończyć artykuł o facelets. Z pewnością będzie ciekawie móc zaprezentować temat na żywo. Miłej lektury i do zobaczenia!

19 listopada 2006

Eclipse Extension Location - zarządzanie wtyczkami

5 komentarzy
W końcu zebrałem się, doczytałem i opisałem ciekawe rozwiązanie upraszczające zarządzanie wtyczkami w Eclipse - Extension Location. Polega on na umieszczeniu wtyczek w oddzielnym katalogu niż katalog instalacyjny Eclipse i wskazaniu na niego poprzez pliki link. Znacznie upraszcza pracę z wtyczkami, a co więcej pozwala na, np. stworzenie ich struktury i utrzymywanie w systemie kontroli wersji dla zminimalizowania niepowodzeń zestawiania środowiska programistycznego przez nowych członków zespołu.

Więcej na Zarządzanie wtyczkami w Eclipse - Extension Location. Ciekaw jestem ilu miało świadomość istnienia tego mechanizmu.

18 listopada 2006

Eclipse 3.3 M3 i ciekawostka w zarządzaniu przestrzeniami roboczymi

0 komentarzy
Kiedyś pamiętam, że poszukiwałem miejsca, w którym Eclipse przechowuje listę przestrzeni roboczych, z których korzysta użytkownik. Czasami potrzeba usunąć kilka, szczególnie takich, które nie są już w użyciu. Przypadkiem natrafiłem na odpowiedź!

Funkcjonalność, o której piszę znajduje się w menu File->Switch Workspace. Wybierając przestrzeń Eclipse zapisuje jej położenie w pliku $ECLIPSE_HOME\configuration\.settings\org.eclipse.ui.ide.prefs. Tak jest przynajmniej od wersji 3.2.

A skąd aż tyle szumu wokół tego? Jak napisałem, kiedyś mnie to zastanowiło, ale było na tyle nieistotne, że nie poświęciłem temu więcej czasu. Tym razem jest inaczej. Zacząłem pracować z Eclipse 3.3M3 i obok menu Other..., po wybraniu Switch Workspace pojawiła się pozycja C:\. Gdybym mógł zdefiniować sobie listę najciekawszych przestrzeni roboczych byłoby przyjemniej. I zacząłem szukać.

Najpierw natrafiłem na rozwiązanie starego problemu. A po chwili natrafiłem na Eclipse 3.3 M3 - New and Noteworthy, co w zasadzie powinno być pierwszym miejscem, w którym powinienem szukać odpowiedzi. A tam pozycja dotycząca Improved workspace switching. Dokładnie to czego mógłbym oczekiwać od tego typu narzędzia. Brrr, chyba zbyt mocno zaczynam przywiązywać się do Eclipse.

Jest pewna uwaga do działania tej funkcjonalności. Eclipse nie rozumiał katalogów z symbolem '@' w nazwie. Używam tego symbolu dla nadania ważności katalogowi, jednakże Eclipse traktował ten znak specjalnie w nazwie katalogu i stąd na liście przestrzeni znajdowała się niezrozumiała dla mnie wcześniej pozycja C:\, która de facto odpowiadała katalogowi C:\@eclipse-workspace\projekt.

13 listopada 2006

Hibernate jako dostawca JPA w samodzielnej aplikacji

5 komentarzy
Tym razem nadszedł czas na Hibernate w roli dostawcy JPA i po niecałej godzinie miałem gotową aplikację zmigrowaną do Hibernate EntityManager'a (aka Hibernate JPA). Prostota JPA jest niebywała i choć należy oczekiwać pewnych niedogodności na razie omijają mnie szerokim łukiem ;-)

Podsumujmy dotychczasowe wyniki pracy z JPA. Stworzyłem aplikację z pomocą NetBeans IDE 5.5, który umożliwił mi skorzystanie z implementacji JPA w wydaniu Oracle TopLink. Nie modyfikując nic w aplikacji (poza konfiguracją JPA) uruchomiłem ją z Apache OpenJPA. A dzisiaj nadeszła pora na Hibernate. Mimo tych niezwykle krótkotrwałych wypadów w świat JPA, już daje zauważyć się pewne różnice. Daje zauważyć się doświadczenie projektu Hibernate i jego prostota użycia. Ale, skoro są to jedynie szczegóły implementacyjne, kto by się tym zajmował. Implementacje JPA (Oracle TopLink, Apache OpenJPA, Hibernate) staną się (stały się?) podobnym rozwiązaniem jak sterowniki JDBC.

Dzisiejsze doświadczenia zaowocowały kolejnym przepisem - Hibernate jako dostawca JPA w samodzielnej aplikacji.

Najwyższa pora zająć się czymś z Java EE 5 na dłużej. Czas na zabawę z implementacjami JSF 1.2 i ich integracja z JPA. Może JBoss Seam? Nie! Na razie wystarczy Glassfish i samo zapoznanie się z nowościami JSF 1.2, a mówi się, że jest ich wiele.

12 listopada 2006

Apache OpenJPA jako dostawca JPA w samodzielnej aplikacji

0 komentarzy
Rozochocony pozytywnymi doświadczeniami pracy z JPA (w wydaniu Oracle TopLink) postanowiłem sprawić możliwości Apache OpenJPA. Obiecywałem sobie, że najpierw zajmę się Hibernate JPA (aka Hibernate EntityManager), jednakże z przyczyn ode mnie niezależnych musiałem przestawić się na OpenJPA. W zasadzie i tak planowałem ten krok, więc jedyna różnica to odwrócenie pozycji na mojej liście TODO. Udało się z OpenJPA i sądzę, że nie będzie trudno uruchomić Hibernate JPA. No cóż, zwolennicy Hibernate będą musieli zaczekać.

Doświadczenia z Apache OpenJPA spisałem w kolejnym artykule - OpenJPA jako dostawca JPA w samodzielnej aplikacji - na moim Wiki. Zapraszam do lektury i nadsyłania swoich propozycji kolejnych tematów, jeśli wałkowanie Java Persistence API zaczyna nurzyć ;-)

Miłej zabawy z JPA w wydaniu OpenJPA!

Java Persistence API w samodzielnej aplikacji

1 komentarzy
Rozpocząłem pisanie moich doświadczeń z Java Persistence API (JPA) tutaj, ale po chwili zorientowałem się, że idzie mi tak dobrze, że przeniosłem się na moje Wiki. Zachęcam do lektury i komentarzy. Zabieram się do uruchomienia Hibernate modyfikując jedynie persistence.xml. Już nie mogę doczekać się rezultatów.

11 listopada 2006

Pierwsza aplikacja z JSF 1.2 i EJB 3.0

5 komentarzy
Wiadomy już jest termin, kiedy w końcu odetchnę i pełną piersią będę oddychał Java EE 5 ;-) Właśnie wysłałem wiadomość na Warszawa-JUG o kolejnym spotkaniu, które zgodnie z założeniami powinno odbyć się w pierszy wtorek grudnia, czyli 5.12.2006 o godzinie 18:00. Chciałbym na nim przedstawić Java EE i zaprezentować tworzenie aplikacji z jej użyciem (być może uda mi się to wpełni zautomatyzować z użyciem Maven 2). Zakasałem rękawy i przygotowuję się pełną parą...

Po instalacji Glassfish (od tej pory zwanego GF) oraz NetBeans IDE (NB) postanowiłem skorzystać z możliwości ich integracji i stworzyć pierwszą aplikację Java EE z ich użyciem. Jakież było moje zdumienie, kiedy po niecałych 5 minutach zobaczyłem działającą aplikację opartą o JSF 1.2 i EJB 3.0, a dokładnie JPA (!) To było dokładnie to czego potrzebowałem - kilka ruchów myszką i uderzeń w klawiaturę i mam aplikację z pełnymi źródłami do analizy. Zrozumienie aplikacji nie zabiera więcej niż kolejne 10-15 minut (oczywiście zakładając znajomość takich pojęć jak JSF w ogólności, kontenery IoC i Java Annotations). Z niecierpliwością oczekuję projektu, w którym przyjdzie mi stosować cudeńka Java EE i SE 5. Tworzenie aplikacji Java EE nie mogło być prostsze!

Opis przykładowej aplikacji po angielsku to:

Demonstrates the use of Java Persistence APIs based on the new Java Persistence specification in conjunction with JavaServer Faces that creates a simple authentication scheme using JavaServer Faces PhaseListeners and a simple Entity bean representing a user.

Dla zainteresowanych samodzielnym przejściem mojej "ścieżki zdrowia" przedstawiam kolejne kroki. Założeniem jest, aby GF i NB były zainstalowane.
  1. Uruchamiamy NB
  2. Definiujemy GF w menu Servers w zakładce Runtime w NB.
  3. Otwarcie NB wiąże się z jednoczesnym uruchomieniem okna Welcome z różnymi pozycjami związanymi z NB, gdzie w dolnym lewym rogu znajduje się Sample Projects, a tam pozycja Enterprise.
  4. Wybranie Enterprise to uruchomienie pomocnika (ang. wizard) , gdzie wybieramy JsfJpa (prawy panel - Projects) i wciskamy przycisk Next.
  5. Podajemy położenie projektu i wciskamy przycisk Finish.
  6. Tak utworzyliśmy nasz projekt JsfJpa (zakładka Projects) z wykorzystaniem JSF i JPA.
  7. Zaznaczamy projekt JsfJpa i z menu pod prawym klawiszem myszy wybieramy menu Run Project.
  8. Uruchamia się automatycznie Java DB oraz GF i przeglądarka z adresem http://localhost:8080/jsf-jpa-war/. To kończy naszą dzisiejszą pracę.
Warto zapoznać się ze źródłami aplikacji i jednocześnie prześledzić pracę aplikacji w konsoli GF (zakładka u dołu NB o nazwie jaką nadaliśmy GF definiując go w Runtime). Proste? Niezwykle! Właśnie takie powinno być programowanie/tworzenie aplikacji Java EE w XXI wieku! ;-)

10 listopada 2006

Pierwsze kroki z Java EE z Glassfish i NetBeans IDE

1 komentarzy
Czyż to nie najwyższa pora zająć się Java EE 5 na poważnie? W zasadzie gdzieś tam trochę człowiek dotyka pewnych elementów tego wydania, ale brak w tym jakiegoś porządku. Postanowiłem ponownie przyjrzeć się technologii Java EE z perspektywy projektu Glassfish, który jest wolnodostępną, referencyjną implementacją specyfikacji.

Zabawę rozpoczynam od pobrania wersji instalacyjnej Glassfish V2 B19. Instalacja jest niezwykle prosta i polega na pobraniu odpowiedniej wersji i uruchomieniu instalera, który jest wykonywalnym plikiem jar (ang. executable jar). Dokładnie jak opisano na https://glassfish.dev.java.net/downloads/v2-b19.html, czyli

 java -Xmx256m -jar glassfish-installer-v2-b19.jar

Cała instalacja zabiera nie więcej niż 2-3 minuty (rozpakowanie paczki i uruchomienie anta). Wykonanie polecenia asadmin start-domain "podnosi" serwer i możemy zaczynać (dla pełnego obrazu dodam, że zatrzymanie serwera to wykonanie polecenia asadmin stop-domain). Komunikat na konsoli informuje o konsoli administracyjnej pod adresem http://localhost:4848 (dobrze, że Firefox zapamiętał hasło, bo nie dałbym rady dostać się do niej). W menu Application nie ma jeszcze żadnej aplikacji, więc koniecznie należałoby rozejrzeć się na stronie projektu w poszukiwaniu przykładowych aplikacji. Ale to już w kolejnych dniach...

Kolejny krok to właśnie uruchomienie przykładowych aplikacji, których spodziewam się, że w projekcie będzie kilka. Pisanie nowych będzie odbywać się w NetBeans IDE 5.5, który mówi się, że jest wielce pomocny przy tworzeniu rozwiązań z Java EE 5 (na codzień używam Eclipse/RAD i minęło już trochę czasu od momentu, kiedy kilkakrotnie w tygodniu otwierałem projekt w NetBeans, więc początek może być bolesny ;-)).

Jeśli udało Ci się stworzyć aplikację korzystając z Java EE napisz, co najbardziej podobało Ci się w nowej specyfikacji, a co najmniej i co sprawiło trudności. Chętnie wysłucham rad bardziej doświadczonych użytkowników Java EE.

Za miesiąc spotkanie Warszawa-JUG i chciałbym móc zaprezentować temat Java EE mając więcej doświadczeń. Wiem, że jest wielu, którzy korzystają z JBoss AS 4.0.5 (z EJB 3.0), czy JBoss Seam i to byłyby z pewnością chwytliwe tematy, ale sądzę, że możliwość porównania dwóch różnych środowisk - Glassfish vs JBoss - może być jeszcze ciekawsze. Powinienem tym samym z łatwością sprowokować ciekawą dyskusję na ten temat.

07 listopada 2006

1. inauguracyjne spotkanie Warszawa-JUG za nami

5 komentarzy
Dzisiaj miał być ten dzień, kiedy inicjatywa Warszawa-JUG miała być zweryfikowana - 1. spotkanie. Temat spotkania mógł okazać się równie chwytliwy jak nietrafiony, szczególnie, kiedy coraz częściej słyszy się o (podobno) ciekawszych rozwiązaniach, jak np. Ruby. Kto by chciał słuchać o kolejnym serwerze aplikacyjnym Java EE. Ale, szczęśliwie, spotkała mnie miła niespodzianka - na spotkaniu pojawiło się ponad 20 osób (!) Dla niektórych nie jest to zawrotna liczba, ale kiedy tworzy się grupę, ogłasza w forach programistów i w zasadzie nie ma żadnej informacji o tym, ilu ostatecznie będzie, przyjście 5-10 osób jest już wyczynem. A tu proszę było ponad 20.

Temat prezentacji to Apache Geronimo w ogólności oraz jego integracja z Eclipse. Mimo, że chciałem zaprezentować Apache Geronimo w akcji to przez pierwszą godzinę gadałem jak nakręcony. Sam nie mogłem uwierzyć, że czas zleciał tak szybko. Postanowiłem przyspieszyć i zaprezentować wtyczkę Eclipse do pracy z Geronimo, uruchomiłem więc bardzo prostą aplikację internetową, zaprezentowałem konsolę Geronimo i kolejne 20 minut poszło w zapomnienie.

W międzyczasie wspomniałem o funkcjonalności Eclipse o nazwie Extension Locations, które pozwala na rozbudowę Eclipse o wtyczki bez modyfikacji katalogu głównego (w ten sposób uaktualnienie wtyczek, czy samego Eclipse jest trywialnie proste). Okazało się, że temat zyskał tyleż fanów, co sam temat główny i kolejne 20 minut przebiegło na jej omówieniu.

Kolejne, tym razem ostatnie, 20 minut poświęciliśmy na sesję pytań i odpowiedzi. Zakończyliśmy o godzinie 20:00.

Na moje pytanie kto nie zdecyduje się na przyjście kolejnym razem nikt się nie odezwał, co pozwala przypuszczać, że inicjatywa się podoba i będzie tym samym kontynuowana. Kolejne spotkanie za miesiąc!

Acha, zapomniałbym - spotkanie było nagrywane, więc oczekujcie publikacji nagrania niebawem. Będzie się z czego pośmiać, bo kilkakrotnie sala wybuchła śmiechem po moich próbach konstruowania inteligentnych odpowiedzi. A są one nierzadko okraszone zupełnie nietrafionymi w miejsce i porę moimi przemyśleniami. Warto chociażby z tego powodu zapoznać się z materiałem ;-)

IBM Rational Software Architect V7.0 Open Beta dostępna

0 komentarzy
Nie miałem wiele czasu ostatnio na rozpoznawanie narzędzi UML, o których pisałem poprzednio. Trochę zarzuciłem temat ze względu na inne obowiązki, ale również zbierając siły na odsłonę narzędzia, z którym od czasu do czasu przychodziło mi pracować - IBM Rational Software Architect (RSA) V7.0. Właściwie to nie z nim samym pracowałem, ale z jego krewnym - IBM Rational Application Developer (RAD) V6 i miałem kilka (może nawet wiele) zastrzeżeń do jego funkcjonalności. Tym samym krążyłem koło RSA bez większego przekonania. To sprawiało, że poszukując narzędzi UML wciąż z wielką nadzieją przysłuchiwałem się informacjom o kolejnej wersji produktów RSA oraz RAD i właśnie, kiedy nastąpił ten dzień, kiedy opublikowano wersję RSA BETA nie ukrywam, że z równie dużymi nadziejami jak i obawami ją uruchamiałem. Przede wszystkim bałem się zawodu z braku usprawnień w szybkości działania, co było dla mnie główną wadą. Szczęśliwie nie musiałem długo czekać, aż moje obawy zostaną rozwiane. Instalacja poszła jak burza z możliwością skrojenia narzędzia na miarę - na moją miarę, a nie producenta. Kolejne plusy dla RSA.

Wersja RSA V7 oparta jest o najnowsze dziecko projektu Eclipse.org - Eclipse 3.2.1 i w zasadzie ten trend powinien się utrzymać, tzn. podczas instalacji RSA możemy wybrać opcję doinstalowania wtyczek (ang. plugins) i rozszeżeń (ang. features) do własnej zainstalowanej wersji Eclipse. Oznacza to, że pod warunkiem braku niekompatybilnych zmian w samej architekturze wtyczek w Eclipse, RSA powinien działać również z kolejnymi wersjami (np. Eclipse 3.3).

Po instalacji zabrałem się za stworzenie przykładowej aplikacji J2EE. Uruchomienie jej na IBM WebSphere Application Server (WAS) v6.1 nie stanowiło żadnego problemu (przypominam, że moje doświadczenie w tym zakresie mogłoby przez wielu być nazwane porażająco niskim, więc można sobie wyobrazić jak prosty musi być ten krok). Szybkość reakcji narzędzi jest imponująca (nawet podczas działania WASa), więc główny mankament RSA (a właściwie RAD V6) został wyeliminowany.

Na uwagę zasługuje również fakt, że wersja beta produktu RSA V7 to jednocześnie pełna nowa wersja RAD V7. Podczas instalacji możemy wybrać te funkcjonalności, które nas interesują, co pozwala na wykluczenie tych rozszeżeń RADa, które nie są w zakresie naszych zainteresowań, dodatkowo odchudzając narzędzie (zostawiając jedynie narzędzia wokół UML), ale nie idzie się oprzeć pokusie zainstalowania wszystkiego. Prostota instalacji zniewala ;-) A na prawdę warto. Ilość narzędzi i komfort pracy z RSA jest imponująca. Zresztą, co tu wiele pisać - jest to po prostu Eclipse 3.2.1, więc chociażby to wprowadza wiele dobrego. Reszta jest równie warta poświęcenia czasu szczególnie, że mamy do czynienia z wersją darmową (przynajmniej na czas trwania dostępności wersji beta).

Nie miałem niestety wiele czasu na zabawę z możliwościami RSA w zakresie UML, więc niewiele mogę napisać. Z niecierpliwością jednakże oczekuję chwili, kiedy będę mógł wrócić do niego i popróbować swoich sił. Reszta, co tu dużo ukrywać pójdzie najprawdopodobniej w odstawkę (cóż, może następnym razem bliżej się im przyjrzę - na pewno nie tym razem).

Chętnych do dyskusji na temat możliwości narzędzia zapraszam na strony produktu - https://www14.software.ibm.com/iwm/web/cc/earlyprograms/rational/desktop70O/, gdzie można pobrać wersję beta oraz uczestniczyć w rozmowach o produkcie na jego forum. Sam zamierzam zarzucić inne produkty UML na jego rzecz i przyjrzeć się (czytaj: przetestować na własnej skórze) możliwości narzędzi UML w RSA. Jeśli masz jakiekolwiek uwagi o jego funkcjonowaniu, chętnie ich wysłucham i być może tym samym zapobiegnę doznaniu nieprzyjemnego uczucia niespełnienia moich oczekiwań... ;-)

03 listopada 2006

I spotkanie Warszawskiej Grupy Użytkowników Technologii Java (Warszawa-JUG)

1 komentarzy

Witajcie!

Warszawska Grupa Użytkowników Technologii Java (Warszawa-JUG) zaprasza na inauguracyjne spotkanie, które odbędzie się we wtorek 07.11.2006 o godzinie 18:00 w sali 5820 Wydziału MiMUW przy ul. Banacha 2 w Warszawie.

Temat prezentacji: Apache Geronimo

Wielu z nas śledzących rynek rozwiązań Java EE spotkała się już zapewne z projektem Apache Geronimo. Celem projektu jest stworzenie serwera aplikacyjnego zgodnego ze specyfikacją Java EE 5, po tym jak cel główny - zgodność z J2EE 1.4 - został spełniony w wersji 1.0. Kolejna wersja 1.2 ma już być częściową implementacją specyfikacji Java EE 5 i jej wydanie planowane jest na ten rok. Prezentacja będzie miała na celu zademonstrowanie możliwości serwera, sposób jego działania, konfigurację i jego elementy składowe. Na prezentacji spróbuję dodatkowo odpowiedzieć na najczęściej zadawane pytania odnośnie serwera oraz przedstawię elementy, które niejednemu nasuną kontrowersyjną tezę o niebywałym podobieństwu między nim a...Spring Framework (!)

W projekcie rozwijana jest również wtyczka do Eclipse IDE, która pozwala na tworzenie aplikacji Java EE w Eclipse i uruchamianie jej na serwerze, o której będzie również mowa na prezentacji. Z jej pomocą, stworzymy demonstracyjną aplikację, którą następnie uruchomimy na serwerze.

Prezentacja prowadzona będzie przez Jacka Laskowskiego, który jest członkiem zespołu koordynującego i programistą w projekcie Apache Geronimo.

Planowany czas prezentacji to 1 godzina z kolejnymi 30 minutami na dyskusję.

Zapraszam w imieniu Warszawa-JUG!

Jacek Laskowski