21 grudnia 2007

Zmiana rozszerzenia pliku jar w Maven2?

6 komentarzy
Pojawiła się kwestia do rozwiązania, w której plik wynikowy tworzony przez Maven2 za pomocą wtyczki maven-jar-plugin powinien mieć inne rozszerzenie niż jar.

Jaki jest przypadek użycia, zapytasz? Załóżmy, że korzystam z narzędzia, dla którego jedynym słusznym rozszerzeniem jest xyz. W jaki sposób najmniejszym wysiłkiem utworzyć plik o zadanym rozszerzeniu nie łamiąc zasad rządzących Maven2 i wciąż móc korzystać z pozostałych wtyczek?

Jedyne, co przyszło mi do głowy to skorzystanie z wtyczki - maven-antrun-plugin. Wykonanie polecenia mvn package działa, ale mvn install już nie. Czy są inne sposoby rozwiązania tej kwestii? Skorzystanie z dedykowanej wtyczki? Dedykowany packaging z własną konfiguracją wtyczek?

<properties>
<nazwaPlikuWynikowego>${project.build.directory}/${artifactId}-${version}</nazwaPlikuWynikowego>
<rozszerzenie>xyz</rozszerzenie>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>package</id>
<phase>package</phase>
<configuration>
<tasks>
<move file="${nazwaPlikuWynikowego}.jar" tofile="${nazwaPlikuWynikowego}.${rozszerzenie}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

W źródłach wtyczki maven-jar-plugin jest wyraźnie wskazane, że jedynym słusznym rozszerzeniem jest jar. Patrz org.apache.maven.plugin.jar.AbstractJarMojo.getJarFile(File basedir, String finalName, String classifier).

Zdaje się, że właśnie natrafiłem na ciekawy problem na długie i obfitujące w jedzenie, świąteczne wieczory.

p.s. Dzięki Szimano za niezłą zagadkę na zakończenie roku. Gratulacje humoru! ;-)

20 grudnia 2007

Konkurs Blog Roku 2007

8 komentarzy
Blog Roku 2007 w kategorii ProfesjonalneIdąc śladami Wiktora Gworka, który wystartował w konkursie Grono.net i...wygrał postanowiłem wystartować w podobnej inicjatywie. Pamiętam, jak rozpoczynał swój projekt podczas konferencji WarsJava 2007 i namawiał mnie na wzięcie udziału. Sam pomysł udziału w konkursie był ciekawy, ale fajny gość z tego Wiktora, więc zakończyłem to stwierdzeniem "Eee, zarobiony jestem.". Wiktor był tak napalony główną nagrodą komputer Apple MacBook Pro, że nie chciałem mu po prostu robić przykrości...wygrywając konkurs ;-)

Dzisiaj jednak, kiedy zajrzałem na blog Jarosława Zabiełło, a tam namiary na konkurs Blog Roku 2007, gdzie główną nagrodą w kategorii Profesjonalne jest...Laptop MacBook white 2.0 GHz Intel Core 2 Duo pomyślałem, że to jest ten moment, aby spróbować. W końcu, tylko ten wygrywa, kto gra, a ja wierzę, że z Waszą pomocą uda się. Zarejestrowałem Notatnik i cierpliwie czekam na ogłoszenie wyników. Na głównej stronie, w prawym panelu, umieściłem odnośnik do konkursu dla zainteresowanych moją wygraną.

Parafrazując jedną z reklam: Wszyscy mają Maki, będę miał i ja! To jak, pomożecie?

19 grudnia 2007

Ciekawostki JPA z XX spotkania Warszawa JUG

0 komentarzy
Podczas wczorajszego, XX spotkania grupy Warszawa JUG tematem przewodnim było Java Persistence API (JPA). Zajęliśmy się aktualizacją bazy danych przez dostawcę JPA o zmiany w encjach w trakcie trwania transakcji. Temat wcześniej opisałem w artykule Zasady zapisu zmian do bazy danych w JPA. Okazało się, że z 3 dostawców JPA - Apache OpenJPA, Hibernate EntityManager i TopLink Essentials, jedynie dwa ostatnie - Hibernate i TopLink działają tak samo, tzn. podczas pierwszego testu można zauważyć, że przed wykonaniem zapytania oba zapisują zmiany w bazie danych, a następnie wykonują zapytanie. W przypadku OpenJPA tak się nie dzieje. I tu możnaby zastanowić się, czy przypadkiem nie jest to błąd (!)

Piotr Tabor zauważył ciekawą rzecz, która unaocznia potencjalny problem z OpenJPA. Zmodyfikujmy zadanie o wyszukanie encji Osoba, których imię to Agata. Czego możemy spodziewać się od następującego fragmentu kodu?

System.out.println("\n=== Test #1: FlushModeType.AUTO z transakcja ===");

em.getTransaction().begin();
Osoba osoba = em.find(Osoba.class, osobaId);

System.out.println("\n>>> Zmieniamy imie osoby\n");
osoba.setImie("Agata");

System.out.println(">>> Wczytujemy wszystkie osoby\n");
Query query = em.createNamedQuery("Osoba.osobyPoImieniu");
query.setParameter("imie", "Agata");
List osoby = query.getResultList();
System.out.println("\n>>> Wszystkie osoby wczytane\n");

assert osoby.size() == 1 : "Liczba osób powinna być 1";
assert osoby.get(0).getImie().equals("Agata") : "Oczekujemy Agaty";

System.out.println(">>> Zatwierdzamy transakcje\n");
em.getTransaction().commit();

Czy oba warunki określone przez instrukcje assert powinny być spełnione? Z niecierpliwością czekam na odpowiedzi ;-) Zainteresowanych potyczkami z JPA zachęcam do skorzystania ze wspomnianego artykułu, w którym jest gotowe środowisko do odtworzenia sytuacji. Nie należy zapominać o stworzeniu zapytania nazwanego Osoba.osobyPoImieniu.

17 grudnia 2007

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

2 komentarzy
Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG) zaprasza na ostatnie w roku 2007, XX spotkanie, które odbędzie się we wtorek 18.12.2007 o godzinie 18:30 w sali 4420 Wydziału MIMUW przy ul. Banacha 2 w Warszawie.

Temat prezentacji: EJB 3.0 z JPA 1.0 w POPie (Pytania i Odpowiedzi z Przykładami) 2.0
Prowadzący: Jacek Laskowski

