<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog.grejpfrut.org &#187; java</title>
	<atom:link href="http://grejpfrut.org/blog/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://grejpfrut.org/blog</link>
	<description>a DRY KISS</description>
	<lastBuildDate>Fri, 22 Jan 2010 20:58:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Podsumowania &#8211; nadchodzi GeeCON 2010</title>
		<link>http://grejpfrut.org/blog/2010/01/20/podsumowania-nadchodzi-geecon-2010/</link>
		<comments>http://grejpfrut.org/blog/2010/01/20/podsumowania-nadchodzi-geecon-2010/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 00:11:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[geecon]]></category>
		<category><![CDATA[poznań-jug]]></category>

		<guid isPermaLink="false">http://grejpfrut.org/blog/?p=216</guid>
		<description><![CDATA[Nie prowadzę tego bloga zbyt regularnie, ale od czasu do czasu nachodzi mnie chęć żeby to zmienić  . Od ostatniego wpisu działo się bardzo dużo, widać to choćby śledząc stronę Poznań JUG (tam pisuje regularnie   ). Od ostatniego mojego grejpfrutowego wpisu mieliśmy dwie świetne edycje Poznań Eclipse Democamp, zorganizowane dzięki współpracy Poznań [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://grejpfrut.org/blog/wp-content/uploads/2010/01/IMG_547.jpg"><img src="http://grejpfrut.org/blog/wp-content/uploads/2010/01/IMG_547.jpg" alt="" title="IMG_547" width="300" height="200" class="alignright size-medium wp-image-225" /></a>Nie prowadzę tego bloga zbyt regularnie, ale od czasu do czasu nachodzi mnie chęć żeby to zmienić <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Od ostatniego wpisu działo się bardzo dużo, widać to choćby śledząc stronę <a href="http://www.jug.poznan.pl">Poznań JUG</a> (tam pisuje regularnie <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). Od ostatniego mojego grejpfrutowego wpisu mieliśmy dwie świetne edycje <a href="http://wiki.eclipse.org/DemoCamp/Poznan">Poznań Eclipse Democamp</a>, zorganizowane dzięki współpracy Poznań JUG i poznańskiego <a href="http://twitter.com/EclipsePoznan">IBM Eclipse Support Center</a>. Niektórzy być może nawet widzieli tam nawet moją krótką prezentację o <a href="http://beta.parleys.com/#st=5&#038;id=379">TPTP</a> &#8211; mam nadzieje, że nie było tak źle <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . </p>
<p>Dzięki pracy Agnieszki Lewandowskiej Poznański JUG ma również <a href="http://beta.parleys.com/#st=4&#038;id=46631">swój</a> kanał w portalu <a href="http://beta.parleys.com">beta.parleys.com</a> w którym możecie znaleźć materiały video z różnych prezentacji.</p>
<p>Jeszcze z zupełnie innej beczki &#8211; wspomnieć należy o ogromnym sukcesie zapoczątkowanego przez <a href="http://jacekonthings.blogspot.com/">Jacka Pospychałę</a> kursu przygotowawczego do egzaminu Sun Certfied Java Programmer. Ludzie walili drzwiami i oknami, a o wynikach można poczytać <a href="http://groups.google.com/group/jug-poznan/browse_thread/thread/f1da80318e3eca15">tutaj</a>.</p>
<p>W najbliższej przyszłości czeka nas naprawdę sporo atrakcji o jednej z nich zapewne wszyscy już słyszeli &#8211; <a href="http://geecon.org">GeeCON 2010</a> odbędzie się w Poznaniu! Przygotowania do konferencji idą pełną parą, na stronie pojawiły się już informacje o pierwszych zaproszonych gościach, konferencję objął swym honorowym patronatem prezydent miasta Poznania p. Ryszard Grobelny, firma Adobe zaoferowała swoją pomoc w organizacji konferencji &#8211; jeżeli chcecie być na bieżąco warto podsłuchiwać na <a href="http://twitter.com/Geecon_news">Twitterze</a> <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . </p>
<p>Co być może w tej chwili najważniejsze od 6 stycznia organizatorzy czekają na propozycje wystąpień, pełny tekst zaproszenia do udziału można znaleźć na stronie : <a href="http://2010.geecon.org/site/cfp">http://2010.geecon.org/site/cfp</a>. Termin upływa 28 lutego 2010 nie ma więc na co czekać <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2010/01/20/podsumowania-nadchodzi-geecon-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Własny ApplicationType w VisualVM</title>
		<link>http://grejpfrut.org/blog/2008/12/20/wlasny-applicationtype-w-visualvm/</link>
		<comments>http://grejpfrut.org/blog/2008/12/20/wlasny-applicationtype-w-visualvm/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 13:20:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[netbeans-day]]></category>
		<category><![CDATA[visualvm]]></category>

		<guid isPermaLink="false">http://grejpfrut.org/blog/2008/12/20/wlasny-applicationtype-w-visualvm/</guid>
		<description><![CDATA[Tworzenia prostych rozszerzeń do VisualVM ciąg dalszy, muszę przyznać, że platforma poza  paroma dziwnymi zachowaniami jest całkiem przyjemna i klepanie takich prostych rzeczy jest niezłą rozrywką  . Dzisiaj (póki co) ostatni odcinek moich przygód związanych z przygotowywaniem prezentacji na NetBeans Day w Poznaniu. W kilku zwięzłych zdaniach opowiem Wam o dodawaniu własnego ApplicationType [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Tworzenia prostych rozszerzeń do VisualVM ciąg dalszy</strong>, muszę przyznać, że platforma poza  paroma dziwnymi zachowaniami jest całkiem przyjemna i klepanie takich prostych rzeczy jest niezłą rozrywką <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Dzisiaj (póki co) ostatni odcinek moich przygód związanych z przygotowywaniem prezentacji na NetBeans Day w Poznaniu. W kilku zwięzłych zdaniach opowiem Wam o dodawaniu własnego ApplicationType i łączeniu tego co stworzymy z kodem stworzonym w poprzednim wpisie.</p>
<p><strong>Możecie pobrać całość w <a href="http://grejpfrut.org/examples/visualvm-plugin-tutorial.zip">zipie</a> (gotowe do zaimportowania projekty NetBeansowe)</strong> lub gotowe do użycia pliki nbm (w update site wpiszcie : <a href="http://grejpfrut.org/examples/vvm-modules/updates.xml">http://grejpfrut.org/examples/vvm-modules/updates.xml</a>).</p>
<p>Tak jak poprzednio <strong>zaczniemy od implementacji fabryki</strong> tworzącej instancję naszej implementacji ApplicationType.</p>
<pre class="brush: java;">
public class GrejpfrutApplicationTypeProvider extends MainClassApplicationTypeFactory {
@Override
  public ApplicationType createApplicationTypeFor(Application app, Jvm jvm, String mainClass) {
    if (app.isLocalApplication()) {
      return new GrejpfrutApplicationType(app.getPid(), mainClass);
    }
    return null;
  }
}</pre>
<p>Warto pamiętać, że w zależności od dostępnych informacji <strong>zmienna mainClass nie zawsze musi zawierać nazwę głównej klasy</strong>.</p>
<p>W tym konkretnym przykładzie aplikacje grejpfrutowe to takie, które zostały uruchomione lokalnie.</p>
<p>Kolejny krok to nieco więcej pisania, ale dalej nic trudnego.</p>
<pre class="brush: java;">
public class GrejpfrutApplicationType extends ApplicationType {

    protected final int appPID;
    protected final String name;

    public GrejpfrutApplicationType(int appPID, String name) {
        this.appPID = appPID;
        this.name = name;
    }
    @Override
    public String getName() {
        return &quot;Grejpfrut &quot;+name;
    }
    @Override
    public String getVersion() {
        return &quot;blee.bleee&quot;;
    }
    @Override
    public String getDescription() {
        return &quot;Application type for Grejpfrut&quot;;
    }
    @Override
    public Image getIcon() {
	//używamy tej saame ikonki co w poprzednim przykładzie (patrz poprzedni wpis)
        return Utilities.loadImage(FirstExamplePluginView.IMAGE_PATH, true);
    }
}</pre>
<p>Teraz jeszcze zarejestrowanie nowego ApplicationType w klasie Installer (patrz poprzedni post).</p>
<pre class="brush: java;">
public class Installer extends ModuleInstall {
    private static GrejpfrutApplicationTypeProvider INSTANCE = new GrejpfrutApplicationTypeProvider();

    @Override
    public void restored() {
        FirstExamplePluginViewProvider.initialize();
        ApplicationTypeFactory.getDefault().registerProvider(INSTANCE);
    }
    @Override
    public void uninstalled() {
        FirstExamplePluginViewProvider.unregister();
        ApplicationTypeFactory.getDefault().unregisterProvider(INSTANCE);
    }
}</pre>
<p>Wprowadźmy jeszcze jedną małą zmianę w FirstExamplePluginViewProvider, dodając jedną nową metodę.</p>
<pre class="brush: java;">
    @Override
    protected boolean supportsViewFor(Application app) {
        if (ApplicationTypeFactory.getApplicationTypeFor(app) instanceof GrejpfrutApplicationType) {
            return true;
        }
        return false;
    }</pre>
<p>Stworzona w poprzednim odcinku zakładka będzie się wyświetlała tylko w przypadku gdy zostanie jej przypisany typ GrejpfrutApplicationType.</p>
<p><strong>Czyścimy całość i odpalamy, co się teraz stanie?</strong> Jeżeli masz odpalone tylko NetBeans i VisualVM w którym została uruchomiona wtyczka to niczego nie zobaczysz. Dlaczego? Otóż na tyle na ile to rozumiem  NetBeansApplicationType i VisualVMApplicationType zostały zarejestrowane przed GrejpfrutApplicationType. VVM przypisuje aplikacji pierwszy ApplicationType który uda mu się do niej dopasować więc nie dochodzi nawet do sprawdzania czy NetBeans i VVM są też grejpfrutami <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Uruchom jakiegoś Eclipse’a ;P wtedy na drzewku Applications pojawi się nowy grejpfrut.</p>
<p>To by było na tyle <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  jeżeli napotkacie jakieś ładne stactrace’y bawiąc się Shootoutem i moimi źródełkami dajcie znać.</p>
<p>Jeszcze jedna finalna uwaga &#8211; testowałem na platformie w wersji 6.01 więc już dość leciwej.</p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2008/12/20/wlasny-applicationtype-w-visualvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VisualVM Java IDE wars plugin</title>
		<link>http://grejpfrut.org/blog/2008/12/03/visualvm-java-ide-wars-plugin/</link>
		<comments>http://grejpfrut.org/blog/2008/12/03/visualvm-java-ide-wars-plugin/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 16:49:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[netbeans-day]]></category>
		<category><![CDATA[visualvm]]></category>

		<guid isPermaLink="false">http://grejpfrut.org/blog/2008/12/03/visualvm-java-ide-wars-plugin/</guid>
		<description><![CDATA[Pobierz :
- NetBeans IDE 6.1 ub 6.5
- Visual VM .
Potrzebny będzie również kod źródłowy gry Shootout autorstwa Dawida Weissa, orginalna wersja nie pozwalała na osadzenie gry w kontenerach Swingowych, musiałem więc wprowadzić kilka poprawek  . Kod źródłowy dostępny jest tutaj. Aby zbudować jar’a wystarczy rozpakować archiwum i w katalogu shootout wydać polecenie: ant jar-netbeans [...]]]></description>
			<content:encoded><![CDATA[<p>Pobierz :<br />
- <a href="http://www.netbeans.org/">NetBeans IDE</a> 6.1 ub 6.5<br />
- <a href="https://visualvm.dev.java.net/">Visual VM </a>.</p>
<p>Potrzebny będzie również <strong>kod źródłowy gry Shootout</strong> autorstwa <a href="http://www.cs.put.poznan.pl/dweiss">Dawida Weissa</a>, orginalna wersja nie pozwalała na osadzenie gry w kontenerach Swingowych, musiałem więc wprowadzić kilka poprawek <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Kod źródłowy dostępny jest <a href="http://grejpfrut.org/examples/shootout.zip">tutaj</a>. Aby zbudować jar’a wystarczy rozpakować archiwum i w katalogu shootout wydać polecenie: ant jar-netbeans w shootout/build znajdziecie finalnego jar’a.</p>
<p>Po zainstalowaniu Visual VM (można też użyć tego który znajduje się w Waszym JDK) i uruchomieniu NetBeans IDE możemy przystąpić do pracy. W niektórych miejscach korzystałem z wizardów NetBeansowych więc samo spojrzenie w kod tych próbek może nie dać wam pełnego obrazu jak najszybciej dojść do finalnego efektu</p>
<p><strong>Visual VM to aplikacja stworzona w oparciu o NetBeans Paltform</strong>, przeglądając zawartość folderu aplikacji możecie natknąć się na charakterystyczne dla aplikacji NBP nazwy plików i katalogów. Zanim zaczniemy właściwą pracę musimy zarejestrować instację platformy NB, która znajduje się w Visual VM. Oprócz standardowych elementów NB są tam również moduły specyficzne dla Visual VM jak np.  VisualVM-Application czy VisualVM-Core.</p>
<p>Aby zarejestrować instancje platformy należy wybrać z menu Tools&gt;NetBeans Plaform i dodać nową platformę (przycisk Add Platform) &#8211; wskazujemy na katalog w którym został zainstalowany VisualVM</p>
<p><strong>Rejestracja platformy umożliwi nam nie tylko zapewnienie pełnej zgodności</strong> z platformą na której uruchamiany będzie plugin, ale pozwoli również na debugowanie i szybkie uruchamianie tworzonego przez nas rozszerzenia w docelowym środowisku.</p>
<p>Tworzymy nowy projekt wybierając <strong>File&gt;New Project&gt;NetBeans Modules</strong> i z listy o prawej stronie wybrać <strong>Module Suite</strong> klikamy Next.</p>
<p>W następnym kroku kreatora wpisujemy nazwę projektu i wybieramy platformę w oparciu o którą będziemy rozwijali nasz zestaw modułów. W poprzednich krokach zarejestrowaliśmy instancję należącą do Visual VM i to właśnie ją wybieramy z listy rozwijanej.</p>
<p><strong>Module Suite</strong> jest kontenerem dla modułów które są z jakichś względów są ze sobą powiązane, w wyniku naszych działań powstaną dwa moduły: właściwa wtyczka do VisualVM i drugi będący owijką na shootout.jar. Dlaczego tak? Scenariusz jest bardzo prosty wyobraźcie sobie, że została wydana nowa wersja Shooout i chcielibyśmy mieć ją w naszej wtyczce. Po dokonaniu niezbędnych zmian przez nas, użytkownicy wtyczki musieliby ściągać nie tylko nową wersję gry, ale i samą wtyczkę, którą już przecież mają. Aby więc w pełni wykorzystać zalety modułowości każda biblioteka wykorzystywana przez naszą wtyczkę powinna zostać opakowana w pewne dodatkowe informacje, które pozwolą instancji NetBeans Platform na aktualizację tylko tej konkretnej biblioteki.</p>
<p>Czas więc stworzyć <strong>Library Wrapper Module</strong> dla Shootout.jar. Klikamy <strong>File&gt;New Project&gt;NetBeans Module&gt;Library Wrapper Module</strong> w pierwszym kroku kreatora trzeba podać ścieżkę do pliku jar, który opakowujemy i do pliku z licencją na której biblioteka jest/ma być udostępniania. W ostatnim kroku kreatora pojawia się pytanie o codebase, wpisujemy com.dawidweiss.shootout.</p>
<p>O czym jeszcze warto wspomnieć, pierwotnie <strong>Shootout.jar miał w manifeście ustawiony parameter Main-Class, który wskazywał na klasę posiadającą metodę main w której uruchamiana była gra.</strong> Powodowało to, że wtyczka po umieszczeniu w VisualVM nie działała. Wywalenie tego atrybutu z manifestu załatwiło sprawę. Niestety nie znam się na wnętrznościach NetBeans Platform więc nie jestem w stanie tego sobie wytłumaczyć bardziej racjonalnie.</p>
<p>Zależności w formie LWM mogą być deklarowane przez wszystkie moduły wchodzące w skład nadrzędnego Module Suite.</p>
<p>Mamy już jeden moduł, teraz czas przejść do najważniejszej części tego artykułu &#8211; tworzenia właściwej wtyczki do VisualVM.</p>
<p>Tworzymy nowy projekt <strong>File&gt;New Project&gt;NetBeans Module&gt;Module</strong>, moduł powinien zostać dodany do stworzonego wcześniej Module Suite. W kolejnym kroku wpisujemy codebase : org.grejpfrut.vvm, w NetBeans 6.5 wpisanie poprawnego codebase uzupełnia również pozostałe pola formularza.</p>
<p>Kolejny krok to dodanie zależności, w oknie Projects klikamy prawym na węzeł reprezentujący moduł i <strong>wybieramy Properties.</strong> Następnie <strong>zakładka Libraries</strong> musimy mieć zadeklarowane następujące zależności: Module System API, shootout, Utilities API, VisualVM-Application i VisualVM-Core.</p>
<p><strong>W oknie Projects</strong> klikamy prawym przyciskiem myszy na węzeł reprezentujący stworzony przed chwilą moduł i wybieramy <strong>New&gt;Module Installer</strong>. Stworzona klasa Installer i jej dwie metody restored i uninstalled umożliwiają nam wpięcie się w cykl życia tworzonej właśnie wtyczki. Kod z metody restored jest wykonywany w chwili załadowania modułu, jest to najwłaściwsze miejsce aby zarejestrować klasy implementujące rozszerzenia. Natomiast metoda uninstalled jest wywoływana w momentcie gdy moduł jest usuwany ze środowiska lub gdy jest ono wyłączane.</p>
<pre class="brush: java;">
public class Installer extends ModuleInstall {
    @Override
    public void restored() {
        FirstExamplePluginViewProvider.initialize();
    }
    @Override
    public void uninstalled() {
        FirstExamplePluginViewProvider.unregister();
    }
}</pre>
<p>W mojej prezentacji z NetBeans Day możecie znaleźć krótkie omówienie tego co można rozszerzyć w VisualVM, więcej o tym piszę Geertjan w<br />
dokumentacji VisualVM i na swoim blogu. FirstExamplePlugin będzie tworzył dodatkową zakładką, którą użytkownicy będą mogli zobaczyć po połączeniu się do jakiegoś JVMa. W zakładce tej będą się działy rzeczy różne <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Należy teraz <strong>stworzyć klasę FirstExamplePluginViewProvider</strong>, jak sugeruje nazwa, klasa ta będzie odpowiedzialna za “produkcję” instancji klasy FirstExamplePluginView.</p>
<pre class="brush: java;">
class FirstExamplePluginViewProvider extends DataSourceViewProvider {
    //prosty singleton
    private static DataSourceViewProvider instance = new FirstExamplePluginViewProvider();

    static void initialize() {
        //rejestrujemy instancję FirstExamplePluginViewProvider w zarządcy widoków
        DataSourceViewsManager.sharedInstance().addViewProvider(instance, Application.class);
    }

    static void unregister() {
        //wyrejestrowujemy instancję FirstExamplePluginViewProvider w zarządcy widoków
	//metoda jest wywoływana podczas odinstalowywania modułu i wyłączania środowiska
        DataSourceViewsManager.sharedInstance().removeViewProvider(instance);
    }

    @Override
    protected DataSourceView createView(Application app) {
        //tworzy instancję widoku
        return new FirstExamplePluginView(app);
    }
}</pre>
<p>Klasa ta to prosty singleton, który w czasie inicjalizacji modułu (initialize) dodaje do <strong>DataSourceViewManager’a</strong> swoją instancję. Najważniejszą metodą w tej klasie jest createView, która to tworzy naszą zakładkę.</p>
<p>Kopiując poniższy kod należy pamiętać <strong>o wskazaniu poprawnej ścieżki do ikonki</strong> wyświetlanej w etykiecie zakładki:<br />
org/grejpfrut/vvmnbd/example/grejpfrut.png &#8211; szczegóły będą widoczne w źródłach.</p>
<pre class="brush: java;">
public class FirstExamplePluginView extends DataSourceView {

    private DataViewComponent dvc;

    //sciezka do ikony, ktora bedzie wyswietlana w zakładce zakładki
    public final static String IMAGE_PATH = &quot;org/grejpfrut/vvmnbd/example/grejpfrut.png&quot;;

    public FirstExamplePluginView(Application app) {
        //tytuł zakładki i ikona
        super(app, &quot;Java IDE wars plugin&quot;, new ImageIcon(Utilities.loadImage(IMAGE_PATH)).getImage(), 3, true);
    }

    @Override
    protected DataViewComponent createComponent() {
    	//tworzenie elementów widoku
        JEditorPane generalDataArea = new JEditorPane();
        generalDataArea.setBorder(BorderFactory.createEmptyBorder(4, 8, 4, 8));

        JPanel details1Panel = new JPanel(new BorderLayout());
        ShootoutBoard board = new ShootoutBoard(new ShootoutUtilities().getEnemyFactory(), details1Panel);
        details1Panel.add(board, BorderLayout.CENTER);
        details1Panel.setBackground(Color.GRAY);
        details1Panel.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));

	//osadzanie stworzonych kontrolek w kontenerze VisualVM
        DataViewComponent.MasterView masterView = new DataViewComponent.MasterView(&quot;Java IDE wars plugin&quot;, null, generalDataArea);
	//konfiguracja widoku
        DataViewComponent.MasterViewConfiguration masterViewConfiguration = new DataViewComponent.MasterViewConfiguration(false);

	//tworzymy właściwy komponent, który bedzie wyswietlany w VVM
        dvc = new DataViewComponent(masterView, masterViewConfiguration);

	//tworzymy panel z planszą gry
        DataViewComponent.DetailsView details = new DataViewComponent.DetailsView(&quot;&quot;, &quot;Detale tego okienka&quot;, 10, details1Panel, null);
	//umieszczamy go w odpowiednim miejscu
        dvc.addDetailsView(details, DataViewComponent.TOP_LEFT);
	//gra ma być domyślnie ukryta
        dvc.hideDetailsArea(DataViewComponent.TOP_LEFT);
        return dvc;
    }
}</pre>
<p></strong>Po uzupełnieniu importów</strong>, możemy uruchomić nasz plugin aby tego dokonać należy w oknie Projects kliknąć prawym na węzeł reprezentujący nasz <strong>Module Suite</strong> i wybrać “Run” lub “Debug”. NetBeans uruchomi teraz nasz plugin w platformie która wybraliśmy dla naszych modułów. Teraz klikamy w dowolny proces JVM, który jest wyświetlany na <strong>drzewku Applications</strong> i powinna się naszym oczom ukazać zakładka z grejpfrutem, po kliknięciu “Details” powinna już rozpocząć się strzelanina <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><img class="size-full wp-image-71 alignnone" title="java-ide-warss" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2008/12/java-ide-warss.jpg" alt="java-ide-warss" width="500" height="366" /></p>
<p>Kompletne źródła już wkrótce, po tym jak skończe drugą cześć “Własny ApplicationType”.</p>
<p>Wszystko oparte na serii artykułów <a href="http://blogs.sun.com/geertjan/entry/getting_started_extending_visualvm">Getting Started Extending VisualVM</a> autorstwa <a href="http://blogs.sun.com/geertjan">Geertjana Wielengi</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2008/12/03/visualvm-java-ide-wars-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poznań NetBeans Day : Podsumowanie</title>
		<link>http://grejpfrut.org/blog/2008/11/03/poznan-netbeans-day-podsumowanie/</link>
		<comments>http://grejpfrut.org/blog/2008/11/03/poznan-netbeans-day-podsumowanie/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 23:29:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[netbeans-day]]></category>
		<category><![CDATA[poznań-jug]]></category>

		<guid isPermaLink="false">http://grejpfrut.org/blog/2008/11/03/poznan-netbeans-day-podsumowanie/</guid>
		<description><![CDATA[Kurz opadł już jakiś czas temu   teraz zbieramy jeszcze materiały od prelegentów, robimy finalne rozliczenia, a ja (osobiście) sprzątam kod mojego pluginu do VisualVM, który mam nadzieje w tym tygodniu opublikować.
Kilka słów podsumowania, z informacji które udało mi się zebrać wynika, że obie edycje odwiedziło w sumie około 140 osób (80 Gdańsk, około [...]]]></description>
			<content:encoded><![CDATA[<p>Kurz opadł już jakiś czas temu <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  teraz zbieramy jeszcze materiały od prelegentów, robimy finalne rozliczenia, a ja (osobiście) sprzątam kod mojego pluginu do VisualVM, który mam nadzieje w tym tygodniu opublikować.</p>
<p>Kilka słów podsumowania, z informacji które udało mi się zebrać wynika, że obie edycje odwiedziło w sumie około 140 osób (80 Gdańsk, około 60 w Poznaniu). Kurcze, wydaje się, że nie codzień jest okazja posłuchać tak świetnych specjalistów, ale wychodzi na to, że dobry poziom merytoryczny to nie wszystko…</p>
<p>Niestety nie byłem w stanie obejrzeć wszystkich poznańskich prezentacji, ominął mnie występ Geertjana Wielengi który omawiał podstawy NetBeans Platform. Nie mogę też za wiele powiedzieć o prezentacji Adam Kędziory bo ze względu na różne organizacyjne bzdury musiałem siedzieć przed salą. Bardzo podobała mi się prezentacja Toni’ego Epple, który pokazywał przykłady produkcyjnych wdrożeń NBPlatform. Jestem  ciekaw czy ktoś próbował portować aplikację Eclipse RCP na NBPlatform, mechanizmy w środku działają na podobnej zasadzie, ale w przypadku zaawansowanych kontrolek może nie być różowo. Ogromne wrażenie zrobił na mnie Adam Bien (rzeczywiście trzech Adamów na jednej konferencji to całkiem sporo <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) generalnie jestem umiarkowanym fanem live-coding, ale poczucie humoru i dynamizm z jakim AB przeprowadził słuchaczy przez arkana NetBeans 6.5 jest godne podziwu.</p>
<p>Tyle merytorycznie… chciałem podziękować chłopakom ze Szczecin JUG, którzy przejechali całkiem spory kawałek żeby się w Poznaniu pojawić, mam nadzieje, że piwo w Stajence wypaliło <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Były też osoby z Rzeszowa, Aten <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  no i oczywiście z Poznania (najwięcej z UAM). Oddzielne podziękowania muszą powędrować do koła naukowego studentów informatyki UAM, bez was chłopaki byłaby totalna klapa.</p>
<p>O NetBeans Day napisało już kilka osób:</p>
<ul>
<li>Geerthan Wielenga &#8211; <a href="http://blogs.sun.com/geertjan/entry/poznan_gdansk_netbeans_day_poland">“Poznan &amp; Gdansk: NetBeans Day, Poland”</a></li>
<li>Toni Epple &#8211; <a href="http://eppleton.sharedhost.de/blog/?p=265">“NetBeans Days in Gdansk and Poznan”</a> (Tony zrobił również kilka świetnych zdjęć, link dostępny w jego wpisie)</li>
<li>Adam Bien &#8211; opisał swoje wrażenia <a href="http://www.adam-bien.com/roller/abien/entry/two_days_with_netbeans_6">tutaj</a> i <a href="http://www.adam-bien.com/roller/abien/entry/2_nb_dreamers_2_sun">tutaj</a></li>
<li> Jacek Laskowski &#8211; <a href="http://jlaskowski.blogspot.com/2008/10/wraenia-po-netbeans-day-2008-w-gdasku.html">“Wrażenia po NetBeans Day 2008 w Gdańsku”</a></li>
<li>Łukasz Stachowiak &#8211; <a href="http://wookasz.blogspot.com/2008/10/po-netbeans-day-pozna.html">“Po NetBeans day Poznań”</a></li>
<li> Leszek Gruchała &#8211; <a href="http://gruchala.eu/2008/10/wraenia-z-netbeans-day-w-poznaniu.html">“Wrażenia z NetBeans Day w Poznaniu”</a> &#8211; (dzięki za słowa krytyki, postaram się coś zrobić z moją “żywością” <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )</li>
<li> Miroslav Kopecky  &#8211; <a href="http://blogs.sun.com/kopeckym/entry/poland_netbeans_day_success">“Poland &#8211; NetBeans Day Success”</a></li>
</ul>
<p>Miłe jest też to, że nasza inicjatywa została zauważona w portalu java.net <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img class="alignnone size-full wp-image-62" title="12" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/12.jpg" alt="12" width="505" height="454" />.</p>
<p>Dzięki staraniom <a href="http://flickr.com/photos/lvizard/">Macieja Biłasa</a>, <a href="http://www.flickr.com/photos/18483686@N00/sets/72157608474452457/">Toniego Epple</a> i <a href="http://picasaweb.google.com/bartlomiej.lopatka/NetbeansDayPozna#">Bartka Łopatki</a> Poznań NetBeans Day zostało całkiem nieźle udokumentowane, dzięki.</p>
<p><a style="text-decoration:none" title="Aula A, UAM, Poznań - plakat NetBeans Day" href="http://picasaweb.google.com/bartlomiej.lopatka/NetbeansDayPozna"><br />
<img class="alignnone size-full wp-image-50" title="Poznań NetBeans Day" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/1.jpg" alt="Poznań NetBeans Day" width="640" height="428" /><br />
</a></p>
<p><a style="text-decoration:none" title="Geertjan Wielenga opowiada o podstawach NetBeans Platform" href="http://flickr.com/photos/lvizard/2977204171/in/photostream/"></a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/2.jpg"><img class="alignnone size-full wp-image-51" title="Geertjan Wielenga in Poznań" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/2.jpg" alt="Geertjan Wielenga in Poznań" width="640" height="426" /></a><br />
Geertjan Wielenga opowiada o podstawach NetBeans Platform</p>
<p><a style="text-decoration:none" title="Adam Kędziora mówił o swoich doświadczeniach w tworzeniu aplikacji w NetBeans Platform, oraz o uczestnictwie w NetBeans Innovators Grant." href="http://picasaweb.google.com/bartlomiej.lopatka/NetbeansDayPozna#"><br />
</a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/3.jpg"><img class="alignnone size-full wp-image-52" title="Adam Kędziora" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/3.jpg" alt="Adam Kędziora" width="640" height="430" /></a><br />
Adam Kędziora mówił o swoich doświadczeniach w tworzeniu aplikacji w NetBeans Platform, oraz o uczestnictwie w NetBeans Innovators Grant.</p>
<p><a style="text-decoration:none" title="Krótka przerwa na poczęstunek, soczek, paluszki i ciastka." href="http://picasaweb.google.com/bartlomiej.lopatka/NetbeansDayPozna#"><br />
</a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/4.jpg"><img class="alignnone size-full wp-image-53" title="Przerwa NetBeans Day Poznań" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/4.jpg" alt="Przerwa NetBeans Day Poznań" width="640" height="428" /></a><br />
Krótka przerwa na poczęstunek, soczek z grejpfruta, paluszki i ciastka.</p>
<p><a style="text-decoration:none" title="Autor tego skromnego bloga, w tle logo Poznań JUG" href="http://picasaweb.google.com/bartlomiej.lopatka/NetbeansDayPozna#"><br />
</a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/5.jpg"><img class="alignnone size-full wp-image-54" title="VisualVM i Adam Dudczak" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/5.jpg" alt="VisualVM i Adam Dudczak" width="640" height="428" /></a><br />
Autor tego skromnego bloga, w tle logo Poznań JUG.</p>
<p><a style="text-decoration:none" title="Karol Harezlak przygotowuje się do swojej prezentacji." href="http://picasaweb.google.com/bartlomiej.lopatka/NetbeansDayPozna#"><br />
</a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/6.jpg"><img class="alignnone size-full wp-image-55" title="Karol Harezlak" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/6.jpg" alt="Karol Harezlak" width="640" height="428" /></a><br />
Karol Harezlak przygotowuje się do swojej prezentacji.</p>
<p><a style="text-decoration:none" title="A tu już Karol w akcji." href="http://www.flickr.com/photos/18483686@N00/2983048107/in/set-72157608474452457/"><br />
</a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/7.jpg"><img class="alignnone size-full wp-image-56" title="NetBeans Mobility" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/7.jpg" alt="NetBeans Mobility" width="640" height="423" /></a><br />
A tu już Karol w akcji.</p>
<p><a style="text-decoration:none" title="Geertjan z pamiątkowym kubkiem Poznań JUG." href="http://www.flickr.com/photos/18483686@N00/2983051257/in/set-72157608474452457/"><br />
</a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/8.jpg"><img class="alignnone size-full wp-image-57" title="Geertjan z kubkiem Poznań JUG" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/8.jpg" alt="Geertjan z kubkiem Poznań JUG" width="640" height="423" /></a><br />
Geertjan z pamiątkowym kubkiem Poznań JUG.</p>
<p><a style="text-decoration:none" title="Toni w mówił o przenoszeniu istniejących aplikacji na NetBeans Platform." href="http://www.flickr.com/photos/18483686@N00/2983906320/in/set-72157608474452457/"><br />
</a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/9.jpg"><img class="alignnone size-full wp-image-58" title="Toni Epple" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/9.jpg" alt="Toni Epple" width="423" height="640" /></a><br />
Toni w mówił o przenoszeniu istniejących aplikacji na NetBeans Platform.</p>
<p><a style="text-decoration:none" title="Pan Epple również otrzymał pamiątkowy kubek prelegenta :)." href="http://picasaweb.google.com/bartlomiej.lopatka/NetbeansDayPozna#"> </a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/10.jpg"><img class="alignnone size-full wp-image-60" title="Toni Epple z kubkiem Poznań JUG" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/10.jpg" alt="Toni Epple z kubkiem Poznań JUG" width="640" height="428" /></a><br />
Pan Epple również otrzymał pamiątkowy kubek prelegenta <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/101.jpg"><img class="alignnone size-full wp-image-63" title="Adam Bien" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/101.jpg" alt="Adam Bien" width="640" height="423" /></a><a style="text-decoration:none" title="Adam Bien według większości uczestników najbardziej interesująca prezentacja konferencji." href="http://www.flickr.com/photos/18483686@N00/2983906774/in/set-72157608474452457/"></a><br />
Adam Bien według większości uczestników najbardziej interesująca prezentacja konferencji.</p>
<p></a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/11.jpg"><img class="alignnone size-full wp-image-61" title="Karol Harezlak, Geertjan Wielenga, Łukasz Stachowiak i Toni Epple" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/11.jpg" alt="Karol Harezlak, Geertjan Wielenga, Łukasz Stachowiak i Toni Epple" width="640" height="426" /></a><a style="text-decoration:none" href="http://picasaweb.google.com/bartlomiej.lopatka/NetbeansDayPozna#5262578037882538754"><br />
</a>Od lewej: Karol Harezlak, Geertjan Wielenga, Łukasz Stachowiak, Toni Epple.</p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2008/11/03/poznan-netbeans-day-podsumowanie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poznań Eclipse DemoCamp#2</title>
		<link>http://grejpfrut.org/blog/2008/06/13/poznan-eclipse-democamp08/</link>
		<comments>http://grejpfrut.org/blog/2008/06/13/poznan-eclipse-democamp08/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 08:33:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[democamp]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[poznań-jug]]></category>

		<guid isPermaLink="false">http://grejpfrut.org/blog/2008/06/13/poznan-eclipse-democamp08/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a title="Poznań Eclipse DemoCamp'08" href="http://www.jug.poznan.pl/edc08"></a><a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/edc_m.png"><img class="alignnone size-full wp-image-65" title="Poznań Eclipse DemoCamp#4" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/edc_m.png" alt="Poznań Eclipse DemoCamp#4" width="600" height="848" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2008/06/13/poznan-eclipse-democamp08/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poznań Eclipse DemoCamp 2007</title>
		<link>http://grejpfrut.org/blog/2007/11/09/poznan-eclipse-democamp-2007/</link>
		<comments>http://grejpfrut.org/blog/2007/11/09/poznan-eclipse-democamp-2007/#comments</comments>
		<pubDate>Fri, 09 Nov 2007 11:31:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[democamp]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[poznań-jug]]></category>

		<guid isPermaLink="false">http://grejpfrut.org/blog/?p=34</guid>
		<description><![CDATA[Eclipse Demo Camp to seria odbywających się na całym świecie spotkań promujących platformę Eclipse oraz projekty eclipse&#8217;owe.
Z ramienia Eclipse Foundation spotkania te organizowane są lokalnie przez ludzi związanych z Eclipsem. W Poznaniu impreze organizuje IBM Eclipse Support Center  (działającym na Politechnice Poznańskiej), we współpracy z Grupą Informatyczno Kutluralną oraz z Poznań Java User Group [...]]]></description>
			<content:encoded><![CDATA[<p>Eclipse Demo Camp to seria odbywających się na całym świecie spotkań promujących platformę Eclipse oraz projekty eclipse&#8217;owe.<br />
Z ramienia Eclipse Foundation spotkania te organizowane są lokalnie przez ludzi związanych z Eclipsem. W Poznaniu impreze organizuje <a href="http://eclipser-blog.blogspot.com/">IBM Eclipse Support Center</a>  (działającym na Politechnice Poznańskiej), we współpracy z <a href="http://gik.org.pl">Grupą Informatyczno Kutluralną</a> oraz z <a href="http://www.jug.poznan.pl/">Poznań Java User Group</a> .</p>
<p>Poznań Eclipse Demo Camp odbędzie się 21 i 28 listopada, o godzinie 18:30,  w sali nr 13. Centrum Wykładowego Politechniki Poznańskiej (skrzyżowanie ulic Piotrowo i Berdychowo).</p>
<p>Program spotkań jest następujący:</p>
<p>21. listopada</p>
<p><strong>Eclipse Way</strong> &#8211; czyli w jaki sposób organizowac prace wokół projektu open source<br />
- Krzysztof Daniel (IBM, PP), Bartosz Michalik (IBM, PUT)</p>
<p><strong>g-Eclipse: Access the Power of the Grid</strong> &#8211; przykład projektu eclipse&#8217;owego<br />
- Katarzyna Bylec (PCSS, GIK), Mateusz Pabiś (PCSS)</p>
<p>28. listopada</p>
<p><strong>How big fun OSGI can be?</strong> &#8211; Jacek Pospychała (IBM)</p>
<p><strong>UC Workbench</strong> &#8211; przyklad aplikacji RCP &#8211; Łukasz Olek (IBM, PP)</p>
<p>Po wykładach przewidziana jest dyskusja będzie się też czego się napić i co zjeść <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2007/11/09/poznan-eclipse-democamp-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JUG Poznań : &#8220;Zróbmy to szybko&#8221; czyli Groovy i Grails w akcji</title>
		<link>http://grejpfrut.org/blog/2007/04/12/jug-poznan-zrobmy-to-szybko-czyli-groovy-i-grails-w-akcji/</link>
		<comments>http://grejpfrut.org/blog/2007/04/12/jug-poznan-zrobmy-to-szybko-czyli-groovy-i-grails-w-akcji/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 18:10:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[poznań-jug]]></category>

		<guid isPermaLink="false">http://maneo.webd.pl/blog/?p=33</guid>
		<description><![CDATA[ Ruszyła strona poznańskiego JUG&#8217;a , na tydzień przed drugim spotkaniem dzięki Marcinowi Werli dostępna jest strona oraz grupa dyskusyjna jug-poznan.  
O drugim spotkaniu  możecie poczytać na stronach JUG&#8217;a, odbędzie się ono 23 kwietnia o godzinie 18:30 w sali nr 4 budynku PCSS przy ul. Zwierzynieckiej 20 (Poznań). Temat spotkania to : &#8220;Zróbmy [...]]]></description>
			<content:encoded><![CDATA[<p><b> Ruszyła strona poznańskiego JUG&#8217;a </b>, na tydzień przed drugim spotkaniem dzięki <a href="http://www.marcin.werla.pl">Marcinowi Werli</a> dostępna jest <a href="http://www.jug.werla.pl/">strona</a> oraz grupa dyskusyjna <a href="http://groups.google.com/group/jug-poznan">jug-poznan</a>.  </p>
<p><b>O drugim spotkaniu </b> możecie poczytać na <a href="http://www.jug.werla.pl/?p=16">stronach JUG&#8217;a</a>, odbędzie się ono 23 kwietnia o godzinie 18:30 w sali nr 4 budynku PCSS przy ul. Zwierzynieckiej 20 (Poznań). Temat spotkania to : <b>&#8220;Zróbmy to szybko&#8221; czyli Groovy i Grails w akcji</b> a prowadzący&#8230;  hmmm <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . </p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2007/04/12/jug-poznan-zrobmy-to-szybko-czyli-groovy-i-grails-w-akcji/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MaintainJ &#8211; change without fear</title>
		<link>http://grejpfrut.org/blog/2007/03/28/maintainj-change-without-fear/</link>
		<comments>http://grejpfrut.org/blog/2007/03/28/maintainj-change-without-fear/#comments</comments>
		<pubDate>Wed, 28 Mar 2007 16:29:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[aspectj]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[maintainj]]></category>

		<guid isPermaLink="false">http://maneo.webd.pl/blog/?p=31</guid>
		<description><![CDATA[MaintainJ to bardzo ciekawa wtyczka do Eclipse’a. Nie będe was zanudzał długimi wstępami, hasło reklamowe MaintainJ to “Change without fear…”. Jeżeli szukałeś narzędzia które umożliwi Ci tworzenie diagramów z już istniejącego kodu,to właśnie MJ jest propozycją dla Ciebie. W skrócie działanie jego sprowadza się właśnie do wygenerowania diagramów klas oraz diagramów sekwencji, na podstawie działającego [...]]]></description>
			<content:encoded><![CDATA[<p><strong>MaintainJ to bardzo ciekawa wtyczka do Eclipse’a</strong>. Nie będe was zanudzał długimi wstępami, hasło reklamowe <a href="http://maintainj.com/">MaintainJ</a> to “Change without fear…”. Jeżeli szukałeś narzędzia które umożliwi Ci tworzenie diagramów z już istniejącego kodu,to właśnie MJ jest propozycją dla Ciebie. W skrócie działanie jego sprowadza się właśnie do wygenerowania diagramów klas oraz diagramów sekwencji, na podstawie działającego kodu.<br />
<a href="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/diagram.png"><img class="alignright size-full wp-image-64" title="diagram" src="http://grejpfrut.org/test/wordpress/wp-content/uploads/2009/06/diagram.png" alt="diagram" width="262" height="404" /></a><br />
<strong>Narzędzie bazuje na AspectJ’u</strong>, musisz więc dodać AspectJ do zależności i przekompilować projekt, po uruchomieniu takiego “projektu na podsłuchu” MaintainJ zapamięta sekwencje wywołań i na jej podstawie stworzy odpowiednie diagramy. Diagramy możemy sobie zwijać/rozwijać, nazwy metod to odnośniki do kodu, nic specjalnie wyuzdanego, po prostu w sam raz. Na stronie projektu można znaleźć opis zastosowania dla aplikacji Swing’owych oraz J2EE, jest opis zwykły oraz małe <a href="http://www.debugmode.com/wink/">winkowe</a> wideo.</p>
<p><strong>Przetestowałem MJ na małym programiku konsolowym</strong>, co trzeba zrobić, żeby to zadziałało? Po pierwsze musimy stworzyć nowy <em>MaintainJ Instrumentation Project</em>, przejście wizarda dla tego projektu nie wymaga czarnego pasa <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Wybieramy projekt którego dotyczyć ma śledzenie, potem pakiet, a w przypadku J2SE wybieramy główną klasę projektu i… gotowe (no prawie:)). Mamy stworzony projekcik MJ’owy, łatwo też zauważyć, że do docelowego projektu została dodany “charakter/nature” AspectJ’owy. W przypadku aplikacji swingowych/J2EE przed rozpoczęciem działania programu jesteśmy pytani o to czy zacząć logowanie działania. W przypadku aplikacji konsolowej autorzy zalecają włączenie tego od raz (jest to opisane <a href="http://maintainj.com/userGuide.jsp?param=swing">tutaj</a> pod koniec strony). Gdy odpaliłem program (jako AspectJ/Java Application) pojawiło się małe okienko swingowe, w które po zakończeniu wykonania programu, mogłem (ale nie musiałem) wpisać nazwę pliku w którym log z wykonania był zapisywany. Jest to trochę dziwne, bo przez cały czas działania okno, jest nie klikalne, dopiero na końcu odzyskuje władzę w przyciskach. Efekt końcowy widzicie po boku <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2007/03/28/maintainj-change-without-fear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PJUG &#8211; reaktywacja</title>
		<link>http://grejpfrut.org/blog/2007/03/11/pjug-reaktywacja/</link>
		<comments>http://grejpfrut.org/blog/2007/03/11/pjug-reaktywacja/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 13:06:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[poznań-jug]]></category>

		<guid isPermaLink="false">http://maneo.webd.pl/blog/?p=29</guid>
		<description><![CDATA[Po dość długiej nieobecności wraca poznański JUG  . Najbliższe spotkanie odbędzie się 19.03 (poniedziałek) o godzinie 17:30 na Zwierzynieckiej 20 (budynek PCSS). Marcin Werla opowie o Javie 1.6. Fajnie, że udało się coś ruszyć  . Spotkania będą odbywały się raz w miesiącu, wkrótce ma odżyć strona, więc aktualne informacje będą pojawiały się tam. [...]]]></description>
			<content:encoded><![CDATA[<p>Po dość długiej nieobecności wraca <b>poznański JUG</b> <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Najbliższe spotkanie odbędzie się <b>19.03</b> (poniedziałek) o godzinie <b>17:30</b> na Zwierzynieckiej 20 (budynek PCSS). <a href="http://marcin.werla.pl">Marcin Werla</a> opowie o <b>Javie 1.6</b>. Fajnie, że udało się coś ruszyć <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Spotkania będą odbywały się raz w miesiącu, wkrótce ma odżyć strona, więc aktualne informacje będą pojawiały się tam. Jakby się coś zmieniło, postaram się napisać.</p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2007/03/11/pjug-reaktywacja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JNI</title>
		<link>http://grejpfrut.org/blog/2007/02/11/jni/</link>
		<comments>http://grejpfrut.org/blog/2007/02/11/jni/#comments</comments>
		<pubDate>Sun, 11 Feb 2007 09:17:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[po polsku]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[jni]]></category>

		<guid isPermaLink="false">http://maneo.webd.pl/blog/?p=25</guid>
		<description><![CDATA[Od dłuższego czasu chciałem przyjrzeć się i chociażby koniuszkiem palców dotknąć JNI. Nie sięgnąłem po JNI z własnej woli, jak wiadomo JNI jest środkiem ostatecznym, czymś do czego odwołujemy się gdy brak już nadziei, gdy wszystkie mosty są spalone i próżno wypatrywać choćby najmniejszego “słoika” z remedium na nasze problemy. Właśnie w takich chwilach programiści [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Od dłuższego czasu</strong> chciałem przyjrzeć się i chociażby koniuszkiem palców dotknąć JNI. Nie sięgnąłem po JNI z własnej woli, jak wiadomo JNI jest środkiem ostatecznym, czymś do czego odwołujemy się gdy brak już nadziei, gdy wszystkie mosty są spalone i próżno wypatrywać choćby najmniejszego “słoika” z remedium na nasze problemy. Właśnie w takich chwilach programiści Javy wpisują w wyszukiwarkę te trzy magiczne literki <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  W kilku akapitach opowiem o tym na co warto zwrócić uwagę  i gdzie natknąłem się na problemy, może to komuś pomoże.</p>
<p><strong>Aby stworzyć wiązanie</strong> będziemy musieli przejść przez kilka etapów pośrednich.</p>
<ul>
<li> Będziemy musieli zdefiniować interfejs programistyczny w Javie,</li>
<li> następnie przygotować na odpowiednie pliki nagłówkowe dla implementacji w C/C++ .</li>
<li> w końcu przyjdzie czas na trochę prawdziwej implementacji. Będzie okazja, żeby sprawdzić ile pamiętasz z C/C++ <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</li>
</ul>
<p><strong>Stworzenie API Javowego</strong> to rzecz najprostsza, znajdziecie to w każdym tutorialu np. <a href="http://www.codeproject.com/java/jnibasics1.asp">tutaj</a>. Wydaje mi się, że nawet nie trzeba tego arta dokładnie czytać <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , jeżeli chodzi o Javo’ową stronę najważniejsze są dwie rzeczy:</p>
<ul>
<li> Słówko <code>native</code> które informuję kompilator, że implementację tej metody dostarczy zewnętrzna biblioteka natywna. Przykładowa sygnatura metody:  <code>private native void sayHello();</code>.</li>
<li> Druga sprawa to załadowanie natywnej biblioteki do naszego projektu (już po uruchomieniu), zrealizować to można poprzez następujący statyczny blok kodu:
<pre class="brush: java;">
static {
  System.load(&quot;ścieżka\HelloWorldNative\dist\HelloWorldNative.dll&quot;);
 }
</pre>
<p>Możemy użyć metody <code>load</code> lub <code>loadLibrary</code> różnica między nimi może okazać się istotna. W wywołaniu metody <code>load</code> podajemy dokładną nazwę biblioteki wraz z rozszerzeniem. Wystarczy wyobrazić sobie sytuację gdy chcemy nasz program uruchomić pod linuxem, biblioteka zamiast rozszerzenia .dll ma .so. Z pomocą przychodzi nam druga wspomniana metoda,  <code>loadLibrary</code> przyjmuję na wejściu tylko nazwę biblioteki (bez rozszerzenia), odpowiednia biblioteka jest wyszukiwana przez jvm w lokalizacjach na które wskazuje zawartość property systemowego <code>java.library.path</code>. Standardowo do <code>java.library.path</code> dodawane są (dla Windows) katalogi <code>../Windows</code> oraz <code>../Windows/System32</code> powinien również zostać  uwzględniony biezący katalog w którym jest uruchamiana aplikacja Javowa korzystająca z biblioteki.Więcej o wspomnianych metodach w  dokumentacji klasy <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/System.html">System</a>.</li>
</ul>
<p><strong>Gdy mamy gotowy</strong> kod javowy, możemy wygenerować sobie plik(i) nagłówkowy które posłużą nam do implementacji kodu w C/C++.</p>
<pre>      javah.exe -o wyjsciowy.h -jni -classpath ścieżka-do-klasybuildclasses NaszaKlasa</pre>
<p>Należy przy tym pamiętać, że <code>javah</code> działa na skompilowanej klasie, więc jeżeli zmienisz coś w kodzie, pamiętaj aby najpierw zmienioną klasę skompilować a dopiero potem wywołać powyższe  polecenie po raz drugi.</p>
<p><strong>Finalnym i najbardziej pracochłonnym</strong> krokiem jest stworzenie natywnej biblioteki pośredniczącej. Biblioteka taka musi oferować funkcje określone w wygenerowanym w poprzednim kroku pliku nagłówkowym. Omówię skrótowo jak to zrobiłem w Visual Studio 2005, polecam też:<a href="http://www.netbeans.org/kb/55/beginning-jni-part1.html">Beginning JNI with NetBeans C/C++ Pack 5.5</a>, jeżeli zdecydujecie się użyć opisanego w tutorialu zestawu Netbeans+Cygwin może wam się przydać informacja o tym, że GCC nie obsługuje (win32+cygwin) typu “__int64″. Został użyty w deklaracji typu w plikach nagłówkowych jni, na <a href="http://www.graphics-muse.org/wp/?page_id=147">The  Graphic Muse</a> znajdziecie dokładniejsze wytłumaczenie, wraz z eleganckim rozwiązaniem problemu <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Przejdźmy jednak do rzeczy:</p>
<ol>
<li> Stwórz projekt:File/NewProject/Win32Project/ po wprowadzeniu nazwy przejdziesz do dalszych stron wizarda,  wybierz: <strong>DLL</strong> jako typ aplikacji i zaznacz checkbox “Export symbols”.  Zatwierdź wszystko.</li>
<li> Teraz będzie trochę mieszania <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  w właściwościach projektu, kliknij prawym na głównym węzeł projektu w “Solution Explorer”. Musimy  dodać do naszego projektu katalogi z których Visual Studio ma brać pliki nagłówkowe związane z JNI.  W <code>Configuration Properties/C/C++/General/Additional Includes Directories</code> dodajemy dwa katalogi: <code>JAVAHOME/include</code> oraz <code>JAVAHOME/include/windows</code>. Dodajemy również  katalog  w którym znajduję się wygenerowany przez nas plik nagłówkowy.</li>
<li> Czas w końcu uwzględnić bibliotekę do której wiążemy nasz kod javowy. Ja otrzymałem wraz z plikiem <strong>.dll</strong>,  plik <strong>.lib</strong> oraz odpowiedni plik nagłówkowy <strong>.h</strong>. Plik nagłówkowy dodajemy analogicznie jak w poprzednim kroku, natomiast  .lib należy uwzględnić w własnościach linkera (<code>Linker/Input/Additional Dependencies</code>).</li>
<li> W projekcie istnieje plik nazwa-projektu.cpp, właśnie w nim będzie się działo całe zło <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .
<pre class="brush: java;">
    #include &quot;jni.h&quot;
    #include &quot;windows.h&quot;
    #include &quot;plik-naglowkowy-natywnej-biblioteki.h&quot;
    #include &quot;wygenerowany-przez-nas-plik-naglowkowy.h&quot;
</pre>
<p>Pozostaje “tylko” zaimplementować odpowiednie funkcje w C++.</li>
</ol>
<p><strong>Jeżeli chodzi o implementację</strong> należy zwrócić uwagę na kilka istotnych kwestii:</p>
<ul>
<li> W C/C++ łańcuchy tekstowe (String) nie są kodowane w utf-8 jak w Javie, o tym jak to robić poprawnie można <a href="http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jnistring.html#string">poczytać tu</a>.</li>
<li> Pamiętaj o tym, że każdy kawałek pamięci który zaalokujesz musisz zwolnić. Kod który piszesz będzie uruchomiony przez proces JVM, ale  łapska GC tu nie sięgają.</li>
<li> Odwoływanie się do tablic też nie jest takie proste… tu nic nie jest “taki proste” <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>VS2005 domyślnie buduje wersję <code>debug</code> naszego projektu, nalezy pamiętać, ze tak stworzony dll jest zależny od specyficznych bibliotek dostarczanych tylko z Visual Studio.</p>
<p><strong>Moja wiedza</strong> jak widzicie jest dość powierzchowna, ale jak zwykle mam nadzieje, że komuś to pomoże. W moim przypadku implementacja wiązania ograniczyła się do wywołania odpowiednich funkcji z oryginalnej dll’ki, mimo, że nie było tam wielkiej filozofii to i tak to co napisałem nie zawsze działa :/. Po wiedzę konkretną odsyłam do źródeł:</p>
<ul>
<li> <strong>“The Java  Native Interface &#8211; Programmer’s Guide and Specification”</strong> Sheng Liang</li>
<li> <a href="http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jni.html">JNI Technology</a> &#8211; Sun’owski tutorial, całkiem sporo przykładów.</li>
<li> <a href="http://www.netbeans.org/kb/55/beginning-jni-part1.html">Beginning JNI with Netbeans</a> &#8211; wspomniany w tekście tutorial: JNI w Netbeans.</li>
<li> <a href="http://www.graphics-muse.org/wp/?page_id=147">The  Graphic Muse</a> &#8211; krok po kroku, coś jak tutaj <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li> <a href="http://www.codeproject.com/java/jnibasics1.asp">JNI Basics &#8211; 1</a></li>
<li> <a href="http://www.codeproject.com/cpp/integratingcppjava.asp">Integrating Visual C++,Java and Assembly</a> &#8211; java i asm  (grrr…. <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</li>
<li> <a href="http://www.codetoad.com/java_simpleJNI.asp">JNI tutorial</a></li>
</ul>
<p>Na sam koniec <strong>zostawiłem deser</strong>, jeżeli szukaliście kiedyś narzędzia do rozwiązywania nierozwiązywalnych problemów to <a href="http://www.swig.org/index.html">SWIG</a> jest właśnie dla was.  W skrócie:<br />
<em><br />
<strong>SWIG</strong> is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. SWIG is used with different types of languages including    common scripting languages such as Perl, PHP, Python, Tcl, Ruby and PHP.</em></p>
<p><strong>Poniżej update który zawdzięczamy w całości Przemkowi Lewickiemu (lemekk</strong>):</p>
<p>Ponieważ maneo “trzasnął” kawałek dobrego posta, który w moim przypadku okazał się bardzo pomocny, postanowiłem dorzucić od siebie kilka drobnych uwag, które mogą się komuś przydać przy walce z JNI <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><strong>Wykorzystanie bibliotek typów.</strong><br />
W moim przypadku, musiałem wywołać funkcję znajdującą się w windowsowej bibliotece typów (konkretnie activeds.dll). I tu zaczęły się schody, ponieważ nie było już tak prosto jak w opisie maneo <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Do biblioteki dołączony jest tylko plik .tlb. I to właśnie nim należy się posłużyć, żeby wykorzystać bibliotekę. jest to jednak trochę bardziej skomplikowane niż proste zaincludowanie pliku nagłówkowego. Oto krótka proceudurka:</p>
<ul>
<li> w miejscu, gdzie dołączamy pliki nagłówkowe, zamiast zwykłego #import wklepujemy coś takiego: #include “biblioteka.tlb”</li>
<li>kompilujemy projekt. Kompilator powinien wygenerować kilka nowych plików w tym plik “biblioteka.tlh”.</li>
<li>w miejscu #include’a wpisujemy juz zwykły: #import “biblioteka.tlh” (prawdopodobnie plik “biblioteka.tlh” będzie trzeba przenieść wcześniej z folderu ‘debug’ do folderu projektu). W trakcie kompilacji mogą wystąpić błędy związane z powtórzeniem definicji typów. Trzeba wtedy po prostu usunąć te definicje z pliku “biblioteka.tlh”.</li>
</ul>
<p>Po takich akrobacjach powinniśmy już mieć dostęp do typów i ich funkcji w bibliotece.</p>
<p><strong>Błąd: “Exception in thread “main” java.lang.UnsatisfiedLinkError: ścieżka\NaszaBiblioteka.dll:</strong><br />
Nie można uruchomić aplikacji, ponieważ jej konfiguracja jest niewłaściwa. Problem ten może rozwiązać ponowne zainstalowanie aplikacji”. Błąd ten występował podczas ładowania biblioteki przez Javę, na komputerach, na których nie zainstalowany został Visual. Z rozwiązaniem tego problemu pomógł mi… maneo <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , a piszę o tym dlatego, że nie umieścił tego w swoim poście bo pewnie było to dość oczywiste ale dla amatorów Visuala takich jak ja pewnie już nie <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . W każdym razie chodzi o konfigurację uruchomieniową (czy jak to tam zwał), z którą kompilator Visuala tworzy bibliotekę. Jak napisał maneo, domyślnie jest to konfiguracja “debug”. Czego nie napisał, to to, że należy wybrać konfigurację “release” <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Po takim zabiegu biblioteka powinna już “śmigać” wszędzie <img src='http://grejpfrut.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://grejpfrut.org/blog/2007/02/11/jni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
