<?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>Alexey Yudichev &#187; Java</title>
	<atom:link href="http://blog.yudichev.net/archives/category/technology/software/software-development/java/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.yudichev.net</link>
	<description>Keeping track of ourselves</description>
	<lastBuildDate>Mon, 26 Jul 2010 22:04:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Sun Java to be 100% open source</title>
		<link>http://blog.yudichev.net/archives/133</link>
		<comments>http://blog.yudichev.net/archives/133#comments</comments>
		<pubDate>Tue, 14 Nov 2006 18:47:31 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/archives/133</guid>
		<description><![CDATA[Finally, Sun relicenses Java under GPL. AFAIK JVM native sources were open (but not under OS certified licence) for quite a while already, but now Sun implementation of JSE is going to be true open source. Great news &#8211; long awaited!]]></description>
			<content:encoded><![CDATA[<p>Finally, <a href="http://www.theserverside.com/news/thread.tss?thread_id=43046">Sun relicenses Java under GPL</a>. AFAIK JVM native sources were open (but not under OS certified licence) for quite a while already, but now Sun implementation of JSE is going to be true open source. Great news &#8211; long awaited!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/133/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Sun Certified Business Component Developer</title>
		<link>http://blog.yudichev.net/archives/97</link>
		<comments>http://blog.yudichev.net/archives/97#comments</comments>
		<pubDate>Thu, 22 Jun 2006 20:14:57 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Occurrences]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/archives/97</guid>
		<description><![CDATA[I&#8217;ve passed the &#8220;Sun Certified Business Component Developer for J2EE 1.3&#8243; today. With amazingly high score of 95% (67 of 70 questions answered correctly). I&#8217;m saying amazingly because I did not really expect that. My knowledge of EJB 2.0 faded since I last worked with it (back in 2004). What I did to prepare is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve passed the &#8220;Sun Certified Business Component Developer for J2EE 1.3&#8243; today. With amazingly high score of 95% (67 of 70 questions answered correctly). I&#8217;m saying amazingly because I did not really expect that. My knowledge of EJB 2.0 faded since I last worked with it (back in 2004). What I did to prepare is I used questions downloaded from <a href="http://www.examcollection.com/">ExamCollection.com</a> &#8211; 88 questions in total. The quality of answers was rather poor, I found at least 10 incorrect answers, but nevertheless they helped me to identify my weak areas. Then I just briefly scanned these areas in the EJB spec and the preparation was over. Took me four sessions by 1-2 hours each to prepare. </p>
<p>My weakest areas appeared to be:</p>
<ul>
<li>Session bean lifecycle &#8211; 66% corect answers, 2 questions answered incorrectly</li>
<li>Transactions &#8211; 87% correct answers, 1 question answered incorrectly</li>
</ul>
<p>All other areas (about 10 more) are topped at 100%.</p>
<p>This time I chose prometric certified test center in Luton (<a href="http://blog.yudichev.net/archives/17">last time</a> it was Wembley). I liked it better: bigger classroom (lit better too) and no problems with parking which is also much cheaper, £1.50 instead of £8 in Wembley.</p>
<p>So&#8230; here I am, another certificate at hand, congratulations are gladly accepted!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/97/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Misspellings</title>
		<link>http://blog.yudichev.net/archives/96</link>
		<comments>http://blog.yudichev.net/archives/96#comments</comments>
		<pubDate>Sat, 17 Jun 2006 22:48:55 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/archives/96</guid>
		<description><![CDATA[Real life mis-spellings (saw them during last two days): MDB = Massage Driven Bean (sorry this one is Java specific) &#8230; CMMI curses are available &#8230; (from a corporate email)]]></description>
			<content:encoded><![CDATA[<p>Real life mis-spellings (saw them during last two days):</p>
<ul>
<li><strong>MDB = Massage Driven Bean</strong> (sorry this one is Java specific)</li>
<li><strong> &#8230; CMMI curses are available &#8230; </strong> (from a corporate email)</li>
<ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/96/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java community responds</title>
		<link>http://blog.yudichev.net/archives/90</link>
		<comments>http://blog.yudichev.net/archives/90#comments</comments>
		<pubDate>Tue, 30 May 2006 21:33:43 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Casual]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/archives/90</guid>
		<description><![CDATA[Java community oficially responded to my post Three years apart with their triple salute: &#8220;In memory of Alexey&#8221; Interestingly, some of them were drinking russian Baltika! Poisoned by Russian beer]]></description>
			<content:encoded><![CDATA[<p>Java community oficially responded to my post <a href="http://blog.yudichev.net/archives/86">Three years apart</a> with their triple salute:</p>
<div style="text-align:center">
<a href="http://www.flickr.com/photos/10523589@N00/156594606/" title="Photo Sharing"><img src="http://static.flickr.com/68/156594606_287c23ed45.jpg" width="500" height="374" alt="Java Scout Honour" /></a><br />
&#8220;In memory of Alexey&#8221;
</div>
<p>Interestingly, some of them were drinking russian Baltika! </p>
<div style="text-align:center">
<a href="http://www.flickr.com/photos/10523589@N00/156699325/" title="Photo Sharing"><img src="http://static.flickr.com/68/156699325_ab76c4c52f.jpg" width="500" height="374" alt="Ex-cameloter drinking russian Baltika!" /></a><br />
Poisoned by Russian beer
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/90/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Look, instance initialiser!</title>
		<link>http://blog.yudichev.net/archives/85</link>
		<comments>http://blog.yudichev.net/archives/85#comments</comments>
		<pubDate>Mon, 08 May 2006 15:39:29 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/archives/85</guid>
		<description><![CDATA[Another thing that I would have learnt had a read a Java Language Specification: There are instance inistialisers in Java Discovered May 2006 In java, a class can have an instance initialiser, which is executed before constructor is called. I knew about static initialisers that are called when the class is loaded, but never heard [...]]]></description>
			<content:encoded><![CDATA[<p>Another thing that I would have learnt had a read a Java Language Specification:<br />
<strong>There are instance inistialisers in Java <img src='http://blog.yudichev.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong><br />
<em>Discovered May 2006</em><br />
In java, a class can have an <strong>instance initialiser</strong>, which is executed before constructor is called. I knew about static initialisers that are called when the class is loaded, but never heard about instance initialisers. A colleague taught me that <img src='http://blog.yudichev.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<blockquote><pre><code>class Foo {
    private int i;
    {i = 5;} //instance initialiser
}</code></pre>
</blockquote>
<p>It is sometimes useful in anonymous classes as they cannot have a constructor.<br />
Added to <a href="http://blog.yudichev.net/things-that-i-still-discover-about-java/">Things that I still discover about Java</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/85/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On usability of Java 5 language features</title>
		<link>http://blog.yudichev.net/archives/68</link>
		<comments>http://blog.yudichev.net/archives/68#comments</comments>
		<pubDate>Sun, 12 Mar 2006 01:44:41 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/archives/68</guid>
		<description><![CDATA[I only had a chance to develop using JDK5 for a short period of 1 month. And it was 1.5 years ago. Recently I needed a quick solution for basically a script comparing two Excel spreadsheets for matching records and recording results into same spreadsheets. Since I programmed in Java really fast and I felt [...]]]></description>
			<content:encoded><![CDATA[<p>I only had a chance to develop using JDK5 for a short period of 1 month. And it was 1.5 years ago. Recently I needed a quick solution for basically a script comparing two Excel spreadsheets for matching records and recording results into same spreadsheets. Since I programmed in Java really fast and I felt reluctant indeed to get myself buried into MS VB for Excel documentation, and also taking into account my good experience with <a href='http://jakarta.apache.org/poi/'>Jakarta POI</a> &#8211; a Java API To Access Microsoft Format Files, I decided in favour of Java. (Well those were mostly excuses as you might have guessed anyway <img src='http://blog.yudichev.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). </p>
<p><span id="more-68"></span></p>
<p>I honestly had no particular intention to use JDK5 features. But hey, they were just popping up in my mind as I programmed! I somehow managed to make use of:</p>
<ul>
<li><strong>Enums</strong> &#8211; well that was inevitable
<pre style="overflow: auto; border: 1px solid; padding: 1px;"><code>public enum SVNAction implements VCSAction {
    SVN_ADDED,
    SVN_UPDATED,
    SVN_CONFLICT,
    SVN_SKIPPED_MISSING;

    public static SVNAction forString(String svnActionStr) {
        if ("A".equals(svnActionStr)) {
            return SVN_ADDED;
        }
        if ("U".equals(svnActionStr)) {
            return SVN_UPDATED;
        }
        if ("C".equals(svnActionStr)) {
            return SVN_CONFLICT;
        }
        if ("Skipped missing target".equals(svnActionStr)) {
            return SVN_SKIPPED_MISSING;
        }
        throw new IllegalArgumentException(svnActionStr + " is an unknown SVN action");
    }

    public VCS getVCS() {
        return SVN.instance();
    }
}
</code></pre>
<p>(Hey .NET guys, can you do this to C# enums yet?)
</li>
<li><strong>Static imports</strong> to import values of those enums &#8211; again natural, just saved me from extra code clutter</li>
<li><strong>Generics</strong>. When I say generics I mean not only use generic collections, but actually writing my own generic classes:
<pre style="overflow: auto; border: 1px solid; padding: 1px;"><code>...
public Collection<MergeReportRecord<ActionType>> unprocessedRecords() {
    return Collections.unmodifiableCollection(unProcessed.values());
}
...
// and then:
for (MergeReportRecord<SVNAction> svnRecord : svnMergeReport.unprocessedRecords()) {
    SVNAction svnAction = svnRecord.getAction();
    ...
}</code></pre>
</li>
<li><strong>foreach loop</strong> to iterate through generic collections &#8211; again a direct consequence of using them</li>
<li><strong>varargs</strong> &#8211; was just following the design of new <code>PrintStream.printf()</code>:
<pre style="overflow: auto; border: 1px solid; padding: 1px;"><code>private void logWarn(String msg, Object... args) {
    System.err.printf("WARNING: " + msg + "\n", args);
}
</code></pre>
</li>
</ul>
<p>I was indeed surprised about how it all came to my mind so naturally. Writing own generic classes was confusing a bit though. For example, you can create a generic interface and then couple of non-generic classes implementing it. Perfectly allowed, but will produce unchecked warnings if these classes are used where interface type is expected.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/68/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>&amp; operator is applicable to booleans</title>
		<link>http://blog.yudichev.net/archives/59</link>
		<comments>http://blog.yudichev.net/archives/59#comments</comments>
		<pubDate>Thu, 09 Feb 2006 22:14:15 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/archives/59</guid>
		<description><![CDATA[While I thought binary operator &#038; in Java was designed to work with integer types, it appeared to be perfectly applicable to boolean operands and worked exactly the same way as &#038;&#038;: //always true: assertTrue(boolean1 &#038; boolean2 == boolean1 &#038;&#038; boolean2); See more things that I still discover about Java.]]></description>
			<content:encoded><![CDATA[<p>While I thought binary operator <code>&#038;</code> in Java was designed to work with integer types, it appeared to be perfectly applicable to boolean operands and worked exactly the same way as <code>&#038;&#038;</code>:</p>
<blockquote><pre><code>//always true:
assertTrue(boolean1 &#038; boolean2 == boolean1 &#038;&#038; boolean2); </code></pre>
</blockquote>
<p>See more <a href='http://blog.yudichev.net/things-that-i-still-discover-about-java/'>things that I still discover about Java</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/59/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Quake 2 written in java</title>
		<link>http://blog.yudichev.net/archives/36</link>
		<comments>http://blog.yudichev.net/archives/36#comments</comments>
		<pubDate>Tue, 29 Nov 2005 20:24:49 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/archives/36</guid>
		<description><![CDATA[Guys from Bytonic have created a java port of open-sourced quake2 engine. It is using standard Java3D API and two different implementations of Java3D based on OpenGL. So apart from OpenGL the engine is all pure java. Although they have a benchmark page, I was interested to test it myself. So I downloaded jake2 (this [...]]]></description>
			<content:encoded><![CDATA[<p>Guys from Bytonic have created a <a href='http://www.bytonic.de/html/jake2.html'>java port of open-sourced quake2 engine</a>. It is using standard Java3D API and two different implementations of Java3D based on OpenGL. So apart from OpenGL the engine is all pure java. Although they have a <a href='http://www.bytonic.de/html/benchmarks.html'>benchmark page</a>, I was interested to test it myself. So I downloaded jake2 (this is how the port is called) and original q2 demo version. I used q2demo1.dm2 to measure fps. I left all the settings at their default values except the resolution which I set to 1024&#215;768, full screen. jake2 showed 212 fps, original C version resulted in 191 fps. The only thing that was unfair is that jake2 was based on quake2 3.21 sources and original demo I used was version 3.14. </p>
<p>I had a glance at the java sources too. Naturally, they don&#8217;t look like proper java sources but more like not very object oriented C sources. At the end of the day, this is a port from conceptually different language, not an original application. </p>
<p>The conclusion is whoever challenges the performance of modern JVMs is welcome to give jake2 a try and eat dirt <img src='http://blog.yudichev.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/36/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>void.class</title>
		<link>http://blog.yudichev.net/archives/34</link>
		<comments>http://blog.yudichev.net/archives/34#comments</comments>
		<pubDate>Tue, 22 Nov 2005 15:13:29 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/?p=34</guid>
		<description><![CDATA[Ha, another addition to my Things that I still discover about Java registry: Expression void.class is legitimate and results in a java.lang.Class instance representing void type. I did know that each primitive type had its own Class referenced as byte.class or char.class, but had no clue that you could do same thing with void.]]></description>
			<content:encoded><![CDATA[<p>Ha, another addition to my <a href='http://blog.yudichev.net/things-that-i-still-discover-about-java/'>Things that I still discover about Java</a> registry: Expression <code>void.class</code> is legitimate and results in a <code>java.lang.Class</code> instance representing <code>void</code> type. I did know that each primitive type had its own Class referenced as <code>byte.class</code> or <code>char.class</code>, but had no clue that you could do same thing with <code>void</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/34/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IntelliJ IDEA 6 will have Websphere support!</title>
		<link>http://blog.yudichev.net/archives/32</link>
		<comments>http://blog.yudichev.net/archives/32#comments</comments>
		<pubDate>Mon, 21 Nov 2005 20:23:12 +0000</pubDate>
		<dc:creator>Alexey</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.yudichev.net/?p=32</guid>
		<description><![CDATA[Yow! According to &#8220;IntelliJ 6.0 (Demetra) Roadmap released&#8221; TSS article, next major version of my favourite and truly enjoyable Java IDE, IntelliJ IDEA will have support for IBM Websphere appserver. That would be a pleasant addition for me. Currently, I use a somewhat hacker&#8217;s approach to start/stop Webshpere instances on my computer. I intercepted the [...]]]></description>
			<content:encoded><![CDATA[<p>Yow! According to <a href='http://www.theserverside.com/news/thread.tss?thread_id=37681'>&#8220;IntelliJ 6.0 (Demetra) Roadmap released&#8221; TSS article</a>, next major version of my favourite and truly enjoyable Java IDE, IntelliJ IDEA will have support for IBM Websphere appserver. That would be a pleasant addition for me. Currently, I use a somewhat hacker&#8217;s approach to start/stop Webshpere instances on my computer. I  intercepted the command line that WSAD (IBM&#8217;s IDE) is using to start integrated Websphere, and now use it to start Websphere from ant script. The major drawback is that sometimes server state needs synchronisation with the config files, which only can be done from WSAD. Also, re-generating deployment sources requires WSAD too. Although I am not sure these will be addressed in IDEA 6.0, it is a good step forward for such a great IDE.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yudichev.net/archives/32/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