UWAGA: Spotkanie rozpoczyna się wyjątkowo o godzinie 18:30.

Specyfikacja Enterprise JavaBeans 3.0 (EJB3), której integralną częścią jest Java Persistence API (JPA), to jedna z kluczowych specyfikacji Korporacyjnej Javy 5 (Java EE 5). Jeszcze do niedawna wielu z przyjemnością zapomniałoby całkowicie o istnieniu EJB zastępując ją alternatywnymi rozwiązaniami i dopiero czynny udział osób związanych z projektami otartymi, m.in. Hibernate, czy Spring Framework sprawił, że EJB3 stał się ciekawym rozwiązaniem, po które można sięgnąć z przyjemnością podczas tworzenia rozwiązań korporacyjnych opartych o platformę Java EE 5. Biorąc pod uwagę ścisłą integrację EJB3 z pozostałymi elementami Java EE 5, nie sposób nie korzystać z jego dobrodziejstw, a jest ich wiele, z czego na szczególną uwagę zasługują - deklaratywne określanie wykorzystania usług serwera aplikacji Java EE 5 jak bezpieczeństwo, transakcje, trwałość, utrzymywanie sesji, czy udostępnianie ziaren EJB jako usług sieciowych, a skończywszy na elementach AOP w postaci mechanizmów przechwytywania zdarzeń rozwojowych ziaren.

Podobnie jak na poprzednim, XIX spotkaniu wprowadzającym w tematykę EJB 3.0 i JPA, spotkanie będzie prowadzone w formie warsztatu bez slajdów, gdzie motorem napędowym będą sami uczestnicy spotkania. Na spotkaniu Jacek przedstawi dwa tematy dotyczące JPA - Zasady zapisu zmian do bazy danych w JPA i Dynamiczny dostęp do wielu baz danych w JPA, jak również wprowadzi w tematykę interceptorów EJB3. Skorzystamy z pomocy NetBeans IDE i jego integracji z Glassfish.

Na zakończenie, Jacek sprawdzi wiedzę uczestników z EJB3/JPA korzystając z narzędzia przygotowującego do certyfikatu Sun Certified Business Component Developer (SCBCD) Java EE 5.0 - uCertify CX310-091 - SCBCD Java 5.0 Practice Test. Nagrody gwarantowane!

Jacek Laskowski zajmuje się Korporacyjną Javą od pierwszego dnia jej opublikowania. Jest członkiem zespołów rozwojowych m.in. Apache Geronimo, Apache OpenEJB. Zajmuje się rozpoznawaniem technologii upraszczających tworzenie aplikacji korporacyjnych z Java EE 5, a swoje spostrzeżenia publikuje w Notatniku Projektanta Java EE oraz na swoim Notatniku-Wiki. Jest założycielem i liderem Warszawskiej Grupy Użytkowników Javy (Warszawa JUG). Ideę dzielenia się wiedzą wprowadza w życie poprzez wystąpienia na konferencjach krajowych i zagranicznych. Służbowo związany z firmą IBM jako konsultant oprogramowania.

Planowany czas prezentacji to 1,5 godziny.

Wstęp wolny!

Zapraszam w imieniu Warszawa JUG!

16 grudnia 2007

Zasady zapisu zmian do bazy danych w JPA

0 komentarzy
Z każdym dniem na grupie pl.comp.lang.java pojawiają się coraz ciekawsze pytania i problemy związane z Java Persistence API (JPA) oraz Enterprise JavaBeans 3.0 (EJB3). Tym razem Marx zadał pytanie o zasady rządzące zapisem zmian encji do bazy danych w JPA - EJB3 - select robi update. W ten sposób sprowokował mnie do napisania kolejnego artykułu z serii przedstawiającej tajniki specyfikacji JPA - Zasady zapisu zmian do bazy danych w JPA.

Podobnie jak w poprzednich artykułach dotyczących JPA - Dynamiczny dostęp do wielu baz danych w JPA oraz Testowanie złączeń FETCH JOIN w JPA artykuł rozpoczyna się od przedstawienia teorii JPA, którą następnie zademonstrowałem w działaniu za pomocą aplikacji demonstracyjnej. Skorzystałem z konfiguracji projektu nadzorowanego przez Apache Maven 2, aby możliwe było uruchomienie go z 3-ma głównymi dostawcami JPA - Apache OpenJPA, Hibernate EntityManager oraz TopLink Essentials.

Drobnym acz ciekawym elementem konfiguracji Maven2 na potrzeby naszego projektu jest zależność javax.persistence.persistence-api, która występuje w wersji 1.0 w repozytorium Maven 2 oraz w wersji 1.0.2 w repozytorium Maven 1 na java.net. Biorąc pod uwagę, kto nadzoruje wersjami w repozytorium java.net (Sun) wydaje się być stosowne stosowanie bibliotek Korporacyjnej Javy właśnie z tego repozytorium. I tak też czynię w artykule.

14 grudnia 2007

Dynamiczny dostęp do wielu baz danych w JPA

1 komentarzy
Kolejny raz zostałem zainspirowany przez użytkownika grupy pl.comp.lang.java. Tym razem, Michał Chmielarz zadał pytanie o Dostęp do wielu baz danych przez JPA w ramach EJB 3.0, które sprowokowało mnie do dokładniejszego spojrzenia we wnętrze JPA. Już wczoraj próbowałem się z tematem z użyciem Raven i Buildr, ale nie miałem wiele szczęścia z nimi i ostatecznie skorzystałem ze sprawdzonego Mavena 2. Zresztą nie tak dawno zestawiłem środowisko do pracy z JPA z wykorzystaniem Maven (Testowanie złączeń FETCH JOIN w JPA), więc miałem w zasadzie wszystko gotowe.

W moim kolejnym artykule nt Java Persistence API (JPA) - Dynamiczny dostęp do wielu baz danych w JPA pobieżnie wprowadzam do teorii JPA w kontekście dynamicznego zarządzania wieloma bazami danych, po którym demonstruję kompletną (acz bardzo podstawową) aplikację w działaniu z wykorzystaniem zaprezentowanej teorii. Miłej lektury!

13 grudnia 2007

Raven, Buildr i...JPA - nieudany start

