<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Planeta NetBeans</title>
    <link>http://www.planetnetbeans.org/pl/</link>
    <language>pl</language>
    <description>Planeta NetBeans - http://www.planetnetbeans.org/pl/</description>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Geronimo NetBeans Plugin bogatszy oraz NetBeans IDE 6.5 Beta</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-3450823212833328465</guid>
      <link>http://jlaskowski.blogspot.com/2008/08/geronimo-netbeans-plugin-bogatszy-oraz.html</link>
      <description>Nie powiem, żeby było lekko. Rozwój wtyczki &lt;span style="font-weight: bold;"&gt;Geronimo NetBeans Plugin (GNP)&lt;/span&gt; postępuje, ale idzie jak po przysłowiowej grudzie. Dzisiaj miałem przyjemność rozpoznać w jaki sposób NetBeans współpracuje z wtyczkami dla serwerów aplikacyjnych w kontekście kontekstów aplikacji webowych (powtórzenie zamierzone).&lt;br /&gt;&lt;br /&gt;Podczas tworzenia aplikacji webowej wybieramy związany z nią serwer aplikacyjny.&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://1.bp.blogspot.com/_wSeV_DMR2uA/SKNYLQ3mdxI/AAAAAAAABDk/OMdoHISKoEQ/s1600-h/server-and-settings.gif"&gt;&lt;img src="http://1.bp.blogspot.com/_wSeV_DMR2uA/SKNYLQ3mdxI/AAAAAAAABDk/OMdoHISKoEQ/s320/server-and-settings.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5234124142464628498" /&gt;&lt;/a&gt;Wybór serwera aplikacyjnego to między innymi związanie bibliotek Java EE dostarczanych przez serwer z projektem.
      Po prostu programista aplikacji nie musi dbać o ich definiowanie każdorazowo przy jej tworzeniu. Można potraktować związanie serwera z projektem jako definicję bibliotek projektowych oraz środowiska uruchomieniowego (które wyznacza, co można w IDE). Takie podejście nie jest niczym nadzwyczajnym w IDE, czy to będzie NetBeans, czy Eclipse, czy IntelliJ IDEA czy...&lt;span style="font-style: italic;"&gt;tutaj nazwa Twojego ulubionego IDE&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Jedną z bolączek ostatnich
      dni podczas rozwoju wtyczki GNP był brak definicji kontekstu aplikacji webowej. Podczas definiowania projektu aplikacji pole &lt;span style="font-weight: bold;"&gt;Context Path&lt;/span&gt; było wypełnione, ale już po jej stworzeniu we właściwościach projektu było puste (!)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_wSeV_DMR2uA/SKNYU_m7ZVI/AAAAAAAABDs/3Egzo0_i6lc/s1600-h/project-properties.gif"&gt;&lt;img
      src="http://4.bp.blogspot.com/_wSeV_DMR2uA/SKNYU_m7ZVI/AAAAAAAABDs/3Egzo0_i6lc/s320/project-properties.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5234124309629986130" /&gt;&lt;/a&gt;Rozwiązaniem okazało się zdefiniowanie klasy realizującej interfejs &lt;a
      href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-j2eeserver/org/netbeans/modules/j2ee/deployment/plugins/spi/config/ContextRootConfiguration.html"&gt;org.netbeans.modules.j2ee.deployment.plugins.spi.config.ContextRootConfiguration&lt;/a&gt; i stworzenie jej egzemplarzy przez fabrykę realizującą interfejs &lt;a
      href="http://bits.netbeans.org/dev/javadoc/org-netbeans-modules-j2eeserver/org/netbeans/modules/j2ee/deployment/plugins/spi/config/ModuleConfigurationFactory.html"&gt;org.netbeans.modules.j2ee.deployment.plugins.spi.config.ModuleConfigurationFactory&lt;/a&gt;, a wskazaną przez plik konfiguracyjny wtyczki - &lt;span style="font-weight: bold;"&gt;layer.xml&lt;/span&gt; (plik jest wskazany przez klucz &lt;span style="font-weight: bold;"&gt;OpenIDE-Module-Layer&lt;/span&gt; w &lt;span style="font-weight:
      bold;"&gt;META-INF/MANIFEST.MF&lt;/span&gt;). Wystarczyło trochę poszperać w javadoc oraz kodach źródłowych wtyczek do GlassFisha, JBossa i WebSphere Application Server, i wszystko stało się jasne. Jestem bliżej pełnego uruchomienia aplikacji webowej na Geronimo z poziomu NetBeans. Już się nie mogę doczekać. Muszę się jeszcze uzbroić w cierpliwość.&lt;br /&gt;&lt;br /&gt;Dzisiejszy dzień jest również świętem dla projektu NetBeans, który opublikował wersję beta NetBeans IDE 6.5 Beta. A w nim:&lt;br
      /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;NetBeans.org is proud to announce the availability of NetBeans IDE 6.5 Beta!&lt;br /&gt;&lt;br /&gt;* &lt;a href="http://download.netbeans.org/netbeans/6.5/beta/"&gt;Download Now&lt;/a&gt;&lt;br /&gt;* &lt;a href="http://www.netbeans.org/community/releases/65/"&gt;Learn More&lt;/a&gt;&lt;br /&gt;* &lt;a href="http://www.netbeans.org/kb/index.html"&gt;Tutorials &amp;amp; Documentation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;NetBeans IDE 6.5 Beta
      introduces several new features, including a robust IDE for PHP, JavaScript debugging for Firefox and IE, and support for Groovy and Grails. This release also includes a number of enhancements for Java, Ruby and Rails, and C/C++ development. Java feature highlights include: built-in support for Hibernate, Eclipse project import, and compile on save.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jest tego trochę, więc zainteresowanych skróceniem czasu w projektach na żmudnym konfigurowaniu szkieletów
      aplikacyjnych, samych aplikacji i zarządzaniu serwerami aplikacyjnymi zachęcam do popróbowania się z NetBeans IDE 6.5 Beta (skoro jest to wersja BETA należy uważać jakie projekty poddamy próbie - warto zabezpieczyć się zapisując projekt w systemie kontroli wersji, aby nie było niespodzianek).&lt;br /&gt;&lt;br /&gt;Dla żyjących na ostrzu technologicznego noża może się przydać odpowiedź na pytanie &lt;a
      href="http://www.nabble.com/NetBeans-IDE-6.5-Beta-Now-Available-for-Download%21-td18963574.html"&gt;&lt;span style="font-style: italic;"&gt;Which daily build is this equivalent to?&lt;/span&gt;&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;None.&lt;br /&gt;Beta clone has been created on August 4th. Only imported bug fixes were fixed in the clone - &lt;a
      href="http://www.netbeans.org/issues/buglist.cgi?issue_type=DEFECT&amp;amp;resolution=FIXED&amp;amp;keywords=65_HR_FIX"&gt;http://www.netbeans.org/issues/buglist.cgi?issue_type=DEFECT&amp;amp;resolution=FIXED&amp;amp;keywords=65_HR_FIX&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And the Beta was built from this Beta clone, of course. Therefore it is like build from August 4th + bugfixes + branding.&lt;br /&gt;The daily builds are different. Fixing of issues continues. There were 647 bugs fixed in the trunk from
      the 8/4 - &lt;a href="http://www.netbeans.org/issues/buglist.cgi?issue_type=DEFECT&amp;amp;chfield=resolution&amp;amp;chfieldfrom=2008-08-04&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=FIXED"&gt;http://www.netbeans.org/issues/buglist.cgi?issue_type=DEFECT&amp;amp;chfield=resolution&amp;amp;chfieldfrom=2008-08-04&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=FIXED&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Znalezione w archiwum grupy dyskusyjnej &lt;a
      href="http://www.nabble.com/Netbeans---Users-f2605.html"&gt;NetBeans users&lt;/a&gt;.</description>
      <pubDate>Wed, 13 Aug 2008 22:01:28 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Klawiszologia NetBeans ponownie, OSGi na JDD 2008 w Krakowie oraz NetBeans Debugger board</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-2218271437170348328</guid>
      <link>http://jlaskowski.blogspot.com/2008/08/klawiszologia-netbeans-ponownie-osgi-na.html</link>
      <description>Każdego dnia uczestnicząc w pracach &lt;a href="http://qa.netbeans.org/processes/cat/65/"&gt;NetBeans IDE 6.5 Community Acceptance Testing program (NetCAT)&lt;/a&gt; mam możliwość poznawania kolejnych skrótów klawiszowych (pewnie łatwiej byłoby przejrzeć po prostu &lt;span style="font-weight: bold;"&gt;Keyboard Shortcuts Card&lt;/span&gt; dostępne pod głównym menu &lt;span style="font-weight: bold;"&gt;Help&lt;/span&gt;, ale poznawanie przez NetCAT traktuję jako efekt uboczny i nie chcę
      psuć sobie zabawy). Dzisiaj trafiłem na dwa skróty dotyczące operacji na pojedyńczej linii w edytorze Java - &lt;span style="font-weight: bold;"&gt;Alt+Shift + Up/Down&lt;/span&gt; oraz &lt;span style="font-weight: bold;"&gt;Ctrl+Shift + Up/Down&lt;/span&gt;. Pierwszy z nich - &lt;span style="font-weight: bold;"&gt;Alt+Shift + Up/Down&lt;/span&gt; - przenosi linię, na której znajduje się kursor w górę/dół, natomiast drugi - &lt;span style="font-weight: bold;"&gt;Ctrl+Shift + Up/Down&lt;/span&gt; -
      kopiuje aktualną linię na górze/dole. Z pewnością istnieją dla nich odpowiedniki eclipsowe, ale niestety nie znam ich, a chciałbym. Kto zlituje się nade mną i pozwoli mi je poznać?&lt;br /&gt;&lt;br /&gt;Miałem wstrzymać się z ogłoszeniem tej wiadomości, aż do momentu sfinalizowania programu mojego wystąpienia na tegorocznej edycji &lt;a href="http://08.jdd.org.pl/"&gt;Java Developer Day 2008&lt;/a&gt; 16 października w Krakowie, ale skoro już podano to do publicznej wiadomości, nie pozostaje mi nic
      innego, jak zaprosić czytelników Notatnika na mój wykład &lt;a href="http://08.jdd.org.pl/agenda"&gt;"Wprowadzenie do OSGi (z Apache Felix, Spring Dynamic Modules (aka Spring-OSGi) oraz GlassFish v3 i IBM WebSphere AS 6.1)"&lt;/a&gt;, w którym przedstawię czym jest specyfikacja OSGi, jej implementacje oraz środowiska oparte o nią. Postaram się również odpowiedzieć na pytania związane z OSGi, do których zadawania gorąco zapraszam. Organizatorzy JDD przyjęli moją propozycję wystąpienia, co zawsze
      traktuję jako wyróżnienie. Jeśli chcesz poczuć, co mam na myśli zostało niewiele czasu, aby skorzystać z ceny promocyjnej na konferencję (15 sierpnia upływa kolejna zniżka!). Pora zaplanować 16 października i skorzystać z promocji. &lt;a href="http://08.jdd.org.pl/rejestracja"&gt;Rejestracja&lt;/a&gt; trwa.&lt;br /&gt;&lt;br /&gt;Dzisiaj dostałem wiadomość do skrzynki o rozpoczęciu programu sprawdzenia użyteczności &lt;span style="font-weight: bold;"&gt;NetBeans Debugger&lt;/span&gt;. &lt;span
      style="font-weight: bold;"&gt;Peter Pis&lt;/span&gt; w &lt;span style="font-style: italic;"&gt;Welcome on NetBeans Debugger board&lt;/span&gt; napisał:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Let me welcome you on NetBeans Debugger board. This is the first notification email from interest@debugger.netbeans.org mailing list that confirms you're the NetBeans Debugger Contributor. All details about this program can be found:&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://wiki.netbeans.org/NetBeansDebuggerContributors"&gt;http://wiki.netbeans.org/NetBeansDebuggerContributors&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Task 1:&lt;br /&gt; Your first task is testing of redesign of multi threaded debugging that has been recently integrated into the standard distribution of the NetBeans IDE 6.5. We are also looking forward to your feedback.&lt;br /&gt;&lt;br /&gt; The new multi threaded debugging feature set for NetBeans IDE 6.5 has already been finalized, so the main
      task for now is multi-threaded debugging testing and quality.&lt;br /&gt;&lt;br /&gt; Debugger testing will be launched together with the release of NetBeans IDE 6.5 Beta. Time schedule for the first Debugger Contributor task can be found:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://qa.netbeans.org/processes/cat/65/index.html"&gt;http://qa.netbeans.org/processes/cat/65/index.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Jeśli jesteś zainteresowany/-a uczestniczeniem w programie zapraszam do grupy
      - wystarczy &lt;span style="font-style: italic;"&gt;"send a blank e-mail to interest-subscribe@debugger.netbeans.org"&lt;/span&gt;. Na każdego czekają liczne wyróżnienia i nagrody, wliczając:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * direct reporting issues into the IssueZilla via Exception Reporter&lt;br /&gt; * new features and UI specification reviews, evaluation of prototypes&lt;br /&gt; * influence on nominating issues that should be integrated into Patch&lt;br /&gt;
      updates&lt;br /&gt; * influence on nominating issues that should be fixed before releases&lt;br /&gt; * closer cooperation and keeping in touch with development&lt;br /&gt; * T-shirts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rozumiem, że może nie być zbyt interesujące ocenianie pracy z NetBeans Debugger, ale posiadanie T-shirt'a jest po prostu obowiązkowe na jesień 2008 ;-)</description>
      <pubDate>Mon, 11 Aug 2008 21:07:58 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Skróty klawiszowe w NetBeans, Geronimo 2.1.2, wolatylność i demo Hibernate Support in the NetBeans IDE</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-7368220739143226801</guid>
      <link>http://jlaskowski.blogspot.com/2008/08/skrty-klawiszowe-w-netbeans-geronimo.html</link>
      <description>Ostatnie dni spędzam ślęcząc godzinami nad rozwojem wtyczki &lt;span style="font-weight: bold;"&gt;NetBeans dla Geronimo (GNbP - Geronimo NetBeans Plugin)&lt;/span&gt; i każdy dzień to jakaś "ciekawostka". Piszę w cudzysłowiu, bo praca z zarządcami klas (ang. &lt;span style="font-style: italic;"&gt;classloader&lt;/span&gt;) w NetBeans to jak praca z Ajaxem normalnie "czystym relaksem" (prawdopodobnie w każdym bardziej złożonym środowisku miałbym podobne problemy, więc nie spodziewałbym
      się wielu ułatwień w tym obszarze, np. w Eclipse czy IntelliJ IDEA). A że nie stworzyłem sobie żadnych testów, to klepię wciąż to samo sprawdzając, czy tym razem jest lepiej. W końcu jest lepiej. Udało mi się w końcu przejść pomyślnie krok uruchomienia i zatrzymania Geronimo oraz dzisiaj uruchomiłem pierwszą aplikację webową (!) Jest jeszcze problem z automatycznym uruchomieniem przeglądarki ze względu na błąd związany z niezdefiniowaną zmienną ${url.client}, ale sama aplikacja jest już poprawnie
      uruchomiona. Kolejny kamień milowy zaliczony. Jeśli jesteś zainteresowany/-a kodami zapraszam do pobrania projektu z repozytorium SVN - &lt;a href="http://svn.apache.org/repos/asf/geronimo/sandbox/geronimo-netbeans-plugin"&gt;http://svn.apache.org/repos/asf/geronimo/sandbox/geronimo-netbeans-plugin&lt;/a&gt;. Chętnie popracowałbym w parze, albo w ogóle w grupie równie zdeterminowanych co i ja (projekt rozpocząłem bodajże 1,5 roku temu, a postępy mierne!) ;-)&lt;br /&gt;&lt;br /&gt;Tak sobie siedzę
      przed tym NetBeans i tak się złożyło, że w zasadzie Eclipse'a nie widziałem już dawno (poza jego komercyjnymi odpowiednikami, jak RAD czy WID). Czym więcej człowiek siedzi w wybranym IDE tym bardziej korci go próbowanie się z dostępnymi skrótami klawiszowymi. W którymś momencie spróbowałem skrótu &lt;span style="font-weight: bold;"&gt;psvm + TAB&lt;/span&gt; i jakie było moje zdumienie, kiedy w klasie pojawił się szablon metody &lt;span style="font-style: italic;"&gt;main&lt;/span&gt;:&lt;pre&gt;
      public static void main(String[] args) {&lt;br /&gt; }&lt;/pre&gt;Teraz już łatwo zrozumieć skąd ten skrót - &lt;span style="font-style: italic;"&gt;psvm - public static void main&lt;/span&gt;. Nigdy nie udało mi się namierzyć tego w Eclipse (przyznaję, że nie poświęciłem temu wiele czasu, więc zapewne stąd nadal brak odpowiedzi). Plus dla NetBeans. Edytor javowy zawsze był domeną Eclipse, ale tym razem NetBeans rulez.&lt;br /&gt;&lt;br /&gt;Tak sobie przeglądam kodu źródłowe wtyczek dla GF, WAS, WLS
      i JBAS w NetBeans i natrafiłem na taką konstrukcję (zmodyfikowaną na potrzeby wtyczki GNbP):&lt;pre&gt; static {&lt;br /&gt; java.util.logging.Logger.getLogger("org.apache.geronimo.netbeans").setLevel(java.util.logging.Level.FINEST);&lt;br /&gt; java.util.logging.Logger.getLogger("org.apache.geronimo.deployment.plugin.factories").setLevel(java.util.logging.Level.FINEST);&lt;br /&gt; }&lt;/pre&gt;Bardzo spodobała mi się owa sztuczka, która polegająca na statycznej konfiguracji poziomu odnotowywanych
      zdarzeń aplikacji. W ten sposób zapominam o konfiguracji za pomocą jakiegoś tam pliku, gdzieś tam (świadomie podkreślam moją tymczasową niewiedzę, co musiałbym ustawić i gdzie). Po prostu mam gwarancję, że uruchomienie klasy zawierającej ten blok statyczny zapewni mi odpowiedni poziom komunikatów. Trudno mi znaleźć więcej zalet niż chwilowa niewiedza, gdzie umieścić odpowiedni plik konfiguracyjny, ale co tu dużo ukrywać, zachwyciłem się tą konstrukcją. Pewnie nie udałoby mi się odeprzeć zarzutu o
      braku możliwości zmiany bez kompilacji, co w dobie dynamicznych konfiguracji "w locie" (= w trakcie wykonywania aplikacji) jest nie do przecenienia, ale efekt zachwytu jest. Pomyślałem, aby odnotować tą ciekawostkę. Może się później przyda ponownie i już będę wiedział, gdzie jej szukać.&lt;br /&gt;&lt;br /&gt;Kontynuując moją batalię z zawiłościami bardziej zaawansowanej pracy w środowisku NetBeans IDE 6.5 (przypominam, że wciąż w wersji rozwojowej) natrafiłem na kolejny skrót klawiszowy &lt;span
      style="font-weight: bold;"&gt;Ctrl+Shift+I&lt;/span&gt;, który, w przeciwieństwie do &lt;span style="font-weight: bold;"&gt;Alt+Shift+I&lt;/span&gt;, obsługuje dodanie brakujących importów w całej klasie/interfejsie bez konieczności ustawienia kursora na podkreślonym typie. Napotkałem również &lt;span style="font-weight: bold;"&gt;Ctrl + F12&lt;/span&gt;, czyli eclipsowe &lt;span style="font-weight: bold;"&gt;Ctrl+O&lt;/span&gt;, który otwiera widok na składowe - pola i metody - edytowanego typu
      (=klasa lub interfejs). A na koniec, już rozochocony moimi znaleziskami, postanowiłem sprawdzić skrót &lt;span style="font-weight: bold;"&gt;fore + TAB&lt;/span&gt; (wstawia szablon pętli for po Enumeration). Działa! I jest również w Eclipse, podobnie jak &lt;span style="font-weight: bold;"&gt;fori&lt;/span&gt;. Ciekawym, ilu z Was korzysta z takich udogodnień w swoim wybranym IDE. I ile z nich jest całkowicie nieintuicyjnych? Nie mogłem wyjść z podziwu, kiedy zobaczyłem z jakim niedowierzaniem i
      zdumieniem są przyjmowane te i inne sztuczki przez osobę całkowicie niezaznajomioną z nimi, a która dopiero rozpoczynała swoją działalność z Eclipse IDE. Po prostu nie mogła nadziwić się, że tak można (!) Zobaczyć rozradowaną minę kolegi...bezcenne! ;-)&lt;br /&gt;&lt;br /&gt;Ja się zabawiam wtyczką GNbP, a tu proszę &lt;a href="http://cwiki.apache.org/GMOxDOC21/release-notes-212txt.html"&gt;Apache Geronimo v2.1.2 - Released&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:
      italic;"&gt;Apache Geronimo v2.1.2 have passed 100% SUN's Java Enterprise Edition 5.0 Certification Test Suite. Refer to Apache Geronimo v2.1.2 Release Notes for further details.&lt;br /&gt;&lt;br /&gt;The Apache Geronimo project is pleased to announce the new v2.1.2 release. This release is primarily a maintenance upgrade that pulls together fixes not only for Geronimo but also other key components included in the server. Improvements have been made in the administrative console, GShell command line
      processing, messages, and numerous other areas. Details of the fixes included can be seen in the Release Notes. Many issues have also been resolved in newer versions of core components that have been included in this Geronimo release. Geronimo v2.1.2 component upgrades include Tomcat 6.0.16, CXF 2.0.8, JavaMail 1.5, MyFaces 1.2.3, WADI 2.0, and Yoko 1.0 among others.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pierwszym zaskoczeniem był rozmiar paczki, gdzie poprzedni &lt;span style="font-style:
      italic;"&gt;geronimo-jetty6-javaee5-2.1.1-bin.tar.gz&lt;/span&gt; to 71,2MB a &lt;span style="font-style: italic;"&gt;geronimo-jetty6-javaee5-2.1.2-bin.tar.gz&lt;/span&gt; to 68,8MB. Czyżby Geronimo skorzystał z jakieś diety odchudzającej?! Oby nie okazało się, że w tym odchudzaniu zabrakło jakieś funkcjonalności. Okazuje się, że można dodać nowe (patrz &lt;a href="http://cwiki.apache.org/GMOxDOC21/release-notes-212txt.html"&gt;Geronimo 2.1.2 Release Notes&lt;/a&gt;) i ostatecznie zmniejszyć rozmiar
      paczki dystrybucyjnej.&lt;br /&gt;&lt;br /&gt;Wspominałem już o mojej analizie kodu źródłowego wtyczek NetBeans dla innych serwerów aplikacyjnych. Lektura źródeł zawsze kończy się dla mnie jakąś niespodzianką. Nikt nie mówi, że musi być ona przyjemna, ale tym razem była. Okazuje się, że raczej rzadko stosowana acz kluczowa klasa &lt;a href="http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html"&gt;java.lang.ClassLoader&lt;/a&gt; udostępnia statyczną metodę &lt;a
      href="http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#getSystemClassLoader()"&gt;getSystemClassLoader()&lt;/a&gt;, która zwraca systemowego zarządcę klas, który jest nadrzędny dla wszystkich nowych zarządców klas. Jest to zazwyczaj zarządca odpowiedzialny za uruchomienie aplikacji. W typowych aplikacjach desktopowych będzie to również zarządca dostępny przez &lt;a
      href="http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#getContextClassLoader()"&gt;Thread.currentThread().getContextClassLoader()&lt;/a&gt;. Co mnie jednak zdumiło w całym tym skomplikowanym świecie zarządców klas to możliwość nadpisania domyślnego zarządcy przez zmienną &lt;span style="font-weight: bold;"&gt;java.system.class.loader&lt;/span&gt;. Niby nic nadzwyczajnego, ale możliwość zdefiniowania własnego rozszerzenia środowiska uruchomieniowego naszych aplikacji javowych daje większe
      możliwości niż jego nieznajomość. Nawet jak nie wiadomo po co, to warto wiedzieć. A nuż się przyda. Największe jednak zdumienie wywołał fakt, że jest to statyczna metoda, której istnienia w ogóle nie byłem świadom. W zasadzie zaleca się korzystanie z Thread.currentThread().getContextClassLoader() do dynamicznego ładowania klas (co jest szeroko stosowane np. w OSGi), więc wiedza zdaje się być nikłej wartości praktycznej. A może komuś jednak udało się skorzystać z tej metody, albo wręcz z tej zmiennej
      środowiskowej? Koniecznie się tym należy pochwalić tu i teraz.&lt;br /&gt;&lt;br /&gt;Na koniec chciałbym wyrazić swoją dezaprobatę na szastanie naszym językiem we wszystkie możliwe strony i bezkrytycznym naśladowaniem "wyuzdanych" tłumaczeń. Kilka przykładów z szerokiego świata javowego. Nie, nie wspomnę o kontrowersyjnym ziarnie jako odpowiedniku bean, czy szkielecie aplikacyjnym lub rusztowaniu, czy ostatni hit sezonu - stelażu - dla framework, ale o kilku bardziej wyuzdanych. Zacznijmy od &lt;a
      href="http://dictionary.cambridge.org/define.asp?key=19147&amp;amp;dict=CALD"&gt;customize&lt;/a&gt;. Ile to razy wokół mnie pada termin "kastomizacja". Czy nie można po prostu użyć słowa &lt;span style="font-style: italic;"&gt;dopaso(wy)wanie&lt;/span&gt;?! Czyż nie ładniej brzmi i na pewno wyjaśnia co autor miał na myśli. Pewnie niejeden z nas przez moment miał zawrót głowy od "kastomizacja" czy "kastomizowalny", ale po chwili samemu rozpoczął krucjatę "kastomizacji". Proponuję zaprzestać jego
      używania raz na zawsze. Zgoda?&lt;br /&gt;&lt;br /&gt;Kolejnym kandydatem na ustrzelenie, to nieszczęsne - zaadresowanie problemu jako odpowiednik angielskiej frazy &lt;a href="http://dictionary.cambridge.org/define.asp?key=988&amp;amp;dict=CALD"&gt;address an issue&lt;/a&gt;, czyli &lt;span style="font-style: italic;"&gt;obsłużyć problem&lt;/span&gt;. Wystarczy więc obsłużyć problem tłumaczeń, aby dopasować jeden język do drugiego i już jesteśmy bardziej rozumiani. W tym samym tonie miałem ostatnio
      okazję wysłuchania wypowiedzi szefa pewnego TFI na P w TVN CNBC (gość pod krawatem wyprasowany na kanty, gdzie się dało), który użył słowa, które wręcz zdusiło mnie za gardło - wolatylność. Po prostu odjęło mi mowę. Dopiero zaczynam moje potyczki ekonomiczne, ale jeśli mam doświadczać tej nowomowy znanej mi poniekąd z informatyki, to zapewne powinienem zacząć się przyzwyczajać do takich kwiatków? Pewnie Cię zaintrygowało czytelniku cóż może znaczyć owo słowo, więc zapraszam do wspaniałego wyjaśnienia
      słowa wolatylność w &lt;a href="http://www.bankier.pl/forum/temat_Wademekum-LESZCZA-Z-PARKIETU,3927496.html"&gt;Wademekum LESZCZA !! ( Z PARKIETU)&lt;/a&gt;. Autor wyjaśnił słowo nad wyraz wspaniale:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WOLATYLNOŚĆ (od ang. volatility) nowomowa ANALI, którzy chcą pokazać, ze obracają się w nie byle jakim towarzystwie. Normalny człowiek powie po prostu zmienność.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;ANALe to analitycy rynków kapitałowych.
      Potrafią przyłożyć, nieprawdaż? W ten sposób zamiast zapraszać odstraszają. Czyż nie doświadczamy tego również i w naszej polskiej rzeczywistości programistycznej, z owymi frameworkami i beanami? Zgoda, szkielet aplikacyjny czy ziarno nie poprawia za bardzo sprawy, ale można liczyć na pewne skojarzenia u rozmówcy, niezaznajomionego z obowiązującą nomenklaturą. Właśnie o to chodzi. Niekoniecznie musi to wyjaśniać temat dokładnie, a wystarczy, aby sugerował znaczenie.&lt;br /&gt;&lt;br /&gt;Na
      zakończenie dla spragnionych wsparcia Hibernate w NetBeans ciekawe demo &lt;a href="http://www.netbeans.tv/screencasts/Hibernate-Support-in-the-NetBeans-IDE-370/"&gt;Hibernate Support in the NetBeans IDE&lt;/a&gt;. Nie jest to bardzo wyrafinowane demo, ale pokazuje jak w prosty sposób można szybko stworzyć prototyp aplikacji wizualnie (trochę kodowania też jest, więc nie ma obawy, jeszcze nas nie pozwalniają po wdrożeniu NetBeans IDE w firmach). Pora wygodnie się rozsiąść, założyć ręce za głowę i
      włączyć prezentację. Warto chociażby dla samej nauki języka i trudnej sztuki prezentacji (jednoczesne kodowanie i mówienie nie należy do łatwych zadań). Zastanawiam się jakim powodzeniem cieszą się takie krótkie filmy-demo w porównaniu z artykułami ze zrzutami ekranów. Lepsze? Gorsze? Mam wrażenie, że ich odbiór jest przyjemniejszy, ale nie można ich wydrukować, i przeczytać w autobusie/metrze, więc jest trochę wad. Jeśli mniej niż zalet, to może warto wdrożyć taką formę prezentacji w Notatniku?
      Miłego oglądania!</description>
      <pubDate>Wed, 06 Aug 2008 22:03:00 +0000</pubDate>
    </item>
    <item>
      <title>Java i pochodne: JavaFX Preview SDK dostępne</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-732565809886974735.post-3957585980709011124</guid>
      <link>http://gruchala.eu/2008/07/javafx-preview-sdk-dostpne.html</link>
      <description>&lt;p&gt;Można próbować swoich sił ;-)&lt;/p&gt; &lt;p&gt;Pobieranie: &lt;a href="http://www.blogger.com/www.javafx.com"&gt;www.javafx.com&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Strona projektu: &lt;a href="http://java.sun.com/javafx"&gt;http://java.sun.com/javafx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Plugin do NetBeans'a: &lt;a href="http://javafx.netbeans.org/"&gt;http://javafx.netbeans.org/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Aktualizacja: Pojawił się wpis o uruchamianiu JavaFX na Linuksie. Wpis popełnił Java
      Champion, także warto zajrzeć - &lt;a href="http://learnjavafx.typepad.com/weblog/2008/08/using-the-javaf.html"&gt;http://learnjavafx.typepad.com/weblog/2008/08/using-the-javaf.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 06 Aug 2008 06:47:23 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Urlop na Roztoczu oraz wtyczka NetBeans dla Geronimo</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-5352373494599427906</guid>
      <link>http://jlaskowski.blogspot.com/2008/08/urlop-na-roztoczu-oraz-wtyczka-netbeans.html</link>
      <description>&lt;span style="font-style: italic;"&gt;"Każdy ma swój urlop, miałem i ja - na Roztoczu"&lt;/span&gt; mógłbym parafrazować słowa pewnej reklamy. Tak, to prawda. Po długim ślęczeniu przed komputerem w końcu nadeszła pora na wymarzony urlop. Żona zafundowała mi rodzinny wyjazd na kilka dni na Lubelszczyznę, a dokładnie na Roztocze w Roztoczańskim Parku Narodowym we wsi Rudka k/Zwierzyńca.&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp2.blogger.com/_wSeV_DMR2uA/SJNgJEvtCSI/AAAAAAAABCU/MdXd8FNPBaI/s1600-h/mapka.gif"&gt;&lt;img src="http://bp2.blogger.com/_wSeV_DMR2uA/SJNgJEvtCSI/AAAAAAAABCU/MdXd8FNPBaI/s320/mapka.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5229629301316192546" /&gt;&lt;/a&gt;Pierwszy dzień - terenu rozpoznanie. Drugi dzień - od rana kajakiem spływanie (Wieprzem). Trzeciego - spływu kontynuowanie. W międzyczasie wizyta
      w Zamościu, w którym rodzinie obiecałem wizytę na zamku, który...nie istnieje! Skąd ja wziąłem to przekonanie o zamku?! Sądziłem, że w Zamościu jest zamek, bo to takie historyczne miasto, a tu nic, zero zamków. Mimo wszystko warto było. Odwiedziliśmy bar mleczny przy Rynku Głównym, w którym jedzenie było przepyszne, a na samym Rynku pyszne gofry. W wolnej chwili wylegiwanie na plaży nad jeziorem "Stawy Echo" w samym Parku, przy stanowisku Konika Polskiego. Wszystko okraszone piwem Zwierzyniec za
      bagatela 4PLN za 0,5L w knajpie (!) Trudno się dziwić skoro browar piwa Zwierzyniec to właśnie miasto Zwierzyniec. Pogoda dopisała, więc wyjazd, mimo, że jedynie 5-dniowy, udał się wspaniale. Bez dostępu do komputera, braku telewizora, ze spaniem po 9 godzin i ciągle na dworze można niesamowicie wypocząć. Polecam! Jako podsumowanie wspaniałego miejsca na wypoczynek niech wystarczy (niewyraźne) zdjęcie z miejscowej lodziarni.&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp0.blogger.com/_wSeV_DMR2uA/SJNgviH1fsI/AAAAAAAABCc/k8mlIk2nf7A/s1600-h/IMG_8097.jpg"&gt;&lt;img src="http://bp0.blogger.com/_wSeV_DMR2uA/SJNgviH1fsI/AAAAAAAABCc/k8mlIk2nf7A/s320/IMG_8097.jpg" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5229629962037067458" /&gt;&lt;/a&gt;Potrafią rozbawić człowieka, nieprawdaż?! Po drodze na Roztocze (z Warszawy) przejeżdża się przez miasto chrząszcza - Szczebrzeszyn. Teraz,
      nie tylko potrafię wskazać kolejny Park Narodowy, ale i wiem, gdzie ów słynny Szczebrzeszyn leży. Jako ciekawostkę pobytu w zajeździe "W Starym Kinie" w Rudce codzienny brak Javy rekompensowało mi śniadanie z Mocha Java na ścianie.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_wSeV_DMR2uA/SJNhcVljQHI/AAAAAAAABCk/QhhUJxKukcA/s1600-h/IMG_8618.jpg"&gt;&lt;img src="http://bp1.blogger.com/_wSeV_DMR2uA/SJNhcVljQHI/AAAAAAAABCk/QhhUJxKukcA/s320/IMG_8618.jpg" alt="" style="margin: 0px auto 10px;
      display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5229630731766153330" /&gt;&lt;/a&gt;Chyba jestem skazany na Javę.&lt;br /&gt;&lt;br /&gt;W drodze powrotnej zawitaliśmy do &lt;span style="font-weight: bold;"&gt;Karczmy "Bida"&lt;/span&gt;, która mimo swojej nazwy serwowała smakowite dania w porcjach znacząco przewyższających nasze oczekiwania. Przyzwyczajeni do typowych rozmiarów potraw w przydrożnych karczmach trzeba było widzieć nasze miny, kiedy na deser
      zamówiliśmy placki ziemniaczane i naleśniki, a podano nam zestawy obiadowe. Jedzenie pyszne i to w okazałych ilościach.&lt;br /&gt;&lt;br /&gt;Po powrocie przejrzenie poczty, a tam ciekawostka związana z &lt;span style="font-weight: bold;"&gt;NetBeans IDE 6.5&lt;/span&gt;. Co jakiś czas NetBeans 6.5 (w fazie rozwojowej) zaskakuje. A to wsparcie dla nowych typów projektów, a to znaczna poprawa wyświetlania struktury katalogowej projektów podczas ich importu/otwarcia/itp., a tu jeszcze...wsparcie
      Apache Geronimo przez NetBeans IDE za pomocą wtyczki &lt;span style="font-weight: bold;"&gt;Geronimo 2 Application Server&lt;/span&gt;. Nikt się nie chwalił, nikt nie napisał, niedobrze. Taka funkcjonalność, a tak niewiele reklamy. Czyżby autorowi nie zależało na sprawdzeniu wtyczki w ogólnym użyciu?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_wSeV_DMR2uA/SJNh16DTG9I/AAAAAAAABCs/Gh61R_r37HM/s1600-h/geronimo-netbeans.gif"&gt;&lt;img
      src="http://bp3.blogger.com/_wSeV_DMR2uA/SJNh16DTG9I/AAAAAAAABCs/Gh61R_r37HM/s320/geronimo-netbeans.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5229631171051330514" /&gt;&lt;/a&gt;Jeszcze nie próbowałem się z nią, ale może ktoś z Was już to zrobił?! Jakie wrażenia? Warto się jej przyjrzeć? Jaka wersja Apache Geronimo jest wspierana? Podobno rozwojowa wersja 2.2 nie jest.&lt;br /&gt;&lt;br /&gt;p.s. W trakcie urlopu
      udało mi się zebrać w sobie i przeczytałem książkę &lt;a href="http://www.bogaty-ojciec.pl/?a=bogaty-ojciec"&gt;"Bogaty Ojciec, Biedny Ojciec"&lt;/a&gt; Roberta T. Kiyosaki'ego. Książka przedstawia prawdy oczywiste na temat naszego podejścia do pieniędzy i pracy, która jest ich głównym źródłem, w bardzo nietypowy sposób. Nawet, jeśli wciąż liczysz, że praca jest dla Ciebie wszystkim, a ZUS zapewni Ci dostatek, warto zapoznać się z nią. Teraz wszędzie wokół mnie widzę tylko pasywa ;-) Pora zabrać się
      za stronę aktywów. Sugestie mile widziane.</description>
      <pubDate>Fri, 01 Aug 2008 19:35:44 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: faces-config.xml podzielony z javax.faces.CONFIG_FILES</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-8759995512025413778</guid>
      <link>http://jlaskowski.blogspot.com/2008/07/faces-configxml-podzielony-z.html</link>
      <description>Zgodnie ze specyfikacją &lt;span style="font-weight: bold;"&gt;JavaServer Faces 1.2&lt;/span&gt; (&lt;span&gt;rozdział &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;10.4.2 Application Startup Behavior&lt;/span&gt;, strona 312) podczas uruchamiania aplikacji webowej korzystającej z JSF implementacja JSF wykonuje następujące kroki konfiguracyjne:&lt;ol&gt;&lt;li&gt;(opcjonalnie) sprawdza istnienie definicji servletu &lt;span style="font-weight:
      bold;"&gt;javax.faces.webapp.FacesServlet&lt;/span&gt; w deskryptorze wdrożenia i w przypadku jego braku może w tym momencie zakończyć pracę&lt;/li&gt;&lt;li&gt;poszukuje &lt;span style="font-weight: bold;"&gt;META-INF/faces-config.xml&lt;/span&gt; we wszystkich zasobach aplikacji webowej (poprzez odpytanie ServletContext o wszystkie dostępne zasoby, jak pliki jar, czy zawartość WEB-INF/classes) i wczytuje je jako plik konfiguracyjny JSF w odwrotnej kolejności do tej zwróconej przez &lt;span
      style="font-style: italic;"&gt;Thread.getContextClassloader().getResources()&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;sprawdza istnienie parametru kontekstowego &lt;span style="font-weight: bold;"&gt;javax.faces.CONFIG_FILES&lt;/span&gt;, który jest listą plików konfiguracyjnych oddzielonych przecinkiem, a następnie wczytuje je kolejno&lt;/li&gt;&lt;li&gt;sprawdza istnienie pliku &lt;span style="font-weight: bold;"&gt;/WEB-INF/faces-config.xml&lt;/span&gt; w aplikacji webowej&lt;/li&gt;&lt;/ol&gt;Efekt
      kroku 2 można zauważyć w sposobie konfiguracji JBoss Seam, gdzie plik jboss-seam.jar zawiera w sobie plik META-INF/faces-config.xml z następującą konfiguracją:&lt;pre&gt; &amp;lt;?xml version="1.0"?&gt;&lt;br /&gt; &amp;lt;faces-config version="1.2" &lt;br /&gt; xmlns="http://java.sun.com/xml/ns/javaee"&lt;br /&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" &lt;br /&gt; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;factory&gt;&lt;br /&gt; &amp;lt;application-factory&gt;org.jboss.seam.jsf.SeamApplicationFactory&amp;lt;/application-factory&gt;&lt;br /&gt; &amp;lt;/factory&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;application&gt;&lt;br /&gt; &amp;lt;navigation-handler&gt;org.jboss.seam.jsf.SeamNavigationHandler&amp;lt;/navigation-handler&gt;&lt;br /&gt;
      &amp;lt;view-handler&gt;org.jboss.seam.jsf.SeamViewHandler&amp;lt;/view-handler&gt;&lt;br /&gt; &amp;lt;state-manager&gt;org.jboss.seam.jsf.SeamStateManager&amp;lt;/state-manager&gt;&lt;br /&gt; &amp;lt;el-resolver&gt;org.jboss.seam.el.SeamELResolver&amp;lt;/el-resolver&gt;&lt;br /&gt; &amp;lt;message-bundle&gt;org.jboss.seam.core.SeamResourceBundle&amp;lt;/message-bundle&gt;&lt;br /&gt; &amp;lt;/application&gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;lifecycle&gt;&lt;br /&gt;
      &amp;lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&amp;lt;/phase-listener&gt;&lt;br /&gt; &amp;lt;/lifecycle&gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;/faces-config&gt;&lt;/pre&gt;gdzie każdy z elementów wpływa na konfigurację naszej aplikacji webowej korzystającej z JBoss Seam (i niewprost z JSF). Przy okazji okazało się, że plik jboss-seam.jar zawiera również plik META-INF/ejb-jar.xml, co określa go również jako moduł EJB.&lt;br /&gt;&lt;br /&gt;Najbardziej zaintrygował mnie krok 3, o którym
      już ktoś mi wcześniej wspominał, jako sposobie na podział rozrastającego się faces-config.xml na mniejsze pliki składowe. Z pewnością zarządzanie mniejszymi plikami jest prostsze, więc możliwość podziału faces-config.xml na mniejsze pliki konfiguracyjne jest wartościową informacją.&lt;br /&gt;&lt;br /&gt;Możemy, więc posiadać wiele plików konfiguracyjnych w formacie faces-config.xml, które definiujemy w deskryptorze wdrożenia aplikacji webowej - &lt;span style="font-weight:
      bold;"&gt;/WEB-INF/web.xml&lt;/span&gt; następująco:&lt;pre&gt; &amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt; &amp;lt;web-app version="2.5" &lt;br /&gt; xmlns="http://java.sun.com/xml/ns/javaee"&lt;br /&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;&lt;br /&gt; &amp;lt;context-param&gt;&lt;br /&gt;
      &amp;lt;param-name&gt;javax.faces.CONFIG_FILES&amp;lt;/param-name&gt;&lt;br /&gt; &amp;lt;param-value&gt;/WEB-INF/produkcyjny-faces-config.xml, /WEB-INF/inny-faces-config.xml&amp;lt;/param-value&gt;&lt;br /&gt; &amp;lt;/context-param&gt;&lt;br /&gt; &amp;lt;/web-app&gt;&lt;/pre&gt;Daje to ciekawą możliwość nadpisywania konfiguracji, np. produkcyjnej testową lub podobnie, gdzie poszczególne definicje ziaren zarządzanych JSF w produkcyjny-faces-config.xml są nadpisane przez faces-config.xml w katalogu
      WEB-INF. Po wykonaniu testów funkcjonalnych można po prostu usunąć plik WEB-INF/faces-config.xml i wdrożyć aplikację na właściwe środowisko testowe.&lt;br /&gt;&lt;br /&gt;Pozostaje sprawdzenie, czy taki podział konfiguracji JSF jest wspierany przez środowiska programistyczne. Sprawdziłem NetBeans 6.5 i muszę przyznać, że mam dobrą i złą wiadomość. Zacznę od tej złej - jedynie faces-config.xml jest specjalnie traktowany jako plik konfiguracyjny JSF przez edytor PageFlow (pisałem o nim w &lt;a
      href="http://jlaskowski.blogspot.com/2008/07/netbeans-6-i-jego-edytor-pageflow-do.html"&gt;NetBeans 6 i jego edytor PageFlow do faces-config.xml&lt;/a&gt;). Dobra wiadomość jest taka, że tworząc ziarno zarządzane przez asystenta &lt;span style="font-weight: bold;"&gt;JSF Managed Bean&lt;/span&gt; w polu &lt;span style="font-weight: bold;"&gt;Configuration File&lt;/span&gt; widnieją nasze pliki konfiguracyjne JSF.&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp3.blogger.com/_wSeV_DMR2uA/SIjd9uCPRII/AAAAAAAABCE/sMJWYfpffzE/s1600-h/new-jsf-managed-bean.gif"&gt;&lt;img src="http://bp3.blogger.com/_wSeV_DMR2uA/SIjd9uCPRII/AAAAAAAABCE/sMJWYfpffzE/s320/new-jsf-managed-bean.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5226671419962639490" /&gt;&lt;/a&gt;Nie obyło się bez zgłoszenia kilku błędów odnośnie wsparcia javax.faces.CONFIG_FILES, jak np. &lt;a
      href="http://www.netbeans.org/issues/show_bug.cgi?id=141444"&gt;Issue #141444 [65cat] Configuration Files without all javax.faces.CONFIG_FILES&lt;/a&gt;, gdzie w Configuration Files jedynie wymieniony jest pierwszy z listy plików w javax.faces.CONFIG_FILES oraz faces-config.xml.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_wSeV_DMR2uA/SIjeFGj3IBI/AAAAAAAABCM/GXZtxlFxu7k/s1600-h/jsf-application.gif"&gt;&lt;img
      src="http://bp1.blogger.com/_wSeV_DMR2uA/SIjeFGj3IBI/AAAAAAAABCM/GXZtxlFxu7k/s320/jsf-application.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5226671546805198866" /&gt;&lt;/a&gt;Zastanawiam się, jak szeroko stosowana jest owa funkcjonalność JSF podziału pliku konfiguracyjnego faces-config.xml w projektach. Zdarzyło się u Ciebie? Chętnie zapoznałbym się z powodem takiego podziału - łatwość zarządzania, czy coś
      więcej?</description>
      <pubDate>Thu, 24 Jul 2008 20:07:33 +0000</pubDate>
    </item>
    <item>
      <title>Java i pochodne: Eclipse Project Importer w NetBeans 6.5</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-732565809886974735.post-6904744194019552984</guid>
      <link>http://gruchala.eu/2008/07/eclipse-project-importer-w-netbeans-65.html</link>
      <description>&lt;p&gt;Nawet nie zdążyłem wziąć się do pracy, a tu taka dobra informacja. To, że w NetBeans jest plugin do importowania eclipsowych projektów to wiedziałem, ale co mi z samego importu jak zmiany w Eclipsie nie byłyby uwzględniane w NB. A tu niespodzianka, bo wraz z NetBeans 6.5 &lt;span style="font-style: italic;"&gt;Eclipse Project Importer&lt;/span&gt; jest dodany by default. Co ważniejsze został ulepszony, a działa tak: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Mamy projekt w workspace i
      importujemy go w NetBeans - &lt;span style="font-style: italic;"&gt;File-&gt;Import Project-&gt;Eclipse Project...&lt;/span&gt;&lt;/li&gt;&lt;a href="http://bp0.blogger.com/_63iqep0nnFY/SIYkuOEE46I/AAAAAAAAAW4/IDHl2OLjAPM/s1600-h/epi_1.PNG"&gt;&lt;img src="http://bp0.blogger.com/_63iqep0nnFY/SIYkuOEE46I/AAAAAAAAAW4/IDHl2OLjAPM/s400/epi_1.PNG" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5225904794077815714"
      /&gt;&lt;/a&gt;Tak poza tym, to chyba zmienił się &lt;span style="font-style: italic;"&gt;File Chooser &lt;/span&gt;&lt;span&gt;w samym NB&lt;/span&gt;. &lt;li&gt;Wybieramy co chcemy importować&lt;/li&gt;&lt;/ol&gt;&lt;a href="http://bp2.blogger.com/_63iqep0nnFY/SIYlw_XXq8I/AAAAAAAAAXA/g91wggNVjhk/s1600-h/epi_2.PNG"&gt;&lt;img src="http://bp2.blogger.com/_63iqep0nnFY/SIYlw_XXq8I/AAAAAAAAAXA/g91wggNVjhk/s400/epi_2.PNG" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor:
      pointer;" border="0" id="BLOGGER_PHOTO_ID_5225905941183441858" /&gt;&lt;/a&gt; Teraz jest lepiej dlatego, że NetBeans monitoruje plik .classpath, który znajduje się w naszym workspace. I tu trochę dupa. Na razie tylko ten plik i w razie wprowadzenia zmian przez kogoś w Eclipse, musimy odpalić swojego Eclipse'a, pobrać aktualne pliki projektu z CVS'a i przy ponownym uruchomieniu NB ustawienia zostaną zaktualizowane. W przyszłości ma być dodane sunchronizacja pozostałych plików oraz przeniesienie zmian
      wprowadzonych w NetBeans do Eclipse'a. Miejmy nadzieję, że dzięki wpięciu tego pluginu w oficjalny release prace będą szybsze i już niedługo będzie solidne wsparcie. &lt;p&gt;&lt;/p&gt;&lt;p&gt; Więcej info w &lt;a href="http://www.netbeans.org/servlets/NewsItemView?newsItemID=1259&amp;amp;intcmp=925655"&gt;oficjalnej informacji&lt;/a&gt;. &lt;/p&gt;</description>
      <pubDate>Tue, 22 Jul 2008 18:43:26 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Zmiany w NetBeans 6.5 nie tylko w harmonogramie, netbeans.keep.expansion oraz ukryte skarby JDK - jps i jstack</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-8844623482058095027</guid>
      <link>http://jlaskowski.blogspot.com/2008/07/zmiany-w-netbeans-65-nie-tylko-w.html</link>
      <description>Przez długi okres czasu, od &lt;span style="font-weight: bold;"&gt;10 lipca&lt;/span&gt;, wersja rozwojowa NetBeans IDE 6.5 była niedostępna, aż dopiero 3 dni temu - &lt;span style="font-weight: bold;"&gt;17.07&lt;/span&gt; - pojawiła się długooczekiwana nowiuteńka paczka dystrybucyjna &lt;a href="http://bits.netbeans.org/dev/nightly/latest/zip/netbeans-trunk-nightly-200807170007.zip"&gt;netbeans-trunk-nightly-200807170007.zip&lt;/a&gt; (można zauważyć, że ponownie mamy przerwę w
      dziennych paczkach, bo jest 20.07, a wciąż w repozytorium najnowsza wersja to właśnie z 17.07!). Można, więc przysiąć i posprawdzać jego (nie)doskonałości, jednocześnie "zarabiając" kilka punktów w &lt;a href="http://qa.netbeans.org/processes/cat/65/"&gt;NetCAT 6.5&lt;/a&gt;. Tym razem obiecałem sobie, że przyjrzę się &lt;span style="font-weight: bold;"&gt;Groovy&lt;/span&gt; i &lt;span style="font-weight: bold;"&gt;Grails&lt;/span&gt;, których wsparcie jest nadzwyczaj wychwalane przez użytkowników
      groovy-grailsowych. Jeśli będzie można połączyć to z pracami wokół Korporacyjnej 5-tki z GlassFish v3 (w którym zagościło OSGi) to dlaczego nie poświęcić temu trochę czasu. Nie ma go wiele, więc jeśli go trwonić, to na rzeczy ciekawe, nieprawdaż?! W tym tonie udało mi się zapoznać z &lt;a href="http://www.ibm.com/developerworks/java/library/j-grails01158/"&gt;Mastering Grails: Build your first Grails application&lt;/a&gt;. Bardzo krótki acz treściwy artykuł prezentujący cechy Grailsów, które
      sprawiają, że programiści javowi nie muszą spoglądać w stronę Ruby on Rails (RoR). Na chwilę obecną wystarczy poznawania Grailsów, ale pytanie o możliwość integracji z innymi rozwiązaniami, np. opartymi o znaczniki JSP, pozostaje. Może ktoś rzucić trochę światła na kwestię integracji rozwiązań typu JSF z Grails? Czy to w ogóle jest porównywalne? Czy integracja ma rację bytu?&lt;br /&gt;&lt;br /&gt;Po uruchomieniu NetBeansa pierwsze zaskoczenie - pojawiła się nowa grafika początkowa (ang. &lt;span
      style="font-style: italic;"&gt;splash screen&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hg.netbeans.org/main/raw-file/987134de591e/core.startup/src/org/netbeans/core/startup/splash.gif"&gt;&lt;img src="http://hg.netbeans.org/main/raw-file/987134de591e/core.startup/src/org/netbeans/core/startup/splash.gif" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" border="0" alt="" /&gt;&lt;/a&gt;Ładniutki, nieprawdaż? Poza tą niefunkcjonalną
      zmianą, mamy domyślnie otwarty widok &lt;span style="font-weight: bold;"&gt;Tasks&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;Ctrl+6&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_wSeV_DMR2uA/SIOdiWc0wdI/AAAAAAAABB0/ouOGeGBRl48/s1600-h/tasks.gif"&gt;&lt;img src="http://bp2.blogger.com/_wSeV_DMR2uA/SIOdiWc0wdI/AAAAAAAABB0/ouOGeGBRl48/s320/tasks.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0"
      id="BLOGGER_PHOTO_ID_5225193206147498450" /&gt;&lt;/a&gt;Zadania określane są przez znane i lubiane &lt;span style="font-weight: bold;"&gt;TODO&lt;/span&gt;, ale również kilka innych adnotacji (patrz &lt;span style="font-weight: bold;"&gt;Tools &gt; Options &gt; Miscellaneous &gt; ToDo Tasks&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_wSeV_DMR2uA/SIOd3yqVQFI/AAAAAAAABB8/r2pQWx7X9nU/s1600-h/options-todo.gif"&gt;&lt;img
      src="http://bp1.blogger.com/_wSeV_DMR2uA/SIOd3yqVQFI/AAAAAAAABB8/r2pQWx7X9nU/s320/options-todo.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5225193574497599570" /&gt;&lt;/a&gt;Przy okazji konfiguracji adnotacji dla zadań pojawiło się jedno z moich ulubionych słówek angielskich - &lt;a href="http://dictionary.cambridge.org/define.asp?dict=CALD&amp;amp;key=50959&amp;amp;ph=on"&gt;&lt;span style="font-weight:
      bold;"&gt;miscellaneous&lt;/span&gt;&lt;/a&gt;. Jest ono o tyle ulubione, że wielu zapytanych nie wie, jak się poprawnie wymawia to słowo (pomijając, że wielu nie wie o jego istnieniu).&lt;br /&gt;&lt;br /&gt;W kontekście domyślnego uruchomienia widoku Tasks, sądzę, że w końcu potraktuję swoje TODO w kodzie poważniej, bo przy każdorazowym uruchomieniu ich liczba z pewnością będzie przypominała o ich istnieniu. Zauważyłem pewną zależność między naszymi przyzwyczajeniami a domyślnymi ustawieniami
      narzędzi używanych na codzień. Wielu z nas zamiast dostosowywać narzędzie do siebie, dostosowuje siebie do niego. A tu proszę, NetBeans postanowił obdarzyć nas narzędziem, które dba o nasze zadania. Teraz może w końcu baczniej przyjrzę się zadaniom do wykonania (TODO) z jego pomocą. Jeszcze nie zastosowałem się do tych "zaleceń", ale już mi się podobają.&lt;br /&gt;&lt;br /&gt;Ciekawostka z grupy NetCAT 6.5, której znajomość z pewnością daje poczucie zaawansowanego użycia NetBeans IDE podczas pracy.
      Jeśli potrzebujemy zachować stan rozwiniętych węzłów w drzewie (dowolnym, np. w oknie Projects będą to projekty i ich zasoby) to wystarczy...więcej w poniższej wiadomości:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;On build 5.5 the Project Window remember the state of the node. while now 6.5 it will collapse to the root if we are going to restart the IDE.&lt;br /&gt;&lt;br /&gt;This change was made intentionally (I thought earlier than 5.5, but perhaps not) - the reexpansion of
      the nodes was slowing down startup.&lt;br /&gt;&lt;br /&gt; &lt;a href="http://www.netbeans.org/issues/show_bug.cgi?id=55701"&gt;http://www.netbeans.org/issues/show_bug.cgi?id=55701&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You should be able to enable the expansion by adding&lt;br /&gt;&lt;br /&gt; -J-Dnetbeans.keep.expansion=true&lt;br /&gt;&lt;br /&gt;to your netbeans.conf, but note that this mode is not tested.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Kolejną ciekawostką z programu NetCAT 6.5 jest narzędzie
      &lt;a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jstack.html"&gt;jstack&lt;/a&gt;, o którym nie miałem w ogóle świadomości istnienia (!) A narządko bardzo ciekawej funkcjonalności, bo &lt;span style="font-style: italic;"&gt;prints Java stack traces of Java threads for a given Java process or core file or a remote debug server&lt;/span&gt;, czyli dokładnie to, czego w wielu momentach spowolnienia aplikacji javowej potrzebuję. Ni mniej, ni więcej - narzędzie umożliwia zerbanie danych
      do analizy prac JVM przez wypisanie sterty wywołań javy dla wybranego procesu, z pliku ze zrzutem pamięci (core) czy zdalnego serwera. Więcej o tym i podobnych narzędziach w &lt;a href="http://wiki.netbeans.org/GenerateThreadDump"&gt;NetBeans - How to Generate a Thread Dump&lt;/a&gt;. Okazuje się, że poza jstack jest również niejaki &lt;span style="font-weight: bold;"&gt;StackTrace&lt;/span&gt;. Teraz jakikolwiek problem wydajnościowy w Javie nie będzie mi straszny. Przy okazji, z dokumentacji jstack
      dowiedziałem się o kolejnym, nieznanym mi wcześniej, narzędziu &lt;a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jps.html"&gt;jps&lt;/a&gt;, który wypisuje identyfikatory procesów javowych, np.:&lt;pre&gt;&lt;br /&gt; C:\Documents and Settings\jlaskowski 2008-07-18 12:19:33,98&lt;br /&gt; &gt; C:\apps\java6\bin\jps.exe&lt;br /&gt; 32132 org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar&lt;br /&gt; 35188 NetworkServerControl&lt;br /&gt; 35684 Main&lt;br /&gt; 37884 Jps&lt;br
      /&gt; 30228 PELaunch&lt;br /&gt;&lt;/pre&gt;Teraz wystarczy podłączyć się do wybranego procesu javowego narzędziem jstack, aby rozeznać się w aktualnej sytuacji o stanie JVM (żeby tak prosto było zdiagnozować problemy w polskiej słuzbie zdrowia, o której tyle ostatnio. Gdybym wiedział numer procesu może mógłbym jakoś pomóc. ;-)):&lt;pre&gt; C:\Documents and Settings\jlaskowski 2008-07-18 12:21:39,67&lt;br /&gt; &gt; C:\apps\java6\bin\jstack.exe -l 35684&lt;br /&gt; 2008-07-18 12:23:57&lt;br /&gt;
      Full thread dump Java HotSpot(TM) Client VM (10.0-b23 mixed mode):&lt;br /&gt;&lt;br /&gt; "Inactive RequestProcessor thread [Was:Default RequestProcessor/org.netbeans.modules.xml.xam.AbstractModelFactory$1]" da&lt;br /&gt; emon prio=2 tid=0x374a1400 nid=0x8100 in Object.wait() [0x3bb4f000..0x3bb4fc14]&lt;br /&gt; java.lang.Thread.State: TIMED_WAITING (on object monitor)&lt;br /&gt; at java.lang.Object.wait(Native Method)&lt;br /&gt; at
      org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:950)&lt;br /&gt; - locked &amp;lt;0x09baa8a0&gt; (a java.lang.Object)&lt;br /&gt;&lt;br /&gt; Locked ownable synchronizers:&lt;br /&gt; - None&lt;br /&gt; ...&lt;br /&gt; "Finalizer" daemon prio=8 tid=0x31377400 nid=0x8a24 in Object.wait() [0x3184f000..0x3184fa94]&lt;br /&gt; java.lang.Thread.State: WAITING (on object monitor)&lt;br /&gt; at java.lang.Object.wait(Native Method)&lt;br /&gt; at
      java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)&lt;br /&gt; - locked &amp;lt;0x0549b4e0&gt; (a java.lang.ref.ReferenceQueue$Lock)&lt;br /&gt; at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)&lt;br /&gt; at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)&lt;br /&gt;&lt;br /&gt; Locked ownable synchronizers:&lt;br /&gt; - None&lt;br /&gt;&lt;br /&gt; "Reference Handler" daemon prio=10 tid=0x31376400 nid=0x88b8 in Object.wait() [0x3164f000..0x3164fb14]&lt;br
      /&gt; java.lang.Thread.State: WAITING (on object monitor)&lt;br /&gt; at java.lang.Object.wait(Native Method)&lt;br /&gt; at java.lang.Object.wait(Object.java:485)&lt;br /&gt; at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)&lt;br /&gt; - locked &amp;lt;0x0549aef0&gt; (a java.lang.ref.Reference$Lock)&lt;br /&gt;&lt;br /&gt; Locked ownable synchronizers:&lt;br /&gt; - None&lt;br /&gt;&lt;br /&gt; "VM Thread" prio=10 tid=0x31373000 nid=0x7654 runnable&lt;br /&gt;&lt;br /&gt; "VM
      Periodic Task Thread" prio=10 tid=0x3139b400 nid=0x8504 waiting on condition&lt;br /&gt;&lt;br /&gt; JNI global references: 2935&lt;/pre&gt;Warto zapoznać się z pełną dokumentacją narzędzi dostarczanych w ramach wybranej JVM, np. dla Sun JDK będzie to &lt;a href="http://java.sun.com/javase/6/docs/technotes/tools/"&gt;JDK Tools and Utilities&lt;/a&gt;. Nie wszystkie jednak narzędzia dostępne są na wszystkich platformach systemowych, gdyż narzędzia są dostarczane przez dostawcę JVM dla danej platformy,
      więc dla &lt;a href="http://www.ibm.com/developerworks/java/jdk/"&gt;IBM JDK&lt;/a&gt; będzie to inny zestaw narzędzi, często wykraczający poza możliwości Sun JDK.&lt;br /&gt;&lt;br /&gt;I wiadomość z ostatniej chwili w temacie zmian w harmonogramie NetCAT 6.5. Przesunęła się data wydania finalnej wersji NetBeans 6.5. Pojawił się niewielki &lt;span style="font-style: italic;"&gt;the two weeks slip in the schedule&lt;/span&gt;, o którym pisze &lt;span style="font-weight: bold;"&gt;Jirka
      Kovalsky&lt;/span&gt; (głównodowodzący programu NetCAT 6.5):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Due to postponed Feature Freeze of PHP and GlassFish v3 support and high number of bugs we are forced to update some important milestones. Accordingly I had to adjust some NetCAT 6.5 dates and the new schedule is already published on the NetCAT 6.5 homepage (&lt;a
      href="http://qa.netbeans.org/processes/cat/65"&gt;http://qa.netbeans.org/processes/cat/65&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nowa wersja NetBeans IDE 6.5 dopiero &lt;span style="font-weight: bold;"&gt;15 października&lt;/span&gt;. Jest szansa na wyłapanie większości błędów w nim i nauczeniu się kilku nowych szkieletów programistycznych, których wsparcie dostarcza, np. Grails. Gdybym tak mógł poczytać o integracji Grails z usługami dostarczanymi przez serwer Korporacyjnej 5-tki byłoby
      wspaniale. W połączeniu z OSGi byłbym w ogóle uszczęśliwiony.</description>
      <pubDate>Sun, 20 Jul 2008 20:49:43 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: NetBeans 6 i jego edytor PageFlow do faces-config.xml</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-6185481375279383010</guid>
      <link>http://jlaskowski.blogspot.com/2008/07/netbeans-6-i-jego-edytor-pageflow-do.html</link>
      <description>Pamiętam, że już jakiś czas tematu zastanawiałem się nad zastosowaniem edytora &lt;span style="font-weight: bold;"&gt;PageFlow&lt;/span&gt; do edycji &lt;span style="font-weight: bold;"&gt;faces-config.xml&lt;/span&gt; - główny plik konfiguracyjny aplikacji &lt;span style="font-weight: bold;"&gt;JavaServer Faces (JSF)&lt;/span&gt;. Dzisiaj natrafiłem na wpis, który sprowokował mnie do zbadania tego tematu dokładniej. I warto było, bo kolejny temat mam z głowy. W końcu! Czy nie masz
      takich natarczywych tematów, które trapią Cię od wielu dni/tygodni/miesięcy, ale mimo to nie znalazłeś/-aś czasu, aby go rozwiązać?! Ja mam ich kilka i jeden właśnie zszedł z listy.&lt;br /&gt;&lt;br /&gt;Głównym zadaniem edytora PageFlow, który służy do edycji pliku &lt;span style="font-weight: bold;"&gt;faces-config.xml&lt;/span&gt;, jest umożliwienie wprowadzania zmian w regułach nawigacyjnych aplikacji JSF w sposób graficzny bez konieczności grzebania się w zawiłościach pliku XML (cf. &lt;a
      href="http://wiki.netbeans.org/PageFlowEditorUISpecification"&gt;Page Flow Editor Functional Specification&lt;/a&gt;). Udostępnienie tej funkcjonalności po prostu zdejmuje z użytkownika obowiązek znajomości jego składni. I w zasadzie to jest jego główna i jedyna potrzeba korzystania. Skoro mniej musimy znać, aby poprawnie skonfigurować przepływ między stronami w aplikacji JSF, to właśnie to jest jego zaletą i tego oczekiwałbym od IDE.&lt;br /&gt;&lt;br /&gt;Garść informacji o edytorze PageFlow dla
      faces-config.xml znajduje się w dokumencie &lt;a href="http://wiki.netbeans.org/PageFlowEditor"&gt;PageFlow Editor for NetBeans 6.0&lt;/a&gt; i jakkolwiek dotyczy wersji NetBeans 6.0, to niewiele zmieniło się od tego czasu. Dodatkowych informacji, a w zasadzie zrzutu ekranu, który uzmysławia możliwości PageFlow, można znaleźć we wpisie &lt;a href="http://thoughtfulprogrammer.blogspot.com/2008/04/net-beans-61-page-flows.html"&gt;Net Beans (6.1) Page Flows&lt;/a&gt;, ale ponownie zbyt pobieżnie i
      niewiele. Dopiero podczas lektury tego wpisu zorientowałem się, czego mógłbym faktycznie oczekiwać od PageFlow. Do tej pory moje aplikacje JSF budowane w NetBeans składały się ze zwykłych stron JSP, które zawierały kontrolki JSF. Mówiąc językiem używanych szkieletów webowych, to był to jedynie &lt;span style="font-weight: bold;"&gt;JavaServer Faces&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp2.blogger.com/_wSeV_DMR2uA/SIEGQyW46KI/AAAAAAAABBs/w_MnPfTLDac/s1600-h/frameworks-jsf-jedynie.gif"&gt;&lt;img src="http://bp2.blogger.com/_wSeV_DMR2uA/SIEGQyW46KI/AAAAAAAABBs/w_MnPfTLDac/s320/frameworks-jsf-jedynie.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5224463928191936674" /&gt;&lt;/a&gt;Przy takiej konfiguracji PageFlow udostępniał jedynie 3 akcje dla stron JSP.&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp3.blogger.com/_wSeV_DMR2uA/SIEFHEXQ7-I/AAAAAAAABBM/E_UoDT-Eeig/s1600-h/regular-jsp-menu.gif"&gt;&lt;img src="http://bp3.blogger.com/_wSeV_DMR2uA/SIEFHEXQ7-I/AAAAAAAABBM/E_UoDT-Eeig/s320/regular-jsp-menu.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5224462661715029986" /&gt;&lt;/a&gt;Zastanawiałem się wciąż po co ten plus po prawej stronie (u góry zakryty przez menu &lt;span style="font-style:
      italic;"&gt;Delete&lt;/span&gt;). Kilkakrotnie napotykałem dyskusję dotyczącą &lt;span style="font-weight: bold;"&gt;Visual Web JavaServer Faces&lt;/span&gt; (w skrócie &lt;span style="font-weight: bold;"&gt;Visual Web&lt;/span&gt;) w kontekście budowania aplikacji JSF w NetBeans. &lt;span style="font-weight: bold;"&gt;Visual Web&lt;/span&gt; to zestaw kontrolek JSF, podobnie jak IceFaces, RichFaces, Tomahawk czy Tobago (pewnie jest ich znacznie więcej, ale te mi teraz przychodzą do głowy). Coś mi
      mówiło, że właśnie tutaj powinienem szukać odpowiedzi. Kiedy dodałem &lt;span style="font-weight: bold;"&gt;Visual Web JavaServer Faces&lt;/span&gt; do kategorii &lt;span style="font-weight: bold;"&gt;Frameworks&lt;/span&gt; we właściwościach projektu projektu JSF strony JSP stworzone jako &lt;span style="font-weight: bold;"&gt;Visual Web JSF Page&lt;/span&gt; były specjalnie traktowane przez NetBeans.&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp1.blogger.com/_wSeV_DMR2uA/SIEEwb2FFbI/AAAAAAAABBE/c7KVovU8614/s1600-h/frameworks.gif"&gt;&lt;img src="http://bp1.blogger.com/_wSeV_DMR2uA/SIEEwb2FFbI/AAAAAAAABBE/c7KVovU8614/s320/frameworks.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5224462272881300914" /&gt;&lt;/a&gt;Nadal były stronami JSP, ale poza zmianą wizualną w widoku &lt;span style="font-weight: bold;"&gt;Projects&lt;/span&gt;, która polegała
      na zmianie ikony związanej ze stronami, do ich edycji mogłem użyć edytora &lt;span style="font-weight: bold;"&gt;Design&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;JSP&lt;/span&gt; i &lt;span style="font-weight: bold;"&gt;Java&lt;/span&gt; w jednym (czego nie miałem do dyspozycji przy "zwykłych" stronach JSF).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_wSeV_DMR2uA/SIEFei18IyI/AAAAAAAABBU/dAO3GscR9xY/s1600-h/page1-pageflow.gif"&gt;&lt;img
      src="http://bp1.blogger.com/_wSeV_DMR2uA/SIEFei18IyI/AAAAAAAABBU/dAO3GscR9xY/s320/page1-pageflow.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5224463065033745186" /&gt;&lt;/a&gt;Zmiana również wpłynęła na dostępne menu w PageFlow związane ze stronami typu Visual Web.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_wSeV_DMR2uA/SIEFlYl7ilI/AAAAAAAABBc/I9OF-LC5MhA/s1600-h/visual-jsp-menu.gif"&gt;&lt;img
      src="http://bp3.blogger.com/_wSeV_DMR2uA/SIEFlYl7ilI/AAAAAAAABBc/I9OF-LC5MhA/s320/visual-jsp-menu.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5224463182541326930" /&gt;&lt;/a&gt;Pojawiły się 3 nowe akcje i możliwe stało się wiązanie (tworzenie przepływu/nawigacji) między elementami strony - przycisk (ang. &lt;span style="font-style: italic;"&gt;button&lt;/span&gt;) jako &lt;span style="font-weight: bold;"&gt;Add
      Button&lt;/span&gt;, odnośnik (ang. &lt;span style="font-style: italic;"&gt;hyperlink&lt;/span&gt;) jako &lt;span style="font-weight: bold;"&gt;Add Hyperlink&lt;/span&gt; oraz odnośnik z obrazkiem (ang. &lt;span style="font-style: italic;"&gt;image hyperlink&lt;/span&gt;) jako &lt;span style="font-weight: bold;"&gt;Add Image Hyperlink&lt;/span&gt; a innymi stronami w aplikacji. Mam wciąż pewne opory przed stosowaniem tego zestawu Visual Web, bo brakuje mi sprawdzenia na ile jest to przenośne między
      serwerami aplikacyjnymi (np. czy będę mógł uruchomić aplikację zbudowaną z pomocą Visual Web na Apache Geronimo czy WASie) oraz potencjalne problemy podczas integracji z innymi, wspomnianymi wcześniej, zestawami kontrolek JSF. Temat zostawiam do zbadania na później, chyba że ktoś już zna odpowiedź i zechciałby podzielić się wrażeniami.&lt;br /&gt;&lt;br /&gt;Ostatecznie PageFlow prezentuje się następująco.&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp0.blogger.com/_wSeV_DMR2uA/SIEF29U-x0I/AAAAAAAABBk/I0Az21K3ljU/s1600-h/pageflow.gif"&gt;&lt;img src="http://bp0.blogger.com/_wSeV_DMR2uA/SIEF29U-x0I/AAAAAAAABBk/I0Az21K3ljU/s320/pageflow.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5224463484460123970" /&gt;&lt;/a&gt;Od razu można zgadnąć, które strony są typu Visual Web, a które "zwykłymi" JSP. I to jest właśnie zagadka na weekend - rozpoznać typy stron
      na załączonym wyżej zrzucie ekranu. Miłej zabawy!</description>
      <pubDate>Fri, 18 Jul 2008 21:22:45 +0000</pubDate>
    </item>
    <item>
      <title>Java i pochodne: Pomysł na wtyczkę do NetBeans'a i jego polska wersja</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-732565809886974735.post-8294827257469165150</guid>
      <link>http://gruchala.eu/2008/07/pomys-na-wtyczk-do-netbeansa-i-jego.html</link>
      <description>&lt;p&gt;&lt;a href="http://bp0.blogger.com/_63iqep0nnFY/SH-JaH4TB7I/AAAAAAAAAWw/lDrG-qL5byc/s1600-h/nb65.PNG"&gt;&lt;img src="http://bp0.blogger.com/_63iqep0nnFY/SH-JaH4TB7I/AAAAAAAAAWw/lDrG-qL5byc/s320/nb65.PNG" alt="" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5224045174657845170" /&gt;&lt;/a&gt;Pewnie nie raz macie tak, że w robocie czy gdzieś jest tworzony projekt. Tak, tak to już bywa, że projekty są tworzone ;-) No ale jako, że
      większość używa Eclipse'a tworzony jest on w tym IDE, a Wy akurat chcielibyście pracować sobie w NetBeans'ie. A tu zonk, bo każde IDE ma swoje pliki projektu. Jakby ciężko im było stworzyć jeden standard. Dlatego przyszedł mi do głowy pomysł napisania wtyczki do NB, która pozwalałaby zapisywać ustawienia projektu itp. do plików &lt;span style="font-style: italic;"&gt;.project&lt;/span&gt; i &lt;span style="font-style: italic;"&gt;.classpath&lt;/span&gt; Eclipse'a. Najlepiej rezygnując ze swoich,
      chociaż wątpie żeby się udało. Najwyżej nie dodawałoby się ich do kontroli wersji ;-) Skoro w IntelliJ IDEA się udało to nam też powinno. Kto ma ochotę włączyć się w ten projekt? Z góry mówię/piszę, że pisalibyśmy to w NB. Tłumy, czy też nie, proszone są zgłaszać się przez maila: leszek(małpa)gruchala.eu lub w komentarzach. &lt;/p&gt;&lt;p&gt; Jak widać na załączonym obrazku kolejna wersja NetBeans IDE w natarciu. Wydanie planowane jest na 2 października. Wraca kwestia polskiej wersji, a sprawa
      przedstawia się tak. Jest przetłumaczone jakieś 85% podstawowego interfejsu użytkownika. Choćby nie wiem co, będzie wydana polska wersja wraz z wydaniem NB 6.5, dlatego przypominam, że jeśli są osoby, które chcą dopomóc w tłumaczeniu reszty i przystosowania tego do nowego wydania proszę bardzo o wyłonienie się. Praca nie jest ciężka, a fajnie jest zrobić coś dla innych. Troszę wiecej informacji w &lt;a href="http://gruchala.eu/2008/02/pom-tumaczy-netbeans-ide.html"&gt;tym wpisie&lt;/a&gt;. Postaram
      się też odpowiedzieć na wszystkie pytania. &lt;/p&gt;&lt;p&gt; PS. Jeśli jeszcze ktoś tego nie wiem, z przyjemnością ogłaszam, że &lt;a href="http://www.jaceklaskowski.pl/"&gt;Jacek Laskowski&lt;/a&gt; został członkiem &lt;a href="http://wiki.netbeans.org/NetBeansDreamTeam"&gt;NetBeans Dream Team&lt;/a&gt;. Jest to teraz 15 osoba na świecie, a pierwsza w Polsce. Gratulacje!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 17 Jul 2008 18:18:15 +0000</pubDate>
    </item>
    <item>
      <title>Java i pochodne: Nowości w Java SE 6 Update 7</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-732565809886974735.post-4455066204600713894</guid>
      <link>http://gruchala.eu/2008/07/nowoci-w-java-se-6-update-7.html</link>
      <description>&lt;p&gt;Od wczoraj dostępna jest nowa wersja JDK i JRE. Nie wnosi ona tyle nowości co &lt;i id="dulv"&gt;Update 10&lt;/i&gt; (o tym innym razem), ale też jest o czym pisać ;) Samo JDK zajmuje po instalacji jakieś 20 MB więcej, co dobre to to, że można zainstalować od razu JRE. Wreszcie przeglądarka będzie mi widziała Javę. Chociaż to połowiczne rozwiązanie bo nie rozumiem dlaczego muszę instalować JRE skoro mam JDK, ale teraz przynajmniej nie muszę tego osobno ściągać tylko samo się tak
      przy okazji. No i na końcu otwiera Sun'owską stronkę z ofertą rejestracji. Także kto chce zostać członkiem, proszę bardzo :) Z ważniejszych rzeczy to wraz z tą aktualizacją dostajemy nowe narzędzie zwane &lt;b id="f5vv0"&gt;Java VisualVM&lt;/b&gt;. &lt;/p&gt;&lt;div style="padding: 1em 0pt; text-align: center;" id="n_7o"&gt;&lt;img src="http://docs.google.com/File?id=dm79wrg_6cdwf564n_b" style="width: 527px; height: 304px;" id="fsc6" /&gt;&lt;/div&gt; &lt;a title="VisualVM"
      href="http://java.sun.com/javase/6/docs/technotes/guides/visualvm/" target="_blank" id="hrzc"&gt;VisualVM&lt;/a&gt; to graficzne narzędzie do podglądania działających na maszynie wirtualnej aplikacji. JVVM odzyskuje dane z narzędzi JDK i pozwala zbiorczo w łatwy i przyjemny sprawdzać aplikacje na JVM. Czy tak jest? Zaraz zobaczymy....&lt;p&gt;&lt;/p&gt; &lt;p&gt;Uruchamiamy poleceniem: &lt;/p&gt;&lt;p&gt;&lt;tt id="gyz7"&gt; C:\Program Files\Java\jdk1.6.0_&lt;i
      id="gyz70"&gt;update-number&lt;/i&gt;\bin\&lt;/tt&gt;&lt;tt id="g0bk0"&gt;jvisualvm&lt;/tt&gt;&lt;/p&gt; &lt;p&gt; Wyświetli się monit o jakieś tam testy. Nie pamiętam już jakie bo nie mogę ich powtórzyć, ale Ci co mają laptopy niech przełączą się na max performance. &lt;/p&gt;&lt;p&gt; Z wyglądu i z &lt;i id="s5-y"&gt;About&lt;/i&gt; widać, że program jest napisany z użyciem &lt;i id="s5-y0"&gt;NetBeans platform&lt;/i&gt;. Aplikacja pozwala monitorować maszynę wirtualną i wszystko co jest na niej
      uruchomione, z osobna lokalne aplikacje, zdalne aplikacje, tworzyć snapshoty i zrzucać i przeglądać sobie wątki uruchomione przez te programy. W ramach testów próbowałem przetestować &lt;i id="p:lh0"&gt;profile'rem&lt;/i&gt; takiego Eclipse'a, ale zawsze się wieszał. Samo monitorowanie aplikacji działało, ale to nie. W ruch poszedł NetBeans. Będę bardzo zdziwiony jak i tu będzie szwankować ;]&lt;/p&gt; &lt;p&gt; Uruchamianie NetBeans: &lt;/p&gt;&lt;div style="padding: 1em 0pt; text-align: center;"
      id="hipm"&gt;&lt;a href="http://docs.google.com/File?id=dm79wrg_7xzhfmthg_b" target="_blank" id="ovpj"&gt;&lt;img src="http://docs.google.com/File?id=dm79wrg_7xzhfmthg_b" style="width: 640px; height: 386px;" id="ovpj0" /&gt;&lt;/a&gt;&lt;/div&gt; W oknie &lt;i id="ovpj2"&gt;Applications&lt;/i&gt; widać co mamy uruchomione. W przypadku Eclipse'a było &amp;lt;unknown application&gt; ;] Przypadek, czy złośliwość....&lt;p&gt;&lt;/p&gt; &lt;p&gt; W tym przypadku profiler też się nie udał, przy testowaniu
      CPU zawiesił się NB, a przy pamięci sam VisualVM. Tak samo z IntelliJ. &lt;/p&gt;&lt;p&gt; Poniżej uruchamianie IntelliJ, NB, Eclipse'a: &lt;/p&gt;&lt;div style="padding: 1em 0pt; text-align: center;" id="nopm"&gt;&lt;a href="http://docs.google.com/File?id=dm79wrg_8fsnphqrp_b" target="_blank" id="uwmx"&gt;&lt;img src="http://docs.google.com/File?id=dm79wrg_8fsnphqrp_b" style="width: 640px; height: 385.5px;" id="uwmx0" /&gt;&lt;/a&gt;&lt;/div&gt;Myślałem że OpenOffice też będzie widoczny dla VisualVM
      skoro też coś tam ma napisane w Javie, ale niestety dupa. Nie wiem, czy to ja mam pecha, że nic nie dało się sprofajlować, ale aplikacja mi się podoba. Z pewnością spodoba się firmom, które będą chciały przetestować np. swoje desktopowe produkty na różnych platformach sprzętowych i systemowych nie koniecznie w środowisku produkcyjnym przy użyciu NB, czy Eclipse'a. &lt;p&gt;&lt;/p&gt;&lt;p&gt; Oficjalna strona projektu: &lt;a title="Java VisualVM" href="https://visualvm.dev.java.net/" target="_blank"
      id="cxmk"&gt;https://visualvm.dev.java.net/&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 17 Jul 2008 06:04:16 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Słów kilka o Maven 2 w NetBeans 6.5, Sun Certified NetBeans IDE Specialist oraz "GWT w praktyce" Power Netu</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-976912983657644742</guid>
      <link>http://jlaskowski.blogspot.com/2008/07/sw-kilka-o-maven-2-w-netbeans-65-sun.html</link>
      <description>&lt;span style="font-weight: bold;"&gt;Piotr Pietrzak&lt;/span&gt; w &lt;a href="http://jlaskowski.blogspot.com/2008/07/klasyfikatory-w-maven-2-oraz.html?showComment=1216107540000#c4984013617935802261"&gt;komentarzu&lt;/a&gt; do &lt;a href="http://jlaskowski.blogspot.com/2008/07/klasyfikatory-w-maven-2-oraz.html"&gt;Klasyfikatory w Maven 2 oraz polonizacja NetBeans IDE&lt;/a&gt; odpowiedział na wczorajsze moje bolączki związane z brakiem funkcjonalności NetBeans IDE odpowiadającej
      eclipsowej wtyczce do obsługi projektów mavenowych - m2eclipse w postaci...&lt;a href="http://macintosh.pl/CORE/film.html"&gt;filmu&lt;/a&gt; (!) Wspaniała forma dyskusji w Sieci. Wierzę, że będą kolejne. Tylko, dlaczego nie ma głosu?! ;-)&lt;br /&gt;&lt;br /&gt;Temat pobrania źródeł do zależności projektu mavenowego w NetBeans sprowadza się do &lt;span style="font-weight: bold;"&gt;Add local sources&lt;/span&gt; pod prawym przyciskiem myszki dla wybranej zależności&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp0.blogger.com/_wSeV_DMR2uA/SH0TBERxRNI/AAAAAAAABAM/nh_-5N1Kzd8/s1600-h/add-local-sources.gif"&gt;&lt;img src="http://bp0.blogger.com/_wSeV_DMR2uA/SH0TBERxRNI/AAAAAAAABAM/nh_-5N1Kzd8/s320/add-local-sources.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5223352051868714194" /&gt;&lt;/a&gt;bądź po prostu &lt;span style="font-weight: bold;"&gt;Download All Library Sources&lt;/span&gt; na węźle &lt;span
      style="font-weight: bold;"&gt;Libraries&lt;/span&gt; w projekcie.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_wSeV_DMR2uA/SH0TGsOXnrI/AAAAAAAABAU/PKFPmQn4-oM/s1600-h/download-all-library-sources.gif"&gt;&lt;img src="http://bp0.blogger.com/_wSeV_DMR2uA/SH0TGsOXnrI/AAAAAAAABAU/PKFPmQn4-oM/s320/download-all-library-sources.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5223352148491214514" /&gt;&lt;/a&gt;Co
      ciekawe, po pobraniu wszystkich źródeł, nazwy plików udekorowane są ikonką ze słoikiem i pakunkiem.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_wSeV_DMR2uA/SH0TL4OYYvI/AAAAAAAABAc/E8lPjRzvnj0/s1600-h/libraries-jar-bundle.gif"&gt;&lt;img src="http://bp2.blogger.com/_wSeV_DMR2uA/SH0TL4OYYvI/AAAAAAAABAc/E8lPjRzvnj0/s320/libraries-jar-bundle.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5223352237611836146"
      /&gt;&lt;/a&gt;Natrafiłem przy okazji na inną ciekawostkę związaną ze wsparciem projektów mavenowych przez NetBeans 6.5 we współpracy z wtyczką Mevenide-NetBeans - wsparcie dla edycji pom.xml. Co ja będę się rozpisywał, sam zobacz (tym razem w postaci zrzutów ekranu, ale może kolejnym razem będzie bardziej filmowo?!). W lokalnym repozytorium mam&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://bp0.blogger.com/_wSeV_DMR2uA/SH0TQx-urjI/AAAAAAAABAk/kjZZAPxvac8/s1600-h/local-maven-repo-spring-web.gif"&gt;&lt;img src="http://bp0.blogger.com/_wSeV_DMR2uA/SH0TQx-urjI/AAAAAAAABAk/kjZZAPxvac8/s320/local-maven-repo-spring-web.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5223352321834921522" /&gt;&lt;/a&gt;a w edytorze jako podpowiedź otrzymuję (&lt;span style="font-weight:
      bold;"&gt;Ctrl+Spacja&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_wSeV_DMR2uA/SH0TWZduI8I/AAAAAAAABAs/8Z0D4Pbifh8/s1600-h/maven-editor-support-version.gif"&gt;&lt;img src="http://bp2.blogger.com/_wSeV_DMR2uA/SH0TWZduI8I/AAAAAAAABAs/8Z0D4Pbifh8/s320/maven-editor-support-version.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5223352418333238210" /&gt;&lt;/a&gt;Miła niespodzianka, chociaż zanim
      mnie mile zaskoczyło nie mogłem doczekać się zaindeksowania repozytoriów mavenowych. Dobrze, że cała operacja odbyła się w tle.&lt;br /&gt;&lt;br /&gt;Podczas moich dzisiejszych wyczynów programistycznych z NetBeans IDE 6.5M1 potrzebowałem otworzyć klasę w projekcie i jako, że nie jest to Eclipse Ctrl+Shift+T nie działa...domyślnie. W takich przypadkach wspieram się zawsze pomocą Google, ale tym razem miałem wszystko pod ręką, lokalnie. &lt;span style="font-weight: bold;"&gt;Help &gt; Keyboard
      Shortcuts Card&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_wSeV_DMR2uA/SH0TeEVxugI/AAAAAAAABA0/ZtKCMN09R0w/s1600-h/help-keyboard-shortcuts-card.gif"&gt;&lt;img src="http://bp0.blogger.com/_wSeV_DMR2uA/SH0TeEVxugI/AAAAAAAABA0/ZtKCMN09R0w/s320/help-keyboard-shortcuts-card.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5223352550101727746" /&gt;&lt;/a&gt;po którym otwiera się dokument pdf ze
      skrótami. Wystarczyło &lt;span style="font-weight: bold;"&gt;Ctrl+F&lt;/span&gt; (szukaj), wpisanie ciągu &lt;span style="font-style: italic;"&gt;type&lt;/span&gt;, &amp;lt;Enter&gt; i mam - &lt;span style="font-weight: bold;"&gt;Ctrl-O/Alt-Shift-O Go to type/file&lt;/span&gt;. Nie mogłem oprzeć się, aby nie sprawdzić, czy funkcjonalność znana mi z Eclipse dostępna jest i w NetBeans - wyszukiwanie typów po ich skrótach, np. NullPointerException to NPE, albo NoClassDefFoundError to NCDFE. To również
      jest w NetBeans! Miło.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_wSeV_DMR2uA/SH0TmfZj6DI/AAAAAAAABA8/05AFKKZmT7k/s1600-h/gototype-ncdfe.gif"&gt;&lt;img src="http://bp3.blogger.com/_wSeV_DMR2uA/SH0TmfZj6DI/AAAAAAAABA8/05AFKKZmT7k/s320/gototype-ncdfe.gif" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5223352694804310066" /&gt;&lt;/a&gt;Tylko jedno mi doskwiera teraz - dlaczego eclipsowe Ctrl+O w edytorze Java
      to &lt;span style="font-weight: bold;"&gt;Ctrl+Shift+F12&lt;/span&gt; w NetBeans?! Nic nie przychodzi mi do głowy, aby podmienić to jakoś sensownie, ale sądzę, że to jedno z bardziej użytecznych funkcji IDE - wyświetlenie elementów typu i możliwość przejścia do wybranego, więc należy się coś bardziej ludzkiego. Może jednak warto zmienić mapowanie klawiszy na eclipsowe? Mam takie skrzywienie uniksowe, gdzie edytuję pliki w vi, podczas gdy na linii komend korzystam z trybu Emacs. Pewnie podobnie będzie
      z klawiaturą w NetBeans. Jak się człowiek do czegoś przyzwyczai, to trudno mu się oderwać od tego.&lt;br /&gt;&lt;br /&gt;Na grupie NetCAT 6.5 Jirka (głównodowodzący programem) poprosił o ocenę przygotowywanego certyfikatu &lt;span style="font-weight: bold;"&gt;Sun Certified NetBeans IDE Specialist&lt;/span&gt;. Czy uważacie, że istnieje faktycznie potrzeba na Sun Certified Netbeans IDE Specialist? Co ono miałoby certyfikować?! Znajomość skrótów klawiszowych? Pozycji menu? A co w przypadku pracy z
      tłumaczonym środowiskiem? Możesz wyrazić swój głos w &lt;a href="http://certification.sun.com/sesCert/"&gt;ankiecie Sun Certified NetBeans IDE Specialist&lt;/a&gt;. Miło zostałem zaskoczony zakresem egzaminu i uważam, że będzie doskonałym sprawdzianem poprawnego użycia NetBeans IDE jako środowiska pracy. Ciekawe, kiedy można oczekiwać odpowiedzi zespołu Eclipse. Fajne takie SCeNBIS oraz ECIS ;-)&lt;br /&gt;&lt;br /&gt;Na koniec wiadomość z ostatniej chwili - pojawiła się ciekawa oferta na półce
      wydawnictwa Power Net - &lt;a href="http://www.powernet.pl/ksiazka.php?id=4"&gt;GWT w praktyce&lt;/a&gt; autorstwa Roberta Coopera oraz Charles'a Collinsa. Książka została przetłumaczona przez &lt;span style="font-weight: bold;"&gt;Marcina Leszczyńskiego&lt;/span&gt;, który znalazł swoje miejsce w podziękowaniach w wersji angielskiej (!) I ja przyłączam się do podziękowań za podjęcie trudu przetłumaczenia książki na polski. Wbrew panującemu obyczajowi na polskim rynku wydawniczym literatury
      informatycznej, tłumaczenie pojawiło się 2 miesiące po premierze angielskojęzycznej. Najwyraźniej można, jak się chce. Niedawno miałem okazję ponownie powalczyć z GWT i przymierzałem się do oryginalnej wersji książki, ale skoro jest dostępne polskie tłumaczenie, dlaczego nie zacząć lektury właśnie od niej? Jako rozgrzewkę można zabrać się za lekturę przykładowego rozdziału, który jest dostępny na stronie książki. Najwyraźniej Power Net zaczyna stanowić ciekawą alternatywę dla innych wydawnictw
      informatycznych z coraz to znaczącymi tłumaczeniami. Gratulacje!</description>
      <pubDate>Tue, 15 Jul 2008 21:22:30 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Klasyfikatory w Maven 2 oraz polonizacja NetBeans IDE</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-6811253330235109972</guid>
      <link>http://jlaskowski.blogspot.com/2008/07/klasyfikatory-w-maven-2-oraz.html</link>
      <description>Już jakiś czas minął od zgłoszenia usprawnienia związanego z niedostępnością dokumentacji javadoc w dystrybucji Apache Wicket (&lt;a href="http://issues.apache.org/jira/browse/WICKET-1587"&gt;WICKET-1587 Include javadoc in the distro&lt;/a&gt;). Okazało się, że właśnie dzisiaj zamknięto moje zgłoszenie jako &lt;span style="font-style: italic;"&gt;Duplicate&lt;/span&gt; ze wskazaniem na kolejne zgłoszenie &lt;a href="http://issues.apache.org/jira/browse/WICKET-543"&gt;WICKET-543 need
      javadocs embedded in the Wicket 1.3 zip file&lt;/a&gt;. W WICKET-543 zgłoszenie kończy się wskazaniem na plik dokumentacji w publicznym repozytorium mavenowym Wicketa - &lt;a href="http://repo1.maven.org/maven2/org/apache/wicket/wicket"&gt;http://repo1.maven.org/maven2/org/apache/wicket/wicket&lt;/a&gt;. Wystarczy, więc pobrać dokumentację javadoc (lub jeszcze lepiej kodów źródłowych, które są tam również umieszczone) i sprawa wydaje się zamknięta.&lt;br /&gt;&lt;br /&gt;W/g mnie nie rozwiązuje to
      głównego problemu niedostępności dokumentacji w samej paczce dystrybucyjnej Wicketa, bo nie wszyscy przecież korzystają z Mavena do zarządzania projektami, a nawet pracując z nim można nie zorientować się, gdzie jest dostępna dokumentacja do pobrania. Może jest to jednak efekt "nowych" czasów, gdzie jeśli nie korzystasz z Mavena toś...i tu należałoby umieścić coś niestosownego, bo przecież każdy wie jak z niego korzystać, albo jak pobrać plik z jego repozytorium. Nieprawdaż?! Ja jednak należę do tych
      (nie)szczęśników, którzy zazwyczaj pracują z Mavenem, jeśli idzie o zestawianie projektów poza IDE, więc mogę przychylić się do tego rozwiązania jako satysfakcjonujące. W Eclipse dostępna jest wtyczka &lt;a href="http://m2eclipse.sonatype.org/"&gt;m2eclipse&lt;/a&gt;, która umożliwia pobranie źródeł dla zadanych zależności (&lt;span style="font-weight: bold;"&gt;Maven &gt; Download Sources&lt;/span&gt;), ale już w NetBeans mimo, dostępności wtyczki &lt;a
      href="http://mevenide.codehaus.org/m2-site/"&gt;Mavenide-NetBeans&lt;/a&gt;, nie znalazłem podobnej funkcjonalności. Pozostaje rozpoznać temat z poziomu linii poleceń i zdefiniować odpowiednie polecenie dla NetBeans, bądź innego IDE w użyciu, jeśli dedykowane menu nie istnieje.&lt;br /&gt;&lt;br /&gt;Rozróżnienie artefaktów pochodzących z pojedyńczego projektu (modułu) odbywa się z użyciem &lt;span style="font-weight: bold;"&gt;klasyfikatora&lt;/span&gt; (ang. &lt;span style="font-style:
      italic;"&gt;classifier&lt;/span&gt;), które jest kolejnym elementem rozróżniania artefaktów w Maven 2 zgodnie z zasadą nazewniczą przedstawioną w rozdziale &lt;a href="http://maven.apache.org/pom.html#POM_Relationships"&gt;POM Relationships&lt;/a&gt;. Najbardziej powszechnym użyciem klasyfikatora to wskazanie pliku z dokumentacją javadoc (klasyfikator: &lt;span style="font-weight: bold;"&gt;javadoc&lt;/span&gt;) oraz źródłami (klasyfikator: &lt;span style="font-weight:
      bold;"&gt;sources&lt;/span&gt;). Deklaracja zależności w projekcie mavenowym odbywa się w pliku &lt;span style="font-weight: bold;"&gt;pom.xml&lt;/span&gt;, np.:&lt;pre&gt; &amp;lt;dependencies&gt;&lt;br /&gt; &amp;lt;dependency&gt;&lt;br /&gt; &amp;lt;groupId&gt;org.apache.wicket&amp;lt;/groupId&gt;&lt;br /&gt; &amp;lt;artifactId&gt;wicket&amp;lt;/artifactId&gt;&lt;br /&gt; &amp;lt;version&gt;1.4-m3&amp;lt;/version&gt;&lt;br /&gt; &amp;lt;/dependency&gt;&lt;br /&gt; &amp;lt;/dependencies&gt;&lt;br
      /&gt;&lt;/pre&gt;i dotyczy zazwyczaj artefaktów, które są plikami jar (domyślna wartość dla elementu &lt;span style="font-style: italic;"&gt;dependency/type&lt;/span&gt; to jar) z pustym klasyfikatorem. Wskazanie na zasób (artefakt) o klasyfikatorze &lt;span style="font-style: italic;"&gt;javadoc&lt;/span&gt; wymaga skorzystania z elementu &lt;span style="font-weight: bold;"&gt;classifier&lt;/span&gt; z wartością &lt;span style="font-style: italic;"&gt;javadoc&lt;/span&gt;. Pytanie, które należy w
      tym momencie zadać, to przypadek użycia, w którym chcielibyśmy skorzystać z możliwości zadeklarowania zależności projektu od klasyfikatora &lt;span style="font-style: italic;"&gt;javadoc&lt;/span&gt; czy &lt;span style="font-style: italic;"&gt;sources&lt;/span&gt; (pozostałe klasyfikatory pozostawiam do własnego przemyślenia). Dla przypadku wyłącznego pobrania javadoc czy źródeł z centralnego repozytorium Mavena korzysta się z pomocy dodatkowego parametru konfiguracyjnego wtyczki, która umożliwia
      skorzystanie z danego typu klasyfikatora (udostępnia rozwiązanie przypadku użycia, w którym dany klasyfikator gra znaczącą rolę).&lt;br /&gt;&lt;br /&gt;Weźmy jako przykład pracę z javadoc. Jeśli chciałbym skorzystać z javadoc do umieszczenia jej w dystrybucji mojego projektu skorzystam z wtyczki &lt;a href="http://maven.apache.org/plugins/maven-assembly-plugin/"&gt;maven-assembly-plugin&lt;/a&gt;, która potrafi "złożyć" plik wynikowy paczki dystrybucyjnej projektu, potencjalnie z dołączeniem
      dokumentacji javadoc dla wybranej zależności. W przypadku korzystania z dokumentacji javadoc czy źródeł w środowisku Eclipse wtyczka &lt;a href="http://maven.apache.org/plugins/maven-eclipse-plugin/"&gt;maven-eclipse-plugin&lt;/a&gt; generująca definicję projektu eclipsowego na podstawie pom.xml pozwala na określenie wymagania podpięcia javadoc czy źródeł do projektu - parametry &lt;span style="font-weight: bold;"&gt;-DdownloadJavadocs=true&lt;/span&gt; i &lt;span style="font-weight:
      bold;"&gt;-DdownloadSources=true&lt;/span&gt;, odpowiednio (patrz &lt;a href="http://maven.apache.org/plugins/maven-eclipse-plugin/examples/attach-library-sources.html"&gt;Attach Library Sources and Javadocs&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Wniosek jest jeden: w zależności od wymagań zazwyczaj nie przyjdzie Tobie skorzystanie z artefaktu o zadanym klasyfikatorze bezpośrednio, a raczej pośrednio, poprzez zależność w pom.xml czy konfigurację wtyczki. Jeśli jednak potrzebujemy pobrać pojedyńczy plik z
      repozytorium mavenowego, np. z dokumentacją javadoc, wystarczy skorzystać z wget czy podobnego narzędzia. To jednak sprowadza temat do bardzo znanej i lubianej kwestii doboru właściwego narzędzia do danego zadania. Kwesię obsługi javadoc w projekcie mavenowym zdaje się, że mam(y) rozwiązaną.&lt;br /&gt;&lt;br /&gt;Kiedy teraz przyjdzie mi pracować z projektem mavenowym w środowisku Eclipse bez pomocy wtyczki m2eclipse wystarczy uruchomić polecenie&lt;pre&gt; mvn eclipse:eclipse -DdownloadSources=true
      -DdownloadJavadocs=true&lt;br /&gt;&lt;/pre&gt;i zaimportować projekt, aby móc cieszyć się z pomocy kontekstowej javadoc oraz możliwości przejścia do kodów źródłowych dla klas zależności projektowej. Warto było zgłosić usprawnienie do Wicketa, aby w końcu rozpoznać to wszystko. Teraz już wszystko powinno być jasne.&lt;br /&gt;&lt;br /&gt;Od kilku dobrych miesięcy trwają prace nad polonizacją NetBeans IDE 6. Prace trwają i mimo nadchodzącej wersji &lt;span style="font-weight: bold;"&gt;NetBeans IDE
      6.5&lt;/span&gt; (od 14-tego rozpoczynają się prace w &lt;a href="http://qa.netbeans.org/processes/cat/65/index.html"&gt;NetCAT 6.5&lt;/a&gt;), wciąż nie ma produkcyjnej wersji NetBeans w języku polskim. Jeśli jesteś zainteresowany/-a posiadaniem spolszczonego NetBeansa i chciał(a)byś mieć swój udział w projekcie tłumaczenia przyłącz się do &lt;a href="http://wiki.netbeans.org/PolishTranslation"&gt;zespołu polonizującego NetBeans&lt;/a&gt;. Proponuję zacząć już dzisiaj.</description>
      <pubDate>Mon, 14 Jul 2008 21:51:34 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Zaproszenie do NetCAT 6.5 oraz NetBeans Dream Team jednego dnia</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-1917546586859845292</guid>
      <link>http://jlaskowski.blogspot.com/2008/07/zaproszenie-do-netcat-65-oraz-netbeans.html</link>
      <description>Dzisiaj spędziłem czas w cieniu rozpracowania zawiłości &lt;a href="http://www.ibm.com/software/webservers/appserv/was/"&gt;IBM WebSphere Application Server 6.1&lt;/a&gt; i przyznaję, że wymagający klient, dociekający każdej funkcjonalności serwera aplikacyjnego, to skarb, który należy pielęgnować i dbać o niego z całych sił. Jakby przeciwieństwo powszechnego przekonania, że klient to wróg numer jeden, a właśnie to, co powoduje, że owych "szkodników" (aka klientów) tak nie lubimy, jest
      właśnie tym, co sprawia, że zgłębiamy temat intensywniej i stajemy się technicznie bardziej zaawansowanymi. Mam przyjemność pracować z dwoma warszawskimi klientami, którzy faktycznie wykorzystują każdy element WASa i &lt;a href="http://www.ibm.com/software/integration/wps/"&gt;IBM WebSphere Process Server 6.0.2&lt;/a&gt; w ich najdrobniejszych szczegółach i jeszcze nie było dnia, abym nie dowiedział się czegoś nowego. Zabawy co nie miara!&lt;br /&gt;&lt;br /&gt;Tym bardziej ucieszyłem się, kiedy
      zaglądając do mojej skrzynki pocztowej miałem możliwość przeczytania dwóch zaproszeń z całkiem innej półki - &lt;a href="http://www.netbeans.org"&gt;NetBeans&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pierwsze z nich to zaproszenie do programu &lt;a href="http://qa.netbeans.org/processes/cat/65/index.html"&gt;NetCAT 6.5&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Welcome to the NetCAT 6.5 program!&lt;br /&gt;&lt;br /&gt;Dear NetCAT 6.5 applicant,&lt;br /&gt;&lt;br /&gt;
      Congratulations! You have been selected to participate in the NetBeans 6.5 Community Acceptance Testing program. The response to the program announcement was very high again and the selection process was difficult at best, but your experience and testing offer met our selection criteria.&lt;br /&gt;&lt;br /&gt; On _July 14th_ you will be automatically subscribed to netcat@netbeans.org alias and receive further information regarding your testing activites. This mailing list will be the main
      communication channel for NetCAT 6.5 program and in this regard we would like to ask you to read and adhere to our NetCAT Etiquette [1].&lt;br /&gt;&lt;br /&gt;[1] http://qa.netbeans.org/processes/cat/65/etiquette.html&lt;br /&gt;&lt;br /&gt; Your feedback is important to us and we hope that you will be an active member of the NetCAT 6.5 team. Thanks again for your interest in improving NetBeans and welcome aboard!&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;--&lt;br /&gt;Jiri Kovalsky&lt;br
      /&gt;NetCAT 6.5 Program Coordinator&lt;br /&gt;http://qa.netbeans.org/processes/cat/65/index.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Drugie zaproszenie to jeszcze większa niespodzianka - zaproszenie do grupy &lt;a href="http://wiki.netbeans.org/wiki/view/NetBeansDreamTeam"&gt;NetBeans Dream Team&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;You are formally invited to join the NetBeans Dream Team&lt;br /&gt;&lt;br /&gt;Hello and congratulations,&lt;br /&gt;&lt;br /&gt;You
      are invited to join the NetBeans Dream Team. Please read more about us at:&lt;br /&gt;http://wiki.netbeans.org/NetBeansDreamTeam&lt;br /&gt;&lt;br /&gt;You were selected using the process located at:&lt;br /&gt;http://wiki.netbeans.org/NBDTNewMemberRules&lt;br /&gt;&lt;br /&gt;You are obviously not required to become a member, but we have recognized your contributions within the NetBeans community, and would like to formally invite you to join our group.&lt;br /&gt;&lt;br /&gt;You may read more about
      our mission at:&lt;br /&gt;http://wiki.netbeans.org/DTMissionStatementAndProcess&lt;br /&gt;&lt;br /&gt;and some things we would like to work on at:&lt;br /&gt;http://wiki.netbeans.org/NetbeansDreamTeamIdeasAndProjects&lt;br /&gt;&lt;br /&gt;We sincerely hope you accept this invitation and we look forward to working with you to make our NetBeans community better.&lt;br /&gt;&lt;br /&gt;Below we have provided some preliminary introductory questions for you to provide answers to the current members.
      This will help us get to know you better. Please respond with the answers, and if you accept this invitation we will get you setup within our infrastructure. If you choose not to accept at this time, we do hope you'll consider us in the future, and thank you for your contributions:&lt;br /&gt;&lt;br /&gt;1) Do you accept this invitation? (if not, then please do not feel obligated to answer the other questions, and thank you for your attention)&lt;br /&gt;&lt;br /&gt;2) What is your name?&lt;br
      /&gt;&lt;br /&gt;3) What is your netbeans user ID? This helps us see your issues in IZ and other community contributions.&lt;br /&gt;&lt;br /&gt;4) Where do you live?&lt;br /&gt;&lt;br /&gt;5) What are some interesting things about you: hobbies, family, etc?&lt;br /&gt;&lt;br /&gt;6) What are your favorite NB features?&lt;br /&gt;&lt;br /&gt;7) What are some interesting features you would like to add to the IDE?&lt;br /&gt;&lt;br /&gt;8) Are you a NetBeans RCP/Platform developer/user?&lt;br
      /&gt;&lt;br /&gt;9) What are some interesting features you would like to add to the RCP/Platform (if a user)?&lt;br /&gt;&lt;br /&gt;10) What do you like most about the NetBeans community?&lt;br /&gt;&lt;br /&gt;11) What are some things you would most like to change in the NetBeans community?&lt;br /&gt;&lt;br /&gt;12) What are some other open-source communities you are involved?&lt;br /&gt;&lt;br /&gt;13) What are your blog and home page addresses?&lt;br /&gt;&lt;br /&gt;14) What email address
      should the Dream Team use to contact you? (this email address will also be used to sign you up to the Dream Team mailing list, Yahoo Tech Group, etc)&lt;br /&gt;&lt;br /&gt;Thank you for your attention,&lt;br /&gt;&lt;br /&gt;Wade Chandler&lt;br /&gt;&lt;br /&gt; ==================&lt;br /&gt;Wade Chandler, CCE&lt;br /&gt;Software Engineer and Developer, Certified Forensic Computer Examiner, NetBeans Dream Team Member, and NetBeans Board Member&lt;br
      /&gt;http://www.certified-computer-examiner.com&lt;br /&gt;http://wiki.netbeans.org/wiki/view/NetBeansDreamTeam&lt;br /&gt;http://www.netbeans.org&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nic dodać, nic ująć. Dzisiejszy dzień przebiegł niezwykle interesująco. &lt;span style="font-style: italic;"&gt;Z wyróżnieniami przychodzą obowiązki&lt;/span&gt;, jak stwierdził kolega Marcin, a z nowymi obowiązkami nowe doświadczenia, więc zabawa wciąż trwa. Może w końcu uda mi się zabrać ponownie za tą wtyczkę NetBeans
      dla Apache Geronimo?! Są chętni mi pomóc? Z wielkim entuzjazmem przyjąłbym nawet najmniejszą pomoc.</description>
      <pubDate>Fri, 11 Jul 2008 21:45:01 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: NetBeans IDE 6.5M1 dostępny i algorytmiczna oferta pracy z Mój Startup</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-1733910992020963772</guid>
      <link>http://jlaskowski.blogspot.com/2008/07/netbeans-ide-65m1-dostpny-i.html</link>
      <description>Niektórzy mają wakacje, jeszcze niektórym zechciało się pisać wpisy na blogu, a jeszcze niektórzy robią coś pożytecznego i wytrwale programują. W zespole NetBeans praca zdaje się, że wre na całego, czego dowodem jest kolejna wersja NetBeans IDE. Jeszcze nie ostygła wersja 6.1, a już mamy &lt;a href="http://bits.netbeans.org/download/6.5/m1/"&gt;NetBeans IDE 6.5 Milestone 1&lt;/a&gt; (&lt;span style="font-weight: bold;"&gt;NetBeans IDE 6.5M1&lt;/span&gt;). Wspominałem o programie &lt;span
      style="font-weight: bold;"&gt;NetBeans Community Acceptance Test (NetCAT)&lt;/span&gt; dotyczącym wersji 6.5 w &lt;a href="http://jlaskowski.blogspot.com/2008/07/umidzynarodowienie-w-jboss-seam-netcat.html"&gt;Umiędzynarodowienie w JBoss Seam, NetCAT 6.5 oraz nowa grupa oferty-pracy-java&lt;/a&gt;, w którym można wyrazić swoją opinię o tym wydaniu i...jeszcze zgarnąć nagrodę (poza sławą i chwałą). Nie pozostaje nic innego, jak tylko przyłączyć się do zespołu NetCAT 6.5 i wyrazić, co człowiekowi leży
      na sercu, w kontekście tego wydania (inne sprawy sercowe nie są obsługiwane ;-)) Pewnie nie dla wszystkich jest to &lt;span style="font-style: italic;"&gt;The only IDE you need!&lt;/span&gt; (za reklamą NetBeans IDE 6.5). W ogłoszeniu napisano:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;This stabilized development build contains the following new &amp;amp; noteworthy features:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style:
      italic;"&gt;PHP&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Enhanced Code Completion&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Database-related code snippets&lt;/span&gt;&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Multiple project configurations&lt;/li&gt;&lt;li style="font-style: italic;"&gt;&lt;span&gt;Find Usages&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li style="font-style: italic;"&gt;Ajax&lt;ul&gt;&lt;li&gt;JavaScript
      Debugger&lt;/li&gt;&lt;li&gt;JavaScript Library Manager&lt;/li&gt;&lt;li&gt;Bundled JavaScript Libraries&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Groovy&lt;/span&gt;&lt;ul&gt;&lt;li style="font-style: italic;"&gt;Editor&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Java SE Project Integration&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Grails support&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;span
      style="font-style: italic;"&gt;Java&lt;/span&gt;&lt;ul&gt;&lt;li style="font-style: italic;"&gt;Javadoc Anlyzer&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Call Hierarchy&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;CamelCase code completion&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Debugger&lt;/span&gt;&lt;ul&gt;&lt;li style="font-style: italic;"&gt;New Multithreaded Debugging Support&lt;/li&gt;&lt;li
      style="font-style: italic;"&gt;Debugging Window&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Current Thread Chooser&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="font-style: italic;"&gt;Additional enhancements have been made to&lt;ul&gt;&lt;li&gt;Web Frameworks (Spring, Hibernate, JSF, JSF CRUD Generator, JPA)&lt;/li&gt;&lt;li&gt;Ruby&lt;/li&gt;&lt;li&gt;Database&lt;/li&gt;&lt;li&gt;Mobility&lt;/li&gt;&lt;li&gt;GUI Builder&lt;/li&gt;&lt;li&gt;Web
      Services&lt;/li&gt;&lt;li&gt;Improvements to XML and Schema Tools&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Note: The UML feature is not available in Milestone 1, but is planned for Beta. The development team is migrating UML to the NetBeans Visual Library, to make UML completely open source. Please see UML Current Projects for additional information.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Get more details about these
      features and additional New and Noteworthy Features http://wiki.netbeans.org/NewAndNoteWorthy available in the release. The final NetBeans IDE 6.5 release is planned for Fall 2008. We welcome and encourage feedback about your experience using the NetBeans IDE.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bardzo imponująca lista funkcjonalności, nieprawdaż?&lt;br /&gt;&lt;br /&gt;Jestem stałym czytelnikiem bloga &lt;a href="http://mojstartup.pl"&gt;Mój Startup&lt;/a&gt;, w którym pojawiła się niezwykle
      ciekawie przedstawiona &lt;a href="http://mojstartup.pl/index.php/2008/06/19/praca-dla-programisty"&gt;oferta pracy dla programisty java&lt;/a&gt; zawierająca zadanko na znajomość algorytmiki. Ciekawym Waszych rozwiązań.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Napisz funkcję (w dowolnym języku programowania), która mają tablicę o długości N zawierającą liczby z zakresu 1 do N stwierdzi, czy występują w niej duplikaty (czy da się to rozwiązać w czasie liniowym? przy stałej
      pamięci? bez niszczenia zawartości tablicy?)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Czas liniowy jak najbardziej (współczynniki kosztów poszczególnych algorytmów będą różne), stała pamięć jak najbardziej zakładając, że N jest dowolne acz ustalone przed uruchomieniem (tutaj może pojawić się klucz do zmniejszenia kosztu) i ostatecznie nie niszczymy zawartości tablicy, gdyż tworzymy jej kopię gwarantując, że jej rozmiar nie będzie zależny od rozmiaru danych wejściowych (gwarancja algorytmu &lt;span
      style="font-style: italic;"&gt;w miejscu&lt;/span&gt;). Czas napisania takiego algorytmu sądzę, że udałoby się zamknąć w 15 minutach. Są chętni do podjęcia pracy? Nawet, jeśli niekoniecznie samej pracy, to może samego zadania? Bardzo spodobała mi się tak przedstawiona oferta pracy. Gratuluję pomysłu. Sądzę, że może być ich więcej na dopiero co założonej grupie &lt;a href="http://groups.google.pl/group/oferty-pracy-java/"&gt;oferty-pracy-java&lt;/a&gt;, gdzie tego typu oferty powinny być normą. Czyżby
      nowa jakość na polskim rynku ofert pracy?!</description>
      <pubDate>Wed, 09 Jul 2008 22:17:52 +0000</pubDate>
    </item>
    <item>
      <title>Jacek Laskowski - Notatnik Projektanta Java EE: Umiędzynarodowienie w JBoss Seam, NetCAT 6.5 oraz nowa grupa oferty-pracy-java</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-20941681.post-806665980550387140</guid>
      <link>http://jlaskowski.blogspot.com/2008/07/umidzynarodowienie-w-jboss-seam-netcat.html</link>
      <description>W końcu natrafiłem na notkę odnośnie roli &lt;span style="font-weight: bold;"&gt;seam.properties&lt;/span&gt; w aplikacji w książce &lt;a href="http://www.apress.com/book/view/9781590597927"&gt;Beginning JBoss® Seam: From Novice to Professional&lt;/a&gt; wydawnictwa Apress oraz gdzieś w Sieci. Cała magia &lt;span style="font-style: italic;"&gt;seam.properties&lt;/span&gt; to przede wszystkim oznaczenie archiwum WAR lub JAR jako zawierające komponenty seamowe i stąd konieczność
      umieszczenia go w &lt;span style="font-weight: bold;"&gt;/WEB-INF/classes&lt;/span&gt; w aplikacji webowej, aby Seam zechciał rozważyć przeszukiwanie aplikacji w celu "namierzenia" klas oznaczonych adnotacją &lt;span style="font-weight: bold;"&gt;@Name&lt;/span&gt;. Plik &lt;span style="font-style: italic;"&gt;seam.properties&lt;/span&gt; może być całkowicie pusty - wystarczy jego istnienie. Trudno jednak zrozumieć, dlaczego umieszczenie definicji komponentów w &lt;span style="font-weight:
      bold;"&gt;components.xml&lt;/span&gt; działa, a już przeszukiwanie ich w archiwum nie. Czyż Seam nie dowiedział się właśnie poprzez plik &lt;span style="font-style: italic;"&gt;components.xml&lt;/span&gt;, że ma do czynienia z aplikacją seamową?! Na chwilę obecną nie zamierzam zaglądać do kodu źródłowego, ale pewnie tam należałoby szukać odpowiedzi. Chętni?! ;-)&lt;br /&gt;&lt;br /&gt;Dzisiaj na tapetę poszedł temat umiędzynarodowienia aplikacji seamowej (przypomina mi się temat &lt;a
      href="http://jlaskowski.blogspot.com/2008/05/umidzynarodowienie-w-apache-wicket.html"&gt;Umiędzynarodowienie w Apache Wicket&lt;/a&gt; i trochę ckni mi się do Wicketa i możliwości jego uruchomienia na OSGi). Temat umiędzynarodowienia aplikacji korzystającej z JavaServer Faces był już przeze mnie przedstawiany w artykułach &lt;a href="http://jlaskowski.blogspot.com/2007/02/requiredmessage-i-resource-bundle.html"&gt;requiredMessage i resource-bundle - udoskonalona kontrola komunikatów w JSF
      1.2&lt;/a&gt;, &lt;a href="http://jlaskowski.blogspot.com/2006/01/uruchamiamy-pierwsz-aplikacj-w.html"&gt;Uruchamiamy pierwszą aplikację w technologii JavaServer Faces&lt;/a&gt;, &lt;a href="http://www.jaceklaskowski.pl/wiki/Tworzenie_aplikacji_z_JavaServer_Faces%2C_Apache_Maven_i_Apache_Geronimo"&gt;Tworzenie aplikacji z JavaServer Faces, Apache Maven i Apache Geronimo&lt;/a&gt; czy &lt;a
      href="http://www.jaceklaskowski.pl/wiki/JavaServer_Faces_i_Spring_Framework_w_parze_z_Apache_Maven_i_Apache_Geronimo"&gt;JavaServer Faces i Spring Framework w parze z Apache Maven i Apache Geronimo&lt;/a&gt;. Wszystkie dotykają tematu użycia &lt;span style="font-weight: bold;"&gt;message-bundle&lt;/span&gt; w &lt;span style="font-weight: bold;"&gt;faces-config.xml&lt;/span&gt;, kontrolki &lt;span style="font-weight: bold;"&gt;&amp;lt;f:loadBundle&gt;&lt;/span&gt; na stronie JSF, gdzie korzysta się z
      tłumaczeń oraz wskazanie na niego z danego pliku tłumaczeń - &lt;span style="font-weight: bold;"&gt;#{komunikaty['wprowadz_imie']}&lt;/span&gt;. Jest tego trochę do zapamiętania, co Seam zauważalnie skrócił.&lt;br /&gt;&lt;br /&gt;Pierwsza różnica między "czystą" (nieseamową) aplikacją JSF a opartą o Seama to założenie, że wszystkie pliki properties z tłumaczeniami składają się na jedną mapę &lt;span style="font-weight: bold;"&gt;messages&lt;/span&gt; klucz-tłumaczenie. W przypadku JSF mamy mapę per
      plik tłumaczeń. Kolejna zmiana to zniesienie obowiązku definiowania plików tłumaczeń w faces-config.xml - obowiązkowym pliku konfiguracyjnym każdej aplikacji opartej o JSF. I na koniec podsumowania różnic, Seam znosi obowiązek deklarowania użycia pliku tłumaczeń za pomocą &lt;span style="font-style: italic;"&gt;&amp;lt;f:loadBundle&gt;&lt;/span&gt;. Z Seamem wystarczy utworzyć pojedyńczy plik &lt;span style="font-weight: bold;"&gt;messages.properties&lt;/span&gt; dla wybranych języków i użyć
      konstrukcji &lt;span style="font-weight: bold;"&gt;#{messages['klucz']}&lt;/span&gt; w dowolnym miejscu strony JSF. Oczywiście istnieje możliwość zdefiniowania wielu plików tłumaczeń. "Gdzie?" - zapytasz. Oczywiście w opcjonalnym &lt;span style="font-weight: bold;"&gt;components.xml&lt;/span&gt;, który wraz z kilkoma innymi opcjonalnymi plikami xmlowymi przejął rolę obowiązkowego &lt;span style="font-style: italic;"&gt;faces-config.xml&lt;/span&gt; w JSF (podkreślam użycie słów &lt;span
      style="font-style: italic;"&gt;opcjonalny&lt;/span&gt; i &lt;span style="font-style: italic;"&gt;obowiązkowy&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Więcej informacji ze źródła o umiędzynarodowieniu aplikacji seamowych w dokumentacji Seama - &lt;a href="http://docs.jboss.com/seam/2.0.3.CR1/reference/en-US/html/i18n.html"&gt;Chapter 15. Internationalization, localization and themes&lt;/a&gt;, a w szczególności &lt;a
      href="http://docs.jboss.com/seam/2.0.3.CR1/reference/en-US/html/i18n.html#d0e9138"&gt;15.3.1. Defining labels&lt;/a&gt;. Podczas poznawania mechanizmu tłumaczeń w Seamie brakowało mi wiedzy, którą ostatecznie udało mi się znaleść na forum &lt;span style="font-weight: bold;"&gt;Seam Users&lt;/span&gt; w wątku &lt;a href="http://www.seamframework.org/Community/IncludingAResourceBundleNotCalledMessages"&gt;Including a resource bundle not called messages*&lt;/a&gt;.&lt;br /&gt;&lt;br
      /&gt;Umiędzynarodowienie mojej aplikacji seamowej, którą rozwijam od kilku dni, rozpocząłem od zmian w pliku &lt;span style="font-weight: bold;"&gt;components.xml&lt;/span&gt;, gdzie wskażę pliki tłumaczeń.&lt;pre&gt; &amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt; &amp;lt;components &lt;br /&gt; xmlns="http://jboss.com/products/seam/components"&lt;br /&gt; xmlns:core="http://jboss.com/products/seam/core"&lt;br /&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;
      xsi:schemaLocation="http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.0.xsd&lt;br /&gt; http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd"&gt;&lt;br /&gt; &amp;lt;core:init debug="true" /&gt;&lt;br /&gt; &amp;lt;core:resource-loader&gt;&lt;br /&gt; &amp;lt;core:bundle-names&gt;&lt;br /&gt; &amp;lt;value&gt;komunikaty&amp;lt;/value&gt;&lt;br /&gt; &amp;lt;value&gt;messages&amp;lt;/value&gt;&lt;br /&gt;
      &amp;lt;/core:bundle-names&gt;&lt;br /&gt; &amp;lt;/core:resource-loader&gt;&lt;br /&gt; &amp;lt;/components&gt;&lt;/pre&gt;Przypomnę, że jest to krok opcjonalny i domyślnie Seam poszukuje pliku &lt;span style="font-weight: bold;"&gt;messages.properties&lt;/span&gt; dla danego języka, np. &lt;span style="font-style: italic;"&gt;messages_pl.properties&lt;/span&gt; dla polskiego. Plik musi znajdować się w ścieżce klas aplikacji, co w moim przypadku aplikacji webowej sprowadziło się do umieszczenia go w
      katalogu &lt;span style="font-style: italic;"&gt;/WEB-INF/classes&lt;/span&gt;. W powyższej konfiguracji w components.xml dodałem również użycie pliku &lt;span style="font-style: italic;"&gt;komunikaty_pl.properties&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Opcjonalnie zdefiniowałem domyślny język aplikacji (polski) i inne wspierane języki (polski) w &lt;span style="font-style: italic;"&gt;faces-config.xml&lt;/span&gt;:&lt;pre&gt; &amp;lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;br /&gt;
      &amp;lt;faces-config version="1.2"&lt;br /&gt; xmlns="http://java.sun.com/xml/ns/javaee"&lt;br /&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"&gt;&lt;br /&gt; &amp;lt;application&gt;&lt;br /&gt; &amp;lt;locale-config&gt;&lt;br /&gt; &amp;lt;default-locale&gt;pl&amp;lt;/default-locale&gt;&lt;br /&gt; &amp;lt;supported-locale&gt;pl&amp;lt;/supported-locale&gt;&lt;br
      /&gt; &amp;lt;/locale-config&gt;&lt;br /&gt; &amp;lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&amp;lt;/view-handler&gt;&lt;br /&gt; &amp;lt;/application&gt;&lt;br /&gt; &amp;lt;/faces-config&gt;&lt;/pre&gt;W ten sposób zagwarantowałem, że jedynym słusznym językiem w aplikacji będzie polski. Wyboru nie ma.&lt;br /&gt;&lt;br /&gt;Zawartość pliku &lt;span style="font-weight: bold;"&gt;messages_pl.properties&lt;/span&gt;:&lt;pre&gt; kategoria.tytul=Administracja kategoriami&lt;/pre&gt;oraz
      &lt;span style="font-weight: bold;"&gt;komunikaty_pl.properties&lt;/span&gt;:&lt;pre&gt; kategoria.nazwa=Nazwa&lt;br /&gt; kategoria.opis=Opis&lt;/pre&gt;Oba pliki muszą znaleźć się na ścieżce klas, np. &lt;span style="font-style: italic;"&gt;/WEB-INF/classes&lt;/span&gt; w ramach archiwum war.&lt;br /&gt;&lt;br /&gt;Mając tak zdefiniowane pliki tłumaczeń zmodyfikowałem stronę &lt;span style="font-weight: bold;"&gt;kategoria.xhtml&lt;/span&gt;:&lt;pre&gt; &amp;lt;?xml version="1.0"
      encoding="utf-8"?&gt;&lt;br /&gt; &amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &lt;br /&gt; "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;&lt;br /&gt; &amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib"&lt;br /&gt; xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"&gt;&lt;br /&gt; &amp;lt;head&gt;&lt;br /&gt; &amp;lt;title&gt;#{messages['kategoria.tytul']}&amp;lt;/title&gt;&lt;br /&gt;
      &amp;lt;/head&gt;&lt;br /&gt; &amp;lt;body&gt;&lt;br /&gt; &amp;lt;f:view&gt;&lt;br /&gt; &amp;lt;h:form&gt;&lt;br /&gt; &amp;lt;s:validateAll&gt;&lt;br /&gt; &amp;lt;h:panelGrid columns="2"&gt;&lt;br /&gt; #{messages['kategoria.nazwa']}: &amp;lt;h:inputText value="#{kategoria.nazwa}" required="true" /&gt;&lt;br /&gt; #{messages['kategoria.opis']}: &amp;lt;h:inputText value="#{kategoria.opis}" required="true" /&gt;&lt;br /&gt; &amp;lt;/h:panelGrid&gt;&lt;br /&gt; &amp;lt;/s:validateAll&gt;&lt;br
      /&gt; &amp;lt;h:messages /&gt;&lt;br /&gt; &amp;lt;h:commandButton value="Dodaj" action="#{kategoriaAgent.dodaj}" /&gt;&lt;br /&gt; &amp;lt;br /&gt;&lt;br /&gt; &amp;lt;h:outputText value="Brak kategorii" rendered="#{kategorie.rowCount==0}" /&gt;&lt;br /&gt; &amp;lt;h:dataTable var="ktgria" value="#{kategorie}" rendered="#{kategorie.rowCount&gt;0}"&gt;&lt;br /&gt; &amp;lt;h:column&gt;&lt;br /&gt; &amp;lt;f:facet name="header"&gt;&lt;br /&gt; &amp;lt;h:outputText value="Nazwa" /&gt;&lt;br /&gt;
      &amp;lt;/f:facet&gt;&lt;br /&gt; &amp;lt;h:commandLink value="#{ktgria.nazwa}" action="#{kategoriaAgent.wybierz}" /&gt;&lt;br /&gt; &amp;lt;/h:column&gt;&lt;br /&gt; &amp;lt;h:column&gt;&lt;br /&gt; &amp;lt;f:facet name="header"&gt;&lt;br /&gt; &amp;lt;h:outputText value="Opis" /&gt;&lt;br /&gt; &amp;lt;/f:facet&gt;&lt;br /&gt; &amp;lt;h:outputText value="#{ktgria.opis}" /&gt;&lt;br /&gt; &amp;lt;/h:column&gt;&lt;br /&gt; &amp;lt;h:column&gt;&lt;br /&gt; &amp;lt;h:commandButton value="Delete"
      action="#{kategoriaAgent.skasuj}" /&gt;&lt;br /&gt; &amp;lt;/h:column&gt;&lt;br /&gt; &amp;lt;/h:dataTable&gt;&lt;br /&gt; &amp;lt;h3&gt;&amp;lt;h:outputText value="#{kategoriaWybrana.nazwa}" /&gt;&amp;lt;/h3&gt;&lt;br /&gt; &amp;lt;div&gt;&amp;lt;h:outputText value="#{kategoriaWybrana.opis}" /&gt;&amp;lt;/div&gt;&lt;br /&gt; &amp;lt;/h:form&gt;&lt;br /&gt; &amp;lt;/f:view&gt;&lt;br /&gt; &amp;lt;/body&gt;&lt;br /&gt; &amp;lt;/html&gt;&lt;/pre&gt;Na uwagę zasługuje użycie &lt;span style="font-style:
      italic;"&gt;#{messages['kategoria.tytul']}&lt;/span&gt; w tytule poza sekcją &lt;span style="font-style: italic;"&gt;&amp;lt;f:view&gt;&lt;/span&gt; oraz &lt;span style="font-style: italic;"&gt;#{messages['kategoria.nazwa']}&lt;/span&gt; i &lt;span style="font-style: italic;"&gt;#{messages['kategoria.opis']}&lt;/span&gt; w &lt;span style="font-style: italic;"&gt;&amp;lt;h:panelGrid&gt;&lt;/span&gt;. Przypomnę, że wszystkie komunikaty trafiają do jednej zbiorczej mapy - &lt;span style="font-style:
      italic;"&gt;messages&lt;/span&gt;, więc należy zagwarantować unikalność zawartych w niej kluczy tłumaczeń, np. poprzedzając nazwą strony, w której się znajdują.&lt;br /&gt;&lt;br /&gt;Uruchomienie strony &lt;span style="font-style: italic;"&gt;kategoria.xhtml&lt;/span&gt;, to jak można się domyśleć pojawienie się napisów z plików tłumaczeń. Proste, nieprawdaż?&lt;br /&gt;&lt;br /&gt;Na zakończenie kilka słów spoza obszaru Seama. Właśnie pojawiło się zaproszenie do &lt;a
      href="http://qa.netbeans.org/processes/cat/65/index.html"&gt;NetBeans IDE 6.5 Community Acceptance Testing program (NetCAT)&lt;/a&gt;. W programie NetCAT miałem już przyjemność uczestniczyć w poprzednich edycjach i wiele mogłem się w nich nauczyć samego NetBeansa, ale również i technologiach Korporacyjnej Javy recenzując artykuły o nich i samemu sprawdzając ich działanie w NB. I tym razem nie mogłem sobie odpuścić zgłoszenia się do programu, szczególnie, że z tą wersją rokuję pewne nadzieje w
      kontekście znaczącego usprawnienia we wsparciu dwóch serwerów aplikacyjnych &lt;a href="http://www-306.ibm.com/software/webservers/appserv/was/"&gt;IBM WebSphere Application Server 6.1&lt;/a&gt; oraz &lt;a href="http://geronimo.apache.org"&gt;Apache Geronimo&lt;/a&gt;. Może się do czegoś przydam i sprawię, aby pracowało się przyjmniej z NetBeans 6.5? ;-) A Ty? Każdy może się przyłączyć, więc szkoda czasu na zbędne zastanawianie się - lepiej ten czas przeznaczyć na poznawanie
      błędów^H^H^Hfunkcjonalności NB 6.5.&lt;br /&gt;&lt;br /&gt;Kilka dni temu &lt;span style="font-weight: bold;"&gt;Michał B&lt;/span&gt;. podjął się tematu wyjaśnienia odmiany słowa &lt;span style="font-weight: bold;"&gt;Java&lt;/span&gt; i jego pisowni w komentarzu do &lt;a href="http://jlaskowski.blogspot.com/2008/01/w-sprawie-recenzja-ksiki-hibernate-od.html"&gt;W sprawie Recenzja książki "Hibernate. Od Nowicjusza do Profesjonalisty"&lt;/a&gt;. Odpowiedź od jego znajomego filologa trochę mnie
      zaskoczyła:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"wyraz 'Java' proponuję używać tylko w formie mianownikowej i odmieniać tylko wyraz 'język' - czyli np. języka Java, o/w języku Java.&lt;br /&gt;To zapewni jednoznaczność terminologii w tekstach - oczywiście mówiąc nie trzymałbym się kurczowo takiej opcji - tu może być sama [dżawa] a formy [w dżawie] itp. wystarczą (o czym sam doskonale wiesz:)) "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Zaskoczeni podobnie jak ja? Jestem zdania,
      że można odmieniać słowo Java w dowolnym zestawieniu, czyli &lt;span style="font-style: italic;"&gt;o javie&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;z javą&lt;/span&gt; i &lt;span style="font-style: italic;"&gt;bez javy&lt;/span&gt; (chociaż to ostatnie nie przechodzi mi jakoś przez gardło ;-))&lt;br /&gt;&lt;br /&gt;I na koniec informacja o dedykowanej grupie &lt;a href="http://groups.google.pl/group/oferty-pracy-java/"&gt;oferty-pracy-java&lt;/a&gt;, gdzie zamieszczane są wyłącznie
      oferty dotyczące obszaru programowania, testowania czy projektowania z użyciem technologii javowych z uwzględnieniem widełek płacowych. Jeśli uważasz, że jest coś więcej, co powinno pojawiać się w każdym ogłoszeniu o pracę, zapraszam do udziału w grupie i wprowadzenia stosownych zmian. Każdy ma prawo głosu, a celem jest stworzenie miejsca, w którym oferty będą tak profesjonalne, jak osoby, które z nich zamierzają skorzystać. My jako owa wykwalifikowana kadra możemy wpłynąć na kształt ofert i
      korzystania z nich dla dobra własnego. W ten sposób z pewnością uda nam się wypracować nowy styl pisania ofert z właściwymi wymaganiami, widełkami płacowymi, dodatkami, itp. Grupa jest moderowana i przy rejestracji należy określić swoją rolę - oferent/rekruter vs zainteresowany (wyłącznie dla celów...hmm...nie mam pojęcia jakich, ale pomyślałem, że dobrze wiedzieć jakie są proporcje). Dyskusje o uszczegółówienie ofert jak najbardziej wskazane. Grupa jest publiczna. Archiwum do przeglądania przez
      każdego, ale jedynie członkowie mogą dyskutować na grupie (po zatwierdzeniu posta przez moderatora). Sądzę, że warunki są idealne do wymagań obu stron - firm rekrutacyjnych i kadry pracowniczej. Promocja siebie jak najbardziej wskazana przez wysłanie CV na grupę. Wszystko, co sprawi, że będzie można znaleźć swoją wymarzoną pracę łatwiej mile widziane. Zapisz się i działaj!&lt;br /&gt;&lt;br /&gt;Pytanie konkursowe: &lt;span style="font-weight: bold;"&gt;Jak nazywa się mapa tłumaczeń w
      Seamie?&lt;/span&gt; I takie bardzo zaawansowane: &lt;span style="font-weight: bold;"&gt;W jaki sposób (gdzie i jak) definiuje się wiele plików tłumaczeń w Seamie?&lt;/span&gt;</description>
      <pubDate>Wed, 02 Jul 2008 22:46:33 +0000</pubDate>
    </item>
    <item>
      <title>Marek Kliś - różności okołojavowe i nie tylko: NetBeans + Ecplise = ...</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-62160705063034256.post-2228387609742241394</guid>
      <link>http://marekklis.blogspot.com/2008/06/netbeans-ecplise.html</link>
      <description>W sobotę (28.08.2008) miałem okazję uczestniczyć w &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_2008_-_Ganymede_Edition/Krakow"&gt;Ecplise DemoCamps&lt;/a&gt; w Krakowie. Spotkanie zaliczam do udanych. W drodze powrotnej przypomniał mi się niedawny wpis na blogu &lt;a href="http://blogs.sun.com/geertjan/entry/running_netbeans_from_eclipse"&gt;Geertjan Wielengi&lt;/a&gt; opisujący jak uruchomić aplikację napisaną z wykorzystaniem &lt;a
      href="http://platform.netbeans.org/"&gt;NetBeans Platform&lt;/a&gt; z &lt;a href="http://www.eclipse.org/"&gt;Eclipsa&lt;/a&gt;.&lt;br /&gt;Jako, że ostatnio miałem trochę do czynienia z bardzo fajną biblioteką &lt;a href="http://graph.netbeans.org/"&gt;Visual Library&lt;/a&gt;, która wchodzi w skład platformy NetBeans, pomyślałem, że może by spróbować napisać prosty programik w Eclipsie wykorzystujący tą bibliotekę.&lt;br /&gt;Ściągnąłem &lt;a
      href="http://graph.netbeans.org/files/documents/188/1357/Visual-Library-2.0-pre3.zip"&gt;Visual Library&lt;/a&gt;, odpaliłem Eclipsa i zabrałem się do pracy. Okazało się, że tej pracy nie było dużo (wręcz prawie w ogóle).&lt;br /&gt;Po pierwsze stworzyłem panel, na którym miał wylądować edytor graficzny.&lt;br /&gt;&lt;br /&gt;&lt;pre cols="72" class="moz-signature"&gt;&lt;br /&gt;package pl.marekklis.graph;&lt;br /&gt;&lt;br /&gt;import java.awt.BorderLayout;&lt;br /&gt;import
      java.awt.Dimension;&lt;br /&gt;&lt;br /&gt;import javax.swing.JFrame;&lt;br /&gt;import javax.swing.JPanel;&lt;br /&gt;import javax.swing.JScrollPane;&lt;br /&gt;&lt;br /&gt;import org.netbeans.api.visual.graph.GraphScene;&lt;br /&gt;&lt;br /&gt;public class GraphTest extends JPanel{&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt; JFrame frame = new JFrame("Graph test");&lt;br /&gt; frame.setMinimumSize(new Dimension(400,300));&lt;br /&gt; frame.setSize(400, 300);&lt;br
      /&gt; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt; frame.setContentPane(new GraphTest());&lt;br /&gt; frame.pack();&lt;br /&gt; frame.setVisible(true);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public GraphTest() {&lt;br /&gt; initComponents();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void initComponents(){&lt;br /&gt; setLayout(new BorderLayout());&lt;br /&gt; JScrollPane scrollPane = new JScrollPane();&lt;br /&gt; add(scrollPane,BorderLayout.CENTER);&lt;br /&gt; GraphScene
      scene = new GraphSceneImpl();&lt;br /&gt; scrollPane.setViewportView(scene.createView());&lt;br /&gt; add(scene.createSatelliteView(),BorderLayout.WEST);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Po drugie stworzyłem implementacje &lt;a href="http://bits.netbeans.org/6.1/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/graph/GraphScene.html"&gt;GraphScene&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre cols="72" class="moz-signature"&gt;&lt;br /&gt;package
      pl.marekklis.graph;&lt;br /&gt;&lt;br /&gt;import java.awt.Point;&lt;br /&gt;&lt;br /&gt;import org.netbeans.api.visual.action.ActionFactory;&lt;br /&gt;import org.netbeans.api.visual.action.ConnectProvider;&lt;br /&gt;import org.netbeans.api.visual.action.ConnectorState;&lt;br /&gt;import org.netbeans.api.visual.anchor.AnchorFactory;&lt;br /&gt;import org.netbeans.api.visual.anchor.AnchorShape;&lt;br /&gt;import org.netbeans.api.visual.graph.GraphScene;&lt;br /&gt;import
      org.netbeans.api.visual.widget.ConnectionWidget;&lt;br /&gt;import org.netbeans.api.visual.widget.LayerWidget;&lt;br /&gt;import org.netbeans.api.visual.widget.Scene;&lt;br /&gt;import org.netbeans.api.visual.widget.Widget;&lt;br /&gt;import org.netbeans.api.visual.widget.general.IconNodeWidget;&lt;br /&gt;import org.openide.util.Utilities;&lt;br /&gt;&lt;br /&gt;public class GraphSceneImpl extends GraphScene {&lt;br /&gt; &lt;br /&gt; private LayerWidget mainLayer;&lt;br /&gt; private LayerWidget
      connectionLayer;&lt;br /&gt; private LayerWidget interactionLayer;&lt;br /&gt;&lt;br /&gt; public GraphSceneImpl() {&lt;br /&gt; mainLayer = new LayerWidget(this);&lt;br /&gt; connectionLayer = new LayerWidget(this);&lt;br /&gt; interactionLayer = new LayerWidget(this);&lt;br /&gt; addChild(mainLayer);&lt;br /&gt; addChild(connectionLayer);&lt;br /&gt; addChild(interactionLayer);&lt;br /&gt; Widget w1 = addNode("1. węzeł");&lt;br /&gt; w1.setPreferredLocation(new Point(10, 100));&lt;br /&gt; Widget
      w2 = addNode("2. węzeł");&lt;br /&gt; w2.setPreferredLocation(new Point(100, 250));&lt;br /&gt; Widget w3 = addNode("Jakiś kolejny węzeł");&lt;br /&gt; w3.setPreferredLocation(new Point(250, 250));&lt;br /&gt; Widget w4 = addNode("Jakiś kolejny węzeł");&lt;br /&gt; w4.setPreferredLocation(new Point(250, 350));&lt;br /&gt; getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected Widget attachNodeWidget(String arg0) {&lt;br /&gt;
      IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt; if (arg0.startsWith("1")) {&lt;br /&gt; widget.setImage(Utilities.loadImage("pl/marekklis/graph/&lt;br /&gt; resources/gr01.png"));&lt;br /&gt; } else if (arg0.startsWith("2")) {&lt;br /&gt; widget.setImage(Utilities.loadImage("pl/marekklis/graph/&lt;br /&gt; resources/gr02.png"));&lt;br /&gt; } else {&lt;br /&gt; widget.setImage(Utilities.loadImage("pl/marekklis/graph/&lt;br /&gt; resources/gr03.png"));&lt;br /&gt; } &lt;br /&gt;
      widget.getActions().addAction(&lt;br /&gt; ActionFactory.createExtendedConnectAction(&lt;br /&gt; connectionLayer,new MyConnectProvider()));&lt;br /&gt; widget.getActions().addAction(&lt;br /&gt; ActionFactory.createAlignWithMoveAction(&lt;br /&gt; mainLayer, interactionLayer, &lt;br /&gt; ActionFactory.createDefaultAlignWithMoveDecorator()));&lt;br /&gt; widget.setLabel(arg0);&lt;br /&gt; mainLayer.addChild(widget);&lt;br /&gt; return widget;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br
      /&gt; protected Widget attachEdgeWidget(String arg0) {&lt;br /&gt; return null;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected void attachEdgeSourceAnchor(&lt;br /&gt; String arg0, String arg1, String arg2) {&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected void attachEdgeTargetAnchor(&lt;br /&gt; String arg0, String arg1, String arg2) {&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private class MyConnectProvider implements ConnectProvider {&lt;br /&gt;&lt;br
      /&gt; public boolean isSourceWidget(Widget source) {&lt;br /&gt; return source instanceof IconNodeWidget &amp;amp;&amp;amp; source != null &lt;br /&gt; ? true : false;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public ConnectorState isTargetWidget(Widget src, Widget trg) {&lt;br /&gt; return src != trg &amp;amp;&amp;amp; trg instanceof IconNodeWidget ? &lt;br /&gt; ConnectorState.ACCEPT : ConnectorState.REJECT;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public boolean hasCustomTargetWidgetResolver(Scene arg0)
      {&lt;br /&gt; return false;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public Widget resolveTargetWidget(Scene arg0, Point arg1) {&lt;br /&gt; return null;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void createConnection(Widget source, Widget target) {&lt;br /&gt; ConnectionWidget conn = new ConnectionWidget(&lt;br /&gt; GraphSceneImpl.this);&lt;br /&gt; conn.setTargetAnchorShape(AnchorShape.TRIANGLE_FILLED);&lt;br /&gt; conn.setTargetAnchor(AnchorFactory.&lt;br /&gt;
      createRectangularAnchor(target));&lt;br /&gt; conn.setSourceAnchor(AnchorFactory.&lt;br /&gt; createRectangularAnchor(source));&lt;br /&gt; connectionLayer.addChild(conn);&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I oto efekt:&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_dqSd_vS7ivk/SGexL4KlkHI/AAAAAAAAAO8/ZFV8K6lmk5s/s1600-h/GraphInEclipse.png"&gt;&lt;img
      src="http://bp1.blogger.com/_dqSd_vS7ivk/SGexL4KlkHI/AAAAAAAAAO8/ZFV8K6lmk5s/s320/GraphInEclipse.png" alt="" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; cursor: hand;" border="0" id="BLOGGER_PHOTO_ID_5217333510945476722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;W naszym okienku mamy działający przykład wykorzystujący Visual Library.</description>
      <pubDate>Sun, 29 Jun 2008 17:01:23 +0000</pubDate>
    </item>
    <item>
      <title>Marek Kliś - różności okołojavowe i nie tylko: Mechanizm aktualizacji w NetBeans Platform</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-62160705063034256.post-7564724126942641737</guid>
      <link>http://marekklis.blogspot.com/2008/05/mechanizm-aktualizacji-w-netbeans.html</link>
      <description>Przyjrzyjmy się dzisiaj w jaki sposób możemy wykorzystać &lt;span style="font-style: italic;"&gt;Auto Update Service&lt;/span&gt; do rozprowadzania aktua