tag:blogger.com,1999:blog-209416812024-03-20T16:11:58.277+01:00Jacek Laskowski scala jawnieCzęsto po technicznej stronie polskiej społeczności programistycznejAnonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.comBlogger73125tag:blogger.com,1999:blog-20941681.post-75030578811237509792011-10-17T20:58:00.000+02:002011-10-18T08:49:09.485+02:00Podsumowanie warsztatów warsjawa 2011<h2>O Maksymie na wstępie</h2>Dzisiaj, o 17:24, <b>Maksym</b> ukończył 2 tygodnie życia i pracuje pod systemem, w którym nie wykryto jakichkolwiek <i>"bugów"</i>. Zdrowiuteńki bobas. Na razie <i>"uptime"</i> optymalny i oscyluje wokół 3h - niestety, głównie w dzień. Czasami wymaga pomocy przy wejściu w stan <i>"sleep"</i>, ale ogólne zachowanie poprawne. Wszystkie <i>"testy zielone"</i>, a z każdym dniem użytkownicy coraz bardziej rozumieją zachowanie systemu. <i>"Dział IT"</i> w szpitalu na Madalińskiego wydał ocenę pozytywną i kontynuujemy zasilanie.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitElL61UpvHKqpzn9V3aOWM4IME8UA2znv2Q0-cCOG9rHD86fugThDkNIRmjNsStipEMFdMVzBkzxHL5F-aUF39Ans5kRVjizJG29O3tl-nNboyZectquEZrk9-C4E6DQNN9hYGA/s1600/maksym.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="225" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitElL61UpvHKqpzn9V3aOWM4IME8UA2znv2Q0-cCOG9rHD86fugThDkNIRmjNsStipEMFdMVzBkzxHL5F-aUF39Ans5kRVjizJG29O3tl-nNboyZectquEZrk9-C4E6DQNN9hYGA/s400/maksym.jpg" /></a></div><br />
Wczoraj, w niedzielę, Maksym doświadczył przyjemności spaceru i po wczorajszych 20 minutach dzisiaj zaaplikowaliśmy <i>"poprawkę"</i> w postaci czterdziestominutowego spaceru. Wciąż bezawaryjne działanie Maksyma pozwala nam sądzić, że poprawka została wdrożona poprawnie. Jednym słowem - współpraca jest bardzo owocna. Bo to jest <b>"Maksym i już!"</b>, czasami zwany <b>Maksymiusz</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP_7lbxlT4RDPWMwMfyUkve_xPMMc-yLnt6WCphfeGWLcIZVhTHIursudAH_sDmiM2kmjR8wYPCtd4-11EVAc_anLum6V42bXuyWMe49ESete7ImFr5Y8NwrpPqV7UMu50Qxx-7g/s1600/maksym-spi.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="271" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP_7lbxlT4RDPWMwMfyUkve_xPMMc-yLnt6WCphfeGWLcIZVhTHIursudAH_sDmiM2kmjR8wYPCtd4-11EVAc_anLum6V42bXuyWMe49ESete7ImFr5Y8NwrpPqV7UMu50Qxx-7g/s400/maksym-spi.png" /></a></div><br />
<h2>warsjawa 2011 - sobotnie spotkanie społeczności javowej</h2><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://warsjawa.pl" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="133" width="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFqLpkQXRlaiW3YsUEklMsPjsBuhqmb3qSfc3bidpPu1YbKLd0RCy7l4F9blnOeCnSpLbDV1j2Zq32L5fj0ev3rc7hAb9L1x4KdT2B6RIaKK5SZ87waR7YJk1lJBY3QH3M4lmOaQ/s400/warsjawa2011-logo.png" /></a></div>Kolejne wydarzenie polskiej społeczności javowej za nami. <b>IV warszawskie warsztaty javowe</b> <a href="http://warsjawa.pl">warsjawa 2011</a> przyciągnęły 220 uczestników i udowodniły, że wciąż jest zapotrzebowanie na konferencje społecznościowe wokół Javy. Jeśli ktokolwiek wieszczy koniec jej popularności, to w Polsce nie ma to zastosowania. Tym razem zapóźnienie naszego kraju ma swoje dobre strony.<br />
<br />
Z 4 osobami ze Szczecina i 1 z Łodzi można śmiało powiedzieć, że chociaż w części warsjawa zaoferowała ciekawą propozycję dla przyjezdnych i tym samym, nielicznie, ale zawsze, byliśmy ogólnopolscy. Chciałbym wierzyć, że było więcej osób spoza Warszawy niż wspomniane 5 osób. Żałuję, że nie mogę podzielić się bardziej precyzyjnymi danymi.<br />
<br />
<b>Aktualizacja z 18.10.2011:</b> <i>"Jak się okazało na dworcu ze Szczecina było co najmniej 6 osób."</i> (źródło: <a href="http://luksza.org">Darek "ten od EGita" Łuksza</a>)<br />
<br />
Na razie pojawiły się jedynie pozytywne komentarze i, nieskromnie powiem, nie spodziewam się innych.<br />
<br />
Poniżej wszystkie opinie, jakie udało mi się zebrać do tej pory.<br />
<br />
<b>Anna Małgorzata Mazińska</b> napisała na <a href="http://groups.google.com/group/warszawa-jug/msg/a3b85716264250a6">forum WJUGa</a>:<br />
<br />
<i>"Witajcie, chciałam podziękować organizatorom Warsjawy za ogarnięcie takiego fajnego eventu ;) tym razem przybyłam jako zwykły uczestnik, aby się trochę doedukować, ale udało się w przerwach między warsztatami pstryknąć trochę fotek : https://picasaweb.google.com/103530179614305430424/Warsjawa2011 (w galerii są fotki moje i Krzyśka)"</i><br />
<br />
<b>Piotr Zajączkowski</b> na <a href="http://groups.google.com/group/warszawa-jug/msg/4ee9eabc6ec15879">forum WJUGa</a>:<br />
<br />
<i>"Dołączam się do podziękowań za zorganizowanie Warsjawy :) Było naprawdę bardzo miło i wyjątkowo merytorycznie (przynajmniej z mojego punktu widzenia ;) ). Szkoda tylko, że tak krótko - w takiej atmosferze to mogłoby trwać i kilka dni ;) hehe ;)<br />
W każdym razie dziękuję jeszcze raz organizatorom, pomysłodawcom, prelegentom, sponsorom i uczestnikom - było super :)"</i><br />
<br />
<b>Michał Lewandowski</b> na <a href="http://groups.google.com/group/warszawa-jug/msg/fb78925ee3f050d5">forum WJUGa</a>:<br />
<br />
<i>"Też dołączam się do podziękowań dla tych którzy mieli swój udział w organizowaniu.<br />
Atmosfera spotkania napawała chęcią do działania !<br />
Żałuję tylko, że musiałem wyjść o 15:30, a dowiedziałem się potem, że pierwszy raz w życiu byłem wylosowany i wygrał bym coś pierwszy raz w życiu."</i><br />
<br />
<b>Krzysztof Nielepkowicz</b> na <a href="http://groups.google.com/group/warszawa-jug/msg/cfa13e6245d081e0">forum WJUGa</a>:<br />
<br />
<i>"Swietna konferencja i warsztaty! Mimo braku sieci na warsztatach GWT prowadzący (Paweł Cesar Sanjuan Szklarz) świetnie spobie poradził i repozytorium rozprowadził na gwizdkach :P Niby warsztat dla początkujących a sporo fajnych informacji o których nie piszą w książkach np kompilowanie wybranej permutacji czy pokazanie na czym naprawdę polega MVP :)"</i><br />
<br />
I już w prywatnej korespondencji (dane osobowe znane redakcji):<br />
<br />
<i>"Dzięki za organizację eventów podczas których ludzie skupieni wokół wspólnych zainteresowań mogą się spotkać i podyskutować."</i><br />
<br />
W skład komitetu organizacyjnego weszli:<br />
<ul><li>Łukasz Lenart</li>
<li>Bartek Zdanowski</li>
<li>Marcin Zajączkowski</li>
<li>Tomasz Dziurko</li>
<li>Jacek Laskowski</li>
<li>Jakub Koperwas</li>
<li>Krzysztof Kozioł</li>
</ul>Bardzo dziękuję za udział i zapał, aby poświęcić swój czas w kolejnej społecznościówce grupy <a href="http://warszawa.jug.pl">Warszawa JUG</a>!<br />
<br />
Pojawiły się również zdjęcia z konferencji:<br />
<ul><li><b>Marcin Zajączkowski</b> z <b>Maćkiem Nyczką</b> opublikowali swoje na <a href="https://picasaweb.google.com/116891989919461415994/Warsjawa2011">https://picasaweb.google.com/116891989919461415994/Warsjawa2011</a></li>
<li><b>Anna Mazińska</b> opublikowała swoje na <a href="https://picasaweb.google.com/103530179614305430424/Warsjawa2011">https://picasaweb.google.com/103530179614305430424/Warsjawa2011</a></li>
</ul>Chętnie uzupełnię galerię o kolejne zdjęcia. Proszę o przesyłanie namiarów na nie na <a href="mailto:jacek@japila.pl">jacek@japila.pl</a>.<br />
<br />
<h2>Organizator i prelegent w jednym - "Java EE 6 Web Profile z Apache TomEE"</h2><br />
Mój udział w konferencji polegał na jej organizacji, ale nie mogłem się oprzeć pokusie, aby nie wrócić na deski i zaprezentować niedawno ochrzczonego jako certyfikowany <a href="http://openejb.apache.org/tomee">Apache TomEE</a> w temacie <b>"Java EE 6 Web Profile z Apache TomEE"</b>.<br />
<br />
Uczestnikom mojego wystąpienia bardzo dziękuję, a wszystkim polecam zapoznanie się z <a href="http://jaceklaskowski.pl/prezentacje/JacekLaskowski-warsjawa-ApacheTomEE-2011-10-15.pdf">moją prezentacją</a>. Uwagi i sugestie ku usprawnieniu moich, kolejnych wystąpień w temacie Apache TomEE mile widziane.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy0tnLsVqO96n_guE8gAra6HEKKa5gW87CCkyodGZQQzALkyGugGs437SoRhyp7we8aB_bEXL_bWdtwNvdpCyVJanOFEMi_yX61L73cedbs322oxYPTgogBr2tw8qaSTM2x6_mAg/s1600/jacek-tomee.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="267" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhy0tnLsVqO96n_guE8gAra6HEKKa5gW87CCkyodGZQQzALkyGugGs437SoRhyp7we8aB_bEXL_bWdtwNvdpCyVJanOFEMi_yX61L73cedbs322oxYPTgogBr2tw8qaSTM2x6_mAg/s400/jacek-tomee.jpg" /></a></div><br />
Ze spotkania wyciągnąłem potrzebę nieutralnego przekazywania materiału na wybrany temat i mimo zaangażowania w rozwój Apache TomEE (na razie bardzo pasywnie) nie tracić z oczu celu nadrzędnego - prezentacja rozwiązania z uwypukleniem celów jego powstania. Bez tego leży każde wystąpienie, bo wiedza, jak zainstalować, czy uruchomić i stworzyć aplikację, to zdecydowanie za mało. Należy oczekiwać więcej i taki cel stawiam sobie na kolejne wystąpienia.<br />
<br />
I tutaj kolejne postanowienie - wzbogacenie wiedzy branżowej. Nie wiem jeszcze, czy będzie to bankowość, telekomunikacja, czy ubezpieczenia, ale chociażby z jej podstawowym rozpoznaniem znacząco usprawni to nazewnictwo klas i słownictwo, którego będę używał do przedstawienia technologii. Tego typu prezentacje najbardziej lubię i bardzo mi ich brakuje w Polsce. Mam wrażenie, że można tutaj wiele zdziałać i znacząco podreperować poziom moich prezentacji. Nie mogę jednak znaleźć książek czy innych publikacji, w których mógłbym zapoznać się z jakimi problemami biznesowymi spotyka się dana branża, w których IT i jej "zabawki" mogłyby pomóc. Najbardziej interesują mnie procesy biznesowe, które są motorem napędowym systemów w branży. Coś ala sprzedaż, aktywacja, pozyskiwanie klienta i jego obsługa. Możesz coś zaproponować w temacie? Chciałbym móc nazywać moje aplikacje "Bank" zamiast "MyWebApp", albo "CustomerManagement" zamiast "HelloWorld". Zastanawiam się, czy taka publikacja w ogóle istenieje, a nie jest jedynie domeną osób, które siedzą w temacie?! W końcu i nieinformatykom udaje się w IT, więc dlaczego informatykowi nie miałoby się udać poza IT?! Pomożesz?<br />
<br />
Na moje pytanie odnośnie mojego warsztatu prezentacyjnego i literackiego, tutaj na blogu i wiki, padły propozycje, aby na blogu prezentować tematy krótko i ze zrzutami ekranu, okraszone opisem problemów, na które napotykałem z ich rozwiązaniami (jeśli istnieją), a na Wiki publikować dłuższe wpisy, które aspirują do miana artykułów. To zgadza się z moim postrzeganiem tych narzędzi, więc wystarczy utrzymać postanowienia i będzie cacy. Dwóch zadowolonych czytelników, to w końcu lepiej niż żaden :)Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com6tag:blogger.com,1999:blog-20941681.post-22514647439782933122011-10-14T23:30:00.000+02:002011-10-15T07:09:16.237+02:00warsjawa i TomEE już jutro - Java EE 6 Web Profile z Apache TomEE o 16:15Maksym to fajny gość. W poniedziałek stuknął mu tydzień i przeszedł pierwsze badanie kontrolne w szpitalu na Madalińskiego.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCaDsxbjVWPWqchl9aqqKmdlqNyf0UjR40cOYJ8lnRyKvlwU1E6RLzMsKAncBDbfd3HYlDSIQyLcQhLPPXV49d0ZVVC5TTXyVDMLRwQTe2Yu4ZOS8c-wU2th6qii_Pexu6ErZzpw/s1600/maksym-figa-z-makiem.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="268" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCaDsxbjVWPWqchl9aqqKmdlqNyf0UjR40cOYJ8lnRyKvlwU1E6RLzMsKAncBDbfd3HYlDSIQyLcQhLPPXV49d0ZVVC5TTXyVDMLRwQTe2Yu4ZOS8c-wU2th6qii_Pexu6ErZzpw/s400/maksym-figa-z-makiem.png" /></a></div><br />
Jego poczucie humoru przerasta moje wyobrażenia i na propozycję uśmiechnięcia się do kamery zdecydował skwitować to...figą z makiem (!) No cóż, powiedzmy, że miałem zły dzień, a on dobrą zabawę (a może odwrotnie?! :))<br />
<br />
W tę <b>sobotę</b>, <b>15 października</b> jest <a href="http://warsjawa.pl">warsjawa 2011</a>, a na niej ja jako prelegent z tematem <a href="https://github.com/warszawajug/warsjawa2011/wiki/Java-EE-6-Web-Profile-z-Apache-TomEE">Java EE 6 Web Profile z Apache TomEE</a>. Czym bliżej wystąpienia, tym więcej mam wątpliwości, co może zainteresować publikę. Przy takim natłoku certyfikowanych serwerów aplikacyjnych nie wystarczy jedynie pokazać, że działa, ale musi być w <a href="http://openejb.apache.org/tomee">Apache TomEE</a> to coś, co zachęci do jego dalszego poznania.<br />
<br />
Możliwość użycia zestawu <b>Java EE 6 Web Profile</b> jest kusząca, ale tylko, jeśli idzie w parze z daleko posuniętą prostotą użycia. Podczas wystąpienia zaprezentuję działanie aplikacji demonstracyjnych dostarczanych w ramach NetBeans IDE 7.1 na <b>TomEE</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSQBD-ZmHd0mm2lTjb8cjUZ86Bqclkdru9i-Gb3XEAvhIkFG5zb0L6lrb3ZNYqoydvOw8q7CaqQ4-n1HkiL-WrKEfMf1lB3L9bvrgkqh0KdH-QU8ar8LJyfPUm35gK1LWiWX355Q/s1600/netbeans71-samples-projects.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="233" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSQBD-ZmHd0mm2lTjb8cjUZ86Bqclkdru9i-Gb3XEAvhIkFG5zb0L6lrb3ZNYqoydvOw8q7CaqQ4-n1HkiL-WrKEfMf1lB3L9bvrgkqh0KdH-QU8ar8LJyfPUm35gK1LWiWX355Q/s400/netbeans71-samples-projects.png" /></a></div><br />
Sprawdzimy również, jak to jest skonfigurować TomEE z bazą danych <b>MySQL</b>.<br />
<br />
Ideą jest, aby zachęcić do dalszych, pewnie już samodzielnych prób z tym zestawem w zaciszu domowego kominka, a podczas wystąpienia będę miał godzinę, aby ten ogień rozpalić. Powinno być ciekawie.<br />Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com0tag:blogger.com,1999:blog-20941681.post-19112596715115637342011-10-10T21:30:00.000+02:002011-10-10T23:01:16.999+02:00Apache TomEE w NetBeans IDE 7.1 - poprawka odnośnie nazwy serweraDzisiaj zarejestrowałem Maksyma w Urzędzie Stanu Cywilnego w Warszawie i już oficjalnie nazywa się Maksym Patryk Laskowski. Drugie imię ma po swoim starszym bracie, którego z kolei drugie imię to Jacek (pozostawiam jako zagadkę po kim). Za miesiąc "ukonstytuowanie" obywatela Maksyma, kiedy to zostanie mu przypisany numer PESEL. System już wie o jego istnieniu :)<br />
<br />
Wczoraj pisałem, że jedyną możliwą nazwą dla serwera Apache Tomcat w NetBeans IDE 7.1 Beta może być <i>"Apache Tomcat"</i>. Szczęśliwie nie musiałem długo czekać, aby przekonać się, że po prostu przeoczyłem pierwszy ekran w asystencie definiowania serwera.<br />
<br />
Wybieramy zakładkę <i>Services</i>, a następnie menu <i>Add Server...</i> dla węzła <i>Servers</i>. Na pierwszym ekranie, u dołu, istnieje możliwość nadania własnej nazwy serwera.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrl3DnuQDa9uNOnp7QCw7l38RK3X2q3W7YhaM7HTnw0gg2H1RtOQRNDSD8FCc331cuChsH4N7_X0-1jsIqwPJ7ArSxkCwQXkq6laF7u9Bnno7Qh4ZmRrj-kxH7IDPSRbZdcEic6g/s1600/netbeans-tomee-add-server.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="274" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrl3DnuQDa9uNOnp7QCw7l38RK3X2q3W7YhaM7HTnw0gg2H1RtOQRNDSD8FCc331cuChsH4N7_X0-1jsIqwPJ7ArSxkCwQXkq6laF7u9Bnno7Qh4ZmRrj-kxH7IDPSRbZdcEic6g/s400/netbeans-tomee-add-server.png" /></a></div><br />
Wystarczy nazwać ją <i>"Apache TomEE"</i> i wskazać na katalog, w którym rozpakowano TomEE. Proces konfiguracji nie powinien być obcy osobom pracującym wcześniej z Tomcatem, bo TomEE to z zewnątrz stary, poczciwy Tomcat (a jedynie bebechy są lekko "rozdęte" o funkcjonalność wymaganą przez Java EE 6 Web Profile, np. EJB 3.1 Lite czy JPA2).<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIahVk3O_DccVNvj8fEUb0ATuGqRfNnb0J6qQeb8z9iHB-2axs-rNk__xT8ofyGkJiLjEZGlhuqg4KCHDpX4gm_2LPAP9oMLrZiD4HodUNVSdmP0GSOV5xYeFpk4BSJnZRzzeWJw/s1600/netbeans-tomee-servers.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="264" width="281" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIahVk3O_DccVNvj8fEUb0ATuGqRfNnb0J6qQeb8z9iHB-2axs-rNk__xT8ofyGkJiLjEZGlhuqg4KCHDpX4gm_2LPAP9oMLrZiD4HodUNVSdmP0GSOV5xYeFpk4BSJnZRzzeWJw/s400/netbeans-tomee-servers.png" /></a></div><br />
Od tej pory mam swoje, wymarzone wsparcie narzędziowe dla TomEE (bez jakiejkolwiek zmiany w NetBeans IDE). To duża zaleta móc skorzystać z dobrodziejstw nowego narzędzia posługując się wiedzą z jego protoplasty.<br />
<br />
Jakby na żądanie, pojawił się 13-minutowy filmik (chyba po portugalsku, ale język nie powinien przeszkadzać w zrozumieniu treści) prezentujący konfigurację i pracę z TomEE w NetBeans IDE - <a href="http://www.youtube.com/watch?v=7fFj5b3HotU">Apache TomEE e NetBeans 7</a>. Dodatkowo polecam nagranie z prezentacji "Apache TomEE: Tomcat with a kick" z JAX London - <a href="http://www.youtube.com/watch?v=GJ_32qD1TrA">Apache TomEE: Tomcat with a kick from David Blevins & Jonathan Gallimore @ JAX London part 1 of 2</a> oraz <a href="http://www.youtube.com/watch?v=rehZfKrptx0">Apache TomEE: Tomcat with a kick from David Blevins & Jonathan Gallimore @ JAX London part 2 of 2</a>.<br />
<br />
Podczas nadchodzącej konferencji <a href="http://warsjawa.pl">warsjawa 2011</a> w nadchodzącą sobotę, 15.10 w Warszawie będę miał możliwość zaprezentowania Apache TomEE w całej okazałości. Zapraszam!<br />
<br />
Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com0tag:blogger.com,1999:blog-20941681.post-61375334157567826452011-10-09T19:30:00.000+02:002011-10-09T19:30:00.473+02:00Apache TomEE w NetBeans IDE 7.1 - 2:1 dla błędówNie trzeba wielkiego umysłu, żeby wiedzieć, że w życiu kilkudniowego dziecka wszystko, co robi, określane jest jako <i>pierwsze</i>. <i>Pierwszy</i> raz pojawił się grymas na twarzy, który przypominał uśmiech, <i>pierwsza</i> noc w domu (i nadzieja, że będzie ją przesypiał spokojnie z 3 przerwami na jedzenie - nota bene, mimo, że dzieciak mógłby spać całą noc, to i tak po 3h będzie wybudzany na jedzenie!), <i>pierwsza</i> kąpiel w domu, <i>pierwsze</i> coś jeszcze innego i tak lista rośnie. Jak na razie Maksym dostarcza nam całą masę wrażeń. Jest ich tyle, że przy nadchodzącej zimie żadne mrozy nie są nam straszne. Maksym śpi regularnie, je i nie wpływa specjalnie na domowników swoją obecnością, a mimo to wszyscy chodzą jak nakręceni, szczególnie podekscytowani. Cudo dzieciaczek.<br />
<br />
W sobotę, a chyba już i w piątek, postanowiłem popróbować się z <a href="http://openejb.apache.org/tomee">Apache TomEE</a> i <a href="http://netbeans.org">NetBeans IDE 7.1</a>. Oba produkty wciąż w fazie aktywnego rozwoju, więc można spodziewać się kilku, może nawet kilkunastu czknięć. Tych zawirowań jest o tyle mniej w przypadku Apache TomEE, na ile pozwala <a href="http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html">certyfikacja Java EE 6 Web Profile</a>. Dla zwrócenia uwagi napiszę, że pod względem zgodności z Java EE 6 nie ustępuje miejsca JBoss AS 7.0.1 (!), a to uważam za niemałe osiągnięcie.<br />
<br />
NetBeans IDE wspiera Apache Tomcat jako środowisko uruchomieniowe dla Java EE 6, a więc i Apache TomEE - w końcu to wzbogacony Apache Tomcat. Przy odrobinie szczęścia można pozwolić sobie na zestawienie środowiska programistycznego z oboma produktami. I tak faktycznie jest.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxiFc5Txd9S1oEb1eZI_hqCHgU0qIvZU9Ax9GNgg57VS4nr1SSXXttmusHHNM4WiVu-yZwqR_HHJINGsueUqOFm0D-BGdIP1x19XU3FXdxwyyVgkHXcHqVzLvhY4fezuEuDnfI0A/s1600/tomee-w-netbeans-services.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="298" width="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxiFc5Txd9S1oEb1eZI_hqCHgU0qIvZU9Ax9GNgg57VS4nr1SSXXttmusHHNM4WiVu-yZwqR_HHJINGsueUqOFm0D-BGdIP1x19XU3FXdxwyyVgkHXcHqVzLvhY4fezuEuDnfI0A/s400/tomee-w-netbeans-services.png" /></a></div>Wystarczy postępować zgodnie z wytycznymi asystenta do konfiguracji Apache Tomcat z tą różnicą, że katalogi wskazują na Apache TomEE i wszystko gra! Szkoda tylko, że nie można zmienić nazwy serwera na wybraną przez użytkownika, np. Apache TomEE lub podobnie.<br />
<br />
Nie wiem, co mnie podkusiło, ale postanowiłem spróbować się ze zmiennymi środowiskowymi (ang. <i>environment entries</i>) i ich dostępem z servletu. To chyba było z powodu tego zdania na <a href="http://openejb.apache.org/tomee">stronie TomEE</a>:<br />
<br />
<i>"Any Tomcat provided resources, say from a context.xml, can be looked up or injected."</i><br />
<br />
Tak, na pewno to było to. Stworzenie servletu w NetBeans to chwila. W międzyczasie pytanie o rejestrację servletu w web.xml, na które odpowiedziałem stanowczym nie, tj. zatwierdziłem domyślne ustawienie <i>"Add information to deployment descriptor (web.xml)"</i>. Od wersji Servlet 3.0 deskryptor web.xml jest opcjonalny, więc po co mi to?!<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbZ9fmX6EEGu-ET74mSUi1ij8m8hpOCqqG84Qsf8aFD57jCvV84CD7zHsoPA5dFepZGs6AIe62-FAH7jfew27PxzY49GIKsgjo5DUPMcML9MlCpNOGP8EFSGhc_nPNwYp9fYujJw/s1600/tomee-configure-servlet-mapping.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="288" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbZ9fmX6EEGu-ET74mSUi1ij8m8hpOCqqG84Qsf8aFD57jCvV84CD7zHsoPA5dFepZGs6AIe62-FAH7jfew27PxzY49GIKsgjo5DUPMcML9MlCpNOGP8EFSGhc_nPNwYp9fYujJw/s400/tomee-configure-servlet-mapping.png" /></a></div><br />
I tu się zaczęło.<br />
<br />
Najpierw trafiłem na brak wsparcia przez TomEE dla aplikacji webowych bez deskryptora web.xml. Zgłosiłem błąd <a href="https://issues.apache.org/jira/browse/TOMEE-27">TOMEE-27 UnknownModuleTypeException thrown when no-web.xml webapp deployed</a>. Nie dawało mi to jednak spokoju i w trakcie sobotniego przesiadywania przed kompem, poprawiłem go. Taa, sam jestem pod niemałym wrażeniem, że zebrałem się w sobie i zrobiłem to.<br />
<br />
Z poprawką uruchomienie servletu z adnotacją @WebServlet i bez deskryptora web.xml stało się możliwe. Ciekawe, jak mogło się stać, że nie wyłapał tego zestaw certyfikacyjny Java EE 6 Web Profile TCK?!<br />
<br />
Na tym jednak nie koniec, bo głównym celem było dostanie się do zmiennej z context.xml (plik konfiguracyjny Tomcata, a tym samym i TomEE). Tutaj niestety nie mam dobrych wieści, bo wciąż nie ma wsparcia dla niej i pracuję nad <a href="https://issues.apache.org/jira/browse/TOMEE-28">TOMEE-28 Support for global environment entries (defined as <Environment> in server.xml)</a>. Tym samym wynik niekorzystny dla poprawek na rzecz 2 błędów. Na dzisiaj 2:1 w starciu błędy kontra poprawki.<br />
<br />
Całkiem przy okazji, natrafiłem na możliwość edycji server.xml z poziomu NetBeans - menu kontekstowe <i>Edit server.xml</i> dla serwera.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuzZFAhZEru-fWkZiBK1bWoWtaiUYVs2ShlEDftoBL6AECQYQZcWxlpTzLcfw2WYyLVLi0XZYTlu2ckx7aZtvb7Axn4exGUq0NtVJojxSOI7H913-zMFz1BxHnrpmY-fvw-eDnRw/s1600/netbeans-edycja-server-xml.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="381" width="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuzZFAhZEru-fWkZiBK1bWoWtaiUYVs2ShlEDftoBL6AECQYQZcWxlpTzLcfw2WYyLVLi0XZYTlu2ckx7aZtvb7Axn4exGUq0NtVJojxSOI7H913-zMFz1BxHnrpmY-fvw-eDnRw/s400/netbeans-edycja-server-xml.png" /></a></div><br />
Jak dla mnie całkiem użyteczna rzecz i przydała się już kilkakrotnie.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com13tag:blogger.com,1999:blog-20941681.post-15926393194820110252011-10-05T10:26:00.000+02:002011-10-06T00:28:29.677+02:00Java EE 6 Web Profile z Apache TomEE na warsjawie 2011Nie masz czasami uczucia, jakby wszystko, co czynisz w swoim życiu było już wcześniej ustalone? Mnie czasami nachodzi taka myśl.<br />
<br />
Wczoraj pisałem o moich wątpliwościach czytelniczych i jakby na dokładkę dostałem dzisiaj elektroniczne wydanie <a href="http://www.apress.com/9781430226598">Pro Android 2</a> z Apress. Nie ma więc już mowy o siedmiuset stronicowej cegle, którą muszę taszczyć ze sobą, aby móc ją czytać bez względu na miejsce i porę. Temat się rozwiązał, jakby za dotknięciem czarodziejskiej różdżki - wystarczyło napisać do wydawnictwa z prośbą o kopię i nie trzeba było długo czekać na odpowiedź. Ten temat mam rozwiązany.<br />
<br />
To jednak nie koniec moich kłopotów z terminarzem na najbliższe dni.<br />
<br />
Mogłem się przecież spodziewać, że konferencja JavaOne, która właśnie trwa w San Francisco, może zmienić moje plany na najbliższe 2 tygodnie z łatwością. A może to jednak nasza, lokalna <a href="http://warsjawa.pl/">warsjawa</a>, która odbędzie się za 2 tygodnie, <b>15 października</b> w Warszawie? Sądzę, że obie miały wpływ, ale to warsjawa faktycznie zmusiła mnie do zmian. Zaproponowałem temat <a href="https://github.com/warszawajug/warsjawa2011/wiki/Java-EE-6-Web-Profile-z-Apache-TomEE">"Java EE 6 Web Profile z Apache TomEE"</a> na warsjawę i zostałem przyjęty (wierzę, że to merytoryczne przygotowanie prelegenta, a nie jego urok czy udział w zespole organizatorów konferencji sprawiło, że tak się stało).<br />
<br />
Dla tych, którzy jeszcze nie doświadczyli Java EE 6 w okrojonej wersji profilu webowego będzie to doskonała okazja poznać temat, a głównym graczem będzie <a href="http://openejb.apache.org/">Apache TomEE</a>, czyli stary, ale wciąż jary i powszechnie wykorzystywany do tworzenia aplikacji korporacyjnych <b>Apache Tomcat</b> wzbogacony o elementy wymagane przez <b>Java EE 6 Web Profile</b>, czyli:<br />
<ul>
<li><b>Apache OpenEJB</b> - kontener EJB 3.1</li>
<li><b>Apache OpenWebBeans</b> - kontener CDI 1.0</li>
<li><b>Apache MyFaces</b> - kontener JSF 2.0</li>
<li><b>Apache OpenJPA</b> - kontener JPA 2.0 </li>
</ul>
Wszystkie z wymienionych dostarczają składników potrzebnych do zbudowania korporacyjnej wersji Apache Tomcat i przejścia przez rygorystyczne wymogi TCK dla Java EE 6 Web Profile. Właśnie wczoraj Apache Software Foundation (ASF) ogłosiło w <a href="https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces17">The Apache Software Foundation Announces Apache TomEE Certified as Java EE 6 Web Profile Compatible</a>, że:<br />
<blockquote>
<i>Apache TomEE has obtained certification as Java EE 6 Web Profile Compatible Implementation.</i> </blockquote>
Po około roku wytężonej pracy zespołowi programistów z projektu Apache OpenEJB udało się przejść przez TCK i <a href="http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html">stanąć dumnie w szpalerze certyfikowanych środowisk spełniających wymagania stawiane przez specyfikację</a>, obok takich tuzów jak Oracle GlassFish Server 3.x, Caucho Resin 4.0.17 i JBoss Application Server 7.<br />
<br />
Podczas warsjawy 2011 zamierzam przedstawić cele i zalety użycia Apache TomEE z <a href="http://netbeans.org/community/releases/71/">NetBeans IDE 7.1</a>. Tym samym nie powinno być już żadnych złudzeń, o czym będę się rozpisywał na tym blogu przez kolejne 2 tygodnie - Java EE 6 Web Profile, Apache TomEE i NetBeans IDE.<br />
<br />
Zachęcam do dzielenia się uwagami w komentarzach poniżej. Gdyby nękały Cię pytania związane z tematem, życzyłbym sobie poznać je już teraz, aby podczas konferencji być przygotowanym i odpowiedzieć na kilka. Przez godzinę i kwadrans mojej prezentacji należy oczekiwać kwadransu wprowadzenia, aby później przejść przez kilka przykładów demonstracyjnych. Do zobaczenia w sobotę w Warszawie.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com0tag:blogger.com,1999:blog-20941681.post-27593449046165440332011-01-03T21:49:00.002+01:002011-01-03T21:51:20.108+01:00NetBeans 7 i Add Embeddable EJB Container, Create JUnit Tests oraz Code Generation in pom.xmlW <b>Java EE 5</b> udostępniono możliwość uruchamiania <b>Java Persistence (JPA) 1.0</b> poza środowiskiem serwera aplikacyjnego - można przeczytać o tym w moim artykule <a href="http://www.jaceklaskowski.pl/wiki/Java_Persistence_API_w_samodzielnej_aplikacji">Java Persistence API w samodzielnej aplikacji</a>.<br />
<br />
W <b>Java EE 6</b>, poza <b>JPA 2.0</b>, można jeszcze uruchomić kontener <b>Enterprise JavaBeans (EJB) 3.1</b> oraz kontener <b>Contexts and Dependency Injection (CDI) 1.0</b>. O tym pierwszym - EJB 3.1 - pisałem w <a href="http://www.jaceklaskowski.pl/wiki/Embeddable_EJB_3.1_z_GlassFish_3.1_i_NetBeans_IDE_7.0">Embeddable EJB 3.1 z GlassFish 3.1 i NetBeans IDE 7.0</a>, a o drugim - CDI - w <a href="http://www.jaceklaskowski.pl/wiki/Contexts_and_Dependency_Injection_%28CDI%29_praktycznie_-_zestawienie_%C5%9Brodowiska_z_JBoss_Weld,_Arquillian_i_Apache_Maven_2">Contexts and Dependency Injection (CDI) praktycznie - zestawienie środowiska z JBoss Weld, Arquillian i Apache Maven 2</a>.<br />
<br />
Zacząłem drążyć temat EJB 3.1 z NetBeans 7 i całkiem przypadkiem doszukałem się dwóch użytecznych funkcji - <b>Add Embeddable EJB Container</b> oraz <b>Create JUnit Tests</b>. Sprawdźmy je w działaniu zamiast rozwodzić się nad ich użytecznością (albo ich brakiem).<br />
<br />
<i>Cmd+Shift+N</i> - <i>Maven > EJB Module</i>, podaj <i>Project Name</i>, np. aaa i <i>Finish</i>. Mamy projekt EJB zarządzany przez Apache Maven.<br />
<br />
<i>Cmd+N</i> - <i>Enterprise JavaBeans > Session Bean</i>, wciśnij <i>Next ></i>, wybierz pakiet z listy w <i>Package</i> i <i>Finish</i>. I mamy komponent EJB.<br />
<br />
Otworzy się nowa klasa ziarna EJB 3.1. W jej ciele, <i>Ctrl+i</i> i wybierz <i>Add Business Method...</i> i <i>OK</i>. Pojawi się nowa metoda <i>public void businessMethod()</i>. W jej ciele, wpisz <i>sout</i> i wciśnij <i>TAB</i>. Wpisz <i>Witaj!</i> W ten sposób masz gotowe do uruchomienia ziarno EJB z metodą biznesową, której zadaniem jest wyświetlenie <i>Witaj!</i><br />
<br />
Wybierz nowoutworzoną klasę <i>NewSessionBean</i> i z menu pod prawym klawiszem myszki wybierz <i>Tools > Create JUnit Tests</i>.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSgpNAdHPoq6tBBJjSZi5PooZsfMkOpcV77P-gaqqPViuC47duqwW5NZw_zUkV4O_2W2pUzobnXvKZCeVwpx5-lK9DcCgrg8K707VNXpGpJFgxVHP4q3dCaYb_toKWwveLi8AHsA/s1600/nb7-tools-create-junit-tests.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="320" width="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSgpNAdHPoq6tBBJjSZi5PooZsfMkOpcV77P-gaqqPViuC47duqwW5NZw_zUkV4O_2W2pUzobnXvKZCeVwpx5-lK9DcCgrg8K707VNXpGpJFgxVHP4q3dCaYb_toKWwveLi8AHsA/s320/nb7-tools-create-junit-tests.png" /></a></div>Pojawi się panel konfiguracyjny klasy testowej.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiapWa0pq5Bgp55I_zxxt8Tx6p9dUYV7e8CE3DX7tS08WpRocTU7F0NVBktuPvDGvvT4Oo_WZDiyOgHg14Jks-nNg57LLpSPWcqEPUkJY2OWYU0AD0rrFvfXwIA1E18ITndD_naw/s1600/nb7-create-test-panel.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="320" width="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiapWa0pq5Bgp55I_zxxt8Tx6p9dUYV7e8CE3DX7tS08WpRocTU7F0NVBktuPvDGvvT4Oo_WZDiyOgHg14Jks-nNg57LLpSPWcqEPUkJY2OWYU0AD0rrFvfXwIA1E18ITndD_naw/s320/nb7-create-test-panel.png" /></a></div>Zatwierdź przyciskiem <i>ENTER</i>.<br />
<br />
Zaraz po tym powinien otworzyć się edytor z właśnie stworzoną klasą testującą z metodą <i>testBusinessMethod()</i>. Usuń linię <i>fail("The test case is a prototype.");</i>, np. przez <i>Cmd+x</i>. Test gotowy.<br />
<br />
Uruchomienie testu - <i>Cmd+F6</i>.<br />
<pre class="brush: bash">-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running pl.jaceklaskowski.jee6.abc.NewSessionBeanTest
businessMethod
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.396 sec <<< FAILURE!
Results :
Tests in error:
testBusinessMethod(pl.jaceklaskowski.jee6.abc.NewSessionBeanTest)
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------</pre>Pojawił się błąd? Jak najbardziej oczekiwany (zajrzyj do <a href="http://community.jboss.org/wiki/WhatsthecauseofthisexceptionjavalangClassFormatErrorAbsentCode">What's the cause of this exception: java.lang.ClassFormatError: Absent Code?</a> po więcej wyjaśnień).<br />
<br />
Nie wiem, co informuje NetBeans 7 o konieczności pojawienia się pomocy, albo jak długo należy czekać na jej pojawienie się, ale dłuższa chwila, dwie i na projekcie pojawi się ikona z żółtym wykrzyknikiem. <br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_pNU5eLctPcn1yX7oY7b95zMRid_Yfw3EeLPrpItKmdPbUMfV9vm9TWEE7UKfaQPiMqCnXcUS4xc7kTdry6PlkG9KzLUHePvZNOToKg62FGFqd26ASEAJfUYewVpco1hZPBTeyA/s1600/nb7-yellow-exclamation-mark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="257" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_pNU5eLctPcn1yX7oY7b95zMRid_Yfw3EeLPrpItKmdPbUMfV9vm9TWEE7UKfaQPiMqCnXcUS4xc7kTdry6PlkG9KzLUHePvZNOToKg62FGFqd26ASEAJfUYewVpco1hZPBTeyA/s320/nb7-yellow-exclamation-mark.png" width="281" /></a></div>Kiedy najedzie się na katalog projektu pojawi się chmurka z wyjaśnieniem powodu, dla którego pojawił się wykrzyknik - <i>Missing Embeddable EJB Container</i>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLfjaqfJcHQwGPDDt4eX1X-cxK9aHnvPPqtmkn-aAhBVyt7UYH7KTg0SP8952ljDqVjKMTTtJL8msj1eLwR27Me66W3_KFx7rx-ylO9TV9WrGy5JmpR86X_pEpq7NilYIaHmLkng/s1600/nb7-missing-embedded-ejb-container.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLfjaqfJcHQwGPDDt4eX1X-cxK9aHnvPPqtmkn-aAhBVyt7UYH7KTg0SP8952ljDqVjKMTTtJL8msj1eLwR27Me66W3_KFx7rx-ylO9TV9WrGy5JmpR86X_pEpq7NilYIaHmLkng/s320/nb7-missing-embedded-ejb-container.png" width="320" /></a></div>Wtedy, pod prawy przyciskiem myszki znajdziemy menu <i>Show and Resolve Problems...</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglEb8qlrCf-h9VuQrVl05lb6pWugHqdL4CEA5AM2eVAyTRqWKVYBChHcXqkKuMb2XQGQmuy4XfwU8IsKHWvpUR0t2NBRvgwKgA6Ockk3pn91Pca0RFoAkLIRqSjjr0MrDRdUk9LA/s1600/nb7-show-and-resolve-problems.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglEb8qlrCf-h9VuQrVl05lb6pWugHqdL4CEA5AM2eVAyTRqWKVYBChHcXqkKuMb2XQGQmuy4XfwU8IsKHWvpUR0t2NBRvgwKgA6Ockk3pn91Pca0RFoAkLIRqSjjr0MrDRdUk9LA/s320/nb7-show-and-resolve-problems.png" width="166" /></a></div>Pojawi się okienko dialogowe, w którym pojawi się <i>Missing Embeddable EJB Container</i> z przyciskiem <b>Add Embeddable EJB Container</b>.<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm8D7G6OqSROkrP_pIgNWfHW-QwH1s2MVFU6ZPZKtKKa6Ywn6O4tWJAMaIUfkRsZZtJ5kWrvv6JJn2BK4jA22ArQYGPCIS7_p6VSrcaEkKaf6J9qGuhtLTTdXVWNWi86oq1AslEg/s1600/nb7-add-embeddable-ejb-container.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm8D7G6OqSROkrP_pIgNWfHW-QwH1s2MVFU6ZPZKtKKa6Ywn6O4tWJAMaIUfkRsZZtJ5kWrvv6JJn2BK4jA22ArQYGPCIS7_p6VSrcaEkKaf6J9qGuhtLTTdXVWNWi86oq1AslEg/s320/nb7-add-embeddable-ejb-container.png" width="320" /></a></div>Kiedy wciśniesz przycisk, do projektu dodana zostanie zależność i repozytorium, gdzie się znajduje. Spróbuj.<pre class="brush: xml"><dependency>
<groupid>org.glassfish.extras</groupId>
<artifactid>glassfish-embedded-all</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
<repositories>
<repository>
<url>http://download.java.net/maven/glassfish/</url>
<id>http://download.java.net/maven/glassfish/</id>
<layout>default</layout>
</repository>
</repositories></pre>Warto dodać, że zapoznanie się z pom.xml dla tego projektu, to wyzwanie same w sobie. Tyle kombinacji, aby uruchomić wbudowany kontener EJB 3.1 z GlassFish 3.0. Warto dla kogoś, kto chciałby poznać Mavena od podszewki (co w tym przypadku lepiej wykonałby Maven podpierając się Apache Ant przez wtyczkę maven-antrun-plugin).<br />
<br />
A tak całkiem przy okazji mojej nauki uruchamiania wbudowanego kontenera EJB 3.1, wyczytałem w <a href="http://wiki.netbeans.org/STS_70_Maven">STS 70 Maven :: Test Specification: Maven Support Test Specification</a>, że edytor pom.xml ma specjalizowany system podpowiedzi <b>Code Generation in pom.xml</b>. W pom.xml wciskamy kombinację klawiszy <i>Alt+Insert</i> i możemy wybrać jedną z kilku opcji utworzenia sekcji XMLowej.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAPSy8hXChXXN3ERBpip5fYK0Q6c2tW-JJrcdw-MDkwnPZ3kNsgYH_sF5oRoi14jcrDzqT5OAn3krnCBRGUkSA2qQyCx8EbIbRmk7Bx_j0hTC8jx-V_K7rwZCUH6HLmgHAf17Q6Q/s1600/nb7-code-generation-pom-xml.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="260" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAPSy8hXChXXN3ERBpip5fYK0Q6c2tW-JJrcdw-MDkwnPZ3kNsgYH_sF5oRoi14jcrDzqT5OAn3krnCBRGUkSA2qQyCx8EbIbRmk7Bx_j0hTC8jx-V_K7rwZCUH6HLmgHAf17Q6Q/s320/nb7-code-generation-pom-xml.png" /></a></div>Dla początkujących, jak znalazł.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com1tag:blogger.com,1999:blog-20941681.post-24011100726840574362010-12-30T12:25:00.000+01:002010-12-30T12:25:20.651+01:00Embeddable EJB 3.1 z GlassFish 3.1 i NetBeans IDE 7.0Biorąc pod uwagę liczbę dni do końca roku, ten wpis będzie co najwyżej przedostatnim wpisem na moim blogu, a na pewno ostatnim dotykającym tematu Java EE 6, EJB 3.1 i in.<br />
<br />
Korzystając z okazji, chciałbym życzyć Tobie wszystkiego dobrego w nowym roku 2011 i nakłaniam do jeszcze większej aktywności. Nie czekaj, aż powiedzą, ale mów, proponuj, bądź liderem w swojej społeczności. Dla poszukujących natchnienia polecam lekturę wpisu na blogu <b>Damiana Nowaka</b> - <a href="http://www.nowaker.net/devblog/programowanie/apprenticeship-dluga-droga-ku-software-craftsmanship">Apprenticeship – długa droga ku Software Craftsmanship</a>. Nie wiem, czy to styl pisania Damiana, czy może sama książka, ale tylko takich wpisów życzę nam w nadchodzącym roku. Niech kasa pójdzie w zapomnienie - niech będzie jej tyle, aby nie stanowiła kwestii do rozwiązania - a czas spędzajmy na tworzeniu - nowego i użytecznego oprogramowania, społeczności przez chociażby dzielenie się wiedzą. Nie ważne jaki był (i jeszcze będzie przez kolejne 2 dni) rok 2010, ale ważne, ile możesz zrobić, aby 2011 był jeszcze lepszy. Zalatuje socjotechniką, ale dobre myślenie poprawia mój nastrój, więc może i Twój również, a to może przełożyć się na coś wyjątkowego.<br />
<br />
W takim tonie przedkładam Tobie do oceny mój nowy artykuł <a href="http://www.jaceklaskowski.pl/wiki/Embeddable_EJB_3.1_z_GlassFish_3.1_i_NetBeans_IDE_7.0">Embeddable EJB 3.1 z GlassFish 3.1 i NetBeans IDE 7.0</a>, w którym...<br />
<br />
<i><b>Rozdział 22. Embeddable Usage</b> specyfikacji <a href="http://jcp.org/en/jsr/summary?id=318">Enterprise JavaBeans (EJB) 3.1</a> opisuje nową cechę specyfikacji, która pozwala na uruchomienie kontenera EJB i zarządzanych przez niego komponentów EJB poza serwerem aplikacyjnym Java EE 6 - jedynie na poziomie środowiska Java SE. W ten sposób autorzy specyfikacji przewidują (a my programiści im wierzymy) uproszczenie procesu testowania, przetwarzania wsadowego (w którym użycie transakcji jest kluczowe) czy użycie EJB w samodzielnych aplikacjach desktopowych. Innymi słowy, mamy wszystko, co oferuje kontener EJB 3.1 bez konieczności uruchamiania pełnego serwera aplikacyjnego Java EE, którego sama konfiguracja uruchomieniowa mogła przyprawić o ból głowy.</i><br />
<br />
Zainteresowanych lekturą nie zatrzymuję już i jeszcze tylko na odchodne dorzucę nieśmiało, aby komentować, pytać i kwestionować. Wszyscy zostaną *odpowiednio* potraktowani :-)Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com1tag:blogger.com,1999:blog-20941681.post-1105260990596988262010-12-20T21:42:00.001+01:002010-12-20T21:44:38.622+01:00EJB 3.1 z OpenEJB 3.1 i NetBeans IDE 7.0Jest wiele sposobów na naukę nowych technologii i dobór odpowiednich narzędzi może znacząco usprawnić ten proces. W przypadku EJB 3.1 możemy skorzystać z projektu <a href="http://openejb.apache.org/">Apache OpenEJB 3.1</a>, podpierając się <a href="http://netbeans.org/">NetBeans IDE 7.0</a> jako zintegrowanym środowiskiem programistycznym z asystentami tworzenia ziaren EJB z <a href="http://maven.apache.org/">Apache Maven</a> w tle.<br />
<br />
Zastosowanie EJB 3.1 jest zwykle podyktowane względami praktycznymi, kiedy wybór serwera aplikacyjnego Java EE 6 mamy już za sobą i pozostaje wykorzystać jego usługi. Ich kompletność i gotowość do użycia najlepiej doświadczyć, kiedy konieczne jest wykorzystanie transakcji, podłączenia do bazy danych z możliwością przypisania komu i co wolno, udostępnić Web Service z wykorzystaniem REST w ramach aplikacji webowej czy podobne "deklaratywne czynności". Nie ma konieczności zestawiania gotowej konfiguracji usług, a konwencja ponad konfigurację znacznie przyspiesza dostarczanie kompletnych rozwiązań. Przenośność aplikacji jest również istotnym aspektem wyboru stosu technologicznego. Dodając do tego łatwość testowania aplikacji korporacyjnych i Java EE 6 (JEE6) wydaje się być idealną platformą aplikacyjną.<br />
<br />
W tym artykule przedstawię uruchomienie bezinterfejsowego, niestanowego ziarna sesyjnego EJB (ang. no-interface stateless session bean) z użyciem projektu Apache OpenEJB 3.1.4, który stworzę w NetBeans IDE 7.0 (wersja rozwojowa z dnia <a href="http://bits.netbeans.org/download/trunk/nightly/latest/zip">15.12.2010</a>). Celem jest maksymalne zminimalizowanie czasu koniecznego do uruchomienia środowiska. Kolejną zaletą zastosowania OpenEJB jest możliwość wykonanywania wszystkich operacji projektowych (budowanie i testowanie) poza IDE, dzięki użyciu Apache Maven wspieranym przez NetBeans IDE 7 "z pudełka".<br />
<br />
Więcej w artykule <a href="http://www.jaceklaskowski.pl/wiki/EJB_3.1_z_OpenEJB_3.1_i_NetBeans_IDE_7.0">EJB 3.1 z OpenEJB 3.1 i NetBeans IDE 7.0</a>.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com3tag:blogger.com,1999:blog-20941681.post-75902599168738911322010-12-01T22:48:00.000+01:002010-12-01T22:48:47.909+01:00Java EE 6 webapp development with CDI, GlassFish and NetBeans 7Próbowałem się z <a href="http://bits.netbeans.org/download/trunk/nightly/latest/">NetBeans IDE 7.0</a> (wersja rozwojowa z dzisiaj) i kiedy sprawdzałem możliwości CDI z przekazywaniem (aka wstrzykiwaniem) zależności do servletu przyszło mi do głowy, aby nagrać moje doświadczenia. Nie są one wyrafinowane, ale chodziło mi raczej o popróbowanie się ze skrinkastami w kwadrans, aby nabrać większej umiejętności w tego typu przekazie niż na samej oprawie czy treści. Chciałem również sprawdzić, czy uda mi się opublikować nagranie na YouTube w formacie 1080p.<br />
<br />
Zero podkładu głosowego, zero muzyni, niewiele treści merytorycznej, ale nagranie w Full HD jest. Tym samym 3-minutówka znalazła się na YouTube do oceny publiczności.<br />
<br />
Teraz kolej na Ciebie. Zadanie na dziś to obejrzenie filmiku i ocena jego przydatności, a właściwie wskazanie niedoskonałości i tym samym zagwarantowanie sobie bardziej przyzwoitej treści w kolejnych odsłonach.<br />
<br />
Zapraszam na swój kanał na YouTube do obejrzenia <a href="http://www.youtube.com/watch?v=FC-wA54BnDA">Java EE 6 webapp development with CDI, GlassFish and NetBeans 7</a>.<br />
<br />
p.s. Uruchomiłem ankietę <b>"Temat przewodni na grudzień"</b>, której celem jest określenie tematyki, którą chciał(a)byś, abym rozpracowywał w ostatnim miesiącu tego roku - grudniu 2010. Zainteresowanych wyrażeniem swojego zdania zapraszam na blog, gdzie po prawej u góry znajduje się ankieta. Sugestie w postaci odpowiedzi "Inne?!" proszę o rozwinięcie na priv, albo w komentarzu do tego wpisu.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com9tag:blogger.com,1999:blog-20941681.post-70114336209039670832010-11-29T22:22:00.001+01:002011-03-18T11:57:48.395+01:00Po wykładzie na PWSZ w TarnowieO planach związanych z wykładem pisałem w poprzednim wpisie - <a href="http://blog.japila.pl/2010/11/wykad-akademicki-na-pwsz-w-tarnowie.html">Wykład akademicki na PWSZ w Tarnowie - 29.11 od 9:30 do 18:00</a> i jak to w życiu bywa - plany swoje, a życie swoje.<br />
<br />
Mając niemałe obawy o zakres merytoryczny wykładu, postanowiłem przelecieć większość z tego, co nazwałbym interesującym wycinkiem mojej wiedzy technicznej, aby choć na moment móc podzielić się czymś nowym z uczestnikami. Sądziłem, że uczestnicy większość tematów mają już za sobą, więc pojawiły się produkty IBM, o których, jeśli słyszano, to niewiele praktycznie i choć one gwarantowały mi możliwość przekazania czegoś niezbadanego. Po ostatnich szkoleniach z IBM WebSphere BPM z programowania i administracji nie miałem złudzeń, że w ostateczności wejdę na niskopoziomowe "rozbieranie" trzewi WPS V7 czy WAS V8. Sądziłem, że coś w końcu będzie wartościowe, aby spędzić kilka chwil i wziąć udział w wykładzie.<br />
<br />
Do ostatniej chwili nie byłem pewien, czy dobrze dopasowałem tematykę. Czym bliżej wystąpienia, tym nachodziła mnie większa ochota, aby w niej pomajstrować. Wziąłem kilka książek, aby tam znaleźć coś unikatowego, a jednocześnie wartościowego, zabrałem się za lekturę podręczników, itp. Zacząłem odczuwać tremę przed niewstrzeleniem się w oczekiwania (które mogły być podkręcone moimi wycieczkami w różne strony rozwiązań javowych).<br />
<br />
Zaplanowałem całkiem pokaźny bagaż tematyczny (vide poprzedni wpis z harmonogramem) i wszystko miało odbyć się bez nawet najdrobniejszego slajdu, aby ostatecznie okazać się, że z grupy około 50 osób niewiele ponad 3 osoby miały styczność z Javą (!) To było chyba najbardziej dla mnie szokujące. Ja tu zmagałem się z JEE6 i poziomy wyżej, przy SCA i BPEL, a okazało się, że należało zacząć od samego początku - samego poznawania języka Java. Trafiłem do mekki programistów C!<br />
<br />
Jako, że przygotowany byłem na wprowadzenie do dostępu do bazy danych, przez JDBC, Hibernate, Spring Framework, Hibernate+Spring Framework, JPA i EJB, w zasadzie byłem gotowy zacząć pierwsze kilka kwadransów na wprowadzenie do Javy - bez wycieczek w programowanie OO. Pozostałem przy prostych konstrukcjach typu wyświetl na ekran, pobierz z ekranu i na tym się skończyło wprowadzenie.<br />
<br />
Zabrałem się za dostęp do bazy danych. <b>MySQL</b> sprawowało się znakomicie, a <b>NetBeans IDE</b> (wersja rozwojowa z dnia poprzedniego) całkiem sprawnie uwijała się przy składaniu kolejnych części aplikacji. Tutaj i <a href="http://download.oracle.com/javase/tutorial/">Java Tutorial</a> się przydał, aby pokazać, w jaki sposób można przejść podobną ścieżkę, którą właśnie przechodziliśmy (gdyby komuś przyszło do głowy odtworzyć nasze wspólne poczyniania samodzielnie). Od czasu do czasu NetBeans IDE czkał zamrażając się na dobre kilkadziesiąt sekund, co złożyłem na braku dostępu do Sieci i jego młodzieńczego wieku (w końcu to wersja rozwojowa). Na moment przełączyłem się do Eclipse IDE, ale i jemy przypomniało się, aby zaktualizować/sprawdzić coś w Sieci i zamarzł. Wróciłem do NetBeans IDE.<br />
<br />
Na zakończenie pierwszego bloku wykładów pokazałem coś, co określiłbym - <i>impress me</i>. Skąd wzięło się to cudo? Chcąc dopasować się do oczekiwań uczestników, zapytałem, co jeszcze mógłbym im pokazać i padło "Zaimponuj nam czymś w Javie, co sprawiłoby, że zechcielibyśmy się nią zająć". Od razu zabrałem się za...<b>Clojure</b>.<br />
<br />
Pewnie pomyślisz sobie, zwłaszcza jeśli znasz mój poziom znajomości tego języka, że to był najgorszy z możliwych wyborów. Co to, to nie. Zdecydowanie NIE. Ja wręcz uważam, że właśnie tym najbardziej ująłem ich za serce i przy tym właśnie temacie miałem wrażenie zdobyłem ich największą uwagę. Takie odniosłem wrażenie i jeśli jakikolwiek temat miał swoje komentarze, to Clojure był zdecydowanym liderem. Dlaczego? Kwintesencją dobrej prezentacji jest dopasowanie przykładu do tematu. I tak właśnie było z Clojure.<br />
<br />
Podczas sesji z Clojure pokazałem, jak interaktywie tworzyć aplikację okienkową, gdzie rozpoczynam od "gołej" aplikacji na bazie JFrame i dodaję kolejne elementy graficzne. Kiedy pierwszy raz wpadłem na ten pomysł, wiedziałem, że to będzie cudo. Na dole miałem terminal z Clojure REPL, na górze właśnie otworzone okienko przyszłej aplikacji okienkowej, a pod nimi Eclipse z odtwarzanym skryptem, w którym widać było wpisywane linie kodu w Clojure. Zamierzam, to nagrać w postaci skrinkastu, więc chwila i sam przekonasz się, o czym się tutaj pisze.<br />
<br />
Clojure nie jest tutaj jakimś specjalnym czymś, co sprawiłoby, że jest to możliwe. Po prostu, jako język skryptowy - podobnie jak Groovy, JRuby, Rhino, Scala, Jython - daje możliwość nauki API przez wprowadzanie kolejnych wywołań w czymś ala Clojure REPL i natychmiastowego otrzymywania rezultatów z ich uruchomienia. Możnaby to przyrównać do środowiska ciągłej nauki API. Bajka!<br />
<br />
Po przerwie, przeszliśmy przez Hibernate, Spring Framework i tworzenie aplikacji z servletami (obsługa formularza) z niewielkim EJB uruchamianym w ramach aplikacji webowej (nowość JEE6). W zasadzie 7 osobom udało się wytrwać do 18:00, kiedy to punktualnie zakończyłem wykład.<br />
<br />
Bardzo pomocny okazał się <a href="http://www.apimac.com/timer/">stoper firmy Apimac</a>, który odmierzał równe 40-tominutówki i późniejsze 10-ciominutowe przerwy. Super rozwiązanie, aby zagwarantować pewność utrzymania czasu przez prowadzącego. Polecam!<br />
<br />
Czego mi brakowało podczas tego wykładu, to większego udziału publiczności. Znalazło się kilku bardziej aktywnych, ale ogólnie panowała cisza i trudno było zorientować się, czy temat ciekawił, czy warto byłoby poruszyć inne aspekty i w ogóle sprawić, aby spędzony czas był wartościowy merytorycznie. Nieskromnie powiem, że bardzo ucieszyła mnie moja lekkość w zmianie tematu, tempa i dopasowanie do poziomu, ale wolałbym bardziej skrupulatne zajęcie się pojedynczym tematem, np. JEE6 niż przejściem od Java, Clojure, Hibernate, Spring, servlety i EJB. Trochę przypominało groch z kapustą, aczkolwiek zagwarantowało, że wykład spędziłem nie nudząc się ani na chwilę. Liczę, że uczestnicy również.<br />
<br />
Sam Tarnów bardzo spokojny. Akurat dzisiaj spadło sporo śniegu, więc wszystko zasypane, ale i tak udało mi się dostrzec tlące się piękno tego miejsca. Po 18:00 w zasadzie zero otwartych sklepów i niepokojąca cisza na ulicy. Może poza Rynkiem jest inaczej?! Ach, zastanawiam się, dlaczego zegar na Ratuszu wybija połówki, kwadrans przed pełną i pełną godzinę?<br />
<br />
p.s. Wykład prowadzony był w ramach programu Unii Europejskiej wspierającej wymianę doświadczeń między praktykami i firmy a uczelniami, z korzyścią dla nowej kadry informatycznej - studentów. Pewnie i na Twojej uczelni jest to możliwe. Wystarczy zapytać. Resztą się zajmę. Pisz na priv z prośbą o szczegóły. Na prawdę warto.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com14tag:blogger.com,1999:blog-20941681.post-33589165744322139172010-11-27T13:57:00.002+01:002010-11-27T14:00:34.322+01:00Wykład akademicki na PWSZ w Tarnowie - 29.11 od 9:30 do 18:00W nadchodzący <b>poniedziałek, 29.11</b> będę na <b>Wydziale Informatyki Państwowej Wyższej Szkoły Zawodowej (PWSZ)</b> w <b>Tarnowie</b> (ul. Eljasza Goldhammera) u Tomasza Potempy i jego studentów, z którym zorganizowaliśmy mój wykład dotyczący tematu Java i okolice. Głównymi odbiorcami mają być studenci 4 roku, którzy kończą semestr z końcem grudnia, aby w styczniu skupić się na pisaniu pracy inżynierskiej.<br />
<br />
Jak to ze mną bywa przy tego typu otwartych tematach, pomysłów mam wiele i byłbym rad, o kilka wskazówek pod kątem możliwości czasowych i znaczenia rynkowego poszczególnych tematów. Celem nie jest przekazanie pełnego obrazu danego rozwiązania, ale raczej naszkicowanie możliwości, aby wybrać do dalszego rozpoznania to, co może być interesujące.<br />
<br />
Mam do dyspozycji 2 bloki 5-godzinne (w sensie lekcyjnym nie zegarowym, czyli 45 minut). Można założyć, że w każdym bloku będzie to samo, ale to zależy od ogólnego zainteresowania uczestników oraz mojego przekonania o sensowności dalszego brnięcia w temat. Tym samym nie ma gwarancji, że drugi blok będzie odpowiadał merytorycznie pierwszemu.<br />
<br />
Zaczynam o godzinie 9:30, aby zakończyć o 18:00 z 1-godzinną przerwą obiadową w okolicach 13:15. Okazuje się, że będzie okazja spotkać się z <b>Tomkiem Łabuzem</b>, którego można było poznać podczas konferencji Javarsovia 2010, podczas której prezentował temat "AOP, ThreadLocal i JPA".<br />
<br />
Planuję przeprowadzić autorski cykl tematyczny, którego mottem byłoby "Od prostoty do większej prostoty, tj. w każdym kroku ukrywamy złożoność problemu". Nie planuję prezentować slajdów, a jedynie siedzieć przed komputerem, prezentując budowanie aplikacji i machając rekoma ze wstawkami krasomówczymi.<br />
<br />
<span style="font-size: large;">Konspekt</span><br />
<br />
Środowiska programistyczne i uruchomieniowe, darmowe i komercyjne:<br />
<ul><li>NetBeans IDE i Eclipse IDE</li>
<li>IBM Rational Application Developer 8 i IBM WebSphere Integration Developer 7</li>
<li>GlassFish i IBM WebSphere Application Server 8 </li>
</ul>Klient bazodanowy - tradycyjne podłączenie do bazy danych z użyciem JDBC<br />
<ul><li>Apache Derby (wbudowane)</li>
<li>MySQL</li>
</ul>Hibernate - warstwa pośrednia między baza danych a aplikacja<br />
<ul><li>ORM - zapytania bliższe programiście nie adminowi bazy danych</li>
</ul>Hibernate + Spring Framework<br />
<ul><li>zniesienie konieczności zarządzania bytami Hibernate</li>
<li>środowisko IoC/DI</li>
</ul>Apache Maven - zarządzanie zależnościami projektowymi<br />
<ul><li>zniesienie konieczności dbania o zależności poza ich deklarację</li>
<li>tworzenie projektu od zera</li>
<ul><li>z linii poleceń</li>
<li>z IDE (NetBeans IDE)</li>
</ul></ul>Leiningen - Maven w Clojure<br />
<ul><li>bez XML z językiem Clojure (wrócimy do niego niebawem)</li>
</ul>GlassFish (w NetBeans IDE) i WAS 8 - serwer aplikacyjny JEE6 (z RAD8):<br />
<ul><li>dostęp do bazy danych (zarządzanie transakcjami)</li>
<ul><li>JPA</li>
<li>EJB31</li>
</ul><li>servlet - obsługa HTTP</li>
<li>JSF - budowanie widoku</li>
<ul><li>facelets</li>
</ul><li>CDI</li>
</ul>EJB 3.1<br />
<ul><li>Apache OpenEJB</li>
<li>Serwer aplikacyjny - GlassFish i WAS8 </li>
</ul>OSGi - modularność<br />
<ul><li>podział projektu na moduły w Apache Maven był podziałem funkcjonalnym (jak OSGi)</li>
<li>samodzielna aplikacja</li>
</ul>Clojure - język funkcyjny<br />
<ul><li>dynamiczne tworzenie aplikacji okienkowej</li>
</ul>Service Component Architecture (SCA) i procesy BPEL (WID/WPS)<br />
<ul><li>odseparowanie kontraktu (interfejsu) od implementacji</li>
<li>odseparowanie szczegółów komunikacyjnych od implementacji</li>
</ul>Wyjeżdżam z Tarnowa dopiero we wtorek, więc jeśli ktoś reflektuje na spotkanie, proszę o kontakt.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com5tag:blogger.com,1999:blog-20941681.post-90095579660899010022010-07-14T14:10:00.000+02:002010-07-14T14:10:55.971+02:00Tworzenie samodzielnej aplikacji ze Spring Framework i Hibernate w NetBeans IDE 6.9Właśnie ukończyłem prace nad kolejnym, trzecim i ostatnim artykułem <a href="http://jaceklaskowski.pl/wiki/Tworzenie_samodzielnej_aplikacji_ze_Spring_Framework_i_Hibernate_w_NetBeans_IDE_6.9">Tworzenie samodzielnej aplikacji ze Spring Framework i Hibernate w NetBeans IDE 6.9</a>, który wprowadza czytelnika w arkana integracji <b>Spring Framework</b> z <b>Hibernate</b> (albo odwrotnie), aby tym samym pozwolić mi na przeprowadzenie warsztatów w bardziej składny sposób - z użyciem materiałów, które są dostępne publicznie, dla każdego. Są to bardzo wprowadzające artykuły przygotowane specjalnie dla początkujących w temacie. Bardziej zaawansowani użytkownicy tandemu Spring + Hibernate pewnie nie znajdą w nich wiele pożytecznego. Uwagi i sugestie mile widziane, a zainteresowanych warsztatami uprasza się o kontakt na priv.<br />
<br />
Sama idea warsztatów wypływała już kilkakrotnie i zawsze problemem było właśnie przygotowanie materiałów i działających przykładów. Tradycyjnie jak co roku, <a href="http://warszawa.jug.pl/">Warszawa JUG</a> organizuje konferencję warsztatową <a href="http://warsjava.pl/">Warsjava</a> w okolicach października/listopada i w tym roku zamarzyło mi się, aby być przygotowanym, a może nawet poprowadzić warsztaty płatne?! Jest kilku zainteresowanych pomysłem i teraz przyszło mi realizować jej część merytoryczną. Zainteresowany? Zainteresowana?<br />
<br />
W serii warsztatowej o Spring i Hibernate, przez ostatnie tygodnie stworzyłem zapowiadane trzy artykuły:<br />
<ol><li><a href="http://jaceklaskowski.pl/wiki/Tworzenie_samodzielnej_aplikacji_ze_Spring_Framework_w_NetBeans_IDE_6.9">Tworzenie samodzielnej aplikacji ze Spring Framework w NetBeans IDE 6.9</a></li>
<li><a href="http://jaceklaskowski.pl/wiki/Tworzenie_samodzielnej_aplikacji_z_Hibernate_w_NetBeans_IDE_6.9">Tworzenie samodzielnej aplikacji z Hibernate w NetBeans IDE 6.9</a></li>
<li><a href="http://jaceklaskowski.pl/wiki/Tworzenie_samodzielnej_aplikacji_ze_Spring_Framework_i_Hibernate_w_NetBeans_IDE_6.9">Tworzenie samodzielnej aplikacji ze Spring Framework i Hibernate w NetBeans IDE 6.9</a></li>
</ol><div>W ten sposób zamknąłem pewien rozdział w mojej działalności edukacyjnej związanej ze wspomnianymi produktami - Spring i Hibernate, które wykorzystałem do stworzenia samodzielnych aplikacji w środowisku <b>NetBeans IDE 6.9</b>. Trochę mnie to integrowanie znużyło i coraz bardziej tęskno mi do pełniejszego środowiska serwera aplikacyjnego JEE6.</div><br />
Muszę przyznać, że NetBeans 6.9 dał mi się tak we znaki (przede wszystkim ciągłe błędy z odświeżaniem zawartości w projekcie), że nie tylko, że musiałem zaktualizować go do najnowszej, rozwojowej wersji z wczorajszego dnia (co niestety zniszczyło mi wszystkie dodatki jakie przychodzą z wersjami produkcyjnymi w temacie integracji NB z systemem operacyjnym, czyli ikonę startową), ale coraz częściej pojawia mi się myśl, aby go całkowicie zakopać i już więcej nie oglądać. Stał się tak toporny w swojej obsłudze projektów, że zwykłe zamykanie/otwieranie projektów prowadziło często do tak kuriozalnych sytuacji, jak oznaczenie niektórych jako nie-NetBeans-owych! A były w nim tworzone! Gdyby nie fakt, że NetBeans i Java EE "w jednym stali domu", to już dawno zapomniałbym o istnieniu NetBeans. Rozważam przejście na Eclipse, albo IDEA. Skłaniam się ku IDEA, ale nie wszyscy ją mają i artykuły byłyby mocno zawężone pod względem grupy odbiorczej. Sugestie?<br />
<br />
Tym samym wracam do mojej wcześniejszej aktywności wokół specyfikacji <a href="http://jcp.org/en/jsr/summary?id=299">JSR 299: Contexts and Dependency Injection for the Java EE platform</a>. Celem jest stworzenie podobnego zestawu artykułów, aby możliwe było wprowadzenia nowicjusza w tajniki CDI. Pomysły, sugestie, uwagi mile widziane. Jeśli chcesz przeczytać coś interesującego, daj mi poznać swoje potrzeby, a *może* uda mi się je spełnić?! Ku uciesze obu stron ;-)Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com1tag:blogger.com,1999:blog-20941681.post-26039969840377953422010-07-07T16:30:00.001+02:002010-07-08T10:14:49.633+02:00Tworzenie samodzielnej aplikacji z Hibernate w NetBeans IDE 6.9Wspominałem już w poprzednim wpisie <a href="http://blog.japila.pl/2010/07/tworzenie-samodzielnej-aplikacji-ze.html">Tworzenie samodzielnej aplikacji ze Spring Framework w NetBeans IDE 6.9</a> o moich ostatnich doświadczeniach warsztatowych, podczas realizacji zadania "wzmocnienia technicznego" grupy osób w temacie <b>Spring Framework</b> i <b>Hibernate</b>. Zabrałem się do przygotowania materiałów, ale co mnie najbardziej męczyło, to faktyczny poziom zaawansowania uczestników. Nie trwało długo, abym zorientował się, że potrzeba mi dobrych acz krótkich artykułów wprowadzających w tematykę i, jak to zwykle bywa, nic nie mogłem znaleźć, co odpowiadałoby moim skromnym (?) oczekiwaniom.<br />
<br />
Zabrałem się za samodzielne przygotowanie potrzebnych artykułów i po wprowadzającym do Springa nadszedł obiecywany artykuł wprowadzający w tematykę Hibernate - <a href="http://jaceklaskowski.pl/wiki/Tworzenie_samodzielnej_aplikacji_z_Hibernate_w_NetBeans_IDE_6.9">Tworzenie samodzielnej aplikacji z Hibernate w NetBeans IDE 6.9</a>. Jest to artykuł z bardzo podstawową wiedzą o Hibernate i jego wykorzystaniu do budowania aplikacji javowych. Nie ma tam żadnych wodotrysków czy wzmianek o technologiach typu JPA czy wręcz zaawansowanego odwzorowywania klas w relacji jeden-do-wielu czy wiele-do-wielu, a jedynie kroki, aby przygotować grunt pod dalszą naukę Hibernate - po prostu niezbyt intensywne wprowadzenie.<br />
<br />
Z dzisiejszym i poprzednim, pozostał mi jeszcze jeden artykuł sprzęgający oba, który będzie przedstawiał kroki użycia Springa i Hibernate w ramach samodzielnej aplikacji. Pomysły kolejnych mile widziane. Byłoby dobrze, aby udało mi się złożyć taki zestaw artykułów, aby w komplecie pozwalały na przeprowadzenie kursanta przez zaułki Springa i Hibernate, co w efekcie wprowadzi go na poziom średniozaawansowany. Czegoś brakuje? Gdybyście mogli mi pomóc zebrać taki zbiór artykułów byłoby cudnie. W ten sposób możnaby stworzyć ścieżkę warsztatową, która doprowadzi delikwenta do wymarzonego celu - gościa gotowego na udział w projekcie.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com1tag:blogger.com,1999:blog-20941681.post-63017240341388858382010-07-05T22:59:00.001+02:002010-07-06T00:08:33.900+02:00Tworzenie samodzielnej aplikacji ze Spring Framework w NetBeans IDE 6.9Miałem ostatnio ciekawe przedsięwzięcie (coś ala szkolenie-warsztaty) wprowadzające w arkana użycia <a href="http://springframework.org/">Spring Framework</a> oraz <a href="http://hibernate.org/">Hibernate</a>. Dano mi do dyspozycji 2 dni i kiedy podjąłem się wyzwania sądziłem, że to będzie pół dnia omówienia tematu i...właśnie, co ja z nimi będę robił dalej?! Taka myśl towarzyszyła mi do pierwszego dnia, kiedy w połowie okazało się, że to, co łatwe i proste dla jednego (mnie) nie jest takim dla słuchaczy (oni). Okazało się, że należało zapoznać słuchaczy ze wspomnianą tematyką, ale czasami nawet z samym programowaniem w Javie. Można sobie wyobrazić, jak na miejscu, udoskonalałem materiały. Skończyło się na czymś niezwykle odświeżającym dla mnie i (zgodnie z ich oficjalną oceną) czymś pouczającym dla nich.<br />
<br />
Jako, że nie mogłem znaleźć wystarczająco wprowadzających artykułów w tajniki użycia tandemu Spring Framework i Hibernate, postanowiłem stworzyć kilka na własne potrzeby. Jeden z nich już udostępniłem, a drugi się robi.<br />
<br />
W artykule <a href="http://jaceklaskowski.pl/wiki/Tworzenie_samodzielnej_aplikacji_ze_Spring_Framework_w_NetBeans_IDE_6.9">Tworzenie samodzielnej aplikacji ze Spring Framework w NetBeans IDE 6.9</a> przedstawiłem kroki niezbędne do stworzenia samodzielnej aplikacji korzystającej ze Spring Framework w zintegrowanym środowisku programistycznym NetBeans IDE 6.9. Starałem się wykorzystać wszystkie możliwości NetBeans, aby jak najmniejszym kosztem stworzyć pełnoprawną aplikację springową. Niestety nie ma ich wiele, ale chociaż pomoc przy tworzeniu pliku konfiguracyjnego Springa okazała się nieoceniona. Tylko dlaczego podpowiedzi w edytorze XML wymagają dostępu do Sieci?!<br />
<br />
Kolejny będzie o użyciu Hibernate, aby skończyć na połączeniu obu. Uwagi mile widziane. Chciałbym, aby artykuł stanowił kanwę do nagrania kolejnego skrinkastu, bo skoro mam już scenariusz, to nie pozostaje nic innego, jak skręcić 5-minutówkę.<br />
<br />
p.s. Tematyka Spring Framework i Hibernate tak mnie wkręciła, że zabrałem się za lekturę książki <a href="http://apress.com/book/view/9781430224976">Spring Enterprise Recipes: A Problem-Solution Approach</a> panów Josha Longa i Gary'ego Maka wydawnictwa Apress. Jest to moja pierwsza książka w stylu problem-rozwiązanie i bardzo mi ten sposób pisania przypadł do gustu. Czasami trochę rozwlekła i za bardzo wnikająca w pewne aspekty (dosłownie i w przenośni) użycia Springa, ale pomimo tego zdaje się być bardzo pouczająca.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com8tag:blogger.com,1999:blog-20941681.post-7860980477659429412010-05-21T08:00:00.006+02:002010-05-22T09:18:04.500+02:00Skrinkast o Java EE 6 z @WebServlet, NetBeans IDE 6.9 i IBM WebSphere AS V8 w HD 720p na YouTube<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.youtube.com/watch?v=MrV6X6WTOe4"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 154px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOaJxoSRrnTlwL1UDK5TvvwMKwR0kx1l8bOsQOOjHk0yHckpcBozYg48kBZyZs7YN-t7t1E_nO7QYTmv8eyMTIgnp0LgNFkMDDjZkKny28KxcTaS04qRO5o0aX4heBYPOt92mfUw/s320/skrinkast-tytul.png" alt="Slajd tytułowy skrinkasta" id="BLOGGER_PHOTO_ID_5473595202290756034" border="0" /></a>W końcu się udało! Po bodajże miesiącu przygotowań - tworzeniu scenariusza i kilkakrotnym nagrywaniu, aby później wszystko wrzucić do kosza i testowe publikacje na YouTube - mogę w końcu nagłośnić, że moja najnowsza produkcja filmowa trafiła pod strzechy YT w wersji HD 720p - <a href="http://www.youtube.com/watch?v=MrV6X6WTOe4">Skrinkast o Java EE 6 z @WebServlet, NetBeans IDE 6.9 i IBM WebSphere AS V8</a>!<br /><br />Największym wyzwaniem było nagranie głosu, jednocześnie z wykonywanymi czynnościami podczas nagrania oraz utrzymanie czasu, który z planowanych 3-5 minut rozciągnął się do 6 minut i 4 sekund. Później postprodukcja - obróbka i nauka trików w ScreenFlow (dobrym źródłem okazała się sama dokumentacja oraz <a href="http://www.telestream.net/screen-flow/demos.htm">ScreenFlow's Product Demos & Tutorials</a>, lektura o formatach do exportu i materiał był gotowy do publikacji.<br /><br />Myliłby się ten, kto sądziłby, że publikacja na YT to koniec wytężonej pracy. Teraz pewnie tak będzie, ale kiedy napiszę, że skrinkast miał ujrzeć światło dzienne około 22giej wczoraj, a ujrzał dopiero po północy i jeszcze nie byłem pewien, czy wszystko jest dobrze, wszystko będzie jasne. Sam export może trać i w moim przypadku trwał około 30 minut, później zapis na YT chwila (około 5 minut), ale dopiero po tym zabawa zaczyna się na dobre - przetwarzanie filmiku przez samego YT. Do końca nie wiadomo, czy wersja skrinkastu będzie w rozdzielczości HD (próbowałem się z 1080p, ale ostatecznie skończyłem na 720p).<br /><br />Co znajdziemy w skrinkaście? Jest to skrinkast-zagadka, w którym dzielę się doświadczeniami z pierwszych chwil z <span style="font-weight: bold;">Java EE 6</span>, <span style="font-weight: bold;">NetBeans IDE 6.9</span> i <span style="font-weight: bold;">IBM WebSphere Application Server V8</span>. Utworzyłem projekt aplikacji webowej z servletem, który nie ma definicji w deskryptorze <span style="font-weight: bold;">WEB-INF/web.xml</span> oraz korzysta z adnotacji <span style="font-weight: bold;">@WebServlet</span>. Na koniec nagrania okazało się jednak, że popełniłem błąd i pomyślałem sobie, że zamiast poprawić, zostawię nagranie w postaci skrinkasta-zagadki.<br /><br />I teraz najlepsze - pora rozpocząć zabawę. Zapraszam do obejrzenia mojego skrinkastu o platformie Java EE 6, NetBeans IDE 6.9 i WAS8 w akcji. Uwagi mile widziane, szczególnie o elementach nagrania, jak głos, tempo, głośność i inne takie. Szukam dobrego materiału dźwiękowego, aby podłożyć w tło, więc tutaj liczę również na Twoją pomoc. Pamiętaj, aby obejrzeć nagranie w wysokiej rozdzielczości!<br /><br /><object style="height: 344px; width: 425px;"><param name="movie" value="http://www.youtube.com/v/MrV6X6WTOe4"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/MrV6X6WTOe4" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="344" width="425"></embed></object>Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com8tag:blogger.com,1999:blog-20941681.post-5146747153653345952010-05-13T21:50:00.004+02:002010-05-13T23:06:08.589+02:00Siedzę w Turcji i przetwarzam sygnały zewsząd, trochę o NetBeans i WAS8 równieżSiedzę w Turcji i mnie trochę zdusił cały ten zgiełk wokół. Pisałem o moich poprzednich wizytach w Stambule i mimo, że wiele rzeczy już doświadczyłem poprzednio, teraz nie są wcale znajome. Uczę się pilnie tureckiego i potrafię nawiązać komunikację - skorzystać z "protokołu komunikacyjnego" jakim jest język turecki. Mieszają mi się te pojęcia z IT z życiem codziennym i gdzie nie spojrzę, czego nie doświadczę, to właśnie jakby <a href="http://sjp.pwn.pl/lista.php?co=reminiscencja">reminiscencja </a>doświadczeń z IT :)<br /><br />A działo się przez ostatni tydzień sporo. W Turcji moim zadaniem jest namierzenie problemów wydajnościowych w kodzie pisanym jeszcze na początku tego wieku, w czasach wszechobecnej Java 1.4 i z niedoświadczonym (takie odnoszę wrażenie) zespołem, który o automatycznym budowaniu aplikacji, testowaniu i całym tym "zgiełku" utrzymywania wysokiej jakości oprogramowania, obawiam się, że nawet nie słyszał. Nie jest to w żaden sposób zarzut, ale przestroga, że tworzenie czegokolwiek wymaga wiedzy, a nauka jedynie na projektach, to równia pochyła i krótkowzroczna perspektywa wolnego czasu. Wierzę, że czytelnicy tego bloga biorą sobie do serca wytyczne <a href="http://www.growing-object-oriented-software.com/">"Growing Object-Oriented Software, Guided by Tests"</a>. Jest wiele książek, które należą do kategorii "Obowiązkowa lektura" i ta z pewnością tam jest, ale wstrzymam się z rekomendacją do końca jej lektury, bo skończyłoby się na znanym i (nie)lubianym, strywializowanym <span style="font-style: italic;">"obowiązkowa lektura dla każdego".</span> Potrzebuję bardziej efektownych recenzji, bo tego typu mi się przejadły. Co książka, to obowiązkowa lektura i wszystko zależy od punktu widzenia.<br /><br />A skoro o nim, to mój punkt widzenia dwukrotnie w ciągu dnia sprowadza się do 30-minutowej "wycieczki" taksówką z hotelu w <a href="http://en.wikipedia.org/wiki/Taksim_Square">Taksim</a>, aż do prawie przy lotnisku i spowrotem. Jazda przy 120 km/h na zatłoczonej <span style="font-style: italic;">otoban</span> zderzak w zderzak daje się odczuć. Gdyby nie te widoki wokół, pewnie osiwiałbym już dawno. A tak urzeczony panoramą z zatłoczonymi parterówkami z gdzieniegdzie wystającymi meczetami z 2 minaretami i hotelami wysokimi na 30 pięter zapominam o bożym świecie. I filmuję, aby móc później pokazać rodzince. Pomyślałem sobie, czy dałoby radę przenieść ten typ jazdy do nas, do Warszawy chociażby, gdzie też czasami doświadczam podobnego uczucia, ale mimo wprawy taksówkarza, sądzę, że liczba kolizji nauczyłaby go manier, bo...jak to mówią "Do tanga trzeba dwojga" i to, że taksówkarz pędzi setką zderzak w zderzak, to tylko i dlatego, że inny kierowca robi podobnie. Tym samym nastąpiło "uwspólnienie interfejsów" i można się dopasować. W Warszawie o to trudniej.<br /><br />Nauczyłem się w międzyczasie kilku sztuczek przydatnych tu i ówdzie, np. wyłączenie wszystkich katalogów z obsługi repozytorium <span style="font-weight: bold;">Mercurial (hg)</span>, począwszy od katalogu bieżącego w dół, to po prostu:<pre class="brush: bash">$ cat .hgignore<br />syntax: regexp<br />^build.xml$<br />^build/<br />^nbproject/build-impl.xml$<br />^nbproject/private/platform-private.properties$<br />^nbproject/private/private.xml$<br /></pre>Włączamy <span style="font-weight: bold;">sytax: regexp</span> i bawimy się wyrażeniami regularnymi. Możemy mieszać konfigurację z wyrażeniami powłoki uniksowej przez <span style="font-weight: bold;">syntax: glob</span>. I tak naprzemiennie. Więcej można przeczytać w <a href="http://www.selenic.com/mercurial/hgignore.5.html">dokumentacji hgignore</a>. Proste i przyjemne.<br /><br />Siedząc wieczorami w hotelu, kiedy wracam ze spacerów po Taksim, zabrałem się za rozwój <a href="http://bitbucket.org/jaceklaskowski/netbeanswebsphere8/overview">wtyczki NetBeans dla serwera aplikacyjnego WAS V8</a>. Tak w ramach (samo)rozwoju programistycznego. Na razie udało mi się wyświetlić WAS V8 jako jeden z wielu serwerów w okienku <span style="font-style: italic;">Add Server...</span>, więc idzie powoli, ale postępy zauważalne. Przydaje się znajomość skrótów klawiszowych i jak na razie przywykłem do <span style="font-weight: bold;">Cmd+O</span> (odszukanie typu) oraz <span style="font-weight: bold;">Cmd+Shift+I</span> (uprządkowanie importów). Po niedługich doświadczeniach z bardzo rozbudowanym klawiszowo edytorze javowym w Eclipse IDE, kiedykolwiek muszę usiąść przy NetBeans IDE, pod kątem skrótów klawiszowych odczuwa się jego niedojrzałość. Brakuje mi bardziej strawnych podpowiedzi i kombinacji z Eclipse. Cóż, przyzwyczajenie drugą naturą człowieka, więc przygryzam wargi i moje narzekania zrzucam na barki moich przyzwyczajeń, z którymi wiemy, że trzeba walczyć. Co też czynię sumiennie i z pokorą.<br /><br />Jeju, po 4 dniach upalnych, przy temperaturze koło 30tki, zaczęło właśnie padać! Będzie znośniej, bo kiedy wychodzę z klimatyzowanego budynku do taksówki od razu daje się odczuć zmęczenie upałem i przenikliwym słońcem. Idzie się wykończyć, a to jedynie przez 30 minut w taksówce około 18tej (!)<br /><br />Przeglądając kody źródłowe wtyczek do serwerów w NetBeans zauważyłem, że pewne konstrukcje są udokumentowane. Chyba zaczyna mi się udzielać "dobro" książki "Growing OO Software...", bo u mnie komentarzy niewiele, a raczej skłaniam się ku umieszczaniu ich w ramach dedykowanej metody o nazwie, która odpowiada komentarzowi, a tym samym mówi czytelnikowi, co robi. Zastanawiam się, czy to krok w dobrym kierunku? Doszło wręcz do tego, że cała metoda sprawdzająca, domyślnie wywoływana przez NetBeans IDE - <span style="font-style: italic;">valid()</span> - jest jedynie wywołującą metodę docelową (zamiast umieszczania jej kodu bezpośrednio w ciele metody). Odnotowuję to jako krok ku mojemu, lepszemu warsztatowi programistycznemu i nie mam złudzeń, pod wpływem której książki jestem. Uzależnia. Sama metoda valid() mówi, a przynajmniej stara się wskazać swoją potrzebę istnienia, ale moja metoda mówi, co to znaczy być valid() i jakie warunki muszą zostać spełnione. Każde ze swoją metodą.<br /><br />W trakcie pisania wtyczki przyszło mi stworzyć kawałek funkcjonalności wizualnej z GUI, co okazało się trywialne przez użycie asystenta <span style="font-weight: bold;">New > Wizard</span>.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0K6QzWZZX2VXm2yKR3P2kQDJTXq9At4AvICobK5U9sbXbEyrrGQirJwlcCm8wCYwX7lheFGwtrcKNFjxBfT5fNgzC-c14bunjmIXzrZrCyov5w4A6qG4RO3Ly248rjKmBpaLkSg/s1600/netbeans-new-wizard.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 175px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0K6QzWZZX2VXm2yKR3P2kQDJTXq9At4AvICobK5U9sbXbEyrrGQirJwlcCm8wCYwX7lheFGwtrcKNFjxBfT5fNgzC-c14bunjmIXzrZrCyov5w4A6qG4RO3Ly248rjKmBpaLkSg/s320/netbeans-new-wizard.png" alt="" id="BLOGGER_PHOTO_ID_5470855055028209746" border="0" /></a>Poszło gładko, aczkolwiek wizualne programowanie jakoś mnie ogranicza. Opierając się na tym asystencie, wiele jest wyłączone i zamiast dłubać w klasie muszę przestawić się na programowanie wizualnie, przez definiowanie właściwości w różnych widokach.<br /><br />W pewnym momencie miałem nawet problem z zaznaczeniem komponentu, którego właściwości chciałem zmienić, ale na pomoc przyszedł mi klawisz <span style="font-weight: bold;">TAB</span>, dzięki któremu mogłem przeskakiwać między komponentami w GUI - w ten sposób dotarłem do JPanel, który był niewidoczny, bo z takimi rozmiarami na nic więcej nie mógł się porwać. Do zapamiętania: <span style="font-weight: bold;">Cmd+Backspace</span> kasuje wybrany komponent<br /><br />Na zakończenie mojego tygodnia poza domem, w Turcji, zabrałem się za nagrywanie skrinkasta o NetBeans IDE 6.9, WAS V8 i @WebServlet, czyli filmiku o platformie do nauki Java EE 6. I tak się przygotowuję powolutku do niego. Mam już scenariusz i pierwsze próby już poszły do kosza. Dzisiaj spróbuję ponownie. Kupiłem nawet książkę o profesjonalnym nagrywaniu skrinkastów <a href="http://thescreencastinghandbook.com/">The Screencasting Handbook</a> i próbuję swoich reżyserskich sił. Książka pełna rad, których wizualizację powinniście poczuć niedługo. Nagranie w trakcie realizacji. I będzie z głosem! Co mnie niezwykle przyciąga do tych nagrań, to możliwość wyuczenia się prowadzenia krótkich sesji warsztatowych, gdzie mam niewiele ponad 5-8 minut i prezentuję pewną funkcjonalność. Pozwala mi to wybrać tylko jeden element w danej sesji nagraniowej i przygotować się do ich zbiorczego odtworzenia w postaci 45minutówki podczas konferencji czy spotkania. Sama praca niełatwa, ale końcowy efekt...bezcenne! W końcu nauczę się nie przekraczać danego mi czasu antenowego i sesje będą ciekawsze, bo wyłącznie z kodem.<br /><br />Ciekawe doświadczenie z przekazywaniem informacji nowoprzybyłym w postaci nagrania-skrinkastu doświadczyłem całkiem niedawno. Zostałem zaproszony do udziału w międzynarodowym przedsięwzięciu i strefy czasowe były tak rozbiegane, że jedynym sposobem na przekazanie mowy powitalnej był...skrinkast. Gość nagrał go i rozdał do zapoznania się. Zainteresowanych zaprosił do udziału w sesji jeden-na-jeden. Cel zrealizowany i w jaki nowatorski sposób. Ach, powinienem był napisać, że celem projektu jest właśnie stworzenie kursu do samodzielnego prowadzenia przez uczestników, tj. <span style="font-style: italic;">self-paced online course</span>, więc była to swego rodzaju przygrywka do pracy, którą w podobnym stylu każdy będzie musiał zrealizować.<br /><br />Na zakończenie, spostrzeżenie porównujące społeczności stojące za Twitterem i Facebookiem - <span style="font-style: italic;">"Facebook is the people you went to school with. Twitter is the people you wished you went to school with."</span> ~@twittelator. Dla mnie rewelacja!<br /><br />Pozdrowienia dla uczestników <a href="http://geecon.org">GeeCONa</a>. Bawią się, a my musimy charować! Odkujemy się podczas <a href="http://javarsovia.pl">Javarsovia 2010</a>. Będzie rewelacyjnie. Już sama obsada sponsorska to gwarantuje, a liczba tematów z naszej, polskiej społeczności javowej jeszcze bardziej upewnia mnie w tym przekonaniu. Agenda właśnie się tworzy i z 4 ścieżkami po 6 wystąpień każda...co tu dużo pisać - 26 czerwca macie przecież już zarezerwowane i przegadamy temat w bezpośrednim starciu. Do zobaczenia!Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com2tag:blogger.com,1999:blog-20941681.post-50796094028212948872010-04-25T20:28:00.010+02:002010-04-25T22:28:51.522+02:00Nauka JEE6 z WAS8 w NetBeans 6.9 przez rozwój wtyczki j2ee.websphere?<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://netbeans.org"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 202px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7pA08v5yIQEF0_-fpD1cjws2nLhoA8XGRH0CbzaE1Xm3j3XgfCnOFT-39zi6A3GaxsRngBN-ugauH9BMjqGsU9pniUf_lzLEN599y7k2Wk_D8HNNNMA_U9-137dinoKCDL87Zkw/s320/netbeans-splashscreen.png" alt="" id="BLOGGER_PHOTO_ID_5464144460940845122" border="0" /></a>Jak każdy użytkownik <span style="font-weight: bold;">NetBeans IDE</span> wie, albo przynajmniej wiedzieć powinien, od wersji 6.8 w grupie wspieranych serwerów aplikacyjnych brakuje <span style="font-weight: bold;">IBM WebSphere Application Server (WAS)</span>. Mimo, że wtyczka do tego serwera istnieje i wspiera wersje 6.0 oraz 6.1, to jak to się wyrażono (nie pamiętam jednak źródła) <span style="font-style: italic;">ze względu na brak aktywnego rozwoju wtyczki i kilka problemów z nią związanych</span> zdecydowano się na wstrzymanie dystrybucji wtyczki z najnowszymi wersjami NetBeans IDE, a więc NetBeans 6.9 nie ma i nie planuje się, aby miał ją dystrybuowaną domyślnie (lub chociażby dostępną w repozytorium do instalacji przez Update Installer). W ten sposób szeroka grupa użytkowników obu rozwiązań musi posiłkować się rozwiązaniami alternatywnymi - zamiast NetBeans IDE korzystać z IBM Rational Application Developer lub zrezygnować z bezpośredniego uruchamiania projektów na rzecz uruchamiania ich ręcznie. Manufaktura pamiętająca ubiegły wiek.<br /><br />Nie potrafię wytłumaczyć tej sytuacji, a kiedy dopowiem, że Eclipse również nie przychodzi ze wsparciem dla WASa, to już w ogóle trudno mi ją zrozumieć. Nawet przesiadka na Eclipse nie wchodzi w rachubę. Pewnie chodzi o "zasoby", które każda ze stron chciałaby poświęcić na rozwój narzędzi, czy to NetBeans IDE, czy Eclipse. Jakkolwiek w przypadku tego pierwszego szybko to nie nastąpi (szczególnie po przejęciu przez Oracle, gdzie strategicznych serwerów przybyło - GlassFish, Oracle WebLogic Server, JBoss Application Server i Apache Tomcat), to w przypadku drugiego było to dla mnie niebywałym zaskoczeniem.<br /><br />W swojej DziRze (parafrazując wymowę nazwy produktu JIRA), czyli Dzienniku Rzeczy do Zrobienia (możnaby napisać DziRzeZ, ale to pachnie bluźnierstwem i <a href="http://pl.wikipedia.org/wiki/Ekskomunika">ekskomuniką</a>) pojawiło się zadanie/projekt <span style="font-weight: bold;">Nauka JEE6 z WAS8 w NetBeans 6.9</span>. Testuję tym samym metodykę GTD (ang. <span style="font-style: italic;">Getting Things Done</span>), gdzie każde zakończone zadanie jest początkiem kolejnego i tak zaczęło się od instalacji NB 6.9 Beta, która ukazała się kilka dni temu, później przeszukiwanie Sieci za źródłami wtyczki do obsługi WASa i w końcu mam...<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZEcJfbAJ9wBk6M6qFr3Bj0JVhUJ3a0Ai5lBCu2yy7UKRf7sHg0b88mOBQWbgjHs5a8haL3tLpXYOCbSc2XwB8MBTqLgdy0FSWQRIDOM4QtvMHgBQBLUHmD9K9o1ryG2bZb4LlXw/s1600/netbeans-with-websphere-support.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 222px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZEcJfbAJ9wBk6M6qFr3Bj0JVhUJ3a0Ai5lBCu2yy7UKRf7sHg0b88mOBQWbgjHs5a8haL3tLpXYOCbSc2XwB8MBTqLgdy0FSWQRIDOM4QtvMHgBQBLUHmD9K9o1ryG2bZb4LlXw/s320/netbeans-with-websphere-support.png" alt="" id="BLOGGER_PHOTO_ID_5464153423137622850" border="0" /></a>W moim NetBeans 6.9 pojawiła się parka serwerów IBM WebSphere Application Server 6.0 oraz 6.1. Niestety brakuje wsparcia dla 7.0 (obsługa Java EE 5) oraz 8.0 (obsługa Java EE 6).<br /><br />Już kiedyś zab(ie)rałem się za pisanie <a href="http://svn.apache.org/repos/asf/geronimo/sandbox/geronimo-netbeans-plugin/">wtyczki do NetBeans IDE dla Apache Geronimo</a>, ale jak to zwykle bywa, inne rzeczy były ważniejsze i cała para związana z rozwojem wtyczki poszła w gwizdek. Pomyślałem sobie, że warto byłoby powrócić do tematu inną ścieżką. W końcu na tapecie jest nauka JEE6 z rozpoznaniem WAS 8, co w połączeniu z nieprzeciętnym wsparciem dla tej technologii przez NetBeans IDE mogłoby być przyczynkiem do rozwoju aktualnej wtyczki dla WAS 6.0/6.1 i już po nabraniu wprawy, przejściu do wtyczki dla Apache Geronimo. Wydaje się być trochę przekombinowane, ale póki co sprawy idą gładko.<br /><br />Przeszukałem Sieć i dobrałem się do źródeł wtyczki NB dla WAS, które dostępne są w repozytorium Git - <a href="http://hg.netbeans.org/main/">http://hg.netbeans.org/main/</a> w podkatalogu <span style="font-weight: bold;">j2ee.websphere</span>. Wykonujemy kilka poleceń...<pre class="brush: bash">devmac:oss jacek$ mkdir netbeans<br />devmac:oss jacek$ cd netbeans<br />devmac:netbeans jacek$ hg clone http://hg.netbeans.org/main/ .<br />devmac:netbeans jacek$ export ANT_OPTS="-Xmx512m -XX:MaxPermSize=256m"<br />devmac:netbeans jacek$ ant<br />...<br />BUILD SUCCESSFUL<br />Total time: 47 minutes 10 seconds<br /></pre>, aby po zaimportowaniu do NetBeans...<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvsXoHpJGEupsCWURZeymCOY75-14nHjkj3cPfkevX2PeAhWTRJ4eUqMAWZ_Isg584R4MVXzzxvLzK7b7sVFtpy1a7IwqIZca8q6uPVb4bGt8QEnGaNs3LSeOwH5eKPYVepE0Ikg/s1600/netbeans-websphere-module-sources.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 267px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvsXoHpJGEupsCWURZeymCOY75-14nHjkj3cPfkevX2PeAhWTRJ4eUqMAWZ_Isg584R4MVXzzxvLzK7b7sVFtpy1a7IwqIZca8q6uPVb4bGt8QEnGaNs3LSeOwH5eKPYVepE0Ikg/s320/netbeans-websphere-module-sources.png" alt="" id="BLOGGER_PHOTO_ID_5464143998713948354" border="0" /></a>i uruchomieniu projektu, cieszyć się wsparciem NB dla WAS. Jakby przy okazji (aczkolwiek w moim przypadku był to cel, a nie efekt uboczny) mamy gotowe środowisko do rozwoju, tj. lektury kodu źródłowego wtyczki NetBeans IDE dla WebSphere Application Server.<br /><br />Jakbym tak jeszcze wiedział, jak lokalne zmiany publikować w GitHub, albo Google Code w postaci "sforkowanych" projektów byłoby na prawdę cacy. Ktoś mógłby użyczyć pomocnej dłoni? Byłbym zobowiązany.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com1tag:blogger.com,1999:blog-20941681.post-14130439969595381622010-01-30T12:32:00.004+01:002010-01-30T13:00:32.949+01:00Niemy film(ik) na weekend - Java Persistence (JPA) 2.0 praktycznie - zestawienie środowiska z EclipseLink i Apache Maven 2Spisałem scenariusz (artykuł <a href="http://www.jaceklaskowski.pl/wiki/Java_Persistence_%28JPA%29_2.0_praktycznie_-_zestawienie_%C5%9Brodowiska_z_EclipseLink_i_Apache_Maven_2">Java Persistence (JPA) 2.0 praktycznie - zestawienie środowiska z EclipseLink i Apache Maven 2</a>) i kolejnego dnia przyszło do kręcenia filmiku.<br /><br />Mimo swoich wad reżyserskich, miernej gry aktorów (poza tymi technologicznymi) i jego dopadło światło dzienne. Na YouTubie pojawił się bez fanfar, nagrody Grammy, Złotych Lwów, czy Oscara, ale doświadczenie jest zdecydowanie większe. Scrinkast można podziwiać na deskach YouTube - <a href="http://www.youtube.com/watch?v=X3q9LXTxdCk">Java Persistence (JPA) 2.0 praktycznie - zestawienie środowiska z EclipseLink i Apache Maven 2</a>.<br /><br />Wiele w nim niedoskonałych cięć, ale z samego produktu jestem niezwykle zadowolony, bo jest to pierwsza edycja, która ujrzała światło dzienne z gadżetami w stylu podświetlanie, spowalnianie, wstawki tekstowe na rozpoczęcie odpowiedniej sesji nagranionej, więc dużo było przy tym pracy edycyjnej, ponagraniowej. Teraz pozostaje zrobić ostatni krok - podłożyć głos narratora, aby poza oglądaniem było trochę życia w nagraniach. Kiedy będzie głos w skrinkastach, będzie mi bliżej do zrealizowania jeszcze jednego pomysłu - podkastów. To takie połączenie przyjemnego z pożytecznym (co jest czym pozostawiam Waszej ocenie). W przypadku skrinkastów, ja kontroluję, co będzie powiedziane, a podkast uważam za ewaluację głosową, gdzie tych rozmówców oczekuje się więcej.<br /><br />Komentarze odnośnie mojej dotychczasowej pracy nagraniowej są bezcenne na tym etapie, więc śmiało! Potrzeba mi wrażeń w stylu - co było denerwujące, czego za mało/dużo, długość nagrania i sam sposób przedstawiania - wklejanie kawałków kodu zamiast ich wpisywanie. Więcej ich, to mniej Waszego cierpienia później. To tak, jakby powiedzieć <span style="font-style:italic;">"Jak sobie pościelesz, tak się wyśpisz"</span>, co oznacza, że jeśli teraz pojawią się (dobre?) rady, to ich wdrożenie na tym etapie będzie przyczynkiem do moich przyzwyczajeń później. Nie ma obawy o mój stan psychiczny. Dam sobie radę nawet z komentarzami w stylu <span style="font-style:italic;">"Do kitu! Zajmij się lepiej hotdogami."</span>, aczkolwiek preferowałbym w takiej sytuacji więcej argumentów.<br /><br />Przydałaby się jakiś akompaniament muzyczny na podkład, coś w stylu muzyki poważnej, ale delikatnie. Propozycje propozycji pozbawionych praw autorskich, tj. możliwych do użycia bezpłatnie, mile widziane. Ten sam problem będzie i przy podkastach.<br /><br />A teraz do skrinkasta...<br /><br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/X3q9LXTxdCk&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/X3q9LXTxdCk&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com14tag:blogger.com,1999:blog-20941681.post-32716724350781497502009-08-05T21:32:00.005+02:002009-08-05T22:00:24.561+02:00"Włamaniowy" powrót z wakacji, nowe wydania NetBeans i SDJ 8/200!I po urlopie! Odpoczywałem ile się dało w miłym towarzystwie rodziny i znajomych. Powrót z urlopu był niezwykle rozrywkowy - w Budapeszcie spędziliśmy wieczór i część nocy (do około 2-giej) na...komisarjacie policji, po tym, jak parkując na ulicy <span style="font-weight:bold;">Lonyay</span> "poprosiliśmy" o włam do samochodu. Podobno ulica podwyższonego ryzyka, a i akurat ta noc była obfitująca w tego typu wydarzenia. Dodając do tego całkowity brak komunikacji z węgierską policją po polsku, angielsku, czy niemiecku ubaw po pachy. Szczęściem w nieszczęściu było tylko uszkodzenie zamka w samochodzie, więc "jedynie" straciliśmy część rzeczy wakacyjnych i filmy i zdjęcia wakacyjne. Było, minęło.<br /><br />Wytrzymałem bez kompa do niedzieli, do samiutkiego końca urlopu. Udało mi się przeczytać 1,5 książki (czytaj: prawie 2) i to całkiem niezwiązane z IT. Warto było. Po powrocie zostało mi wczesne chodzenie spać (przed północą), ale siedzenie przed kompem już na maksa. Nawet pierwszego dnia w pracy miałem już wyjazd do klienta na gaszenie pożaru, a po nim mini-projekt. Każdemu życzę takiego powrotu (poza kradzieżą, oczywiście). Jak gdyby ktoś dbał, abym się za bardzo nie rozleniwił ;-)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.netbeans.org"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 204px; height: 35px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmppJkG2fVgLkzz-MkPkYQwu4UKS9muQxW0oesON6u5-iOEdf41AxZ1SRP8MtcgufrP0ZebhaHDWSk8-GiEr7XViEypJ0GeMhyphenhyphendm__fKeQkPzf84OrNr9AM6C8shM7Bc11xBMO/s320/nb67.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5366567935413686578" /></a>W skrzynce pocztowej znalazłem trochę wartościowej korespondencji (dobra, dobra, maili, ale korespondencja, czy wręcz wiadomość też przecież piknie). Największym zaskoczniem była dla mnie informacja o nowych wydaniach NetBeans IDE. Bodajże w poniedziałek zainstalowałem <a href="http://www.netbeans.org/community/releases/67/relnotes.html">NetBeans 6.7.1 ze wsparciem dla JavaFX 1.2</a>, aby we wtorek znaleźć kolejną o <a href="http://bits.netbeans.org/netbeans/6.8/m1/">NetBeans IDE 6.8 Milestone 1 Available for Download</a>.<br />Pierwszą wersję instalowałem ze względu na wsparcie dla Grails 1.1, a może przede wszystkim, aby przyjrzeć się JavaFX 1.2, ale kolejna mogłaby porwać mnie wsparciem dla Java EE v6 czy ulepszoną obsługą Groovy i Scala z Mavenem (Improved support for Groovy and Scala). Postawiłem jednak na już zainstalowaną wersję 6.7.1. Na razie wystarczy wrażeń, a porządek powinien ustawić kurs ponownie na Grails (z niewielkim wskazaniem na JavaFX). Może ktoś już miał doświadczenia z tym "Improved support for Groovy and Scala" w NetBeans 6.8m1 i mógłby pochwalić się wrażeniami?<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sdjournal.org/prt/view/aktualnosci/issue/1057.html"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 212px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisRdKc6pwTjTBl9sS7sfInxcb2zn4suH3bPXlq3dw6YyRv4peoN5LjjLrTCBg71gn1v2B4hRjFJxUYUXU0AQMWB4NbjKBu_4uxZhxb5ItGE5at7Bd5G3IwIUFjLJeaKURs_Zcq/s320/okladka_SDJ_08_09.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5366568961249561314" /></a>Kolejną interesującą wiadomością była informacja o nowym wydaniu <a href="http://sdjournal.org/prt/view/aktualnosci/issue/1057.html">Software Developer's Journal (SDJ) na sierpień</a>:<br /><br /><span style="font-style:italic;">W salonach prasowych jest już dostępny najnowszy Software Developer's Journal nr. 8/2009. Tematem przewodnim numeru jest język Groovy i środowisko Grails. Grails jest prostym środowiskiem z ogromnymi możliwościami.<br /><br />Z magazynu dowiecie się co kryje się w jego wnętrzu, jakiego rodzaju rozwiązania są stosowane i jaką rolę w tym wszystkim odgrywa język Groovy. Krok po kroku dowiecie się jak łatwo i przyjemnie jest stworzyć aplikację internetową, która w większości…stworzy się sama.Groovy z kolei to dynamiczny język dla środowiska Java, w pełni integrujący się z tym językiem, w pełni pozwalając na korzystanie z istniejących szkieletów i bibliotek. W niniejszym wydaniu SDJ znajdziecie obszerny artykuł wprowadzający do tego języka.</span><br /><br />Po tytule numeru możnaby mniemać, że artykułów o Grails i Groovy będzie trochę. Faktycznie, możnaby powiedzieć, że jest "trochę", bo aż...2 (!) Okazało się, że artykuł przewodni napisał mój znajomy <a href="http://mariuszek.googlepages.com/">Mariusz Róg</a>, którego miałem możliwość poznać podczas szczecińskiej konferencji javowej <a href="http://www.java4people.com/">java4people</a>, a później spotkać na <a href="http://javarsovia.pl">Javarsovii</a>. Już zaplanowałem pojawienie się w Trafficu na lekturę artykułu, kiedy to zauważyłem ten numer na biurku <a href="http://mmolak.blogspot.com/">Marcina Molaka</a>. Dzięki jego uprzejmości numer jest już w moich rękach i mogę się nim delektować w zaciszu domowego kominka :) Dzięki Marcin! Pewnie i tak nie kupiłbym numeru wyłącznie dla 4 artykułów - poza Grails są jeszcze o samym języku Groovy, WS-BPEL i UML. Może recenzją przyczynię się do wzrostu sprzedaży i w ten sposób zwrócę dług :) Artykuł o Grails już przeczytałem i dla śledzących moje publikacje/relacje z lektury książek o Grails nie będzie tam zupełnie nic nowego. Może poza lekkim piórem Mariusza, którego artykuł czyta się niezwykle przyjemnie. Jest to materiał dla początkujących, w którym można znaleźć co to jest Grails, na czym jest oparty, wprowadzenie do poleceń grails i kilka innych dodatków, aby wszystko scalić przez zaprezentowanie stworzenia aplikacji webowej ala blog. Znalazłem w nim również kilka chochlików, ale są niegroźne technicznie. A poza tym w numerze artykuł "Dogadajmy się – O komunikacji dla programistów" panów z łódzkiego JUGa - <a href="http://msieraczkiewicz.blogspot.com/">Mariusza Sieraczkiewicza</a> i <a href="http://mbartyzel.blogspot.com/">Michała Bartyzela</a> - który czeka cierpliwie w kolejce do lektury. Zdecydowanie warto przeczytać (kupić?) ten numer i to nie tylko ze względu na znajomych i ich trud literacki, ale przede wszystkim, aby tym samym wskazać kierunek rozwoju gazety (być może zanim grześkowe <a href="http://dworld.pl/java-express/">JAVA exPress</a> całkowicie odbierze rynek). Pożyjemy, zobaczymy.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com1tag:blogger.com,1999:blog-20941681.post-35751051723009723282009-06-29T22:21:00.001+02:002009-06-30T00:36:33.407+02:00grails upgrade i morph-deploy, finalny NetBeans 6.7 oraz grailsowy RefcardJakiś czas temu zainstalowałem nową wersję <a href="http://grails.org">Grails 1.1.1</a>. W trakcie aktualizacji kasuję wszystkie katalogi związane z poprzednią wersją oraz te, w katalogu domowym (<span style="font-weight:bold;">%userprofile%/.grails</span>). W międzyczasie dostałem informację o braku aktywności na Morph i zamknięciu usługi, jeśli w ciągu nadchodzących 7 dni nie wykonam aktualizacji, więc naturalnie pierwszą wtyczką do instalacji stała się <a href="http://www.grails.org/MorphDeploy+Plugin">morph-deploy</a>. Okazało się, że w trakcie instalacji pojawił się komunikat o konieczności uaktualnienia Grails w samej aplikacji.<pre class="brush: bash"> jlaskowski@work /cygdrive/c/projs/sandbox/nauczyciel<br /> $ grails install-plugin morph-deploy<br /> Welcome to Grails 1.1.1 - http://grails.org/<br /> Licensed under Apache Standard License 2.0<br /> Grails home is set to: c:/apps/grails<br /><br /> Base Directory: C:\projs\sandbox\nauczyciel<br /> Running script c:\apps\grails\scripts\InstallPlugin.groovy<br /> Environment set to development<br /> Application expects grails version [1.1], but GRAILS_HOME is version [1.1.1] - <br /> use the correct Grails version or run 'grails upgrade' <br /> if this Grails version is newer than the version your application expects.</pre>Jeszcze nigdy wcześniej nie spotkałem się z tym komunikatem. Wykonanie zalecanego <span style="font-weight:bold;">grails upgrade</span> zajęło tylko chwilę.<pre class="brush: bash"> jlaskowski@work /cygdrive/c/projs/sandbox/nauczyciel<br /> $ grails upgrade<br /> Welcome to Grails 1.1.1 - http://grails.org/<br /> Licensed under Apache Standard License 2.0<br /> Grails home is set to: c:/apps/grails<br /><br /> Base Directory: C:\projs\sandbox\nauczyciel<br /> Running script c:\apps\grails\scripts\Upgrade.groovy<br /> Environment set to development<br /> NOTE: Your application currently expects grails version [1.1], this target will upgrade it to Grails 1.1.1 ...<br /><br /> WARNING: This target will upgrade an older Grails application to 1.1.1.<br /> However, tag libraries provided by earlier versions of Grails found in grails-app/taglib will be removed.<br /> The target will not, however, delete tag libraries developed by yourself.<br /> Are you sure you want to continue?<br /> (y, n)<br /> y<br /> ...<br /> Please make sure you view the README for important information about changes to your source code. ...<br /> Project upgraded</pre>Po tym instalacja wtyczki przebiegła już całkiem gładko.<pre class="brush: bash"> jlaskowski@work /cygdrive/c/projs/sandbox/nauczyciel<br /> $ grails install-plugin morph-deploy<br /> Welcome to Grails 1.1.1 - http://grails.org/<br /> Licensed under Apache Standard License 2.0<br /> Grails home is set to: c:/apps/grails<br /><br /> Base Directory: C:\projs\sandbox\nauczyciel<br /> Running script c:\apps\grails\scripts\InstallPlugin.groovy<br /> Environment set to development<br /> Reading remote plugin list ...<br /> [get] Getting: http://svn.codehaus.org/grails/trunk/grails-plugins/.plugin-meta/plugins-list.xml<br /> [get] To: C:\Documents and Settings\jlaskowski\.grails\1.1.1\plugins-list-core.xml<br /> .<br /> [get] last modified = Tue Jun 09 13:03:55 CEST 2009<br /> Reading remote plugin list ...<br /> [get] Getting: http://plugins.grails.org/.plugin-meta/plugins-list.xml<br /> [get] To: C:\Documents and Settings\jlaskowski\.grails\1.1.1\plugins-list-default.xml<br /> .........................<br /> [get] last modified = Sat Jun 13 05:45:37 CEST 2009<br /> [get] Getting: http://plugins.grails.org/grails-morph-deploy/tags/RELEASE_0_1/grails-morph-deploy-0.1.zip<br /> [get] To: C:\Documents and Settings\jlaskowski\.grails\1.1.1\plugins\grails-morph-deploy-0.1.zip<br /> .....<br /> [get] last modified = Thu Jan 22 00:21:40 CET 2009<br /> [copy] Copying 1 file to C:\Documents and Settings\jlaskowski\.grails\1.1.1\projects\nauczyciel\plugins<br /> Installing plug-in morph-deploy-0.1<br /> [mkdir] Created dir: C:\Documents and Settings\jlaskowski\.grails\1.1.1\projects\nauczyciel\plugins\morph-deploy-0.1<br /> [unzip] Expanding: C:\Documents and Settings\jlaskowski\.grails\1.1.1\plugins\grails-morph-deploy-0.1.zip into <br /> C:\Documents and Settings\jlaskowski\.grails\1.1.1\projects\nauczyciel\plugins\morph-deploy-0.1<br /> Executing morph-deploy-0.1 plugin post-install script ...<br /> Plugin morph-deploy-0.1 installed<br /> Plug-in provides the following new scripts:<br /> ------------------------------------------<br /> grails deploy<br /> Found events script in plugin morph-deploy</pre>Tyle tylko, że samo uruchomienie wtyczki przypomniało mi o błędzie, który sądziłem, że został poprawiony dawno temu. Czy tylko ja korzystam z tej wtyczki?! (na pewno ja nie zgłosiłem tego błędu, więc to może być przyczyna problemu :))<pre class="brush: bash"> jlaskowski@work /cygdrive/c/projs/sandbox/nauczyciel<br /> $ grails war<br /> Welcome to Grails 1.1.1 - http://grails.org/<br /> Licensed under Apache Standard License 2.0<br /> Grails home is set to: c:/apps/grails<br /><br /> Base Directory: C:\projs\sandbox\nauczyciel<br /> Running script c:\apps\grails\scripts\War.groovy<br /> Environment set to production<br /> Warning, target causing name overwriting of name startLogging<br /> Removing JDBC 2 Extensions JAR from WAR for Mor.ph deployment<br /> Error executing script War: No such property: stagingDir for class: _Events<br /> gant.TargetMissingPropertyException: No such property: stagingDir for class: _Events<br /> at gant.Gant$_dispatch_closure4.doCall(Gant.groovy:329)<br /> at gant.Gant$_dispatch_closure6.doCall(Gant.groovy:334)<br /> at gant.Gant$_dispatch_closure6.doCall(Gant.groovy)<br /> at gant.Gant.withBuildListeners(Gant.groovy:344)<br /> at gant.Gant.this$2$withBuildListeners(Gant.groovy)<br /> at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)<br /> at gant.Gant.dispatch(Gant.groovy:334)<br /> at gant.Gant.this$2$dispatch(Gant.groovy)<br /> at gant.Gant.invokeMethod(Gant.groovy)<br /> at gant.Gant.processTargets(Gant.groovy:495)<br /> at gant.Gant.processTargets(Gant.groovy:480)<br /> Caused by: groovy.lang.MissingPropertyException: No such property: stagingDir for class: _Events<br /> at _Events$_run_closure1.doCall(_Events.groovy:6)<br /> at War$_run_closure1.doCall(War.groovy:38)<br /> at gant.Gant$_dispatch_closure4.doCall(Gant.groovy:324)<br /> ... 10 more</pre>Wystarczy skasować skrypt <span style="font-weight:bold;">_Events.groovy</span> z katalogu wtyczki morph-deploy...<pre class="brush: bash"> jlaskowski@work /cygdrive/c/projs/sandbox/nauczyciel<br /> $ rm -rf c\:/Documents\ and\ Settings/jlaskowski/.grails/1.1.1/projects/nauczyciel/plugins/morph-deploy-0.1/scripts/_Events.groovy</pre>i ponownie uruchomić <span style="font-weight:bold;">grails war</span>.<pre class="brush: bash"> jlaskowski@work /cygdrive/c/projs/sandbox/nauczyciel<br /> $ grails war<br /> Welcome to Grails 1.1.1 - http://grails.org/<br /> Licensed under Apache Standard License 2.0<br /> Grails home is set to: c:/apps/grails<br /><br /> Base Directory: C:\projs\sandbox\nauczyciel<br /> Running script c:\apps\grails\scripts\War.groovy<br /> Environment set to production<br /> Warning, target causing name overwriting of name startLogging<br /> ...<br /> Done creating WAR C:\projs\sandbox\nauczyciel/nauczyciel-0.1.1.war</pre>A później już tylko <span style="font-weight:bold;">grails deploy</span>, username/password do Morpha i można cieszyć się wdrożoną aplikacją grailsową - niewielką, ale własną!<pre class="brush: bash"> jlaskowski@work /cygdrive/c/projs/sandbox/nauczyciel<br /> $ grails deploy<br /> Welcome to Grails 1.1.1 - http://grails.org/<br /> Licensed under Apache Standard License 2.0<br /> Grails home is set to: c:/apps/grails<br /><br /> Base Directory: C:\projs\sandbox\nauczyciel<br /> Running script C:\Documents and Settings\jlaskowski\.grails\1.1.1\projects\nauczyciel\plugins\morph-deploy-0.1\scripts\Deploy.groovy<br /> Environment set to development<br /> Warning, target causing name overwriting of name default<br /> This will deploy the file nauczyciel-0.1.1.war<br /> Enter your Mor.ph username:<br /> *******<br /> Enter your Mor.ph password:<br /> *******<br /> Please wait...<br /> [java] Uploading the code...<br /> [java] Creating new appspace version...<br /> [java] Deploying the application...<br /> [java] Deploy Done.<br /> [java] For more information on the status of this deployment, you<br /> [java] can view the Deployment Logs by clicking 'Manage' located<br /> [java] on your subscription widget and by clicking the Logs tab.<br /> [java] In this same page, you can also view your Production logs<br /> [java] and Scheduled task logs.<br /> [java] ** transaction commit **</pre>Tym razem wszystko poszło już gładko. Nowa wersja aplikacji jest na <a href="http://nauczyciel.morphexchange.com/">Morphie</a>. Pomysły, co mogłaby oferować mile widziane. Zdecydowanie za rzadko do niej zaglądam, więc mogłoby się to zmienić po kilku wskazówkach ;-)<br /><br />p.s. Pojawiła się finalna wersja <a href="http://www.netbeans.org/downloads/index.html">NetBeans IDE 6.7</a>. Jedną z oczekiwanych funkcjonalności było wsparcie dla Grails 1.1 i to faktycznie otrzymaliśmy. Więcej o zmianach w temacie wsparcia Groovy i Grails na stronie <a href="http://www.netbeans.org/features/groovy/index.html">Groovy and Grails</a>.<br /><br />p.s.II Pojawił się dokument <a href="http://refcardz.dzone.com/refcardz/getting-started-grails">Getting Started with Grails</a> z serii Refcard (pisał o tym również Mateusz w <a href="http://tech.mrozewski.pl/2009/06/29/getting-started-with-grails-refcard/">Getting started with Grails refcard</a>, więc pewnie już wiecie). W połączeniu z NetBeans 6.7 nie można już narzekać na brak narzędzi i wsparcia do nauki Grails. Teraz jedynym czynnikiem ograniczającym jest...czas. Ale z tym zawsze jest i będzie problem, jeśli się człowiek zajmuje pierdołami zamiast czymś pożytecznym. Jeszcze nie sprawdziłem zawartości, ale nie omieszkam.<br /><br />p.s.III (ostatni, ale nie mniej ważny) Chciałbym tym samym nagłośnić pomysł, który chciałbym wdrożyć podczas jesiennej edycji <a href="http://warsjava.pl">Warsjavy</a> i powrócić z ideą tej konferencji - warsztatami. Niech to będzie połączenie pomysłu uatrakcyjnienia spotkań Warszawa JUG, gdzie promuje się 20-30-minutowe wystąpienia, aby szybko i bez zbędnych wprowadzeń zademonstrować wybrany projekt. Myślę o pewnego rodzaju publicznej selekcji propozycji, gdzie prelegent musiałby postarać się o reklamę swojego przedsięwzięcia i tylko te wchodzą, które zdobędą największą liczbę głosów. Pewnie należałoby spodziewać się jakieś aplikacji, ale skoro jej jeszcze nie ma, a miałbym ją stworzyć, to pewnie jej w ogóle nie będzie :) Jeśli nie, to wybierze kapituła konferencji. Najlepiej byłoby, gdyby udało się uruchomić warsztaty w jakimś pubie z rzutnikiem o dobrej rozdzielczości, powiedzmy przez 4 godziny. To daje około 8 30-minutowych prezentacji z przerwami 15 minutowymi. Mottem przewodnim byłyby języki dynamiczne i ich projekty - Groovy (z Grails), Scala (z Liftem), Clojure (z ???) czy wręcz takie cuda jak F#. Może mogłoby to być wspólne przedsięwzięcie grup javowych z Warszawy i innych miast JUGowych, a także grup MS (ze względu na F#). Dlaczego nie?! Jeśli celem miałoby być łatwe i przyjemne przyswojenie wiedzy z dziedziny dynamicznych języków obiektowych z elementami funkcyjnymi (taki językowy gulasz), to widzę we współpracy jedynie same zalety. Wciąż jednak pomysł przyćmiewany nadchodzącą <a href="http://javarsovia.pl">Javarsovią</a>, na której będzie można przedyskutować temat z Tobą, Tobą i z Tobą również. Będzięcie, prawda? Ja siedzę w Bratysławie, więc pojawię się dopiero pod sam koniec i to pewnie dopiero na...SPOINIE spoić się z Wami ;-)Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com1tag:blogger.com,1999:blog-20941681.post-54130538373187795222009-03-20T09:10:00.007+01:002009-03-20T09:26:24.549+01:00Services w NetBeans IDE 6.7 i NetCAT 6.7Jakimś cudem trafiłem do zakładki <span style="font-weight:bold;">Services</span> w <a href="http://bits.netbeans.org/dev/nightly/latest/zip/">najnowszej wersji rozwojowej NetBeans 6.7</a>. Ach, to było zapewne, po przeczytaniu wpisu Adama Biena o GlassFish v3 i Equinox <a href="http://www.adam-bien.com/roller/abien/entry/interesting_announcement_glassfish_v3_can">Interesting announcement: Glassfish V3 Can Run On Equinox</a>, albo może po tym, kiedy zauważyłem, że dawne paczki netbeans-trunk-nightly-<data>.zip są teraz dostępne jako netbeans-trunk-nightly-<data>-ml.zip. A może po wcześniejszych zapowiedziach aktualizacji GlassFisha do wersji v2.1. Tak czy owak, znalazłem się w zakładce Services.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZiIQlosdt6K8Ymm8lH_vshmaxb1bPf1EvOAxTGZrGQ8FtEJgtiiblLsGJZXj-9kM0hd9KsgMuy537JV_MhPE8fQ_cv026vQO3qI6ST0XgsJa1Q-Mhq0pUbkav27t0wjbg-r2p/s1600-h/nb-services.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 115px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZiIQlosdt6K8Ymm8lH_vshmaxb1bPf1EvOAxTGZrGQ8FtEJgtiiblLsGJZXj-9kM0hd9KsgMuy537JV_MhPE8fQ_cv026vQO3qI6ST0XgsJa1Q-Mhq0pUbkav27t0wjbg-r2p/s320/nb-services.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5315180037529129602" /></a>I tutaj zdumienie - nie zastałem tego, czego oczekiwałem, tylko całkiem nowe węzły <span style="font-weight:bold;">Hudson</span> oraz <span style="font-weight:bold;">Issue Tracking</span>. Brakuje przynajmniej <span style="font-weight:bold;">Servers</span> (pewnie zasługa nowej funkcjonalności NetBeans 6.7 - Ergonomic IDE (czytaj o tym w <a href="http://jlaskowski.blogspot.com/2009/03/ergonomic-ide-fitness-forever-netbeans.html">Ergonomic IDE == Fitness Forever == NetBeans Features on Demand </a>), która włącza tylko te funkcjonalności, które są w danej chwili potrzebne/wymagane).<br /><br />Zobaczmy, jakie repozytoria są wspierane domyślnie przez <span style="font-weight:bold;">Issue Tracking</span>.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ05LqRK-5hJt8rYy53tDyCTUHgI2pJ8WaSdSRIR-ReWaKhP_0jclQyd_o64Fm02VO5rxR0b6WmflecMwBsbIZ3i6bOiNX_R4BWv8lGAtTglDBPNtW5s3Byx-pSDSX4qW3-_1X/s1600-h/nb-create-repository.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 166px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ05LqRK-5hJt8rYy53tDyCTUHgI2pJ8WaSdSRIR-ReWaKhP_0jclQyd_o64Fm02VO5rxR0b6WmflecMwBsbIZ3i6bOiNX_R4BWv8lGAtTglDBPNtW5s3Byx-pSDSX4qW3-_1X/s320/nb-create-repository.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5315180484839739634" /></a>Szału nie ma - tylko Bugzilla?! A gdzie JIRA? Myślałem, że może to ma związek z brakującą wtyczką do niej, ale nic nie znalazłem w <span style="font-weight:bold;">Tools -> Plugins</span>.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimS185YuUMXwuQoce_nbvfpFA1E5YnUSuqNnt5bU9S1QwkH8nlUTcK7E-fRfg-pFz21Y4Frq3IZUHY4cE-gf3K8N2VMyUbz-QM6T9kXonnhc3x1lfZ_GmFu4ifjg-HP02UBHvg/s1600-h/nb-plugins.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 189px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimS185YuUMXwuQoce_nbvfpFA1E5YnUSuqNnt5bU9S1QwkH8nlUTcK7E-fRfg-pFz21Y4Frq3IZUHY4cE-gf3K8N2VMyUbz-QM6T9kXonnhc3x1lfZ_GmFu4ifjg-HP02UBHvg/s320/nb-plugins.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5315180697077510706" /></a>Coś się zmienia, to dobrze, ale jak to bywa, nie wszystkich można ustatysfakcjonować. Pewnie wsparcie dla JIRA będzie niebawem.<br /><br />Sprawdziłem Hudsona i skonfigurowałem go z <span style="font-weight:bold;">http://deadlock.netbeans.org/hudson</span>.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjraVjw-Xe84bHpQxEe91-il6D8lzjiGSKYamhbPBCqMN8ZKxjahM5HSqg5XEivJtXy50E8lTfqqytJIglpI-t9Gg88b-MiBAPzkC4aX_j-PrRpFE7l3GqUDIYG6egpOWC5L9mS/s1600-h/nb-hudson.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 294px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjraVjw-Xe84bHpQxEe91-il6D8lzjiGSKYamhbPBCqMN8ZKxjahM5HSqg5XEivJtXy50E8lTfqqytJIglpI-t9Gg88b-MiBAPzkC4aX_j-PrRpFE7l3GqUDIYG6egpOWC5L9mS/s320/nb-hudson.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5315180948241511330" /></a>I działa. Nie pracuję na codzień z Hudson, więc nie wiem, czy to wystarczy do pracy z nim, ale właśnie dlatego, że jest, będę miał okazję nauczyć się z tego korzystać - chciał, czy nie chciał. Może nawet za chwilę stwierdzę, że nie wyobrażam sobie życia bez tego?! ;-)<br /><br />Interesująca jest ta ikona w dolnym prawym rogu - ta z 5-tką. Kiedy otworzyłem NetBeans od razu rzuciła mi się w oczy ta malutka ikona obok (wciąż na szaro, nawet teraz). Wciskając tą 5-tkę dostajemy informacje o wynikach budowania, które wymagają interwencji.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEief1kUbCwGOXFtTTcv51Oob0zKhpMDdt5hcuJsy_w5z5SWKBcS7qISAJFILnC0sgOzvpvIaGdXZAWXb6eY0guxsV-NtXA6X4Dx3_-I-i4xV46TQ-Ai5i1fcfnUBjp4lRVlNCw2/s1600-h/nb-yellow-icon-on-therightbelow.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 294px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEief1kUbCwGOXFtTTcv51Oob0zKhpMDdt5hcuJsy_w5z5SWKBcS7qISAJFILnC0sgOzvpvIaGdXZAWXb6eY0guxsV-NtXA6X4Dx3_-I-i4xV46TQ-Ai5i1fcfnUBjp4lRVlNCw2/s320/nb-yellow-icon-on-therightbelow.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5315181382637373474" /></a>To jest dobre. Nie trzeba zaglądać do poczty, RSSa, czy innego mechanizmu informowania o wpadce w systemie automatycznego budowania, aby się zorientować, że coś jest nie tak i...już idą po nas (i będzie trzeba wybierać tabletkę niebieską, albo czerwoną, i takie tam...).<br /><br />A tak jeszcze w temacie, rozpoczęły się zapisy na kolejny <a href="http://qa.netbeans.org/processes/cat/67">NetBeans Community Acceptance Tests (NetCAT) 6.7</a>, czyli program akceptacji wydania NetBeans do publicznego użycia - jako finalny produkt. Jirka, głównodowodzący programem, wysłał zaproszenie na grupę użytkowników NetBeans, w którym zachęca do udziału i że nie powinniśmy być <span style="font-style:italic;">"hesitate to contact him in case of any questions."</span><br /><br /><span style="font-style:italic;">Hello NetBeans fans,<br /><br /> I am happy to announce that since today we are starting to form the NetCAT 6.7 team. If you are interested in taking your part in helping us test NetBeans 6.7 development builds please read more on the homepage [1] and sign up during this week! NetBeans 6.7 feature highlights in short:<br /><br /> * Connected Developer (Kenai integration)<br /> * Maven projects integration<br /> * Ergonomic IDE<br /> * Unified framework for integrating additional languages to the source code editor<br /> * Debugger improvements<br /> * Enhanced C/C++, Groovy, PHP, Ruby support<br /> * and much more...<br /><br />[1] <a href="http://qa.netbeans.org/processes/cat/67">http://qa.netbeans.org/processes/cat/67<br /></a><br />Don't hesitate to contact me in case of any questions.<br /><br />Best regards,<br />--<br />Jiri Kovalsky<br />Technical Community Manager<br />http://www.netbeans.org<br /></span><br />Zainteresowany/-a sprawdzeniem NetBeansa przed finalnym wydaniem? Chcesz mieć znaczący głos, czy NetBeans jest gotów, czy nie na spotkanie z rynkiem? Zapisz się i wyraź swoją opinię! W zamian można spodziewać się...koszulki..miałem napisać...lepszej funkcjonalnie wersji NetBeans ;-)Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com9tag:blogger.com,1999:blog-20941681.post-81252675933768726122009-03-01T23:37:00.007+01:002009-03-02T08:47:46.569+01:00Ergonomic IDE == Fitness Forever == NetBeans Features on DemandJuż podczas zabezpieczania aplikacji webowej ze Spring Security z rozwojową wersją NetBeans 6.7 (patrz <a href="http://jaceklaskowski.pl/wiki/Proste_uwierzytelnianie_i_autoryzacja_w_aplikacji_webowej_ze_Spring_Security_w_15_minut">Proste uwierzytelnianie i autoryzacja w aplikacji webowej ze Spring Security w 15 minut</a>) zaskoczyło mnie pewne zachowanie NetBeans, które polega na włączaniu jego funkcjonalności na żądanie - należy wcisnąć przycisk <span style="font-weight:bold;">Activate</span> i żądana funkcjonalność zostanie włączona. Tak było ze wsparciem dla Java EE (we wskazanym artykule), a dzisiaj zauważyłem, że podobnie jest ze wsparciem dla projektów grailsowych i w ogóle dla obsługi Groovy przez NetBeans. Kiedy tworzyłem nowy projekt na moją prezentacje Grails na nadchodzce spotkanie <a href="http://www.warszawa.jug.pl">Warszawa JUG</a> (to już w nadchodzący wtorek, 3 marca o 18-tej na MIMUWie!), pojawił się ponownie ekran z Activate.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4uWDn4JRiFS2gVrmW73dYAo37u5FXPPWG25QgOiZGAnkkJ3i7rBUaMtbV1vJMqvhyMjn3eb6lyqy7EahRwMeMxGbDYfYMDtWBvAWP6Khy9DnE-ZkxLrAv4AIAiKrCh1qTkAKZ/s1600-h/netbeans-findingfeature-activate.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 246px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4uWDn4JRiFS2gVrmW73dYAo37u5FXPPWG25QgOiZGAnkkJ3i7rBUaMtbV1vJMqvhyMjn3eb6lyqy7EahRwMeMxGbDYfYMDtWBvAWP6Khy9DnE-ZkxLrAv4AIAiKrCh1qTkAKZ/s320/netbeans-findingfeature-activate.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5308352864643146130" /></a>Wystarczy wcisnąć Activate, aby po chwili móc dalej kontynuować pracę.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuJQtGUxnx2u_q7sMFYW5HieUhYGaR-l9y-800CWQkt7e9_Y2RRERsTeVhnvvKXKSTNOrOZmRFTsFHrrogL7WaQA0rN_HSPGnYUiRwRFQk1ovJ0_gLLjhPwZw0RihyphenhyphenvKAcywoa/s1600-h/netbeans-findingfeature-activating.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 246px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuJQtGUxnx2u_q7sMFYW5HieUhYGaR-l9y-800CWQkt7e9_Y2RRERsTeVhnvvKXKSTNOrOZmRFTsFHrrogL7WaQA0rN_HSPGnYUiRwRFQk1ovJ0_gLLjhPwZw0RihyphenhyphenvKAcywoa/s320/netbeans-findingfeature-activating.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5308353017848274482" /></a>Okazuje się, że ma to swoją nazwę - <span style="font-weight:bold;">Ergonomic IDE</span>, również nazywane <a href="http://wiki.netbeans.org/FitnessForever">Fitness Forever</a>, albo nawet <span style="font-weight:bold;">NetBeans Features on Demand</span>. Zainteresowanych odsyłam do dokumentu <a href="http://wiki.netbeans.org/NewAndNoteworthyMilestone2NB67#section-NewAndNoteworthyMilestone2NB67-ErgonomicIDE">NetBeans 6.7M2's New and Noteworthy</a>, w którym opisana jest ta cecha. Podobno ma być coraz szybciej i to przy zachowaniu pełnej wszechstronności NetBeans (!) Zobaczymy. Jak na razie nie zauważyłem specjalnego przyspieszenia jego działania (należę do grupy zadowolonych z aktualnej szybkości jego działania), ale ufam, że pewnie jakieś jest.<br /><br />Krótkie sprawdzenie funkcjonalności wsparcia projektów z Grails i NetBeans odświeża projekty grailsowe bez problemów. Pamiętam, że właśnie to był główny powód, dlaczego przeniosłem się chwilowo do IntelliJ IDEA 8. Wracam tym samym do dziennych wersji NetBeans 6.7 i prezentacja na spotkaniu Warszawa JUG będzie właśnie z nim.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com3tag:blogger.com,1999:blog-20941681.post-50391906078856786032009-02-27T22:45:00.003+01:002009-02-27T22:55:17.114+01:00Groovy 1.6, Grails 1.1 RC2, GAnt 1.6.1 i NetBeans 6.7 M2Na grupie <a href="http://archive.hausfoundation.org/lists/org.codehaus.grails.user/browse">użytkowników Grails</a> pojawiła się wiadomość Petra Hejla <a href="http://archive.hausfoundation.org/lists/org.codehaus.grails.user/msg/49A55F5D.5050508@Sun.com">Groovy/Grails & NetBeans 6.7 M2</a>:<br /><br /><span style="font-style:italic;"> For those using NetBeans IDE or considering it for Groovy/Grails - NetBeans 6.7 M2 is available. It is important step on way to 6.7 stable. Contains a lot of fixes in Groovy and Grails area and new features as well.<br /><br /> http://bits.netbeans.org/download/6.7/m2/<br /> http://wiki.netbeans.org/NewAndNoteworthyMilestone2NB67<br /> http://blogs.sun.com/phejl/entry/groovy_and_grails_in_netbeans</span><br /><br />Właśnie pobieram ostatnią wersję rozwojową NetBeans 6.7 - <a href="http://bits.netbeans.org/dev/nightly/latest/zip">netbeans-trunk-nightly-200902270313.zip</a>, która zapewne już zawiera więcej zmian w temacie (i nowe błędy również ;-)) z zamiarem ich sprawdzenia. Jeśli informacje na stronie <a href="http://wiki.netbeans.org/NewAndNoteworthyMilestone2NB67#section-NewAndNoteworthyMilestone2NB67-GroovyAndGrails">NewAndNoteworthyMilestone2NB67/ Groovy and Grails</a> się potwierdzą, można przypuszczać, że NetBeans IDE 6.7 stanie się TYM wymarzonym IDE dla programistów Grails. Alternatywną może być IntelliJ IDEA 8, ale jak wieść niesie są jakieś problemy ze współpracą z Grails 1.1 RC1 (niestety nie mogę przypomnieć sobie, gdzie to wyczytałem). Ale właśnie, czy wiadomo już, że mamy <span style="font-weight:bold;">Grails 1.1 RC1</span>? A na dniach (jutro, 28.02) możemy spodziewać się RC2. Niecierpliwi mogą już zapoznać się ze szkicem <a href="http://grails.org/1.1-RC2+Release+Notes">Grails 1.1 RC2 Release Notes</a>. Poza tym mamy nowiuteńkie wersje <a href="http://groovy.codehaus.org/">Groovy 1.6</a> oraz (niezmieniony funkcjonalnie, aczkolwiek przebudowany z nową wersją Groovy 1.6) <a href="http://gant.codehaus.org/">GAnt 1.6.1</a>. <br /><br />We wtorek moja prezentacja o Grails na spotkaniu Warszawa JUG - teoretycznie czuję się mocny (2 książki robią swoje), ale prezentacyjnie daleko w polu :( Zdecydowanie za mało praktyki! Zaczynam się stresować?!Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com0tag:blogger.com,1999:blog-20941681.post-84299089425743390942009-02-23T23:02:00.001+01:002009-02-23T23:02:00.803+01:00NetBeans 6.7 zamiast NetBeans 7.0 i Spring Security w 15 minutPojawił się komunikat o nowych wersjach NetBeans IDE numerowanych...<span style="font-weight:bold;">6.7</span>. Skąd ta zmiana w numeracji? I to jeszcze na mniejszą? A pikanterii dodaje jeszcze przeskok z 6.5 na 6.7. Wyjaśnienia można szukać w komunikacie <a href="http://www.nabble.com/Message-from-the-NetBeans-Team---Why-NetBeans-6.7--td22105051.html">"Message from the NetBeans Team - Why NetBeans 6.7?"</a>, z czego najważniejsze to:<br /><br /><span style="font-style:italic;">To get innovation and quality improvements out to the community faster, and to have the NetBeans IDE be better aligned with the release schedules of other technologies that it supports, we have decided to concentrate on a series of smaller releases rather than the traditional two big releases per year.<br /></span><br />oraz<br /><br /><span style="font-style:italic;">NetBeans 6.7 is scheduled for release in June 2009. The main features are Maven and Kenai integration, and there are many smaller features that you can read about on the New and Noteworthy page. Java EE 6 support is planned for a future release. NetBeans 6.7 Milestone 2 is due out next week. We encourage you to download the release when it becomes available and to give us your feedback.<br /></span><br />Dzięki temu całemu "zamieszaniu" ze zmianą wersji, kilka rzeczy poukładałem sobie w głowie, bo pytanie o wersję pojawiło się po pojawieniu się zgłoszenia <a href="http://www.netbeans.org/issues/show_bug.cgi?id=158626">Change cluster nb7.0 to nb6.7</a>. Miałem w ten sposób okazję powyjaśniać sobie wiele z pojęć NetBeans, chociażby cluster. Jeśli dobrze rozumiem, pojęcie <span style="font-weight:bold;">cluster</span> oznacza zbiór modułów (ang. <span style="font-style:italic;">NBM - NetBeans Modules</span>) w NetBeans (potwierdza to chociażby <a href="http://wiki.netbeans.org/DevFaqWhatIsACluster">What is a Cluster?</a>). Już podczas instalacji modułów JavaFX zauważyłem, że w katalogu domowym NetBeans tworzony jest katalog javafx2 (nie mam niestety pojęcia skąd ta dwójka?!). Spodziewałem się jednak, że w takim klastrze <span style="font-weight:bold;">nb67</span> znajdę moduły, a tam...niewiele. Znalazłem jednak pliki graficzne (PNG) dla ekranu powitalnego i logo NetBeans w różnych rozmiarach. Wystarczy zajrzeć do <span style="font-weight:bold;">nb6.7/core/locale/core_nb.jar</span>, a w nim do <span style="font-weight:bold;">org/netbeans/core/startup</span>, gdzie mamy (zrzut z wersji rozwojowej z 23. stycznia):<pre> jlaskowski@work /cygdrive/c/apps/netbeans/nb6.7/core/locale<br /> $ jar -tf core_nb.jar org/netbeans/core/startup/<br /> org/netbeans/core/startup/<br /> org/netbeans/core/startup/Bundle_nb.properties<br /> org/netbeans/core/startup/about_nb.png<br /> org/netbeans/core/startup/frame32_nb.gif<br /> org/netbeans/core/startup/frame48_nb.gif<br /> org/netbeans/core/startup/frame_nb.gif<br /> org/netbeans/core/startup/splash_nb.gif</pre>Zamiast zrzutów ekranu, aby umieścić logo lub ekran powitalny NetBeans, można po prostu sięgnąć do odpowiedniego pliku w klastrze nb67.<br /><br />Dla zainteresowanych tematyką bezpieczeństwa w aplikacjach webowych z użyciem Spring Framework, Spring Security (dawne Acegi) i rozwojowego NetBeans 6.7 zapraszam do lektury artykułu wprowadzającego <a href="http://www.jaceklaskowski.pl/wiki/Proste_uwierzytelnianie_i_autoryzacja_w_aplikacji_webowej_ze_Spring_Security_w_15_minut">Proste uwierzytelnianie i autoryzacja w aplikacji webowej ze Spring Security w 15 minut</a>. Kolejny artykuł zaplanowałem z użyciem <a href="http://www.jasig.org/cas">CAS</a> i <a href="http://pl.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">LDAP</a>.<br /><br />Zastanawiam się, czy tego typu wiedzę nie łatwiej byłoby przyswoić w postaci filmu (z <a href="http://debugmode.com/wink/">Wink</a> czy podobnie). Dla mnie łatwiej byłoby stworzyć film, ale z oczywistych względów nie będzie można go wydrukować. Mam wrażenie, że w tym przypadku oglądanie krótkiego filmu instruktażowego byłoby mniej męczące niż czytanie artykułu ze zrzutami ekranów. Zapraszam do ankiety <a href="http://webankieta.pl/ankiety/w1hpsfwdkopu">Czy artykuł z dużą ilością zrzutów ekranów nie powinien być filmem?</a>, w której zbieram głosy przez kolejny tydzień.Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com0tag:blogger.com,1999:blog-20941681.post-45790878512816393262009-02-17T22:51:00.000+01:002009-02-17T22:51:01.096+01:00JavaFX 1.1 z NetBeans 7.0 DEVBiorę udział w bezpłatnym szkoleniu z JavaFX - <a href="http://www.javapassion.com/javafx/">"Free" 15-Week JavaFX Programming (with Passion!) Online Course</a> (tak przy okazji, to wciąż można się zapisać) i wiele się mówi o NetBeans IDE 6.5 jako środowisku programistycznym dla JavaFX. Mnie jednak 6.5 nie wystarczy i postanowiłem spróbować JavaFX z rozwojową wersją <a href="http://bits.netbeans.org/dev/nightly/latest/zip/">NetBeans 7.0 DEV</a>.<br /><br />Niestety wszystkie instrukcje instalacji wtyczek (modułów) JavaFX w NetBeans IDE, jakie udało mi się znaleźć dotyczą wersji 6.5 i niestety nie mają zastosowania dla 7.0, gdyż moduły JavaFX nie istnieją w domyślnie zdefiniowanych repozytoriach modułów NetBeans 7. Okazuje się, że nie jest to wcale jakieś wyrafinowane zadanie i co więcej wszystko zdaje się działać (podkreślam słowo <span style="font-style:italic;">"zdaje"</span>, gdyż moja znajomość JavaFX sprowadziła się do popróbowania się z kilkoma niewielkimi funkcjonalnie skryptami).<br /><br />Zakładam, że NetBeans IDE 7.0 DEV jest już gotowe do użycia (=rozpakowane).<br /><br />Wybieramy menu <span style="font-weight:bold;">Tools > Plugins</span>.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU3uHrAgR_wwtus1EHzmAEI2FvVGigFH2_11YN6tsZ-ZMd33kfRDbv-ZvanIg1fySbU3IvTr8L4xi07ZnxOSezGXSQVvW4BQsjVqhRNkhIZpK_EQT-7_3iF2pU4cw7XDC8Ms5w/s1600-h/netbeans-tools-plugins.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 279px; height: 303px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU3uHrAgR_wwtus1EHzmAEI2FvVGigFH2_11YN6tsZ-ZMd33kfRDbv-ZvanIg1fySbU3IvTr8L4xi07ZnxOSezGXSQVvW4BQsjVqhRNkhIZpK_EQT-7_3iF2pU4cw7XDC8Ms5w/s320/netbeans-tools-plugins.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5303767240910907666" /></a><br />W okienku dialogowym <span style="font-weight:bold;">Plugins</span> wybieramy zakładkę <span style="font-weight:bold;">Settings</span>, gdzie definiujemy nowe repozytorium modułów (centrum aktualizacji, ang. <span style="font-style:italic;">Update Center</span>) - <span style="font-weight:bold;">NetBeans 6.5 Updates</span> pod adresem <span style="font-weight:bold;">http://updates.netbeans.org/netbeans/updates/6.5/uc/final/stable/catalog.xml.gz</span>. To jest dokładnie to samo repozytorium, które jest domyślnie dostępne w NetBeans 6.5.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ2wjC-3kftfOH5i881uJEZH9dXM2XALqFkDlNEIDApxvU1FHheAL6CVA_s2MBSs0M3x7LeeeaxjELdq6DuHb06qNWoy9NZnxvMJclu6k0BL_YCp62_1OJFUwT7q43zwKS1Pu1/s1600-h/netbeans-uc-customizer.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 113px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ2wjC-3kftfOH5i881uJEZH9dXM2XALqFkDlNEIDApxvU1FHheAL6CVA_s2MBSs0M3x7LeeeaxjELdq6DuHb06qNWoy9NZnxvMJclu6k0BL_YCp62_1OJFUwT7q43zwKS1Pu1/s320/netbeans-uc-customizer.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5303771037282493218" /></a><br />Wciskamy przycisk <span style="font-weight:bold;">OK</span>. Na liście centrów aktualizacji powinny być teraz 3 pozycje, w tym jedna nasza.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMNhdjVOt2dG841mFBGDwWARNsRNT49yTS6UiYxzHYrkHfxHFsE3KvOkyvBWFyHXNJTORSgeWNuwfSUBrPoDw83PPWZ4TOsNst3TdQiaIvRNyN4NZg8mfeNhhJTjSeKM4zIBVo/s1600-h/netbeans-uc.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 206px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMNhdjVOt2dG841mFBGDwWARNsRNT49yTS6UiYxzHYrkHfxHFsE3KvOkyvBWFyHXNJTORSgeWNuwfSUBrPoDw83PPWZ4TOsNst3TdQiaIvRNyN4NZg8mfeNhhJTjSeKM4zIBVo/s320/netbeans-uc.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5303770711060611474" /></a><br />Przechodzimy do zakładki <span style="font-weight:bold;">Available Plugins</span> i w polu <span style="font-weight:bold;">Search</span> (prawy górny róg) wpisujemy <span style="font-weight:bold;">javafx</span>.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6iu8T7fzkb33g6NpMLOLFToeqA43pzIhShL10-mFPj4IeaTog_E8ThSE-8uVPDRB4Pzsj_xwYS8kRV53QIwBt5Q1p7uH2a9mT9GGEqyCOoblqxuRv7oNTxRlEOeARsvViejYk/s1600-h/netbeans-javafx-plugins.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 187px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6iu8T7fzkb33g6NpMLOLFToeqA43pzIhShL10-mFPj4IeaTog_E8ThSE-8uVPDRB4Pzsj_xwYS8kRV53QIwBt5Q1p7uH2a9mT9GGEqyCOoblqxuRv7oNTxRlEOeARsvViejYk/s320/netbeans-javafx-plugins.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5303772336811494818" /></a><br />Wybieramy wszystkie 3 moduły i wciskamy przycisk <span style="font-weight:bold;">Install</span> (dolny lewy róg).<br /><br />Po (dłuższej) chwili moduły zostaną zainstalowane i zostaniemy poproszeni o ponowne uruchomienie NetBeansa. Oczywiście zgadzamy się.<br /><br />Z zainstalowanymi modułami JavaFX wystarczy <span style="font-weight:bold;">Ctrl+Shift+N</span> i wybieramy odpowiedni rodzaj projektu JavaFX. Przeczytałem <a href="http://java.sun.com/javafx/1/tutorials/core/getStarted/">Lesson 1: Getting Started with JavaFX Script</a>, sprawdziłem i działa zgodnie z oczekiwaniami. Inne skrypty również działały. Miłego JeFiXowania!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqT5UP4HdUAeITKsrwMW0J7A0BgD61Ouh2YOTat3bX5Lzta26DYX1P2aFR4KjlV2GOkAa0ZGlJPTrlp8Na1qmQUh2pfPR5uYmEsbHGBO0r99ZaeNkBfFacj9OGKx2_agNcT4xO/s1600-h/nb7dev-javafx.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 268px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqT5UP4HdUAeITKsrwMW0J7A0BgD61Ouh2YOTat3bX5Lzta26DYX1P2aFR4KjlV2GOkAa0ZGlJPTrlp8Na1qmQUh2pfPR5uYmEsbHGBO0r99ZaeNkBfFacj9OGKx2_agNcT4xO/s320/nb7dev-javafx.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5303770405184134594" /></a>Anonymoushttp://www.blogger.com/profile/09734540973692423017noreply@blogger.com3