2 komentarzy
Na grupie pl.comp.lang.java Michał Chmielarz zapytał o Dostęp do wielu baz danych przez JPA w ramach EJB 3.0. Pytanie bardzo ciekawe, więc postanowiłem odpowiedzieć prezentując przykładową aplikację okraszoną niewielkim artykułem (wprowadzeniem w temat). Jak to bywa w takiej sytuacji należało zestawić projekt i stworzyć kilka klas dla zobrazowania rozwiązania. I właśnie, kiedy już przymierzałem się do zestawienia środowiska do pracy z JPA na bazie doświadczeń przedstawionych w Testowanie złączeń FETCH JOIN w JPA z Apache Maven 2 natrafiłem na artykuł Introducing Raven: An Elegant Build for Java. Zawsze mnie to spotyka, że kiedy napotkam nowy temat to z wielu stron. Przecież nie tak dawno Radarek w komentarzu do Tworzenie wtyczek Maven 2 w Groovy zasugerował przyjrzenie się...Ravenowi, który jest tematem wspomnianego artykułu, a który okazało się, że jest połączeniem cech Maven 2 oraz Ruby - możnaby napisać, że jest to Maven 2 w Ruby. Nie zastanawiając się długo obmyśliłem sobie plan zestawienia środowiska opierając jego zarządzanie na Raven. JPA nie mogło mnie zaskoczyć, więc dodanie do zestawu Ravena nie powinno było sprawić problemu. A jednak.

Czytając artykuł rozpocząłem instalację Ravena, która sprowadziła się (a w zasadzie powinna była sprowadzić się) do pobrania paczki dystrybucyjnej i rozpakowania jej do wybranego katalogu z ustawieniem zmiennych JRUBY_HOME (u mnie wskazywała na c:/apps/raven) oraz PATH. Okazało się, że nie dane mi było popracować z Raven pod Cygwin. Zazywczaj nie pracuję bezpośrednio z linii poleceń Windows, a korzystam z Cygwin, w którym wciąż otrzymywałem komunikat o błędnej ścieżce.

jlaskowski@dev ~
$ export JRUBY_HOME=`cygpath -u c:/apps/raven`

jlaskowski@dev ~
$ export PATH=$JRUBY_HOME/bin:$PATH

jlaskowski@dev ~
$ rake --version
Error opening script file: \cygdrive\c\apps\raven\bin\rake (The system cannot find the path specified)

Z linii poleceń Windows wszystko grało, więc nie tracąc czasu na rozwiązywanie problemów niezwiązanych z tematem przewodnim - JPA i Raven - pozostawiłem ich rozwiązanie na później (później okazało się, że na duużo później).

C:\jpa-raven>rake --version
rake, version 0.7.3

Doczytałem w międzyczasie, że na pomoc nieszczęśliwemu Cygwin może przyjść z pomocą RubyGems, więc po chwili miałem je zainstalowane.

jlaskowski@dev /cygdrive/c/apps/rubygems
$ ruby setup.rb
mkdir -p /usr/lib/ruby/site_ruby/1.8/rbconfig
install -c -m 0644 rbconfig/datadir.rb /usr/lib/ruby/site_ruby/1.8/rbconfig/datadir.rb
mkdir -p /usr/lib/ruby/site_ruby/1.8/rubygems
install -c -m 0644 rubygems/builder.rb /usr/lib/ruby/site_ruby/1.8/rubygems/builder.rb
install -c -m 0644 rubygems/command.rb /usr/lib/ruby/site_ruby/1.8/rubygems/command.rb
mkdir -p /usr/lib/ruby/site_ruby/1.8/rubygems/commands
...
As of RubyGems 0.8.0, library stubs are no longer needed.
Searching $LOAD_PATH for stubs to optionally delete (may take a while)...
...done.
No library stubs found.

A następnie zainstalowałem Raven zgodnie z instrukcjami na stronie Installing Raven.

jlaskowski@dev ~
$ gem install rake
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rake-0.7.3
1 gem installed
Installing ri documentation for rake-0.7.3...
Installing RDoc documentation for rake-0.7.3...

jlaskowski@dev ~
$ gem install raven
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
OpenURI::HTTPError: 404 Not Found reading http://gems.rubyforge.org/gems/raven-1.2.4.gem

Zaczynałem się już zastanawiać, czy miałem borykać się z problemami Ravena, czy zabrać się za rozwiązanie problemu głównego - JPA i wykorzystaniu dynamicznemu wielu baz danych. Daje Ravenowi jeszcze kilka minut.

Zgodnie z dokumentem instalacyjnym Raven pobrałem raven-1.2.4.gem i zainstalowałem go ręcznie.

jlaskowski@dev ~
$ gem install raven-1.2.4.gem
Successfully installed raven-1.2.4
1 gem installed
Installing ri documentation for raven-1.2.4...
Installing RDoc documentation for raven-1.2.4...

Uff, to się nazywa krótkie wprowdzenie do Ravena, a w zasadzie do Ruby. Jak tak dalej pójdzie, to pójdę z torbami za moje pomysły zmagania się z nowym oprogramowaniem zamiast rozwiązywać właściwe problemy.

Ponownie sprawdzam działanie ruby na Cygwin z moim krótkim projektem. Z pomocą artykułu mój pierwszy Rakefile wyglądał następująco:

require "raven"
require "rake/clean"
CLEAN.include ["target", "dist"]

dependency "compile_deps" do |task|
task.deps << [ "com-oracle-toplink" ]
end

task "default" => "compile_deps"

Próba uruchomienia go kończyła się niepowodzeniem.

jlaskowski@dev /cygdrive/c/jpa-raven
$ rake compile_deps
(in /cygdrive/c/jpa-raven)
rake aborted!
Platform is not a module
/cygdrive/c/jpa-raven/rakefile:1
(See full trace by running task with --trace)

Widocznie nie dane mi było dzisiaj popracować z Raven na Cygwin. Przechodzę na konsolę Windows.

