<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.9-rare" -->
<rss version="0.92">
<channel>
	<title>Java Planet</title>
	<link>http://blog.swierczyna.eu/javaplanet</link>
	<description>O Javie i jej otoczeniu</description>
	<lastBuildDate>Fri, 14 May 2010 07:31:19 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>Java Singleton</title>
		<description><![CDATA[Wydaje się, że singleton to jeden z prostszych wzorców projektowych. Jednak jego prawidłowa implementacja w języku Java może przysporzyć sporo problemów. Poniżej przedstawiam implementację, która powinna być bezpieczna w środowisku wielowątkowym, a zarazem nadal wydajna.


/**
 * Przykładowa implementacja Singleton w języku Java
 * http://en.wikipedia.org/wiki/Singleton_pattern
 *
 * Dodatkowo wykorzystujemy wzorzce:
 * - http://en.wikipedia.org/wiki/Lazy_initialization
 * - http://en.wikipedia.org/wiki/Double-checked_locking
 [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2010/04/java-singleton/</link>
			</item>
	<item>
		<title>String literals</title>
		<description><![CDATA[Ile obiektów może zostać usuniętych przez garbage collector po wykonaniu ostatniej linii poniższego pseudokodu?

String a = &#34;test&#34;;
String b = new String(&#34;test&#34;);
a = b = null;

Prawidłowa odpowiedź to: jedna (obiekt wskazywany przez referencję b)
Wynika to ze specyficznej obsługi typu obiektów typu String:

obiekty typu string są niemodyfikowalne (Immutable),
literały tworzone taki sposób jak &#8220;a&#8221; umieszczane są na etapie [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2010/04/string-literals/</link>
			</item>
	<item>
		<title>Mapowanie typów w Toplink JPA</title>
		<description><![CDATA[Co zrobić, aby budując system oparty o tradycyjną, relacyjną bazę danych oraz Toplink JPA wykorzystać w pełni siłę języka Java i JPQL? Tak by móc konstruować zapytania typu:

IpAddress ipAddr = new IpAddress(&#34;10.0.0.2&#34;);
TDhcp dhcp = em.createQuery(&#34;SELECT d from TDhcp d WHERE d.ipAddress=:ip&#34;)
          .setParameter(&#34;ip&#34;, ipAddr)
    [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2010/03/mapowanie-typow-jpa-toplink/</link>
			</item>
	<item>
		<title>Maven dependency scopes</title>
		<description><![CDATA[Maven provides four dependency scopes:

compile: A compile-scope dependency is available in all phases. This is the default value.
provided: A provided dependency is used to compile the application, but will not be deployed. You would use this scope when you expect                [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2010/03/maven-dependency-scopes/</link>
			</item>
	<item>
		<title>Toplink wydajność &#8211; encje readonly</title>
		<description><![CDATA[Jak wiadomo korzystanie z JPA, niesie z sobą bardzo wiele udogodnień, np.: umożliwia w miarę bezbolesne połączenie świata relacyjnego (baza danych) z światem obiektowości (java). Niestety jak każde rozwiązanie tego pociąga za sobą narzut wydajnościowy, szczególnie widoczny w czasie masowych operacji.
Jeśli jednak nasze operacje są typu &#8220;readonly&#8221;, czyli używamy JPA tylko do pozyskiwania encji z [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2009/12/toplink-readonly-wydajnosc-performance/</link>
			</item>
	<item>
		<title>Maven automatyzacja tworzenia kolejnych wydań oprogramowania</title>
		<description><![CDATA[Tworzenie nowych wydań oprogramowania bardzo często idzie w parze z tworzeniem nowych tagów w svn. Aby zautomatyzować ten proces polecam użyć pluginu mavena: maven-release-plugin
Utwórz nowy projekt maven.
$ mvn archetype:generate -DgroupId=com.example -DartifactId=moduleA -Dversion=0.0.1-SNAPSHOT
Umieszczamy projekt w svn w miejscu w tzw &#8220;trunku&#8221;. Dla naszego przykładu będzie to:
https://example.com/workspace/m2versioning/moduleA/trunk
Przygotuj miejsce na tagi w svn:
$ svn mkdir https://example.com/workspace/m2versioning/moduleA/tags
Dodaj odpowiednie wpisy [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2009/11/maven-automatyzacja-tagowanie-release-svn/</link>
			</item>
	<item>
		<title>Maven różności</title>
		<description><![CDATA[Kilka przydatnych komend mavena. Na razie nie ma ich tutaj zbyt wiele, ale postaram się uzupełniać listę w miarę natykania się na nowe, ciekawe konstrukcje.
 Ręczna instalacja pliku w lokalnym repozytorium Mavena
$ mvn install:install-file \
-DgroupId=eu.swierczyna -DartifactId=swierczyna-core -Dversion=0.5.7 \
-Dpackaging=jar \
-Dfile=/home/seba/NetBeansProjects/ProvisioningCoreLibrary/dist/MyLibrary.jar
Utworzenie nowego projektu:
$ mvn archetype:generate -DgroupId=eu.swierczyna -DartifactId=moduleA -Dversion=0.0.1-SNAPSHOT
Wygenerowanie klienta Webservices JAX-RPC przy użyciu maven2 i axis1.4
http://java.dzone.com/tips/jax-rpc-client-maven2
Uruchomienie programu [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2009/11/maven-roznosci-howto/</link>
			</item>
	<item>
		<title>Wdrażanie aplikacji na zdalnym GlassFish przy użyciu Maven2</title>
		<description><![CDATA[Aby przeprowadzić deployment aplikacji na zdalnym serwerze GlassFish przy użyciu Mavena, polecam użyć pluginu: asadmin-maven-plugin.
Plugin ten umożliwia wykonywanie, także innych zadań które zazwyczaj wykonywane są z asadmin.

Aby skorzystać z dobrodziejstw pluginu należy dodać odpowiednie wpisy do pliku pom.xml.
Plugin repository:

&#60;pluginRepositories&#62;
   &#60;pluginRepository&#62;
      &#60;id&#62;asadmin-maven-plugin-releases-repository&#60;/id&#62;
      &#60;name&#62;asadmin-maven-plugin-releases-repository&#60;/name&#62;
  [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2009/11/zdalny-deploy-glassfish-maven/</link>
			</item>
	<item>
		<title>Rekursywna zmiana uprawnień w Linux</title>
		<description><![CDATA[Poniżej przykład umożliwiający zmianę uprawnień do wszystkich plików w bieżącym katalogu (oraz podkatalogach), tak aby mógł je czytać dowolny użytkownik. Nadajemy prawa tylko do odczytu.
Aby wykonać do poprawnie musimy przeglądnąć wszystkie podkatalogi rozróżniają pliki i katalogi (katalogi otrzymują 755, a pliki 644). Z pomocą przychodzi polecenie &#8220;find&#8221;.

# Nadaj wszystkim podkatalogom prawo 755
find . -type d [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2009/10/rekursywna-zmiana-uprawnien-linux-katalog-plik/</link>
			</item>
	<item>
		<title>Jak rodzi się obiekt</title>
		<description><![CDATA[Tytuł trochę przewrotny, ale będzie o tworzeniu nowego obiektu, a dokładniej o tym w jakiej kolejności inicjowane są poszczególne jego elementy


class SuperClass {

	public SuperClass(){
		System.out.println(&#34;Super class Constructor&#34;);
	}

}

public class InitBlocks extends SuperClass{

	private int properties = propInit();

	private int propInit() {
		System.out.println(&#34;properties init&#34;);
		return 1;
	}

	public InitBlocks() {
		System.out.println(&#34;constructor&#34;);
	}

	static {
		System.out.println(&#34;static init block&#34;);
	}

	{
		System.out.println(&#34;instance init block&#34;);
	}

	public static void main(String[] args) {
		System.out.println(&#34;start main&#34;);
		InitBlocks test = new [...]]]></description>
		<link>http://blog.swierczyna.eu/javaplanet/2009/10/jak-rodzi-sie-obiekt-kolejnosc/</link>
			</item>
</channel>
</rss>
