<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7086223</id><updated>2011-04-22T01:39:39.125+01:00</updated><title type='text'>Java Tales from a Trading Desk</title><subtitle type='html'>Noise from an Investment Bank</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7086223.post-113525942493186499</id><published>2005-12-22T13:49:00.000Z</published><updated>2005-12-22T13:50:24.943Z</updated><title type='text'>I've moved to WordPress</title><content type='html'>I'm now blogging &lt;a href="http://mdavey.wordpress.com"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-113525942493186499?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/113525942493186499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=113525942493186499' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/113525942493186499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/113525942493186499'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/12/ive-moved-to-wordpress.html' title='I&apos;ve moved to WordPress'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112486952414390194</id><published>2005-08-24T08:43:00.000+01:00</published><updated>2005-08-24T08:45:24.453+01:00</updated><title type='text'>FIT everywhere</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.cs.auckland.ac.nz/%7Erick/FitLibrary/"&gt;FitLibrary&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://fitrunner.sourceforge.net/"&gt;FitRunner&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112486952414390194?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112486952414390194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112486952414390194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112486952414390194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112486952414390194'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/08/fit-everywhere.html' title='FIT everywhere'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112395885491180478</id><published>2005-08-13T19:45:00.000+01:00</published><updated>2005-08-13T19:47:34.916+01:00</updated><title type='text'>XPlanner - Could not execute query</title><content type='html'>Have seen this a few times now, anyone got any ideas?&lt;br /&gt;&lt;br /&gt;javax.servlet.jsp.JspTagException: net.sf.hibernate.JDBCException: Could not execute query at com.technoetic.xplanner.tags.db.UseBeansTag.doEndTag(UseBeansTag.java:133) at org.apache.jsp.index_jsp._jspService(index_jsp.java:83)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112395885491180478?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112395885491180478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112395885491180478' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112395885491180478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112395885491180478'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/08/xplanner-could-not-execute-query.html' title='XPlanner - Could not execute query'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112365693032563809</id><published>2005-08-10T07:48:00.000+01:00</published><updated>2005-08-10T15:20:46.510+01:00</updated><title type='text'>XPlanner Install Problems</title><content type='html'>I got this stack trace after starting &lt;a href="http://www.xplanner.org/"&gt;XPlanner&lt;/a&gt; on Tomcat 4.1.31 with MySQL:&lt;br /&gt;&lt;br /&gt;javax.servlet.ServletException: java.lang.NullPointerException&lt;br /&gt;at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:495)&lt;br /&gt;at org.apache.jsp.index_jsp._jspService(index_jsp.java:170)&lt;br /&gt;at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:92)&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://docs.codehaus.org/display/XPR/Documentation+update?focusedCommentId=28143"&gt;wiki&lt;/a&gt; suggests adding the database settings to &lt;tt&gt;resource/xplanner-custom.properties.&lt;/tt&gt; But that didn't seem to help either :( I found a few other ideas to try &lt;a href="http://www.tomlauren.com/weblog/archives/000008.html"&gt;here&lt;/a&gt; and &lt;a href="http://svitjod.rymdweb.com/blogs/index.php?blog=1"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Nice review of Synergy &lt;a href="http://www.bryantchoung.com/archives/2004/09/review_synergy.shtml"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Agile &lt;a href="http://www.fairlygoodpractices.com/"&gt;good practices&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112365693032563809?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112365693032563809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112365693032563809' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112365693032563809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112365693032563809'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/08/xplanner-install-problems.html' title='XPlanner Install Problems'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112262477118555738</id><published>2005-07-29T09:11:00.000+01:00</published><updated>2005-07-29T09:38:35.550+01:00</updated><title type='text'>When faster is wrong, and slow is right</title><content type='html'>&lt;a href="http://blogs.sun.com/roller/comments/jag/Weblog/transcendental_meditation#comments"&gt;Gosling&lt;/a&gt; has an interesting post on the Java sin() and cos() methods - &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4857011"&gt;Sun's bug detail&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112262477118555738?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112262477118555738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112262477118555738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112262477118555738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112262477118555738'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/when-faster-is-wrong-and-slow-is-right.html' title='When faster is wrong, and slow is right'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112237845485508279</id><published>2005-07-26T12:46:00.000+01:00</published><updated>2005-07-26T12:55:05.076+01:00</updated><title type='text'>Simian, and some wacky results</title><content type='html'>What do you do when you see this from &lt;a href="http://www.redhillconsulting.com.au/products/simian/"&gt;Simian&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;&amp;#60;summary duplicatefilecount="2286" duplicatelinecount="229743" duplicateblockcount="16659" totalfilecount="3684" totalrawlinecount="1472768" totalsignificantlinecount="815444" processingtime="33657"&amp;#62;&lt;br /&gt;&lt;br /&gt;I suspect the answer is ...run&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112237845485508279?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112237845485508279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112237845485508279' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112237845485508279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112237845485508279'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/simian-and-some-wacky-results.html' title='Simian, and some wacky results'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112227674970446711</id><published>2005-07-25T08:32:00.000+01:00</published><updated>2005-07-25T08:32:29.710+01:00</updated><title type='text'>Agile 2005 Conference</title><content type='html'>A &lt;a href="http://netflings.blogspot.com/"&gt;colleague&lt;/a&gt; is blogging from the &lt;a href="http://www.agile2005.org/"&gt;Agile 2005 conference&lt;/a&gt; this week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112227674970446711?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112227674970446711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112227674970446711' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112227674970446711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112227674970446711'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/agile-2005-conference.html' title='Agile 2005 Conference'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112197836902204967</id><published>2005-07-21T21:26:00.000+01:00</published><updated>2005-07-21T21:39:29.026+01:00</updated><title type='text'>TDD with Velocity/xmlunit</title><content type='html'>A component I am working as part of a pricing system needed to generate HTML reports. A fellow consultant - from a rival consultancy :) - suggested I use &lt;a href="http://jakarta.apache.org/velocity/"&gt;Velocity&lt;/a&gt;. Velocity turned out to be an ideal fit for the problem I was solving. However, before I could write the code I needed to write the test - &lt;a href="http://www.testdriven.com/modules/news/"&gt;TDD&lt;/a&gt;. &lt;a href="http://xmlunit.sourceforge.net/"&gt;xmlunit&lt;/a&gt; was an ideal fit for the test cases - specifically the &lt;a href="http://xmlunit.sourceforge.net/doc/org/custommonkey/xmlunit/XMLTestCase.html#assertXpathEvaluatesTo(java.lang.String,"&gt;assertXpathEvaluatesTo&lt;/a&gt; method.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xs4all.nl/~nrm/EvoPrinc/"&gt;Evo&lt;/a&gt; - an old (1976) agile development methodology with 5 day iterations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112197836902204967?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112197836902204967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112197836902204967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112197836902204967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112197836902204967'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/tdd-with-velocityxmlunit.html' title='TDD with Velocity/xmlunit'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112175810807011085</id><published>2005-07-19T08:15:00.000+01:00</published><updated>2005-07-19T08:28:28.076+01:00</updated><title type='text'>Know your software development tools</title><content type='html'>As Kevin Johnson states in &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201616408/ref=pd_sxp_f/102-5029578-3092164?v=glance&amp;s=books"&gt;Extreme Programming Applied&lt;/a&gt; (page 174)  "pairs will be stronger if they both discover the most efficient way to use their tools". He also notes that shortcut keys "minimize the friction caused by back seat drivers".  Having migrated to &lt;a href="http://www.jetbrains.com/"&gt;IntelliJ&lt;/a&gt; a few weeks back (from Eclipse) I have to agree with Kevin's shortcut point - I can't learn the &lt;a href="http://www.jetbrains.com/idea/docs/4.5_ReferenceCard.pdf"&gt;Idea's keymap&lt;/a&gt; fast enough.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112175810807011085?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112175810807011085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112175810807011085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112175810807011085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112175810807011085'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/know-your-software-development-tools.html' title='Know your software development tools'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112116715136049290</id><published>2005-07-12T12:18:00.000+01:00</published><updated>2005-07-12T12:19:11.363+01:00</updated><title type='text'>Is this the start of Microsoft moving towards Open Source?</title><content type='html'>&lt;a href="http://news.zdnet.co.uk/0,39020330,39208632,00.htm"&gt;OSDL boss hints at Microsoft collaboration&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112116715136049290?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112116715136049290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112116715136049290' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112116715136049290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112116715136049290'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/is-this-start-of-microsoft-moving.html' title='Is this the start of Microsoft moving towards Open Source?'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112115207203301550</id><published>2005-07-12T07:58:00.000+01:00</published><updated>2005-07-12T08:07:52.033+01:00</updated><title type='text'>GridCache</title><content type='html'>&lt;a href="http://www.datasynapse.com/"&gt;DataSynapse&lt;/a&gt; GridServer has the concept of a &lt;a href="http://www.datasynapse.com/pdf/DataSynapse_Grid_WebServices_SOA_0405.pdf"&gt;GridCache&lt;/a&gt;.  Only problem with GridCache is that it has no locking, no transactions, and is not a distributed data repository.  Maybe DataSynapse should consider integrating &lt;a href="http://www.dancres.org/bjspj/docs/docs/blitz.html"&gt;Blitz&lt;/a&gt; into their product.  GigaSpaces on the other hand has a &lt;a href="http://www.gigaspaces.com/product_3.html"&gt;distributed cache&lt;/a&gt;, but doesn't (I could be wrong) offer all the grid services that DataSynapse offers.  Maybe DataSynapse and Gigaspaces should merge :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112115207203301550?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112115207203301550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112115207203301550' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112115207203301550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112115207203301550'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/gridcache.html' title='GridCache'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112115146862863720</id><published>2005-07-12T07:41:00.000+01:00</published><updated>2005-07-12T07:57:48.633+01:00</updated><title type='text'>Unit Testing Database Access code</title><content type='html'>&lt;a href="http://hsqldb.org/"&gt;HSQLDB&lt;/a&gt; appears to me to be a clean way of testing database access code. Just use the in-memory feature (jdbc:hsqldb:mem:), and implement your &lt;a href="http://junit.sourceforge.net/javadoc/junit/framework/TestCase.html#setUp%28%29"&gt;setUp&lt;/a&gt; method to create the appropriate tables, and &lt;a href="http://junit.sourceforge.net/javadoc/junit/framework/TestCase.html#setUp%28%29"&gt;tearDown&lt;/a&gt; to drop the tables.&lt;br /&gt;&lt;br /&gt;Interesting to see that the Deutsche is listed as one of the &lt;a href="http://www.openadaptor.org/adopters.html"&gt;openadaptor&lt;/a&gt; adopters - DrKW originally &lt;a href="http://www.eweek.com/article2/0,1759,1773936,00.asp"&gt;build&lt;/a&gt; openadaptor.  Suprised no US investment banks are listed.&lt;br /&gt;&lt;br /&gt;Came across &lt;a href="http://www.nagios.org/"&gt;Nagios&lt;/a&gt; today.  Nagios is a monitoring program for host, service and networks.  Nagios is fully pluggable, with the &lt;a href="http://www.nagiosexchange.org"&gt;Nagios Exchange&lt;/a&gt; offering a selection of plugins. &lt;a href="http://www.nagiosexchange.org/Communication.41.0.html?&amp;amp;tx_netnagext_pi1%5Bp_view%5D=134"&gt;NSJS&lt;/a&gt; looks particularly interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112115146862863720?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112115146862863720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112115146862863720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112115146862863720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112115146862863720'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/unit-testing-database-access-code.html' title='Unit Testing Database Access code'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112089538272605117</id><published>2005-07-09T07:35:00.000+01:00</published><updated>2005-07-09T08:49:43.053+01:00</updated><title type='text'>JBehave</title><content type='html'>A colleague mentioned &lt;a href="http://dist.codehaus.org/jbehave/1.0.0-alpha2/website/"&gt;JBehave&lt;/a&gt; yesterday.  Not knowing much about the project, I googled and came across &lt;a href="http://www.magpiebrain.com/archives/2004/07/27/osnight"&gt;Magpiebrain's&lt;/a&gt; blog.  &lt;a href="http://timv.truemesh.com/archives/000473.html"&gt;The Velvick Underground&lt;/a&gt; reflects on the BA's view of JBehave, as does the &lt;a href="http://abc.truemesh.com/archives/000478.html"&gt;Agile Business Coach&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.theguyzrock.co.uk/damian/archives/2005/02/my_current_day.html#more"&gt;Damian&lt;/a&gt; has a good overview of Grid Computing, particularly relevant to the project I'm now on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112089538272605117?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112089538272605117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112089538272605117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112089538272605117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112089538272605117'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/jbehave.html' title='JBehave'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-112080829463840781</id><published>2005-07-08T08:21:00.000+01:00</published><updated>2005-07-08T08:43:17.513+01:00</updated><title type='text'>Another day, another client</title><content type='html'>Having just finished working on a large Foreign Exchange (FX) project at a US client of &lt;a href="http://www.finetix.com/"&gt;Finetix&lt;/a&gt;, I'm now at a European bank (for Finetix) working on Grid Computing. The grid project is particular interesting for two of reasons:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;DataSynapse is the application we are working on&lt;/li&gt;   &lt;li&gt;Agile principles&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; About six years ago I wrote a grid computing framework and application. Unfortunately, neither saw the light of day. However the project did give me a good grounding in grid applications, so the new project I'm working on is very much a flash back to past experiences.&lt;br /&gt;&lt;br /&gt;With regards to Agile, I'm a support of the &lt;a href="http://agilemanifesto.org/"&gt;Manifesto&lt;/a&gt;.  This particular project has a number of &lt;a href="http://www.thoughtworks.com/us/"&gt;ThoughtWork&lt;/a&gt; consultants attached to it, giving the project a real Agile flavour, not the more typical investment banking half baked Agile approach. Today out development environment is &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ&lt;/a&gt;, &lt;a href="http://cruisecontrol.sourceforge.net/"&gt;Cruise Control&lt;/a&gt; with &lt;a href="http://emma.sourceforge.net/"&gt;Emma&lt;/a&gt;, &lt;a href="http://checkstyle.sourceforge.net/"&gt;CheckStyle&lt;/a&gt; etc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-112080829463840781?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/112080829463840781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=112080829463840781' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112080829463840781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/112080829463840781'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/07/another-day-another-client.html' title='Another day, another client'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-111512602155995810</id><published>2005-05-03T14:12:00.000+01:00</published><updated>2005-05-03T14:13:41.560+01:00</updated><title type='text'>Off-heap data management using memory mapped files (Java NIO)</title><content type='html'>&lt;a href="http://www.tangosol.com/products-clustering-overview.jsp"&gt;Tangosol&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-111512602155995810?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/111512602155995810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=111512602155995810' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111512602155995810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111512602155995810'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/05/off-heap-data-management-using-memory.html' title='Off-heap data management using memory mapped files (Java NIO)'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-111476648776020031</id><published>2005-04-29T10:05:00.000+01:00</published><updated>2005-04-29T10:21:27.760+01:00</updated><title type='text'>Bytecode of method variables</title><content type='html'>Having installed the &lt;a href="http://andrei.gmxhome.de/bytecode/index.html"&gt;Bytecode Outline&lt;/a&gt; Eclipse plugin, and read the &lt;a href="http://cat.nyu.edu/~meyer/jvmref/ref-Java.html"&gt;online instruction reference&lt;/a&gt; it would appear that the following two code extracts produce similar bytecode:&lt;br /&gt;&lt;br /&gt;for (final java.util.Iterator iter = categories.iterator(); iter.hasNext();) {&lt;br /&gt;  final String s = (String)iter.next();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;String s=null;&lt;br /&gt;for (final java.util.Iterator iter = categories.iterator(); iter.hasNext();) {&lt;br /&gt;  s = (String)iter.next();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cat.nyu.edu/~meyer/jvmref/ref-aload.html"&gt;ALOAD&lt;/a&gt; appears to be used in both cases, implying that there is no performance advantage gained by moving the String outside the for loop&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-111476648776020031?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/111476648776020031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=111476648776020031' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111476648776020031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111476648776020031'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/04/bytecode-of-method-variables.html' title='Bytecode of method variables'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-111233769460358012</id><published>2005-04-01T07:22:00.000+01:00</published><updated>2005-04-01T07:41:34.610+01:00</updated><title type='text'>Why the SPARC architecture is dead</title><content type='html'>The project (Java application, consisting of a number of server processes) I work on currently uses a Sun Fire &lt;a href="http://www.sun.com/servers/highend/sunfire15k/index.xml"&gt;15K&lt;/a&gt; server in production (32G RAM, 12 CPU).  Today we decided to test the same application on a Sun Fire &lt;a href="http://www.sun.com/servers/entry/v40z/index.jsp"&gt;v40z&lt;/a&gt; server (AMD Opteron 4 CPU, 32G RAM). &lt;br /&gt;&lt;br /&gt;Running the same performance test on both server configurations, we found that the &lt;a href="http://www.sun.com/amd/"&gt;Opteron&lt;/a&gt; server was 3x faster than the SPARC server.  Another group have done a similar server comparison but using there multi-process multi-thread C++ server and found a 3-4x speed improvement.&lt;br /&gt;&lt;br /&gt;It's quite interesting to compare the cost of both systems - &lt;a href="http://www.e-business.com/products/high-end-servers.htm"&gt;15K&lt;/a&gt; vs &lt;a href="http://www.sun.com/ibb/promos/opteron/"&gt;V40z&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Given the performance improvement and cost savings, it's difficult to see where Sun is going with the SPARC architecture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-111233769460358012?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/111233769460358012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=111233769460358012' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111233769460358012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111233769460358012'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/04/why-sparc-architecture-is-dead.html' title='Why the SPARC architecture is dead'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-111044701887680116</id><published>2005-03-10T09:27:00.000Z</published><updated>2005-03-10T09:32:38.350Z</updated><title type='text'>Oracle JDBC Drivers</title><content type='html'>It's implied from the &lt;a href="http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html"&gt;Oracle&lt;/a&gt; web site that if you are using JDK 1.4, then you should use  ojdbc.jar.  Anyone know if there are issues using classes12.zip (Oracle site implies classes12.zip is for JDK 1.2 and JDK 1.3) with JDK 1.4?  A quick Google search return this &lt;a href="http://www.websina.com/bugzero/faq/jdbc-oracle.html"&gt;issue&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-111044701887680116?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/111044701887680116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=111044701887680116' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111044701887680116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111044701887680116'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/03/oracle-jdbc-drivers.html' title='Oracle JDBC Drivers'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-111043949549097926</id><published>2005-03-10T07:23:00.000Z</published><updated>2005-03-10T07:24:55.490Z</updated><title type='text'>Why can't Sun (Java) do this as well?</title><content type='html'>&lt;a href="http://blogs.msdn.com/bclteam/archive/2005/03/09/391172.aspx"&gt;Blog Day&lt;/a&gt; from the Microsoft BCL Team&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-111043949549097926?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/111043949549097926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=111043949549097926' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111043949549097926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/111043949549097926'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/03/why-cant-sun-java-do-this-as-well.html' title='Why can&apos;t Sun (Java) do this as well?'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110845932597036000</id><published>2005-02-15T09:17:00.000Z</published><updated>2005-02-15T09:22:05.970Z</updated><title type='text'>TCP_NODELAY - Nagel algorithm</title><content type='html'>The Nagel algorithm has the potential to influence performance - this &lt;a href="http://www.miracleas.dk/tools/Miracle_4_nagle.pdf"&gt;article&lt;/a&gt; talks a bit about the algorithm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110845932597036000?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110845932597036000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110845932597036000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110845932597036000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110845932597036000'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/02/tcpnodelay-nagel-algorithm.html' title='TCP_NODELAY - Nagel algorithm'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110744391638046539</id><published>2005-02-03T15:18:00.000Z</published><updated>2005-02-03T15:18:36.380Z</updated><title type='text'>Who started my defunct processes</title><content type='html'> /usr/proc/bin/ptree `ps -ef | grep -v ^\ \ \ \ root | awk '/&lt;defunct&gt;/ {print $2}'` | less&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110744391638046539?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110744391638046539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110744391638046539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110744391638046539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110744391638046539'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/02/who-started-my-defunct-processes.html' title='Who started my defunct processes'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110672538656754256</id><published>2005-01-26T07:12:00.000Z</published><updated>2005-01-26T07:43:06.566Z</updated><title type='text'>Finally, OpenSolaris.org goes live</title><content type='html'>Today we can only download the source to &lt;a href="http://opensolaris.org/"&gt;DTrace&lt;/a&gt;, but there is a hint of things to come from the home page; "Soon, you'll be able to download the OpenSolaris distribution.". With the OpenSolaris release we are finally seeing Sun developers blogging source code - &lt;a href="http://blogs.sun.com/roller/page/ahl"&gt;Adam Leventhal&lt;/a&gt; and &lt;a href="http://blogs.sun.com/roller/page/bmc"&gt;Bryan Cantrill&lt;/a&gt; are just two examples.   Calvin Austin's recent &lt;a href="http://blogs.sun.com/roller/page/calvinaustin/20050121#leaving_sun"&gt;leaving sun blog entry&lt;/a&gt; hinted at problems within Sun with regards to blogging source code - which is a shame since the Java 5.0 source has been available for some &lt;a href="http://java.sun.com/j2se/1.5.0/source_license.html"&gt;time&lt;/a&gt;.  Hopefully soon we might actually being to see more JVM Sun bloggers in the same calibre as Adam and Bryan, together with a blogroll of JVM developers equivalent to the &lt;a href="http://blogs.sun.com/roller/page/eschrock"&gt;Solaris Kernal Developers&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110672538656754256?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110672538656754256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110672538656754256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110672538656754256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110672538656754256'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/01/finally-opensolarisorg-goes-live.html' title='Finally, OpenSolaris.org goes live'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110570330235357715</id><published>2005-01-14T11:39:00.000Z</published><updated>2005-01-14T11:48:22.353Z</updated><title type='text'>Solaris Internal Links</title><content type='html'>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.teamquest.com/resources/gunther/ldavg1.shtml"&gt;Load Averages Explained&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://developers.sun.com/solaris/articles/hardware_counters.html"&gt;Performance Analysis and Monitoring Using Hardware Counters&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://developers.sun.com/solaris/articles/prstat.html"&gt;prstat&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.solarisinternals.com/"&gt;Solaris Internals&lt;/a&gt; and &lt;a href="http://www.solarisinternals.com/si/s4-final.pdf"&gt;slides&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;Hows to check your box is running 64-bit: isainfo -kv&lt;/li&gt;   &lt;li&gt;Check Solaris patch levels: &lt;a href="http://docs.sun.com/app/docs/doc/806-4073/6jd67r9bm?q=showrev&amp;amp;a=view"&gt;showrev&lt;/a&gt; -p&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://developers.sun.com/solaris/articles/lightprocess.html"&gt;LWP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://developers.sun.com/solaris/articles/THREADexec/index.html"&gt;Managing Thread Execution and Wait Times&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;  &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110570330235357715?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110570330235357715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110570330235357715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110570330235357715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110570330235357715'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/01/solaris-internal-links.html' title='Solaris Internal Links'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110501375390922273</id><published>2005-01-06T13:12:00.000Z</published><updated>2005-01-06T12:17:36.106Z</updated><title type='text'>A Comparative Study of Persistence Mechanisms</title><content type='html'>An interesting &lt;a href="http://http//research.sun.com/techrep/2004/smli_tr-2004-136.pdf"&gt;article&lt;/a&gt; from Sun Labs.  If anything, the conclusion is worth a read.&lt;br /&gt;&lt;br /&gt;"Acceptable EJB performance seems unattainable at present unless dramatic changes are made to the application object model to avoid fine-grain objects when mapped to EJB. While this approach is now reflected in standard design patterns for EJB, the extra effort that it implies is disturbing from the overall application design perspective. In contrast, JDO manages to achieve reasonable performance at much lower impact on application design, while remaining agnostic to the nature of the external data store. Therefore, at this time, JDO would seem to offer the best overall persistence mechanism for demanding, object-oriented, applications. Note, however, that at the time of writing, a new specification for entity bean persistence [Sun04] was being proposed for EJB 3.0 that would bring it much closer to JDO in spirit."&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110501375390922273?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110501375390922273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110501375390922273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110501375390922273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110501375390922273'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/01/comparative-study-of-persistence.html' title='A Comparative Study of Persistence Mechanisms'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110499564665551508</id><published>2005-01-06T07:12:00.000Z</published><updated>2005-01-06T07:14:06.656Z</updated><title type='text'>MythTV</title><content type='html'>Now &lt;a href="http://www.mythtv.org"&gt;this&lt;/a&gt; looks cool. All I need to do is fine time to install it on my Linux box.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110499564665551508?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110499564665551508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110499564665551508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110499564665551508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110499564665551508'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/01/mythtv.html' title='MythTV'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110483871060174675</id><published>2005-01-04T11:32:00.000Z</published><updated>2005-01-04T13:54:10.893Z</updated><title type='text'>New Year, New Threading Model</title><content type='html'>Actually its the &lt;a href="http://developers.sun.com/solaris/articles/alt_thread_lib.html"&gt;Alternative threading model (T2)&lt;/a&gt; on Solaris 8. Over the Christmas period we finally tested our application with Solaris's alternative threading model. Overall we are seeing a 30% improvement in performance, with a 3x reduction in context switch activity, system CPU usage is also down.&lt;br /&gt;&lt;br /&gt;To answer the question of why did it take us so long to move to T2 - well I currently working on a project for a large corporation, and they have only just moved our production hardware from Solaris 6 to Solaris 8.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110483871060174675?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110483871060174675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110483871060174675' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110483871060174675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110483871060174675'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2005/01/new-year-new-threading-model.html' title='New Year, New Threading Model'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110211484189927498</id><published>2004-12-03T22:26:00.000Z</published><updated>2004-12-03T23:28:14.026Z</updated><title type='text'>Solaris 10</title><content type='html'>So I finally installed &lt;a href="http://wwws.sun.com/software/solaris/"&gt;Solaris 10&lt;/a&gt; build 69 on my Blade 100 - and the next day Sun releases &lt;a href="http://blogs.sun.com/roller/page/dp/20041130#what_s_new_in_solaris2"&gt;build 72&lt;/a&gt; :( The main reason I installed Solaris 10 was to play with &lt;a href="http://www.sun.com/bigadmin/content/dtrace/"&gt;DTrace&lt;/a&gt;. I'm particularly interested in DTrace and jstack, although there currently doesn't seem to be a lot of information about jstack - &lt;a href="http://blog.sun.com/roller/page/calvinaustin/20041123"&gt;Calvin's&lt;/a&gt; blog being one source.&lt;br /&gt;&lt;br /&gt;I also need to install some more RAM in my Blade 100 - time to surf over to &lt;a href="http://www.crucial.com/"&gt;crucial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Blade came with Solaris 8 pre-installed, so this is the first time I've ever installed Solaris. Overall the install is simple, but I have to say, finding the ok prompt and typing "&lt;a href="http://www.uwsg.iu.edu/usail/installation/so/so-install.html"&gt;boot cdrom&lt;/a&gt;" was not really what I was expecting to have to do. The &lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/jds2.html"&gt;Java Desktop System&lt;/a&gt; is a massive improvement over the Common Desktop Environment (CDE), although I don't quite understand why Sun didn't add an option to the GNOME Launch menu for the Solaris Management Console.&lt;br /&gt;&lt;br /&gt;Things that appeared broken after the install included the Java Media Player doesn't appear to work, and clicking Java in Desktop Preferences gives "Cannot launch entry" since the command was pointing to /a/user/java/jre/bin/ControlPanel when it should have pointed to /user/java/jre/bin/ControlPanel. Another problem I have is that I used the Solaris Management Console to create a new user. If I login as this user using CDE or the Java Desktop System, I never actually manage to login, and always end up back at the Welcome screen. If I login using the Command Line option, I can login fine. Anyone know what log file I should look in to try and resolve this problem?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; It appears the reason the new user I created couldn't login, was because of a corrupted &lt;a href="http://docs.sun.com/app/docs/doc/806-7492/6jgc4esad?l=de&amp;a=view"&gt;.dtprofile&lt;/a&gt;.  Taking a copy of roots file fixed the problem, and I can now login to the Java Desktop System using the newly created user.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110211484189927498?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110211484189927498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110211484189927498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110211484189927498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110211484189927498'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/12/solaris-10.html' title='Solaris 10'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110137061071553772</id><published>2004-11-25T08:05:00.000Z</published><updated>2004-11-25T08:16:50.716Z</updated><title type='text'>DTrace and Java</title><content type='html'>Calvin has a nice blog &lt;a href="http://blog.sun.com/roller/page/calvinaustin/20041123#solaris_10_s_java_secret"&gt;entry&lt;/a&gt; on DTrace and Java.  Shame you have to run Solaris 10 and J2SE 5.0 :(  &lt;a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstack.html"&gt;jstack&lt;/a&gt; and DTrace are definitely an interesting combination.  Adam also has a nice blog entry on this stuff.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110137061071553772?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110137061071553772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110137061071553772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110137061071553772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110137061071553772'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/11/dtrace-and-java.html' title='DTrace and Java'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110085088553984095</id><published>2004-11-19T07:23:00.000Z</published><updated>2004-11-19T07:54:45.540Z</updated><title type='text'>String.intern()</title><content type='html'>The current project I'm currently work on doesn't currently make use of &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"&gt;String.intern() &lt;/a&gt;- which is probably not that surprising since part of the codebase dates back from 1998.  &lt;a href="http://www.cs.technion.ac.il/%7Egenadyb/strings/strings.html"&gt;Genady&lt;/a&gt; has a good overview of the inner workings of intern().  Assuming you agree to the license over at the &lt;a href="http://wwws.sun.com/software/communitysource/j2se/java2/download.html"&gt;Sun Community Source License Download&lt;/a&gt;, you can download the appropriate JDK source code and look at the VM implementation. I have to admit I found the source very interesting, especially how the C++ classes have changed from JDK 1.3.1 to 5.0.   One thing that surprised me was that  intern() is a native method, I'd expected intern() to be implemented in Java and use a &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html"&gt;HashMap&lt;/a&gt; or similar.  It's a shame that Sun's &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html"&gt;JavaDocs&lt;/a&gt; don't identify which methods are native.&lt;br /&gt;&lt;br /&gt;Sun's &lt;a href="http://developers.sun.com/solaris/articles/multiproc/multiproc.html"&gt;memory allocator&lt;/a&gt; article made me wonder if the Java VM uses a special malloc for multi-processor machines. The JDK 5.0 appears to perform memory allocations via a macro that wraps os:malloc.  Does anyone have any information on this?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110085088553984095?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110085088553984095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110085088553984095' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110085088553984095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110085088553984095'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/11/stringintern.html' title='String.intern()'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-110068036041146982</id><published>2004-11-17T08:13:00.000Z</published><updated>2004-11-17T08:40:46.190Z</updated><title type='text'>HotSpot Source Code</title><content type='html'>It's nice to see that the Java Research License (JRL) source &lt;a href="http://java.sun.com/j2se/jrl_download.html"&gt;download&lt;/a&gt; includes the source code to the HotSpot Client and Server VM's. Assuming the JRL HotSpot is identical to &lt;a href="http://java.sun.com/j2se/1.5.0/index.jsp"&gt;J2SE 5.0&lt;/a&gt;, it's a cool download for the developer who wants to know what the VM is doing, and how its doing it. It's a shame Microsoft's Shared Source Common Language Infrastructure (&lt;a href="msdn.microsoft.com/net/sscli/"&gt;SSCLI&lt;/a&gt;) doesn't follow Sun's openness - maybe the up and coming &lt;a href="http://blogs.gotdotnet.com/joelpob/permalink.aspx/7c0634f2-7bcb-4071-9fea-b80099a06cb8"&gt;Rotor&lt;/a&gt; release will fix this&lt;br /&gt;&lt;br /&gt;As blogged elsewhere on the web, its nice to see JDK 6.0 snapshots are &lt;a href="https://j2se.dev.java.net/"&gt;available&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-110068036041146982?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/110068036041146982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=110068036041146982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110068036041146982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/110068036041146982'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/11/hotspot-source-code.html' title='HotSpot Source Code'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109895123903095849</id><published>2004-10-28T08:58:00.000+01:00</published><updated>2004-10-28T09:13:59.030+01:00</updated><title type='text'>MDA and MDD</title><content type='html'>Looks like we are moving down the &lt;a href="http://www-106.ibm.com/developerworks/rational/library/3100.html"&gt;Model Driven Architecture&lt;/a&gt; and &lt;a href="http://searchwebservices.techtarget.com/qna/0,289202,sid26_gci999474,00.html"&gt;Model Driven Development&lt;/a&gt; road.  Yesterday everyone on my development team had a quick training session on &lt;a href="http://www.borland.com/together/"&gt;Borland Together&lt;/a&gt;.  We are using the Eclipse edition. The reverse engineering features of the product are very cool, although I'm not convinced yet about the Pattern Recognizer.  The Quality Assurance metrics and audits look interesting - hopefully you will be able to run these from the command line, and generate them via the nightly Ant build.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109895123903095849?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109895123903095849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109895123903095849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109895123903095849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109895123903095849'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/10/mda-and-mdd.html' title='MDA and MDD'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109886973808796808</id><published>2004-10-27T10:32:00.000+01:00</published><updated>2004-10-27T10:35:38.086+01:00</updated><title type='text'>Database Usage</title><content type='html'>&lt;a href="http://weblogs.cs.cornell.edu/AllThingsDistributed/archives/000280.html"&gt;This&lt;/a&gt; is an old blog entry by Werner, but is still relevant today.  I'd be curious to know if anyone has any information on how these sites have evolved since 2003.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109886973808796808?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109886973808796808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109886973808796808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109886973808796808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109886973808796808'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/10/database-usage.html' title='Database Usage'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109886564117664696</id><published>2004-10-27T09:08:00.000+01:00</published><updated>2004-10-27T09:27:21.176+01:00</updated><title type='text'>Gigaspaces and GemFire</title><content type='html'>&lt;a href="http://www.gigaspaces.com"&gt;Gigaspaces&lt;/a&gt; and &lt;a href="http://www.gemstone.com/products/gemfire"&gt;GemFire&lt;/a&gt; both appear to be off-the-shelf products that can offer caching (distributed).  Both products implement JCache (JSR 107).  GemFire offers the option of using an operating systems shared memory segment to improvement performance between processes on the same machine.  Has anyone used GemFire?  Any idea which is the better product?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109886564117664696?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109886564117664696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109886564117664696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109886564117664696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109886564117664696'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/10/gigaspaces-and-gemfire.html' title='Gigaspaces and GemFire'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109722001438667638</id><published>2004-10-08T07:57:00.000+01:00</published><updated>2004-10-08T08:20:14.386+01:00</updated><title type='text'>C++ Migration to Java</title><content type='html'>After 3 months of work, I'm close to being done with the re-architecture of three legacy C++ servers.  The original servers were written back in the late 90's, and used an OO database as a repository.  The re-architecture has involved moving and code to Java, and migrating off the OO database.  What follows is a summary of the performance timings taken from a &lt;a href="http://www.junit.org"&gt;JUnit&lt;/a&gt; calling both the C++ and Java CORBA servers - these timings should be taken with a pinch of salt, since the internals of the C++ and Java servers are different (but produce the same results, and expose the same IDL interfaces), as is the repositories:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(11998 method calls) for Test 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 21(total milliseconds:253846) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 1(total milliseconds:18438)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(11998 method calls) for Test 2 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 26(total milliseconds:314209)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 3(total milliseconds:38745)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(5999 method calls) for Test 3 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 40(total milliseconds:242797) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 1(total milliseconds:10684)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(5999 method calls) for Test 4 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 53(total milliseconds:322152) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 11(total milliseconds:69485)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(10 method calls) for Test 5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 717(total milliseconds:7174) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 168(total milliseconds:1680)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(10 method calls) for Test 6 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 101(total milliseconds:1019) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 25(total milliseconds:259)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(10 method calls) for Test 7 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 81(total milliseconds:813) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 28(total milliseconds:287)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(813 method calls) for Test 8 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 3(total milliseconds:3133) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 2(total milliseconds:2053)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(813 method calls) for Test 9 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;C++:Average milliseconds 16(total milliseconds:13629) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Java:Average milliseconds 1(total milliseconds:1237)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Timings were taken on 8 CPU (1200Mhz)  Sun Sparc Solaris box running &lt;a href="http://java.sun.com/j2se/1.4.2"&gt;JDK 1.4.2_05&lt;/a&gt; with &lt;a href="http://www.iona.com/products/orbix.htm"&gt;Iona Orbix 6.1&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109722001438667638?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109722001438667638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109722001438667638' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109722001438667638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109722001438667638'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/10/c-migration-to-java.html' title='C++ Migration to Java'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109706698821332385</id><published>2004-10-06T13:47:00.000+01:00</published><updated>2004-10-06T13:49:48.213+01:00</updated><title type='text'>Q: Why are there two ps utilities on my Sun box?</title><content type='html'>&lt;a href="http://www.webservertalk.com/message387906.html"&gt;Answer&lt;/a&gt;&lt;br /&gt;Historically, SunOS 4.x was based on BSD unix. Solaris 2.x (= SunOS 5.x) was based on SYSV, with a bunch of commands having different syntax and behavior.  To ease the transition, the/usr/ucb directory was created to hold the incompatible BSD versions. People who really wanted BSD could put /usr/ucb before /usr in theirPATH.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109706698821332385?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109706698821332385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109706698821332385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109706698821332385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109706698821332385'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/10/q-why-are-there-two-ps-utilities-on-my.html' title='Q: Why are there two ps utilities on my Sun box?'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109657749203186641</id><published>2004-09-30T21:48:00.000+01:00</published><updated>2004-09-30T21:51:32.030+01:00</updated><title type='text'>A New Version of Java</title><content type='html'>On the day that Sun release &lt;a href="http://java.sun.com/j2se/1.5.0/"&gt;Java 5.0&lt;/a&gt; the project I am working on moves to Java 1.4.2_5 and &lt;a href="http://www.iona.com/products/orbix.htm"&gt;Iona Orbix 6.1&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109657749203186641?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109657749203186641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109657749203186641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109657749203186641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109657749203186641'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/09/new-version-of-java.html' title='A New Version of Java'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109644233164000577</id><published>2004-09-29T08:12:00.000+01:00</published><updated>2004-09-29T08:18:51.640+01:00</updated><title type='text'>Who are the Sun JVM bloggers</title><content type='html'>You can get a list of the Solaris kernel developers &lt;a href="http://blogs.sun.com/roller/page/eschrock"&gt;here&lt;/a&gt;.  The Microsoft CLR team hangs out &lt;a href="http://msdn.microsoft.com/netframework/community/blogs/default.aspx"&gt;here&lt;/a&gt;.  Can somebody point me at a list of JVM bloggers?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109644233164000577?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109644233164000577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109644233164000577' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109644233164000577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109644233164000577'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/09/who-are-sun-jvm-bloggers.html' title='Who are the Sun JVM bloggers'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109644004108251171</id><published>2004-09-29T07:23:00.000+01:00</published><updated>2004-09-29T07:40:41.083+01:00</updated><title type='text'>On the GC Tuning Road</title><content type='html'>I'm code complete for the three Java CORBA servers I've re-architected over the last three months.  I now just need to re-run the last performance tests, and fine tune the JVM options.  Since I'm forced to run on the Solaris JVM 1.3.1_09 I initially started using this &lt;a href="http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc-p4.html"&gt;AWK&lt;/a&gt; script (later migrating to Perl) to take the -verbose:gc output and graph the results in Excel.  JVM options currently being used:&lt;br /&gt;&lt;br /&gt;-server -XX:+PrintTenuringDistribution -verbose:gc -Xss256k -XX:TargetSurvivorRatio=90 -Xss256k -ms512m -mx512m -XX:NewSize=192m -XX:MaxNewSize=192m -XX:SurvivorRatio=4 -XX:+DisableExplicitGC -XX:PermSize=16m -XX:MaxPermSize=16m&lt;br /&gt;&lt;br /&gt;Joseph Mocker's recent &lt;a href="http://blogs.sun.com/roller/resources/watt/jvm-options-list.html"&gt;blog&lt;/a&gt; on "A Collection of JVM Options" is a worthwhile read.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109644004108251171?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109644004108251171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109644004108251171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109644004108251171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109644004108251171'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/09/on-gc-tuning-road.html' title='On the GC Tuning Road'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109626796035673499</id><published>2004-09-27T07:39:00.000+01:00</published><updated>2004-09-27T07:52:40.356+01:00</updated><title type='text'>Sleepycat</title><content type='html'>Late last week I was asked to look at &lt;a href="http://www.sleepycat.com/"&gt;BerkleyDB&lt;/a&gt; for possible use within one of our servers (&lt;a href="http://www.sleepycat.com/jeforjbosscache/"&gt;JBossCache&lt;/a&gt; also make used of BerkeyDB). Certain team members thought that BerkleyDB might be a better fit that using Oracle. I've never used Berkley DB, but having done a few google searchs , and reading this &lt;a href="http://today.java.net/pub/a/today/2004/08/24/sleepy.html"&gt;article&lt;/a&gt;, BerkeyDB could be an interesting replacement for Oracle in our servers that needs a high performance transactional storage engine.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109626796035673499?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109626796035673499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109626796035673499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109626796035673499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109626796035673499'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/09/sleepycat.html' title='Sleepycat'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109601923780296205</id><published>2004-09-24T10:43:00.000+01:00</published><updated>2004-09-24T17:13:23.783+01:00</updated><title type='text'>Finally, access to ClearCase</title><content type='html'>After weeks of waiting, my machine has been setup for &lt;a href="http://www-306.ibm.com/software/awdtools/clearcase/"&gt;ClearCase&lt;/a&gt;, and I've got access to the projects ClearCase VOB (ClearCase version 4.2). I've never used ClearCase before, so checking in the last 2 months worth of work was interesting and slightly different to CVS. Supposedly if you can afford ClearCase, it is the best source control system available.&lt;br /&gt;&lt;br /&gt;Essentially ClearCase VOBs use a proprietary database format, the Raima database. ClearCase allows a user to have either a snapshot or a dynamic view. In my case, I'm using a dynamic view. The view is essentially your view of the elements in the repository, allowing you to decide what branch, versions etc you want to see and work with. One of the most useful commands I've used in the last few days is :&lt;br /&gt;&lt;br /&gt;cleartool lsco -cview -recurse&lt;br /&gt;&lt;br /&gt;Essentially a way to check my view to see what files are I still have checked out. The next ClearCase exercise I have on the list is merging my branch with the main branch - I just need to re-run all my JUnit tests against what I have added to my ClearCase view and performance tested the code on the development Solaris server instead of my Windows XP dev box.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www-128.ibm.com/developerworks/rational/library/836.html"&gt;ClearCase CheatSheet&lt;/a&gt;&lt;br /&gt;Eclipse ClearCase &lt;a href="http://sourceforge.net/projects/eclipse-ccase"&gt;Plugin&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109601923780296205?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109601923780296205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109601923780296205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109601923780296205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109601923780296205'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/09/finally-access-to-clearcase.html' title='Finally, access to ClearCase'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109454073677989917</id><published>2004-09-07T07:56:00.000+01:00</published><updated>2004-09-07T08:05:36.780+01:00</updated><title type='text'>Explain Plan - Oracle</title><content type='html'>I never remember how to check out the execution plans on Oracle, so this time I thought I'd blog the answer. Basically, you run the following:&lt;br /&gt;&lt;br /&gt;explain plan for &lt;sql&gt;&lt;br /&gt;&lt;br /&gt;You can then see the results with:&lt;br /&gt;&lt;br /&gt;SELECT * FROM TABLE(dbms_xplan.display)&lt;br /&gt;&lt;br /&gt;This &lt;a href="https://cwisdb.cc.kuleuven.ac.be/ora10doc/appdev.101/b10802/d_xplan.htm"&gt;article&lt;/a&gt; gives a lot more detail, as does &lt;a href="http://www.adp-gmbh.ch/ora/explainplan.html"&gt;this&lt;/a&gt;. Its a shame Oracle didn't integrate the explain plan output into SQL Plus in a similar way to what Microsoft has done with &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenethowto04.asp"&gt;SQL Analyser&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109454073677989917?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109454073677989917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109454073677989917' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109454073677989917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109454073677989917'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/09/explain-plan-oracle.html' title='Explain Plan - Oracle'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109312496294567891</id><published>2004-08-21T22:31:00.000+01:00</published><updated>2004-08-21T22:57:13.236+01:00</updated><title type='text'>Annotations - one of the many differences between .NET and Java 5.0</title><content type='html'>If you are a software engineer using both .NET(C#) and Java 5.0, there are some subtle differences between both metadata implementations - attributes/annotations. The first one you normally run into is the fact that Java's annotations are available at source level only by &lt;a href="http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-tiger3_p.html"&gt;default&lt;/a&gt;. Try running the following code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;public @interface SomeAnnotation { String value();}&lt;br /&gt;&lt;br /&gt;@SomeAnnotation("hello")&lt;br /&gt;public class SomeClass {&lt;br /&gt;         public static void main(String[] args) {&lt;br /&gt;              System.out.println(SomeClass.class.isAnnotationPresent(SomeAnnotation.class));&lt;br /&gt;&lt;/span&gt;}}&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;If you come from .NET land, you might expect the output to be "true", but what you actually get is "false". To make the annotation available at runtime, change SomeAnnotation to:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;@Retention(RetentionPolicy.RUNTIME)&lt;br /&gt;@Target({ElementType.TYPE,ElementType.METHOD})&lt;br /&gt;public @interface&lt;br /&gt;SomeAnnotation { String value();}&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109312496294567891?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109312496294567891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109312496294567891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109312496294567891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109312496294567891'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/08/annotations-one-of-many-differences.html' title='Annotations - one of the many differences between .NET and Java 5.0'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109312357970684430</id><published>2004-08-21T22:00:00.000+01:00</published><updated>2004-08-21T22:26:19.706+01:00</updated><title type='text'>IntelliJ 4.5.1 and Java 5.0</title><content type='html'>So I upgraded to IntelliJ 4.5.1 last night.  As stated by other bloggers, IntelliJ has very nice support for Java 5.0.  I'm going to start playing with Java 5.0's annotations tonight since the last project I worked on (C#) used attributes in a big way - attributes before the .NET equivalent of Java 5.0 annotations.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;final Object[] aa = {"hello", 22};&lt;/strong&gt;&lt;br /&gt;I have to admit the &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html"&gt;autoboxing&lt;/a&gt; feature in Java 5.0 is nice - especially if you write Java and C# code.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;for (String s : a)&lt;/strong&gt;&lt;br /&gt;It also feels natural to use the new &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html"&gt;enhanced loop&lt;/a&gt; - maybe again because is some ways its similar to what I write in C#&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109312357970684430?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109312357970684430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109312357970684430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109312357970684430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109312357970684430'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/08/intellij-451-and-java-50.html' title='IntelliJ 4.5.1 and Java 5.0'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109302205708715257</id><published>2004-08-20T18:09:00.000+01:00</published><updated>2004-08-20T18:14:17.086+01:00</updated><title type='text'>The New World</title><content type='html'>I finally moved to Eclipse 3.0 today at work.  I've installed the plugins are per the previous blog entry.  Anyone got any recommendations for other must-have plugins?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109302205708715257?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109302205708715257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109302205708715257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109302205708715257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109302205708715257'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/08/new-world.html' title='The New World'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109298444611565095</id><published>2004-08-20T07:28:00.000+01:00</published><updated>2004-08-20T12:00:17.420+01:00</updated><title type='text'>Stuck in the Old World</title><content type='html'>The current project is interesting, and yet painful. Interesting in that I am back in Java land after a year or so, but painful in that all the current work is on Java 1.3.1 (and Eclipse 2.1), and hence I'm missing out on the expanding world of Eclipse plugin's that make development life easier - &lt;a href="http://csdl.ics.hawaii.edu/Tools/Jupiter/"&gt;Jupiter&lt;/a&gt;, &lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt;, &lt;a href="http://www.jdocs.com"&gt;JDocs&lt;/a&gt;, &lt;a href="http://sourceforge.net/projects/eclipsecolorer"&gt;Profiler&lt;/a&gt; etc. With Java 5.0 out soon, I hope we at least move to Java 1.4 on the current project. At least then I can start using Eclipse 3.0 again.&lt;br /&gt;In the last week or so I started using &lt;a href="http://www.hibernate.org"&gt;Hibernate&lt;/a&gt;. Very cool, easy to use/install, with good documentation. What more could you ask for.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.javalobby.com/nl/archive/jlnews_20040818o.html"&gt;Sun-JDocs&lt;/a&gt; issue is sad. I have to agree with &lt;a href="http://www.almaer.com/blog/archives/cat_tech.html"&gt;Dion&lt;/a&gt; with regards to the Microsoft comment.&lt;br /&gt;&lt;br /&gt;Last night I upgrading my &lt;a href="http://fedora.redhat.com/"&gt;Fedora&lt;/a&gt; 1 box to Fedora 2. The upgrade went fairly smoothly apart from when I rebooted, and got an error message during Gnome startup. Gnome did start after I ok'd the error message. I just need to dig into some log file to discover and fix the issue.&lt;br /&gt;&lt;br /&gt;Finally, one of these days I'm actually going to get time to install and play with &lt;a href="http://www.dancres.org/blitz/"&gt;Blitz&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109298444611565095?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109298444611565095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109298444611565095' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109298444611565095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109298444611565095'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/08/stuck-in-old-world.html' title='Stuck in the Old World'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109168995526918199</id><published>2004-08-05T08:01:00.000+01:00</published><updated>2004-08-05T08:12:35.270+01:00</updated><title type='text'>10g</title><content type='html'>Today I had reason to install Oracle 10g.  I always find installing Oracle painful - maybe its just the initial slowness of the actual installer, or maybe its the size of the download.  One benefit of 10g is that it offers access to the Oracle Enterprise Manager via a browser (&lt;a href="http://localhost:5501/em"&gt;http://localhost:5501/em&lt;/a&gt; by default).  SQL Plus still sucks badly, maybe one day they will actually fix this crappy product.&lt;br /&gt;&lt;br /&gt;Once 10g was installed, I knocked up a simple Java program to ensure I could access the database, and ended up with the classic JDBC error "java.sql.SQLException: ORA-00600: internal error code, arguments: [ttcgcshnd-1], [0], [], [], [], [], [], [] ".  The problem as usual turned out to be that I had classes12.zip on the CLASSPATH instead of classes12.jar.&lt;br /&gt;&lt;br /&gt;One nice feature (or maybe not a feature) of 10g was that I didn't seem to have the TNS setup issues I had in Oracle 8 - maybe this was due to the thin ("jdbc:oracle:thin:") connection string I was using.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109168995526918199?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109168995526918199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109168995526918199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109168995526918199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109168995526918199'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/08/10g.html' title='10g'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-109102725775899575</id><published>2004-07-28T16:02:00.000+01:00</published><updated>2004-07-28T18:35:42.823+01:00</updated><title type='text'>Distributed Caches</title><content type='html'>John Davies has an interesting comment on the &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=27598#131893"&gt;TheServerSide&lt;/a&gt; with regards JavaSpaces and &lt;a href="http://www.gigaspaces.com/product_2.html"&gt;GigaSpaces&lt;/a&gt;&amp;nbsp;- I'm guessing its BNP Paribas.&amp;nbsp; Would love to know more details about the "seriously sexy architectures" he's be working on. &lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-109102725775899575?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/109102725775899575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=109102725775899575' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109102725775899575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/109102725775899575'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/distributed-caches.html' title='Distributed Caches'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108987949712855029</id><published>2004-07-15T09:09:00.000+01:00</published><updated>2004-07-15T18:36:46.170+01:00</updated><title type='text'>J2ME and my Nokia 7250i</title><content type='html'>It's been a few years since I did any mobile work (a WAP web site was the last), so I thought I'd have a go at developing a simple application for my Nokia 7250i.  Nokia's forums have a lot of good stuff available for developers.  For starters the &lt;a href="http://www.forum.nokia.com/main/0,6566,016-1313,00.html"&gt;device details&lt;/a&gt; page for the 7250i gives details on what Java technology I can access - it appears I need to develop an MIDlet (max 64Kb) that I can then download Over-the-Air (OTA)&lt;a href="http://www.nokia.com/support/tutorials/7250i/english/faq/4_5.html#5"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;An MIDlet appear to be very to an applet in concept.  The MIDLet class can be found in the javax.microedition.midlet.* package.  Once you have coded your MIDlet application, you can use the &lt;a href="http://www.forum.nokia.com/main/0,6566,034-2,00.html"&gt;Nokia Developer's Suite&lt;/a&gt; to generate the .JAR and .JAD (Java Application Description) files. The Nokia Developer's Suite also has an emulator which avoid round-tripping to a real phone.  One issue I found with the Nokia Developer's Suite is that it comes with integrationg for Java Forte and JBuilder, but no integration for Eclipse.&lt;br /&gt;&lt;br /&gt;The easiest way to get the MIDlet onto your phone is to place the .JAR and .JAD onto a web server, setup MIME tags for .jad and .jar, add a HTML page that links to the .JAD files, and use the Nokia phone to browse to the page, and install the application.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://midlet.org/"&gt;midlet.org&lt;/a&gt; and other sites on the web have a load of free applications that you can download.&lt;br /&gt;&lt;br /&gt;J2ME code for "Hello World":&lt;br /&gt;&lt;blockquote&gt;package com.First;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import javax.microedition.lcdui.*;&lt;br /&gt;&lt;br /&gt;public class First extends MIDlet&lt;br /&gt;{&lt;br /&gt;        private MyCanvas canvas;&lt;br /&gt;	&lt;br /&gt;	class MyCanvas extends Canvas&lt;br /&gt;	{&lt;br /&gt;		protected void paint(Graphics arg0) {&lt;br /&gt;			arg0.drawString("Hello World", 0, 0, Graphics.TOP|Graphics.LEFT);&lt;br /&gt;			&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public First()&lt;br /&gt;	{&lt;br /&gt;		canvas = new MyCanvas();&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	protected void startApp(  ) throws MIDletStateChangeException&lt;br /&gt;	{&lt;br /&gt;		Display.getDisplay(this).setCurrent(canvas);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	protected void pauseApp(  )&lt;br /&gt;	{&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	protected void destroyApp( boolean p1 ) throws MIDletStateChangeException&lt;br /&gt;	{&lt;br /&gt;	}&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;.JAD file for the above application:&lt;br /&gt;MIDlet-Name: MyMIDlet&lt;br /&gt;MIDlet-Version: 0.0.1&lt;br /&gt;MIDlet-Vendor: MyCompany&lt;br /&gt;MicroEdition-Profile: MIDP-1.0&lt;br /&gt;MicroEdition-Configuration: CLDC-1.0&lt;br /&gt;MIDlet-Jar-URL: MyMIDlet.jar&lt;br /&gt;MIDlet-Jar-Size: 2301&lt;br /&gt;MIDlet-1: First, , com.First&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108987949712855029?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108987949712855029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108987949712855029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108987949712855029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108987949712855029'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/j2me-and-my-nokia-7250i.html' title='J2ME and my Nokia 7250i'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108983790473022213</id><published>2004-07-14T21:31:00.000+01:00</published><updated>2004-07-14T21:45:04.730+01:00</updated><title type='text'>Eclipse Rich Client Platform</title><content type='html'>Given that the &lt;a href="http://java.sun.com/javaone/general_sessions1.html"&gt;client is back&lt;/a&gt;, the concept of using Eclipse as a &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-ui-home/rcp/index.html"&gt;rich client platform&lt;/a&gt; offers some interesting &lt;a href="http://www.eclipsecon.org/EclipseCon_2004_TechnicalTrackPresentations/11_Edgar.pdf"&gt;ideas&lt;/a&gt;.  I know of a few development teams within tier-1 banks that are considering this Eclipse approach to consolidate exiting Java Swing rich client applications - at least SWT looks a lot better than Swing (a Swing application never looks quite right, irrespective of the hours/days spent on it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108983790473022213?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108983790473022213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108983790473022213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108983790473022213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108983790473022213'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/eclipse-rich-client-platform.html' title='Eclipse Rich Client Platform'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108983551510055483</id><published>2004-07-14T21:04:00.000+01:00</published><updated>2004-07-14T21:19:00.043+01:00</updated><title type='text'>Typesafe Enum etc - Pre Java 5.0</title><content type='html'>Here are a few comments having jumped back onto the Java bandwagon after spending the last 15 months using Microsoft .NET:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Move from C# which has enum's to Java which doesn't is a real pain, even Bloch's Typesafe Enum pattern doesn't help in the context of switch statements.  I'm amazed Sun never added enums prior to 5.0. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Events in C# are far easier than in Java. Maybe Sun can fix this in Java 5.1&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; is a really nice IDE these days. The debugging experience is finally enjoyable. There is even a plugin for &lt;a href="http://sourceforge.net/projects/eclipse-ccase"&gt;ClearCase&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Java class library is much richer than C# with regards to collections.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108983551510055483?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108983551510055483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108983551510055483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108983551510055483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108983551510055483'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/typesafe-enum-etc-pre-java-50.html' title='Typesafe Enum etc - Pre Java 5.0'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108945364793830395</id><published>2004-07-10T10:37:00.000+01:00</published><updated>2004-07-10T11:00:47.936+01:00</updated><title type='text'>Bruce Eckel</title><content type='html'>&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=27239"&gt;TheServerSide&lt;/a&gt; had a link to Bruce's latest blog &lt;a href="http://mindview.net/WebLog/log-0055"&gt;entry&lt;/a&gt;. The video is worth watching, since he makes some very valid points - I have to agree that the classpath is a nightmare. He also talks about Java vs .NET, and J2SE 5.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108945364793830395?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108945364793830395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108945364793830395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108945364793830395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108945364793830395'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/bruce-eckel.html' title='Bruce Eckel'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108940712768460795</id><published>2004-07-09T21:51:00.000+01:00</published><updated>2004-07-09T22:11:37.936+01:00</updated><title type='text'>Garbage Collection</title><content type='html'>Nice &lt;a href="http://www-106.ibm.com/developerworks/java/library/j-perf06304/?ca=dgr-lnxw07BlogFix"&gt;article&lt;/a&gt; on tuning the garbage collection for a real application.  It occurred to me today that tuning the Java GC appear to be more of a black art than tuning the Microsoft CLR GC.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sun.com/bigadmin/content/dtrace/"&gt;DTrace&lt;/a&gt; appears to be getting a lot of press.  There is a Flash demo of DTrace available &lt;a href="http://wwws.sun.com/software/solaris/10/"&gt;here&lt;/a&gt;.  Nice to see &lt;a href="http://www.sun.com/bigadmin/content/dtrace/"&gt;Bryan&lt;/a&gt; and &lt;a href="http://blogs.sun.com/roller/page/ahl"&gt;Adam&lt;/a&gt; are blogging.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108940712768460795?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108940712768460795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108940712768460795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108940712768460795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108940712768460795'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/garbage-collection.html' title='Garbage Collection'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108939424122993815</id><published>2004-07-09T18:25:00.001+01:00</published><updated>2004-07-10T00:24:31.180+01:00</updated><title type='text'>GregorianCalendar and Foreign Exchange</title><content type='html'>Calendars are esential in trading systems.  For Foreign Exchange (&lt;a href="http://www.fx-forex-trading.com/intro.htm"&gt;FX&lt;/a&gt;) system in particular, calendars are very important since if a trader is executing an FX &lt;a href="http://www.fx-forex-trading.com/pairs.htm"&gt;currency pair&lt;/a&gt; GBP/USD trade, they'll need to know the date of Spot (http://www.fx-forex-trading.com/glossary.htm#S) and other relevant tenors; Spot Next, Spot Week, x Day, x Week, x Month, x Year.  Examples of tenors in short hand form are: 1W 3W 3M 1Y.&lt;br /&gt; &lt;br /&gt;So what does the above have to do with &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html"&gt;java.util.GregorianCalendar&lt;/a&gt;?  Well actually a lot.  Since to work out spot for a currency pair, you first need to figure out what the first business day is after the transaction day - the day the trade was executed.  A business day is not a weekend, and not a holiday, so for GBP/USD, we need to look at the holidays in both calendars.  Assuming today is 9th July 2004, then the next business day would be 12th July 2004, which means that spot will be 13th July 2004 (assuming settlement within 2 business days of the transaction date).  &lt;br /&gt;&lt;br /&gt;A description of FX value dates can be found &lt;a href="http://www.fxfxnet.com/members/treasury/fxvalue/fxvalue.htm"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108939424122993815?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108939424122993815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108939424122993815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108939424122993815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108939424122993815'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/gregoriancalendar-and-foreign-exchange.html' title='GregorianCalendar and Foreign Exchange'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108939424303748761</id><published>2004-07-09T18:25:00.000+01:00</published><updated>2004-07-09T18:32:05.863+01:00</updated><title type='text'>GregorianCalendar and Foreign Exchange</title><content type='html'>Calendars are esential in trading systems.  For Foreign Exchange (&lt;a href="http://www.fx-forex-trading.com/intro.htm"&gt;FX&lt;/a&gt;) system in particular, calendars are very important since if a trader is executing an FX &lt;a href="http://www.fx-forex-trading.com/pairs.htm"&gt;currency pair&lt;/a&gt; GBP/USD trade, they'll need to know the date of &lt;a href="http://www.fx-forex-trading.com/glossary.htm#S"&gt;Spot&lt;/a&gt; and other relevant tenors; Spot Next, Spot Week, x Day, x Week, x Month, x Year.  Examples of tenors in short hand form are: 1W 3W 3M 1Y.&lt;br /&gt; &lt;br /&gt;So what does the above have to do with &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html"&gt;java.util.GregorianCalendar&lt;/a&gt;?  Well actually a lot.  Since to work out spot for a currency pair, you first need to figure out what the first business day is after the transaction day - the day the trade was executed.  A business day is not a weekend, and not a holiday, so for GBP/USD, we need to look at the holidays in both calendars.  Assuming today is 9th July 2004, then the next business day would be 12th July 2004, which means that spot will be 13th July 2004 (assuming settlement within 2 business days of the transaction date).  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108939424303748761?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108939424303748761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108939424303748761' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108939424303748761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108939424303748761'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/gregoriancalendar-and-foreign-exchange_09.html' title='GregorianCalendar and Foreign Exchange'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108896789696916478</id><published>2004-07-04T19:52:00.000+01:00</published><updated>2004-07-04T20:04:56.970+01:00</updated><title type='text'>EJB 3.0</title><content type='html'>I have to agree with the list of common complains in this &lt;a href="http://www.theserverside.com/articles/article.tss?l=JavaOne2004&amp;page=day2"&gt;article&lt;/a&gt;, especially the 4 files per EJB - at least &lt;a href="http://xdoclet.sourceforge.net/xdoclet/index.html"&gt;XDoclet&lt;/a&gt; makes life easier today.  It's nice to see that &lt;a href="http://www.springframework.org/"&gt;Spring&lt;/a&gt; and other light weight containers are going to have an influence on EJB 3.0.  Hopefully EJB 3.0 will be heavily influence Java 5.0 Metadata&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108896789696916478?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108896789696916478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108896789696916478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108896789696916478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108896789696916478'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/ejb-30.html' title='EJB 3.0'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108880350341676656</id><published>2004-07-02T22:23:00.000+01:00</published><updated>2004-07-02T22:25:03.416+01:00</updated><title type='text'>Java Corba</title><content type='html'>It’s been a while since I did any CORBA work - that last time was probably back in the late 90's with the Iona product.  So what am I doing with CORBA?  I'm re-architecting a few C++ Solaris applications that use the Versant database.  The replacement servers will use Java 1.4 and an Oracle database.  Its kind of strange to read the legacy code, with the &lt;a href="http://www.iona.com/support/articles/179.638.xml"&gt;TIE&lt;/a&gt; and &lt;a href="http://www.javaworld.com/javaworld/jw-02-1999/jw-02-enterprise.html"&gt;narrow()&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108880350341676656?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108880350341676656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108880350341676656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108880350341676656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108880350341676656'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/07/java-corba.html' title='Java Corba'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108859374589259777</id><published>2004-06-30T11:50:00.000+01:00</published><updated>2004-06-30T12:09:05.893+01:00</updated><title type='text'>JavaOne - "The client is back"</title><content type='html'>Its funny how in the software industry go round and round.  Schwartz's &lt;a href="http://java.sun.com/javaone/general_sessions1.html"&gt;comments&lt;/a&gt; about the client being back are interesting.  Maybe Microsoft .NET taking a share of the client market from Java has influenced this comment - .NET WinForm's do appear to be going places inside investment banks. Not long ago rich clients where supposedly dead and the browser was king.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wwws.sun.com/software/looking_glass/details.html"&gt;Looking Glass&lt;/a&gt; looks cool. It will be interesting to see how the project evolves, and how it stands up to &lt;a href="http://msdn.microsoft.com/longhorn/"&gt;Microsoft's Longhorn Avalon&lt;/a&gt; technology.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108859374589259777?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108859374589259777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108859374589259777' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108859374589259777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108859374589259777'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/06/javaone-client-is-back.html' title='JavaOne - &quot;The client is back&quot;'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108859100927620042</id><published>2004-06-30T10:48:00.000+01:00</published><updated>2004-06-30T11:23:29.276+01:00</updated><title type='text'>Java Performance</title><content type='html'>&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0596003773/102-3308784-3334513?v=glance"&gt;Java Performance Tuning&lt;/a&gt; by Jack Shirazi is an excellent book - ok I have only read the first 100 pages or so.  It's the first book I've read for a while that contains some interesting geeky performance/jvm internal stuff.  There is also the well known web &lt;a href="http://www.javaperformancetuning.com"&gt;site&lt;/a&gt; that supports the book.&lt;br /&gt;&lt;br /&gt;The Java &lt;a href="http://java.sun.com/developer/technicalArticles/Programming/GCPortal/index.html"&gt;GC Portal&lt;/a&gt; article provides a nice utility to mine the verbose:gc logs, as does &lt;a href="http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc-p4.html"&gt;Ken Gottry's&lt;/a&gt; AWK script.&lt;br /&gt;&lt;br /&gt;The is a load of information in &lt;a href="http://developers.sun.com/techtopics/mobility/midp/articles/garbagecollection2/"&gt;Improving Java Application Performance and Scalability by Reducing Garbage Collection Times and Sizing Memory Using JDK 1.4.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With regards J2SE 1.5, I mean J2SE 5.0 (why did they leave the 2 in J2SE ?), it would be nice to get some idea of how they managed to get the improvements in &lt;a href="http://java.sun.com/developer/technicalArticles/releases/j2se15/#snp"&gt;startup time and memory footprint&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://research.sun.com/projects/jfluid/"&gt;JFluid&lt;/a&gt; appears to be moving along nicely&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108859100927620042?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108859100927620042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108859100927620042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108859100927620042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108859100927620042'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/06/java-performance.html' title='Java Performance'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108852058440757726</id><published>2004-06-29T15:47:00.000+01:00</published><updated>2004-06-29T15:49:44.406+01:00</updated><title type='text'>Java Desktop</title><content type='html'>Allied Irish bank moves to Linux and &lt;a href="http://www.finextra.com/topstory.asp?id=12086"&gt;Java Desktop&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108852058440757726?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108852058440757726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108852058440757726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108852058440757726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108852058440757726'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/06/java-desktop.html' title='Java Desktop'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108849902138285607</id><published>2004-06-29T09:45:00.000+01:00</published><updated>2004-06-29T09:50:21.383+01:00</updated><title type='text'>JVM Internals</title><content type='html'>I've been looking for blogs on JVM Internals for a while and came across &lt;a href="http://blogs.sun.com/roller/page/moazam?catname=JVM%20Internals"&gt;Moazam Rajas&lt;/a&gt; blog last night. Anyone know of any other good source on JVM Internals - apart from the &lt;a href="http://java.sun.com/products/hotspot/index.html"&gt;Sun&lt;/a&gt; site?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108849902138285607?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108849902138285607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108849902138285607' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108849902138285607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108849902138285607'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/06/jvm-internals.html' title='JVM Internals'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108828188162855710</id><published>2004-06-26T21:26:00.000+01:00</published><updated>2004-06-26T21:31:21.626+01:00</updated><title type='text'>Hibernate and Eclipse</title><content type='html'>&lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; seems to be getting a lot of &lt;a href="http://www.theserverside.com/books/review/HibernateReview.tss"&gt;press&lt;/a&gt; at the moment.  I personally haven't played with it yet, but when I do, I'm going to check out this &lt;a href="http://www.onjava.com/pub/a/onjava/2004/06/23/hibernate.html"&gt;Eclipse plug-in&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108828188162855710?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108828188162855710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108828188162855710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108828188162855710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108828188162855710'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/06/hibernate-and-eclipse.html' title='Hibernate and Eclipse'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108815011474071595</id><published>2004-06-25T08:32:00.000+01:00</published><updated>2004-06-25T08:55:14.740+01:00</updated><title type='text'>Atomicity</title><content type='html'>Concurrent Programming in Java (Doug Lea) is really a gem of a book - its been a good few years since I last picked it up.  &lt;br /&gt;&lt;br /&gt;Atomicity (page 93) is a worth while read - access and updates to the memory cells corresponding to fields of any type except &lt;em&gt;long&lt;/em&gt; or &lt;em&gt;double&lt;/em&gt; are guaranteed to be atomic.  &lt;em&gt;volatile long&lt;/em&gt; and &lt;em&gt;volatile double&lt;/em&gt; are also atomic.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;volatile&lt;/em&gt; (page 97) could possible be cheaper than synchronization, or at least no more expensive.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;synchronized&lt;/em&gt; has a double meaning: it locks permitting higher-level synchronization protocols, plus deals with the memory system (sometimes via memory barriers) to values in sync across threads.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108815011474071595?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108815011474071595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108815011474071595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108815011474071595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108815011474071595'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/06/atomicity.html' title='Atomicity'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108800001495335022</id><published>2004-06-23T15:09:00.000+01:00</published><updated>2004-06-23T15:13:34.953+01:00</updated><title type='text'>java.blogs</title><content type='html'>So, given that I am going down the Java road with this blog, I thought I would add this blog to &lt;a href="http://www.javablogs.com"&gt;java.blogs&lt;/a&gt;. Thanks to &lt;a href="http://www.feedburner.com/"&gt;FeedBurner&lt;/a&gt;, I now have an RSS feed, and am part of the java.blog community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108800001495335022?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108800001495335022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108800001495335022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108800001495335022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108800001495335022'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/06/javablogs.html' title='java.blogs'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108799512760689064</id><published>2004-06-23T13:45:00.000+01:00</published><updated>2004-06-23T13:52:07.606+01:00</updated><title type='text'>Books</title><content type='html'>I thought it was time I bought a few new Java books, since my current Java books are quite outdated.  Here's what I bought:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0596003773/qid=1084456142/sr=8-1/ref=pd_ka_1/002-6689936-5181616?v=glance&amp;s=books&amp;n=507846"&gt;Java Performance Tuning (2nd Edition)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201310090/qid=1084456247/sr=1-1/ref=sr_1_1__i1_xgl14/002-6689936-5181616?v=glance&amp;s=books"&gt;Concurrent Programming in Java(TM): Design Principles and Pattern (2nd Edition)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0596003870/qid=1085127877/sr=1-1/ref=sr_1_1/102-9279684-2806500?v=glance&amp;s=books"&gt;Java Extreme Programming Cookbook&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1884777716/qid=1085128176/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/102-9279684-2806500?v=glance&amp;s=books&amp;n=507846"&gt;Server-Based Java Programming&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I recently read &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0596005687/qid=1087995062/sr=1-1/ref=sr_1_1/102-9972719-8153725?v=glance&amp;s=books"&gt;Hard Core Java&lt;/a&gt; which wasn't a bad book - the 'final' chapter was pretty good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108799512760689064?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108799512760689064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108799512760689064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108799512760689064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108799512760689064'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/06/books.html' title='Books'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7086223.post-108532990751236730</id><published>2004-05-23T17:23:00.000+01:00</published><updated>2004-06-23T13:43:34.616+01:00</updated><title type='text'>Here we go again</title><content type='html'>This is my second blog.  My first is &lt;a href="http://weblogs.asp.net/mdavey/"&gt;here&lt;/a&gt;. Its primarily for Microsoft technology - since its hosted my Microsoft.  This blog is going to be Java centric, with maybe a little Python, C++ and Linux&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7086223-108532990751236730?l=mdavey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mdavey.blogspot.com/feeds/108532990751236730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7086223&amp;postID=108532990751236730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108532990751236730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7086223/posts/default/108532990751236730'/><link rel='alternate' type='text/html' href='http://mdavey.blogspot.com/2004/05/here-we-go-again.html' title='Here we go again'/><author><name>Matt Davey</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