C:\jpa-raven>rake
C:/apps/raven/lib/ruby/site_ruby/1.8/rubygems/version.rb:116:in `initialize':
Malformed version number string toplink (ArgumentError)
from C:/apps/raven/lib/ruby/site_ruby/1.8/rubygems/version.rb:106:in `new'
from C:/apps/raven/lib/ruby/site_ruby/1.8/rubygems/version.rb:106:in `create'
from C:/apps/raven/lib/ruby/site_ruby/1.8/rubygems/specification.rb:288:in `version='
from C:/apps/raven/lib/ruby/site_ruby/1.8/rubygems.rb:505:in `version='
from (eval):4:in `load_specification'
from C:/apps/raven/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:128:in `initialize'
from (eval):2:in `new'
from (eval):2:in `load_specification'
... 9 levels...
from C:/apps/raven/lib/ruby/site_ruby/1.8/rubygems.rb:76:in `active_gem_with_options'
from C:/apps/raven/lib/ruby/site_ruby/1.8/rubygems.rb:50:in `gem'
from :1

Tutaj niestety nie jest przyjemniej, wręcz powiem, że beznadziejnie, ale biorąc pod uwagę mój brak doświadczenia z Raven wierzę, że wynika to właśnie z...braku doświadczenia.

Na dzisiaj mam dosyć Ravena. Może i jest fajny, ale zaczyna mnie irytować. Odpuszczam. Kończę artykuł, a tam na koniec wzmianka o innym narzędziu do budowania projektów - Buildr. Popróbujmy jego możliwości i zobaczmy, co to cudeńko potrafi. Może z nim jestem w stanie posunąć się dalej?!

Podobnie do Raven, Buildr oparty jest o Ruby. Zaczynam od dokumentu Getting Started. Na konsoli sprowadziło się do wydania kilku poleceń (znowu jestem pod Cygwin).

jlaskowski@dev ~
$ gem install buildr
Updating metadata for 6 gems from http://gems.rubyforge.org
......
complete
Building native extensions. This could take a while...
Successfully installed facets-1.8.54
Successfully installed builder-2.1.2
Successfully installed needle-1.3.0
Successfully installed net-ssh-1.1.2
Successfully installed net-sftp-1.1.0
Successfully installed rubyzip-0.9.1
Successfully installed highline-1.4.0
Successfully installed rjb-1.0.11
Successfully installed Antwrap-0.6.0
Successfully installed rspec-1.0.8
Successfully installed xml-simple-1.0.11
Successfully installed archive-tar-minitar-0.5.1
Successfully installed buildr-1.2.10
13 gems installed
Installing ri documentation for facets-1.8.54...
Installing ri documentation for builder-2.1.2...
ERROR: While generating documentation for builder-2.1.2
... MESSAGE: Unhandled special: Special: type=17, text=""
... RDOC args: --ri --op /usr/lib/ruby/gems/1.8/doc/builder-2.1.2/ri
--title Builder -- Easy XML Building --main README --line-numbers --quiet lib
CHANGES Rakefile README doc/releases/builder-1.2.4.rdoc
doc/releases/builder-2.0.0.rdoc doc/releases/builder-2.1.1.rdoc
(continuing with the rest of the installation)
Installing ri documentation for needle-1.3.0...
Installing ri documentation for net-ssh-1.1.2...
Installing ri documentation for net-sftp-1.1.0...
Installing ri documentation for highline-1.4.0...
Installing ri documentation for Antwrap-0.6.0...
Installing ri documentation for rspec-1.0.8...
Installing ri documentation for archive-tar-minitar-0.5.1...
Installing ri documentation for buildr-1.2.10...
Installing RDoc documentation for facets-1.8.54...
Installing RDoc documentation for builder-2.1.2...
Installing RDoc documentation for needle-1.3.0...
Installing RDoc documentation for net-ssh-1.1.2...
Installing RDoc documentation for net-sftp-1.1.0...
Installing RDoc documentation for highline-1.4.0...
Installing RDoc documentation for Antwrap-0.6.0...
Installing RDoc documentation for rspec-1.0.8...
Installing RDoc documentation for archive-tar-minitar-0.5.1...
Installing RDoc documentation for buildr-1.2.10...

jlaskowski@dev /cygdrive/c/jpa-buildr
$ buildr
To use Buildr you need a buildfile. Do you want me to create one?:
1. From directory structure
2. Skip
? 1
Created /cygdrive/c/jpa-buildr/buildfile

Stworzony buildfile prezentuje się następująco.

jlaskowski@dev /cygdrive/c/jpa-buildr
$ cat buildfile
# Generated by Buildr 1.2.10, change to your liking
# Version number for this release
VERSION_NUMBER = "1.0.0"
# Version number for the next release
NEXT_VERSION = "1.0.1"
# Group identifier for your projects
GROUP = "jpa-buildr"
COPYRIGHT = ""

# Specify Maven 2.0 remote repositories here, like this:
repositories.remote << "http://www.ibiblio.org/maven2/"

desc "The Jpa-buildr project"
define "jpa-buildr" do

project.version = VERSION_NUMBER
project.group = GROUP
manifest["Implementation-Vendor"] = COPYRIGHT
end

Po kilku zmianach plik wyglądał już nieco inaczej.

jlaskowski@dev /cygdrive/c/jpa-buildr
$ cat buildfile
VERSION_NUMBER = "1.0.0"

GROUP = "pl.jaceklaskowski.jpa-buildr"

OPENJPA = ["org.apache.openjpa:openjpa:jar:1.0.1"]

# Specify Maven 2.0 remote repositories here, like this:
repositories.remote << "http://www.ibiblio.org/maven2/"

desc "The JPA-Buildr project"
define "jpa-buildr" do

project.version = VERSION_NUMBER
project.group = GROUP
manifest["Implementation-Vendor"] = "Jacek Laskowski - http://www.JacekLaskowski.pl"

compile.options.target = "1.5"

end

I faktycznie coś robił, ale nie byłem nawet na początku drogi zestawiania projektu.

jlaskowski@dev /cygdrive/c/jpa-buildr
$ buildr
(in /cygdrive/c/jpa-buildr)
Downloading org.apache.ant:ant:jar:1.7.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/ant/ant/1.7.0/ant-1.7.0.jar
100% |.........................................| 1.2MB/ 1.2MB Time: 00:00:23
Downloading org.apache.ant:ant:pom:1.7.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/ant/ant/1.7.0/ant-1.7.0.pom
100% |.........................................| 9.5KB/ 9.5KB Time: 00:00:00
Downloading org.apache.ant:ant-launcher:jar:1.7.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar
100% |.........................................| 11.5KB/ 11.5KB Time: 00:00:00
Downloading org.apache.ant:ant-launcher:pom:1.7.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.pom
100% |.........................................| 2.3KB/ 2.3KB Time: 00:00:00
Downloading xerces:xercesImpl:jar:2.6.2
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar
100% |.........................................| 987.0KB/987.0KB Time: 00:00:16
Downloading xerces:xercesImpl:pom:2.6.2
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.pom
100% |.........................................| 150B/ 150B Time: 00:00:00
Downloading org.apache.ant:ant-trax:jar:1.7.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/ant/ant-trax/1.7.0/ant-trax-1.7.0.jar
100% |.........................................| 6.7KB/ 6.7KB Time: 00:00:00
Downloading org.apache.ant:ant-trax:pom:1.7.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/ant/ant-trax/1.7.0/ant-trax-1.7.0.pom
100% |.........................................| 3.8KB/ 3.8KB Time: 00:00:00
Downloading org.apache.ant:ant-junit:jar:1.7.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar
100% |.........................................| 90.6KB/ 90.6KB Time: 00:00:02
Downloading org.apache.ant:ant-junit:pom:1.7.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.pom
100% |.........................................| 3.7KB/ 3.7KB Time: 00:00:00
Building jpa-buildr
Testing jpa-buildr
Downloading junit:junit:jar:4.3.1
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/junit/junit/4.3.1/junit-4.3.1.jar
100% |.........................................| 104.0KB/104.0KB Time: 00:00:02
Downloading junit:junit:pom:4.3.1
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/junit/junit/4.3.1/junit-4.3.1.pom
100% |.........................................| 998B/ 998B Time: 00:00:00
Downloading jmock:jmock:jar:1.2.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/jmock/jmock/1.2.0/jmock-1.2.0.jar
100% |.........................................| 104.2KB/104.2KB Time: 00:00:02
Downloading jmock:jmock:pom:1.2.0
Downloading http://mirrors.ibiblio.org/pub/mirrors/maven2/jmock/jmock/1.2.0/jmock-1.2.0.pom
100% |.........................................| 895B/ 895B Time: 00:00:00

Ale moment! Przecież potrzebuję struktury projektu (!) Wydaje mi się, że Raven oraz Buildr są dobre, ale w momencie istnienia struktury projektowej ze wszystkimi plikami. Ja jednak potrzebuję narzędzia do stworzenia struktury projektowej oraz jego integracji z narzędziem IDE (Eclipse lub NetBeans). Na chwilę obecną nie sądzę, aby jakiekolwiek narzędzie IDE wspierało projekty zarządzane przez Raven czy Buildr, więc na dzisiaj odpuszczam i wracam do sprawdzonego Maven 2.

jlaskowski@dev /cygdrive/c
$ mvn archetype:create -DgroupId=pl.jaceklaskowski.jpa -DartifactId=jpa-multidb-buildr -Dversion=1.0
[INFO] Scanning for projects...
...
[INFO] Archetype created in dir: c:\jpa-multidb-buildr
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

Mam już strukturę projektową, jednakże pozostaje problem związany z IDE. Który pozwoli mi na import projektu w tej postaci?! Eclipse i NetBeans pozwolą mi ostatecznie zaimportować projekt, jednakże wprowadzanie zależności projektowych w IDE nie będzie odzwierciedlone w konfiguracji Raven i Buildr. Pomysł utrzymywania dwu światów (IDE vs Raven/Buildr) na dzisiaj jest zbytnim wyzwaniem. Pozostaję przy Maven 2.

Na koniec mojej przygody z Buildr przekopiowałem plik buildfile zdefiniowany wyżej i wykonałem polecenie buildr help:projects, aby dowiedzieć się o zdefiniowanych projektach.

jlaskowski@dev /cygdrive/c/jpa-multidb-buildr
$ buildr help:projects
(in /cygdrive/c/jpa-multidb-buildr)
jpa-multidb-buildr # The JPA-MultiDB-Buildr project

Na razie odpuszczam Ravena i Buildr. Zacznę śledzić ich rozwój, ale na dzisiaj koniec z nimi. Wracam do przygotowania środowiska dla zobrazowania tematu obsługi wielu baz danych w JPA. To wydaje się bezproblemowe.

09 grudnia 2007

Tworzenie wtyczek Maven 2 w Groovy

3 komentarzy
Jakiś czas temu planowałem stworzenie wtyczki Apache Maven 2 dla wzbogacenia możliwości Apache OpenEJB. W międzyczasie zainteresowałem się językami skryptowymi, szczególnie Groovy oraz JRuby, więc kiedy natrafiłem na wtyczkę Maven 2 wspomagającą tworzenie wtyczek Maven 2 w Groovy - groovy-maven-plugin wiedziałem, że to jest właśnie ten moment. I nie myliłem się. Prostota tworzenia wtyczek w Groovy uwidacznia się już przy bardzo trywialnych wtyczkach, jaką będzie nasza, kiedy to nie jest konieczne deklarowanie wyjątków czy typów parametrów (chociaż jest to zalecane).

Moje dotychczasowe doświadczenia spisałem w kolejnym artykule Tworzenie wtyczek Maven 2 w Groovy.

08 grudnia 2007

Wrażenia po wykładzie o EJB3/JPA na Politechnice Poznańskiej

1 komentarzy
Jak to ze mną bywa i tym razem nie starczyło czasu, aby treściwie przedstawić EJB3/JPA i jednocześnie w pełni zaangażować audytorium do dyskusji. Starałem się jak mogłem, obiecywałem sobie, że nie będzie wycieczek myślowych, dywagacji, żartów, itp., ale nie mogłem się opanować...a wszystko za sprawą dobrej atmosfery podczas prezentacji, w której dało się odczuć zainteresowanie tematem.

Chciałbym tym samym gorąco podziękować dr Dawidowi Weissowi za zaproszenie mnie na Politechnikę Poznańską celem przedstawienia tematu EJB3/JPA dla tak wspaniałego audytorium. Bawiłem się dobrze i wierzę, że inni również.

Zaczęliśmy o 13:30 po tym, jak widząc więcej, niż przewidywaną liczbę, osób zdecydowaliśmy się na zmianę sali na większą. Sala pierwsza klasa. Nie liczyłem ile osób przyszło, ale możnaby naliczyć około 80 osób (w tym kilka kobiet!). I muszę przyznać, że audytorium nie zawiodło. Tak mi się świetnie dyskutowało na tematy EJB3 i (pobieżnie) o JPA, że czas minął tak szybko, że nie mogłem uwierzyć, że prezentacja dobiegła końca - wybiła 16:15, a o 16:44 miałem pociąg powrotny do Warszawy. Ledwie zdążyłem na pociąg. Ech, szkoda, że to tak szybko minęło. Zaprezentowałem około 20 slajdów (z 60 dostępnych!) i widząc wlepione we mnie oczy błagające o coś ciekawszego na moje pytanie o prezentację tematu za pomocą przykładów - jakby publikę coś trafiło. Wszyscy się ożywili i na prawdę było widać duże zainteresowanie. Zanim zacząłem zabawę zapytałem o użycie narzędzi. Przeczuwając, że NetBeans może nie cieszyć się dużą popularnością, zapytałem o jego użycie. Naliczyłem około 6 osób. Po tym zapytałem o vi (tak przypadkiem dla poprawy nastroju) i okazało się, że więcej osób podniosło ręce niż przy NetBeans (!). Kiedy w końcu zapytałem o Eclipse miałem wrażenie, że wszyscy podnieśli ręce. Było to jedyne pytanie tak licznie przyjęte z aprobatą wszystkich. Kiedy, więc oznajmiłem, że przykłady będą prezentowane z użyciem...NetBeans powiało grozą. Nie trwało to jednak długo, bo wsparcie dla tworzenia aplikacji korporacyjnych w Javie to jedna z cech wiodących NetBeans. Pojawiła się nawet sugestia, aby nie korzystać ze skrótów klawiszowych, aby można było śledzić poszczególne kroki dokładniej. Podobnie z przyjęciem było w przypadku serwerów aplikacyjnych - wielu miało do czynienia z JBoss AS, niektórzy pracowali z Glassfish, ale nikt nie zgłosił się przy pytaniu o użycie Apache Geronimo (musiałem wywołać kogoś z tłumu dla poprawienia sobie samopoczucia ;-)). Zaprezentowałem kilka przykładowych aplikacji z użyciem NetBeans 6 oraz Glassfish v2 i dopiero, co zacząłem, a już musiałem kończyć. Szkoda.

Głosy jakie mnie dochodzą mogą świadczyć, że moja prezentacja o EJB3/JPA mogła się podobać, ale są też takie, które wskazują na pewne niedopracowanie tematu od strony samego prowadzenia prezentacji. Jak zwykle górę wzięła moja chęć przedstawienia tematu o EJB3/JPA w 2,5 godziny z najdrobniejszymi szczegółami (co wydaje mi się teraz za zadanie niemożliwe do wykonania, gdyż nawet przy 5 dniach warsztatów możnaby spodziewać się, że nie wszystkich mogłoby to satysfakcjonować pod względem dostępnego czasu).

Były takie głosy (od Darka):

feedback po wykładzie.

Generalnie super! Ale...

Było ciężko, skakanie po tematach, wchodzenie w szczegóły nie zawsze potrzebnie :/ Zrzuciłeś odpowiedzialność za przebieg wykładu na publiczność, kiepski pomysł. To wykładowca wie lepiej w jakiej kolejności i o czym mówić na temat danej technologii. (ludzie nie znający EJB nie mogli podpowiadać na jaki tamt mówić bo nie wiedzieli, ci znający pytali o szczegóły :/)

Generalnie udało mi się połapać, jednak przez to zamieszanie, pozostał niedosyt i wątpliwość, czy aby na pewno wiem już o co chodzi w EJB3 :/

Mimo tego, wykład bardzo mi się podobał! Dzięki, że przyjechałeś, że podzieliłeś się z nami swoją pasją! Super!


ale też i takie (to już z mojej skrzynki od Marcina):

Chciałbym podziękować za prelekcje na Politechnice Poznańskiej, która odbyła się w dniu wczorajszym.
Muszę przyznać, że przeżyłem 6 lat wykładów na Politechnice Gdańskiej oraz kilkanaście szkoleń w pracy zawodowej jednak muszę przyznać, że Twój wykład był poprowadzony w sposób fenomenalny i nie zdarzyło mi się być na żadnej inne prelekcji, która nie znudziła by mnie w ciągu 30 min.
Gratuluje podejścia do tematu. Myślałem, że w Polsce nie ma osoby, która byłaby wstanie podejść do tematu w sposób, który od wielu lat prezentują anglojęzyczni autorzy w swoich publikacjach (podejście do tematu w sposób luźny, a jednak bardzo merytoryczny).

Pozdrawiam i życze wielu sukcesów!!!


Mogę więc wnioskować, że jest jeszcze wiele do poprawienia, ale przy kilku dokładnych szlifach możnaby stworzyć jakąś serię wykładów poświęconych EJB3/JPA i na jej bazie stworzyć profesjonalne 5-dniowe szkolenie z przykładami i dokładnym omówieniem tematu. Pomysł mi się podoba. Są chętni, aby zagwarantować sobie (darmowe) miejsce przez zaproponowanie potencjalnych tematów? Jeśli męczy Cię jakikolwiek temat związany z EJB3/JPA już kolejny dzień i nie widać potencjalnego rozwiązania może wartoby zrzuć to na moje barki? Po co męczyć się samemu, jak ten czas możnaby poświęcić czemuś bardziej reklaksującego, np. siedzenie przed telewizorem z chipsami/paluszkami i napojem ;-)

Prezentacja dostępna jest do pobrania jako JacekLaskowski-PolitechnikaPoznanska-EJB3-07.12.2007.pdf.

Nota bene, pojawiły się głosy o moim potencjalnym wystąpieniu nt. Korporacyjnej Javy (może właśnie o EJB3/JPA) na Uniwersytecie Gdańskim. Kuba Neumann z Uniwersytetu Gdańskiego organizuje w semestrze letnim wykład poświęcony zaawansowanym technologiom w Javie. Spora część wykładów będzie poświęcona Korporacyjnej Javie (JSF, EJB, JPA, Web Services) i towarzyszącym nowoczesnym technologiom np. AJAX. Niektóre specjalistyczne wykłady wygłoszą zaproszeni goście.
Jeśli są chętni spoza Uniwersytetu Gdańskiego, którzy byliby zainteresowani w przedsięwzięciu oraz dyskusjach (w trakcie i po wykładach oraz na forum) sugeruje się kierowanie sugesti i wniosków bezpośrednio na jego ręce.

06 grudnia 2007

NetCAT 6.0 zakończony - Jacek Laskowski, Poland (513 CAT points)

7 komentarzy
Otwieram wiadomość od Jirki na grupie NetBeans IDE 6.0 Community Acceptance Testing program (NetCAT) (grupa zajmująca się sprawdzeniem przydatności NetBeans IDE 6.0 do publicznej "konsumpcji"), a tam, ku mojemu ogólnemu zdumieniu, napisano:

I am glad to announce that final CAT points were counted and published [1]. I apologize for the delay but I had to resolve several urgent Update Center publishing requests first.

Now, let me announce our winners! :-) I think it's actually not any surprise for those of you who monitored NetCAT communication channels regularly. So, I am happy to congratulate to the following 3 NetCAT participants:

1. Jacek Laskowski, Poland (513 CAT points)
2. Daniel Sheppard, United Kingdom (326 CAT points)
3. Tetsu Soh, Japan (317 CAT points)

Really good job guys! You deserve some extra award and I will contact you privately later this week.

[1] http://qa.netbeans.org/processes/cat/60/participants.html

Wciąż nie mogę uwierzyć w różnicę w punktach między pierwszym miejscem, a kolejnymi. Czułem, że liczba zgłoszonych przeze mnie usterek do NetBeans IDE 6.0 oraz liczba recenzji artykułów była duża, ale żeby było ich aż tyle?! Wręcz niemożliwe (!) Najlepiej przyjrzeć się punktacji u dołu strony NetCAT 6.0 - Participants of NetCAT 6.0 program i...samemu przeliczyć ;-)

Pora zająć się czymś firmowym - wracam do ewaluacji IBM Rational Application Developer v7.5 Open Beta i specyfikacji EJB 3.0. A jutro do Poznania!

05 grudnia 2007

RAD 7.5 zainstalowany - prosta aplikacja Java EE 5 działa bez zarzutu na WAS 6.1

7 komentarzy
Właśnie zakończyłem instalację IBM Rational Application Developer v7.5 Open Beta (dalej po prostu RAD), o którym pisałem kilka dni temu (IBM Rational Application Developer for WebSphere v7.5 Open Beta). Zapoznałem się z dokumentacją, której muszę przyznać, że nie ma wiele odnośnie nowych funkcjonalności RADa i zabrałem się za stworzenie prostej aplikacji Java EE 5 z bezstanowym ziarnem sesyjnym oraz servletem, który za pomocą adnotacji @EJB wywołuje go. Bez specjalnej znajomości IBM WebSphere Application Server 6.1 (z poprawką 6.1.0.13 i dodatkami dla EJB 3.0 i Web Services), który jest domyślnym środowiskiem uruchomieniowym w RADzie dla aplikacji korporacyjnych, aplikacja uruchomiła się poprawnie. Jak tak dalej pójdzie, będzie to moje podstawowe narzędzie podczas mojego piątkowego wykładu o EJB3 na Politechnice Poznańskiej.

Więcej o zmianach i samym produkcie w dokumencie IBM Rational Application Developer for WebSphere Software, Version 7.5 beta Release Notes.

Dla zainteresowanych szczegółami instalacji i funkcjonalności RADa załączam kilka zrzutów ekranu. Mogą się przydać przed podjęciem decyzji o jego instalacji i popróbowaniu się z nim.

Po rozpakowaniu 11 paczek instalacyjnych, postąpiłem zgodnie z dokumentacją instalacji i uruchomiłem instalatora.



Początkowo napotkałem na błąd związany albo ze zbyt długą nazwą (znany błąd w Windows), albo z użyciem znaku wykrzyknika w nazwie katalogu - C:\!Rational Application Developer v7.5.



Przeniosłem katalogi disk do katalogu C:\rad75 i rozpocząłem instalację jeszcze raz. Tym razem było w porządku.



Kilka klik, klik, klik i skończyłem na ekranie, gdzie mogłem dokonać wyboru interesujących mnie funkcjonalności (u dołu znajduje się informacja ile to cacko zajmuje).



Jeszcze rzut oka na ekran podsumowujący mój wybór



i po bodajże 30 minutach, RAD 7.5 był już zainstalowany.



Wciśnięcie przycisku Zakończ i jestem uRADowany.

Najpierw rzut oka na wersje RADa



a później samego Eclipse. Czy ja dobrze widzę, że korzystam ze świeżutkiego Eclipse 3.3.2?! To jest bardziej świeże niż to, co aktualnie używam - 3.3.1 (!).



Rozejrzyjmy się w możliwościach RADa. Zacznę od What's New w narzędziach wspierających dla Java EE 5



a następnie EJB 3.0



aż w końcu przechodzę do narzędzi dla JPA



Wygląda interesująco. Przez kilka kolejnych dni zapewne będzie to moje podstawowe narzędzie pracy.

04 grudnia 2007

Recenzja książki "Hibernate. Od Nowicjusza do Profesjonalisty"

3 komentarzy
Zebrałem się w sobie i udało mi się zrecenzować moją pierwszą, techniczną książkę Hibernate. Od Nowicjusza do Profesjonalisty wydawnictwa Power Net. Przez długi okres czasu nie mogłem się do tego zabrać, ciągle odkładając recenzję na później. A bo to specyfikacja JPA ciekawsza, a bo to EJB3 i tak w kółko. Książka leżała i czekała. I się w końcu doczekała. Czym więcej czytałem o JPA i EJB3, tym mniej miałem ochoty przeczytać tę książkę. W dodatku, w międzyczasie nadchodziły inne książki i ta po prostu traciła na ważności. Ostatecznie jednak, okazało się, że należało przeczytać książkę zaraz po jej otrzymaniu, gdyż ciekawostki jakie znalazłem o Hibernate przeszły moje najśmielsze oczekiwania. Nie zamierzam ich tutaj przedstawiać, gdyż książka robi to w specyficzny acz przyjemny sposób. Bez żadnych oporów mogę śmiało napisać, że książka warta była poświęconego jej czasu. Zdarzyło mi się już kilkakrotnie do niej zaglądać w poszukiwaniu informacji, więc nadal wypełnia swoją misję. I treść książki, jak i jej polskie tłumaczenie, sprawiają, że książka należy do obowiązkowych lektur każdego programisty Java. Polecam!

Pełna recenzja znajduje się w moim Wiki - Recenzja książki "Hibernate. Od Nowicjusza do Profesjonalisty".

03 grudnia 2007

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

0 komentarzy
Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG) zaprasza na XIX spotkanie, które odbędzie się we wtorek 4.12.2007 o godzinie 18:30 w sali 4420 Wydziału MIMUW przy ul. Banacha 2 w Warszawie.

Temat prezentacji: EJB 3.0 z JPA 1.0 w POPie (Pytania i Odpowiedzi z Przykładami)
Prowadzący: Jacek Laskowski

UWAGA: Spotkanie rozpoczyna się wyjątkowo o godzinie 18:30.

Specyfikacja Enterprise JavaBeans 3.0 (EJB3), której integralną częścią jest Java Persistence API (JPA), to jedna z kluczowych elementów specyfikacji Korporacyjnej Javy 5 (Java EE 5). Jeszcze do niedawna wielu z przyjemnością zapomniałoby całkowicie o istnieniu EJB zastępując ją alternatywnymi rozwiązaniami i dopiero czynny udział osób związanych z projektami otartymi, m.in. Hibernate, czy Spring Framework sprawił, że EJB3 stał się ciekawym rozwiązaniem, po które można sięgnąć z przyjemnością podczas tworzenia rozwiązań korporacyjnych opartych o platformę Java EE 5. Biorąc pod uwagę ścisłą integrację EJB3 z pozostałymi elementami Java EE 5, nie sposób nie korzystać z jego dobrodziejstw, a jest ich wiele, z czego na szczególną uwagę zasługują - deklaratywne określanie wykorzystania usług serwera aplikacji Java EE 5 jak bezpieczeństwo, transakcje, trwałość, utrzymywanie sesji, czy udostępnianie ziaren EJB jako usług sieciowych, a skończywszy na elementach AOP w postaci mechanizmów przechwytywania zdarzeń rozwojowych ziaren.

Spotkanie będzie prowadzone w formie warsztatu. Rozpoczniemy od stworzenia wszystkich typów ziaren EJB, następnie zostanie zaprezentowana integracja z warstwą servletów, po czym przejdziemy do mechanizmu przechwytywania zdarzeń (interceptorów), aby skończyć na sesji pytań i odpowiedzi, które sprawią, że pozostały czas spędzimy na dyskusji, czy w ogóle warto się zajmować EJB3, w kontekście istnienia technologicznie zaawansowanych rozwiązań alternatywnych (jeśli takowe w ogóle istnieją). Właśnie pojawiła się najnowsza wersja NetBeans IDE 6, której ideą przewodnią było uproszczenie tworzenia aplikacji korporacyjnych w Javie, więc w połączeniu z serwerem GlassFish będzie to nasza platforma programistyczna. Spotkanie będzie kontynuacją doświadczenia polegającym na prowadzeniu prezentacji z minimalną porcją slajdów, gdzie motorem napędowym będą sami uczestnicy spotkania.

Jacek Laskowski zajmuje się Korporacyjną Javą od pierwszego dnia jej opublikowania. Jest członkiem zespołów rozwojowych Apache Geronimo, Apache OpenEJB, Apache ServiceMix, Apache XBean oraz Apache ActiveMQ. Zajmuje się rozpoznawaniem technologii upraszczających tworzenie aplikacji korporacyjnych z Java EE 5, a swoje spostrzeżenia publikuje w Notatniku Projektanta Java EE oraz na swoim Notatniku-Wiki. Jest założycielem i liderem Warszawskiej Grupy Użytkowników Javy (Warszawa JUG). Jacek jest członkiem zespołu NetBeans 6.0 Community Acceptance Test (poprzednio w NetCAT 5.0 oraz 5.5). Ideę dzielenia się wiedzą wprowadza w życie poprzez wystąpienia na konferencjach krajowych i zagranicznych. Służbowo związany z firmą IBM jako konsultant oprogramowania.

Planowany czas prezentacji to 1,5 godziny. Na zakończenie (około 15 minut) planowana jest dyskusja o wrażeniach z minionej konferencji Warsjava organizowanej przez Warszawa JUG w dniu 17.11.2007 oraz o kolejnych planach konferencyjnych wokół Javarsovia.

Wstęp wolny!

Zapraszam w imieniu Warszawa JUG!

02 grudnia 2007

IBM Rational Application Developer for WebSphere v7.5 Open Beta

3 komentarzy
W końcu się pojawił - IBM® Rational® Application Developer for WebSphere® v7.5 (w skrócie RAD 7.5), chociaż na razie wyłącznie w wersji OPEN BETA. Zgodnie z zapowiedziami wersji oficjalnej, produkcyjnej można oczekiwać jeszcze w tym miesiącu. Wszyscy, którzy zainteresowani są tworzeniem aplikacji zgodnych z Korporacyjną Javą 5 i związanych z platformą Eclipse mogą wreszcie odetchnąć i skorzystać z narzędzia, które odpowiada możliwościom NetBeans IDE 6. Jeśli wszystko pójdzie zgodnie z planem, to i NetBeans IDE 6, i RAD 7.5 będą dostępne produkcyjnie w tym miesiącu - grudzień 2007 (!) Zapowiada się dużo pracy przy ewaluacji oprogramowania przed Nowym Rokiem 2008.

Zgodnie z opisem produktu na stronie programu IBM® Rational® Application Developer for WebSphere® v7.5 Open Beta:

Rational Application Developer for WebSphere software extends Eclipse with visual construction development tools that improve Java™ developers productivity and shortens development and test lifecycle by helping them rapidly design, develop, assemble, test, profile and deploy high quality Java/J2EE™, Portal, Web, Web services and SOA applications.

a dalej napisano:

Delivering New & Emerging Programming models & Applications: Enhanced capabilities to deliver modern applications in emerging programming models using tools that help create EJB 3.0, JPA, Web Services with JAX-WS 2.0/JAX-B 2.0 and reliable secure profile applications. Additional support for the new JSF 1.2, JSP 2.1 and Servlet 2.5 standards is provided.

oraz

Latest Standards support: Includes latest standards, such as JEE5, RSP 1.0, WS-Policy Assertions for Web Services, WS-Reliable Messaging, WS-Addressing, MTOM, SOAP 1.2, WS-Secure Conversation and SIP (JSR 289).

Z mojego punktu widzenia produkt warty ewaluacji. Skończyłem jego pobieranie i zaraz przystępuję do instalacji. Ciekawe z jaką wersją Eclipse pracuje RAD 7.5? I w końcu jakie serwery aplikacyjne wspiera? Spodziewam się WAS 6.1 z rozszerzeniem dla EJB 3.0 (IBM® WebSphere® Application Server Version 6.1 Feature Pack for EJB 3.0) oraz Web Services (Feature Pack for Web Services for WebSphere Application Server V6.1), ale przede wszystkim Apache Geronimo 2. Już nie mogę się doczekać, aby się przekonać samodzielnie o możliwościach RAD 7.5 względem NetBeans 6.