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! ;-)