<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0cER3o4fSp7ImA9WhRUFU0.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957</id><updated>2012-01-25T16:16:46.435+02:00</updated><title>Tech Topics</title><subtitle type="html">Topics concerning technology in general, including techniques, tools, miscellaneous articles, etc.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://yassertalat.blogspot.com/" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/TechTopics" /><feedburner:info uri="techtopics" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEMASHg8fip7ImA9WhZTEk8.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-545230338753796902</id><published>2011-03-16T00:00:00.000+02:00</published><updated>2011-03-16T00:00:49.676+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-16T00:00:49.676+02:00</app:edited><title>Google Code Jam Africa and Arabia 2011</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b4RNcus1Ro6mYqcDV1tPRh1YpW0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b4RNcus1Ro6mYqcDV1tPRh1YpW0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/b4RNcus1Ro6mYqcDV1tPRh1YpW0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b4RNcus1Ro6mYqcDV1tPRh1YpW0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you're interested in getting a cool Prize or being considered for an internship at Google Zurich, then you should register and compete  in "Google Code Jam Africa and Arabia 2011"&lt;br /&gt;
&lt;br /&gt;
Location: Online&lt;br /&gt;
Schedule: &lt;a href="http://code.google.com/codejam/africa_arabia/schedule.html" target="_blank"&gt;http://code.google.com/codejam/africa_arabia/schedule.html&lt;/a&gt;&lt;br /&gt;
More details: &lt;a href="http://code.google.com/codejam/africa_arabia" target="_blank"&gt;http://code.google.com/codejam/africa_arabia&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://sites.google.com/a/gtugs.org/cairo/discussion/googlecodejamafricaandarabia2011"&gt;&lt;b&gt;Source&lt;/b&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-545230338753796902?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/as8itGwmM4c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/545230338753796902/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=545230338753796902&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/545230338753796902?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/545230338753796902?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/as8itGwmM4c/google-code-jam-africa-and-arabia-2011.html" title="Google Code Jam Africa and Arabia 2011" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2011/03/google-code-jam-africa-and-arabia-2011.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UHSHY4fCp7ImA9WhZTEUQ.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-312571126072659064</id><published>2011-03-15T16:27:00.000+02:00</published><updated>2011-03-15T16:27:19.834+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-15T16:27:19.834+02:00</app:edited><title>Business Analyst and Systems Analyst – THEY ARE DIFFERENT</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zu-mUbIQ_yd_7sQvuq_lARb5ABg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zu-mUbIQ_yd_7sQvuq_lARb5ABg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zu-mUbIQ_yd_7sQvuq_lARb5ABg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zu-mUbIQ_yd_7sQvuq_lARb5ABg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This week I received another request from a recruiter seeking a person  to fill a vacant Business Analyst (BA) position. In my role as  coordinator of the Australian Computer Society IT Contractors and  Consultants Special Interest Group I am often asked by recruiters if I  know of any people who are currently looking for work. During the dark  days of the dot com bust my answer was always yes, however today  (thankfully) my answer is often no. &lt;br /&gt;
&lt;br /&gt;
My approach when I receive a  request from a recruiter is to examine some of the details of the role.  This helps me in identifying possible candidates. During this  examination I am continually amazed about the confused nature of the BA  role. The role definition is often a confusing set of requirements which  span across technical and non technical areas.&lt;br /&gt;
It is not uncommon  for a BA role definition seeking detailed knowledge of J2EE or .Net.  Sometimes programming skills are mentioned as very desirable.  I am  often left wondering do they want a Business Analyst or a Systems  Analyst. &lt;br /&gt;
&lt;br /&gt;
The term “Systems Analyst” seems to have fallen out of  favor in the last 5 years or so, but I don’t think the requirement has  gone away. Business Analysts and System Analysts are different roles.  They perform very different functions during the software development  life cycle. Both roles are needed and both are very important.&lt;br /&gt;
&lt;br /&gt;
The  Systems Analyst role attempts to provide a bridge between the business  requirements and the technical definition of the IT solution. The  Business Analyst role is primarily about documenting and gathering the  business requirements. The important point to note that the two roles  are complimentary, you need both to make a successful IT project.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="http://it.toolbox.com/blogs/preedman/business-analyst-and-systems-analyst-they-are-different-677" style="color: blue;"&gt;Source&lt;/a&gt;&lt;/b&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-312571126072659064?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/jnWZYr-pW-A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/312571126072659064/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=312571126072659064&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/312571126072659064?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/312571126072659064?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/jnWZYr-pW-A/business-analyst-and-systems-analyst.html" title="Business Analyst and Systems Analyst – THEY ARE DIFFERENT" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2011/03/business-analyst-and-systems-analyst.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MFSHszeip7ImA9WxBWFk8.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-7664335945871805627</id><published>2010-02-08T11:30:00.000+02:00</published><updated>2010-02-08T11:30:19.582+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-08T11:30:19.582+02:00</app:edited><title>Java Developer Conference 2010</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ic7vRDwHQO3L2BTB0ycg5qO7h3c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ic7vRDwHQO3L2BTB0ycg5qO7h3c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ic7vRDwHQO3L2BTB0ycg5qO7h3c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ic7vRDwHQO3L2BTB0ycg5qO7h3c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://jdc2010.egjug.org/"&gt;Java Developer Conference 2010&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think this year's JDC will be so great and so interesting.&lt;br /&gt;&lt;br /&gt;Do not miss the chance to attend.&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-7664335945871805627?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/-KvaaDLJgSA" height="1" width="1"/&gt;</content><link rel="related" href="http://jdc2010.egjug.org/" title="Java Developer Conference 2010" /><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/7664335945871805627/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=7664335945871805627&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/7664335945871805627?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/7664335945871805627?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/-KvaaDLJgSA/java-developer-conference-2010.html" title="Java Developer Conference 2010" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2010/02/java-developer-conference-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4ERnczcSp7ImA9WxJSGU4.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-3904123784398215673</id><published>2009-05-10T08:19:00.003+02:00</published><updated>2009-05-10T08:28:27.989+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-10T08:28:27.989+02:00</app:edited><title>My Programmer Personality Type is -- PHTB</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JfV5tXMmnzSkDZnyzJWrsGdNNdU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JfV5tXMmnzSkDZnyzJWrsGdNNdU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JfV5tXMmnzSkDZnyzJWrsGdNNdU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JfV5tXMmnzSkDZnyzJWrsGdNNdU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;I tried the " Programmer Personality Type" test and following is my detailed result:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Your programmer personality type is:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:180%;"&gt;PHTB&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;You're a &lt;span style="font-size:180%;"&gt;P&lt;/span&gt;lanner.&lt;/b&gt;&lt;br /&gt;         You may be slow, but you'll usually find the best solution. If something's worth            doing, it's worth doing right.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;You like coding at a &lt;span style="font-size:180%;"&gt;H&lt;/span&gt;igh level.&lt;/b&gt;&lt;br /&gt;         The world is made up of objects and components, you should create your programs            in the same way.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;You work best in a &lt;span style="font-size:180%;"&gt;T&lt;/span&gt;eam.&lt;/b&gt;&lt;br /&gt;         A good group is better than the sum of it's parts. The only thing better than a            genius programmer is a cohesive group of genius programmers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;You are a li&lt;span style="font-size:180%;"&gt;B&lt;/span&gt;eral programmer.&lt;/b&gt;&lt;br /&gt;         Programming is a complex task and you should use white space and comments as            freely as possible to help simplify the task. We're not writing on paper anymore            so we can take up as much room as we need.&lt;br /&gt;&lt;br /&gt;To try the test yourself, go to the following link:&lt;br /&gt;&lt;br /&gt;&lt;a style="color: rgb(0, 0, 153); font-weight: bold;" href="http://www.doolwind.com/index.php?page=11"&gt;Programmer Personality Test&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Good Luck&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-3904123784398215673?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/WGswjKz4_Zs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/3904123784398215673/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=3904123784398215673&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/3904123784398215673?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/3904123784398215673?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/WGswjKz4_Zs/my-programmer-personality-type-is-phtb.html" title="My Programmer Personality Type is -- PHTB" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2009/05/my-programmer-personality-type-is-phtb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcMQH0yeip7ImA9WxRSEks.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-2532462455524807763</id><published>2008-09-13T00:17:00.004+02:00</published><updated>2008-09-13T00:54:41.392+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-13T00:54:41.392+02:00</app:edited><title>Streaming API for XML</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/O61QM-nNBjpZNh7Wv8oeGqVqW8Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O61QM-nNBjpZNh7Wv8oeGqVqW8Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/O61QM-nNBjpZNh7Wv8oeGqVqW8Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/O61QM-nNBjpZNh7Wv8oeGqVqW8Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Many people are working with web services. Thus, web services is an evolving field that always has new terchnologies and/or APIs to support and ease the way to developing and using web services.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I am introducing here a java API that is supposed to be one of those evolving APIs that help enhance the work with web services and also enhance the work of web services themselves. Actually, I have known about it from a colleague of mine and found it interesting and worth learning about. That is &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;StAX &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;which stands for "&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Streaming API for XML&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;". StAX is &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;a streaming Java-based, event-driven, pull-parsing API for reading and writing XML documents. StAX enables you to create bidrectional XML parsers that are fast, relatively easy to program, and have a light memory footprint.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;StAX is the latest API in the JAXP (Java API for XML Processing) family, and provides an alternative to SAX, DOM, TrAX, and DOM for developers looking to do high-performance stream filtering, processing, and modification, particularly with low memory and limited extensibility requirements. &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;To summarize, StAX provides a standard, bidirectional &lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;pull parser&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; interface for streaming XML processing, offering a simpler programming model than SAX and more efficient memory management than DOM. StAX enables developers to parse and modify XML streams as events, and to extend XML information models to allow application-specific additions.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Of course I will not be better in explaining the API and listing more details about it than the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://java.sun.com/javaee/5/docs/tutorial/doc/index.html" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;JEE tutorial&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; from which I have already quoted most of what I mentioned above. You can know more about the API and how to use it in &lt;/span&gt;&lt;/span&gt;&lt;a href="http://java.sun.com/javaee/5/docs/tutorial/doc/bnbdv.html" target="_blank"&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;part III, Chapter 18&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:verdana;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; of the tutorial. I wish you all really find it useful.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-2532462455524807763?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/VMZEJP12fyA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/2532462455524807763/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=2532462455524807763&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/2532462455524807763?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/2532462455524807763?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/VMZEJP12fyA/streaming-api-for-xml.html" title="Streaming API for XML" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2008/09/streaming-api-for-xml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QCSHc8fSp7ImA9WB9VFk0.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-2679458353647314830</id><published>2007-11-23T14:18:00.000+02:00</published><updated>2007-12-02T15:16:09.975+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-02T15:16:09.975+02:00</app:edited><title>SAVEPOINT Problem</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/itrJqnchy-Ywq6FEI1AxnIB9S30/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/itrJqnchy-Ywq6FEI1AxnIB9S30/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/itrJqnchy-Ywq6FEI1AxnIB9S30/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/itrJqnchy-Ywq6FEI1AxnIB9S30/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-family:verdana;"&gt;Have you used the Database keyword "SAVEPOINT" before? Have you used it within Java?&lt;br /&gt;First of all, I would like to give a brief definition and description for "SAVEPOINT".&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;"A &lt;b&gt;savepoint&lt;/b&gt; is a way of implementing subtransactions (also known as nested transactions) within a &lt;/span&gt;&lt;a title="Relational database management system" href="http://en.wikipedia.org/wiki/Relational_database_management_system" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;relational database management system&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; by indicating a point within a &lt;/span&gt;&lt;a title="Database transaction" href="http://en.wikipedia.org/wiki/Database_transaction" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;transaction&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; that can be "rolled back to" without affecting any work done in the transaction before the savepoint was created. Multiple savepoints can exist within a single transaction. Savepoints are useful for implementing complex error recovery in database applications — if an error occurs in the midst of a multiple-statement transaction, the application may be able to recover from the error (by rolling back to a savepoint) without needing to abort the entire transaction.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;A savepoint can be declared by issuing a &lt;code&gt;SAVEPOINT &lt;i&gt;name&lt;/i&gt;&lt;/code&gt; statement. All changes made after a savepoint has been declared can be undone by issuing a &lt;code&gt;ROLLBACK TO SAVEPOINT &lt;i&gt;name&lt;/i&gt;&lt;/code&gt; command. Issuing &lt;code&gt;RELEASE SAVEPOINT &lt;i&gt;name&lt;/i&gt;&lt;/code&gt; will cause the named savepoint to be discarded, but will not otherwise affect anything. Issuing the commands &lt;code&gt;ROLLBACK&lt;/code&gt; or &lt;code&gt;COMMIT&lt;/code&gt; will also discard any savepoints created since the start of the main transaction.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Savepoints are supported in some form or other in database systems like &lt;/span&gt;&lt;a title="PostgreSQL" href="http://en.wikipedia.org/wiki/PostgreSQL" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;PostgreSQL&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;, &lt;/span&gt;&lt;a title="Oracle database" href="http://en.wikipedia.org/wiki/Oracle_database" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;Oracle&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;, &lt;/span&gt;&lt;a title="Microsoft SQL Server" href="http://en.wikipedia.org/wiki/Microsoft_SQL_Server" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;Microsoft SQL Server&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;, &lt;/span&gt;&lt;a title="MySQL" href="http://en.wikipedia.org/wiki/MySQL" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;MySQL&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;, &lt;/span&gt;&lt;a title="IBM DB2" href="http://en.wikipedia.org/wiki/IBM_DB2" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;DB2&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;, and &lt;/span&gt;&lt;a title="Firebird (database server)" href="http://en.wikipedia.org/wiki/Firebird_%28database_server%29" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;Firebird&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;. Savepoints are also defined in the SQL standard."&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;This definition is quoted from &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Savepoint" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;wikipedia.&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The first time I tried SAVEPOINT on Oracle 9i Database using JDK 1.4 - namely JDK 1.4.2_04 on JDevelope 10g- was about 2 years ago. At that time, I have been encountered with a problem when I tried to use it calling the method &lt;em&gt;setSavePoint()&lt;/em&gt; in the &lt;em&gt;java.sql.Connection&lt;/em&gt; interface. I also tried it, then, using JDK 5 but do not remember the exact version and faced the same problem. The problem was that I had the run time exception "&lt;/span&gt;&lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/AbstractMethodError.html" target="_blank"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;java.lang.AbstractMethodError&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;" and from the JDK documentation I understood that this can happen in run time only if a definition of some class has incompatibly changed since the currently executing method was last compiled.&lt;br /&gt;&lt;br /&gt;I then have posted that issue on SUN forums, but unfortunately had no reply with a solution. You can find this post on the following link&lt;br /&gt;&lt;/span&gt;&lt;a href="http://forum.java.sun.com/thread.jspa?threadID=629262" target="_blank"&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;Savepoint Issue&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;And this is a sample code similar to my own:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;i&gt;String s = "jdbc:oracle:thin:@" + strHostName + ":" + strPortNo + ":" + strDBName;&lt;br /&gt;Class.forName(strDriverName);&lt;br /&gt;Connection connection = DriverManager.getConnection(s,strUserName,strPassword);&lt;br /&gt;connection.setAutoCommit(false);&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;Savepoint save =connection.setSavepoint();&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Anyway, the only solution I have done was a little workaround. I just used the "SAVEPOINT" of Oracle Engine itself. All what I have done was something like the follwoing:&lt;br /&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;Class.forName(strDriverName);&lt;br /&gt;Connection connection = DriverManager.getConnection(s,strUserName,strPassword);&lt;br /&gt;connection.setAutoCommit(false);&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;Statement stmt = connection.createStatement();&lt;br /&gt;for(int i=o; i&lt; someArray.length ; i++)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-style: italic;"&gt;.&lt;br /&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;stmt&lt;/span&gt;&lt;/em&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-style: italic;"&gt;.execute("SAVEPOINT point"+i);&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-style: italic;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;And then when I wanted to rollback to a specific savepoint I wrote code similar to&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-style: italic;"&gt;stmt.execute("ROLLBACK to point"+2);&lt;br /&gt;&lt;/span&gt;This can rollback to the savepoint named "point2". &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Cooool. It worked just fine for me.&lt;br /&gt;&lt;br /&gt;To be frank, I have not tried to work with SAVEPOINT again lately, maybe because I did not encounter a business case that let me try it again. Also I have never tried it with JDK 6 or any other Oracle JDBC Driver, which I think was the main reason for the problem. But I am eager to know if anyone has recently worked with it, on what JDK version, and whether it has worked well from within the Java code and invocation for the &lt;em&gt;setSavePoint()&lt;/em&gt; method of the &lt;em&gt;java.sql.Connection&lt;/em&gt; interface and with what Oracle version and Oracle JDBC Driver version. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Waiting for your comments and experience conerning this matter.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-2679458353647314830?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/Y_aX0xVr0P0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/2679458353647314830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=2679458353647314830&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/2679458353647314830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/2679458353647314830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/Y_aX0xVr0P0/savepoint-problem-with-jdk-14.html" title="SAVEPOINT Problem" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>1</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2007/11/savepoint-problem-with-jdk-14.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEGRnY5eSp7ImA9WB9WFUw.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-2524060433426771675</id><published>2007-11-19T23:45:00.000+02:00</published><updated>2007-11-20T00:50:27.821+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-20T00:50:27.821+02:00</app:edited><title>Java Enhanced For Loops</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jwhQzZ19Rwi-5O5u6Mjs6FGo_YQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jwhQzZ19Rwi-5O5u6Mjs6FGo_YQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jwhQzZ19Rwi-5O5u6Mjs6FGo_YQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jwhQzZ19Rwi-5O5u6Mjs6FGo_YQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;font-size:100%;"  &gt;Today, I am going to introduce one of the Java Technical Tips that I have previously received from sun on my e-mail. I wanted to share it with you . I hope every one who reads this tip will get benefit from.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;The author of this tip is John Zukowski, president and principal consultant of JZ Ventures, Inc.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-family:verdana;" &gt;This tip was developed using Java SE 6.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 255, 255); font-weight: bold;font-family:Arial,Helvetica,sans-serif;font-size:100%;"  &gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Using Enhanced For-Loops with Your Classes&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; The enhanced for-loop is a popular feature introduced with the Java SE platform in version 5.0. Its simple structure allows one to simplify code by presenting for-loops that visit each element of an array/collection without explicitly expressing how one goes from element to element. &lt;/span&gt;&lt;/p&gt; &lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; Because the old style of coding didn't become invalid with the new for-loop syntax, you don't have to use an enhanced for-loop when visiting each element of an array/collection. However, with the new style, one's code would typically change from something like the following: &lt;/span&gt;&lt;/p&gt; &lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;code&gt;for (int i=0; i&lt;array.length;&gt;&lt;br /&gt;&lt;code&gt;    System.out.println("Element: " + array[i]);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;to the newer form:&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;for (String element : array) {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    System.out.println("Element: " + element);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;&lt;/array.length;&gt;&lt;/code&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; Assuming "array" is defined to be an array of &lt;code&gt;String&lt;/code&gt; objects, each element is assigned to the element variable as it loops through the array. These basics of the enhanced for-loop were covered in an earlier Tech Tip: &lt;a href="http://communications1.sun.com/r/c/r?2.1.3J1.2Vc.12Tq32.C4s9cQ..H.EhM8.1nTk.DTNKEYJ0" target="_blank"&gt;The Enhanced For Loop&lt;/a&gt;, from May 5, 2005.&lt;/span&gt;&lt;/p&gt; &lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; If you have a class called &lt;code&gt;Colony&lt;/code&gt; which contains a group of &lt;code&gt;Penguin&lt;/code&gt; objects, without doing anything extra to get the enhanced for-loop to work, one way you would loop through each penguin element would be to return an &lt;code&gt;Iterator&lt;/code&gt; and iterate through the colony. Unfortunately, the enhanced for-loop does not work with &lt;code&gt;Iterator&lt;/code&gt; , so the following won't even compile: &lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;// Does not compile&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;import java.util.*;&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;public class BadColony {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  static class Penguin {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    String name;&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    Penguin(String name) {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;      this.name = name;&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    }&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    public String toString() {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;      return "Penguin{" + name&lt;wbr&gt; + "}";&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    }&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  Set&lt;penguin&gt; set = new&lt;wbr&gt; HashSet&lt;penguin&gt;();&lt;/penguin&gt;&lt;/penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  public void addPenguin&lt;wbr&gt;(Penguin p) {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    set.add(p);&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  public Iterator&lt;penguin&gt;&lt;wbr&gt; getPenguins() {&lt;/penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    return set.iterator();&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  public static void main&lt;wbr&gt;(String args[]) {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    Colony colony = new Colony&lt;wbr&gt;();&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    Penguin opus = new Penguin&lt;wbr&gt;("Opus");&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    Penguin chilly = new&lt;wbr&gt; Penguin("Chilly Willy");&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    Penguin mumble = new&lt;wbr&gt; Penguin("Mumble");&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    Penguin emperor = new&lt;wbr&gt; Penguin("Emperor");&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    colony.addPenguin(opus);&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    colony.addPenguin(chilly);&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    colony.addPenguin(mumble);&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    colony.addPenguin(emperor);&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    Iterator&lt;penguin&gt; it = colony.getPenguins();&lt;/penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;// The bad line of code:&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    for (Penguin p : it) {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;      System.out.println(p);&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    }&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;}&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; You cannot just pass an &lt;code&gt;Iterator&lt;/code&gt; into the enhanced for-loop. The 2nd line of the following will generate a compilation error: &lt;/span&gt;&lt;/p&gt; &lt;span style="font-size:100%;"&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    Iterator&lt;penguin&gt; it = colony.getPenguins();&lt;/penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    for (Penguin p : it) {&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;font-size:100%;"  &gt;  The error:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;BadColony.java:36: foreach not applicable to&lt;wbr&gt; expression type&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    for (Penguin p : it) {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;                     ^&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;1 error&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; In order to be able to use your class with an enhanced for-loop, it does need an &lt;code&gt;Iterator&lt;/code&gt; , but that &lt;code&gt;Iterator&lt;/code&gt; must be provided via the &lt;code&gt;Iterable&lt;/code&gt; interface: &lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;public interface java.lang.Iterable {&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    public java.util.Iterator iterator();&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;}&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; Actually, to be more correct, you can use a generic &lt;code&gt;T&lt;/code&gt; , allowing the enhanced for-loop to avoid casting, returning the designated generic type, instead of just a plain old &lt;code&gt;Object&lt;/code&gt; . &lt;/span&gt;&lt;/p&gt; &lt;span style="font-size:100%;"&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;public interface java.lang.Iterable&lt;t&gt; {&lt;/t&gt;&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;    public java.util.Iterator&lt;t&gt; iterator();&lt;/t&gt;&lt;/code&gt;&lt;br /&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;}&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; It is this &lt;code&gt;Iterable&lt;/code&gt; object which is then provided to the enhanced for-loop. By making the &lt;code&gt;Colony&lt;/code&gt; class implement &lt;code&gt;Iterable&lt;/code&gt; , and having its new &lt;code&gt;iterator()&lt;/code&gt;&lt;code&gt;Iterator&lt;/code&gt; that &lt;code&gt;getPenguins()&lt;/code&gt; provides, you'll be able to loop through the penguins in the colony via an enhanced for-loop. &lt;/span&gt; method return the &lt;/p&gt; &lt;p  style="color: rgb(0, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;By adding the proper implements clause:&lt;/span&gt;&lt;/p&gt; &lt;span style="font-size:100%;"&gt;&lt;code style="color: rgb(0, 0, 0); font-family: verdana;"&gt;public class Colony implements&lt;wbr&gt; Iterable&lt;colony.penguin&gt; {&lt;/colony.penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;font-size:100%;"  &gt;  You then get your enhanced for&lt;/span&gt;&lt;table  style="color: rgb(0, 0, 0);font-family:verdana;" align="center" border="0" cellpadding="0" cellspacing="0" width="580"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td  style="font-size:12px;"&gt;&lt;wbr&gt;&lt;span style="font-size:100%;"&gt;-loop for the colony:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;    for (Penguin p : colony) {&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here's the updated &lt;code&gt;Colony&lt;/code&gt;  class with the corrected code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;import java.util.*;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;public class Colony implements&lt;wbr&gt; Iterable&lt;colony.penguin&gt; {&lt;/colony.penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  static class Penguin {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    String name;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    Penguin(String name) {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;      this.name = name;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    }&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    public String toString() {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;      return "Penguin{" + name&lt;wbr&gt; + "}";&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    }&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  Set&lt;penguin&gt; set = new&lt;wbr&gt; HashSet&lt;penguin&gt;();&lt;/penguin&gt;&lt;/penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  public void addPenguin&lt;wbr&gt;(Penguin p) {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    set.add(p);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  public Iterator&lt;penguin&gt;&lt;wbr&gt; getPenguins() {&lt;/penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    return set.iterator();&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  public Iterator&lt;penguin&gt;&lt;wbr&gt; iterator() {&lt;/penguin&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    return getPenguins();&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  public static void main&lt;wbr&gt;(String args[]) {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    Colony colony = new Colony&lt;wbr&gt;();&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    Penguin opus = new Penguin&lt;wbr&gt;("Opus");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    Penguin chilly = new&lt;wbr&gt; Penguin("Chilly Willy");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    Penguin mumble = new&lt;wbr&gt; Penguin("Mumble");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    Penguin emperor = new&lt;wbr&gt; Penguin("Emperor");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    colony.addPenguin(opus);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    colony.addPenguin(chilly);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    colony.addPenguin(mumble);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    colony.addPenguin(emperor);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    for (Penguin p : colony) {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;      System.out.println(p);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;    }&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  }&lt;/code&gt;&lt;br /&gt;&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Running the code produces the&lt;/span&gt;&lt;wbr&gt;&lt;span style="font-size:100%;"&gt; following output:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  &gt; java Colony&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  Penguin{Chilly Willy}&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  Penguin{Mumble}&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  Penguin{Opus}&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  Penguin{Emperor}&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; Keep in mind that the individual penguins are internally kept in&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; a Set type collection so the returned order doesn't necessarily match&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;the insertion order, which in this case it doesn't. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt; Remember to genericize the implements clause for the class&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;"&lt;code&gt;implements Iterable&lt;t&gt;&lt;/t&gt;&lt;/code&gt; " and not just say "&lt;code&gt;implements Iterable&lt;/code&gt; ".&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;With the latter, the enhanced for-loop will only return an &lt;code&gt;Object&lt;/code&gt; for&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt; each element. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt; For more information on the enhanced for-loop, please see the&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://communications1.sun.com/r/c/r?2.1.3J1.2Vc.12Tq32.C4s9cQ..H.EhMA.1nTk.DUGUEYS0" target="_blank"&gt; Java Programming Language guide from JDK 1.5&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-2524060433426771675?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/HZ2O3WT90Io" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/2524060433426771675/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=2524060433426771675&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/2524060433426771675?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/2524060433426771675?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/HZ2O3WT90Io/java-enhanced-for-loops.html" title="Java Enhanced For Loops" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2007/11/java-enhanced-for-loops.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYNQXoyfSp7ImA9WB9WE04.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-3706175594818004407</id><published>2007-11-17T22:52:00.000+02:00</published><updated>2007-11-17T22:59:50.495+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-17T22:59:50.495+02:00</app:edited><title>ThreadLocal</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_EdJJwYKjuIA-LU99LjrFaeq4HA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_EdJJwYKjuIA-LU99LjrFaeq4HA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_EdJJwYKjuIA-LU99LjrFaeq4HA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_EdJJwYKjuIA-LU99LjrFaeq4HA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Writing thread-safe classes is difficult. It requires a careful analysis of not only the conditions under which variables will be read or written, but also of how the class might be used by other classes. Sometimes, it is very difficult to make a class thread-safe without compromising its functionality, ease of use, or performance. Some classes retain state information from one method invocation to the next, and it is difficult to make such classes thread-safe in any practical way.&lt;br /&gt;&lt;br /&gt;It may be easier to manage the use of a non-thread-safe class than to try and make the class thread-safe. A class that is not thread-safe can often be used safely in a multithreaded program as long as you ensure that instances of that class used by one thread are not used by other threads. For example, the JDBC Connection class is not thread-safe -- two threads cannot safely share a Connection at a fine level of granularity -- but if each thread had its own Connection, then multiple threads can safely perform database operations simultaneously.&lt;br /&gt;&lt;br /&gt;It is certainly possible to maintain a separate JDBC connection (or any other object) for each thread without the use of &lt;a style="color: rgb(51, 51, 255); font-weight: bold;" href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ThreadLocal.html" target="_blank"&gt;ThreadLocal&lt;/a&gt;; the Thread API gives us all the tools we need to associate objects with threads. However, the &lt;a style="font-weight: bold; color: rgb(51, 51, 255);" href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ThreadLocal.html" target="_blank"&gt;ThreadLocal&lt;/a&gt; class makes it much easier for us to manage the process of associating a thread with its per-thread data.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; color: rgb(51, 51, 255);" href="http://www.ibm.com/developerworks/java/library/j-threads3.html" target="_blank"&gt;Read More&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-3706175594818004407?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/IBDWrS1bN9Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/3706175594818004407/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=3706175594818004407&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/3706175594818004407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/3706175594818004407?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/IBDWrS1bN9Q/threadlocal.html" title="ThreadLocal" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2007/11/threadlocal.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cBSHsyeyp7ImA9WB9XFU8.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-2096020606715797735</id><published>2007-11-08T15:11:00.000+02:00</published><updated>2007-11-08T15:37:39.593+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-08T15:37:39.593+02:00</app:edited><title>Join the Interoperability Chat — LIVE November 28</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jGnQ4U6oV8hzZP6NRHvC6H6LpfQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jGnQ4U6oV8hzZP6NRHvC6H6LpfQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jGnQ4U6oV8hzZP6NRHvC6H6LpfQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jGnQ4U6oV8hzZP6NRHvC6H6LpfQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 0);font-family:Arial,Helvetica,sans-serif;font-size:85%;"  &gt;    Find out how to tighten integration of your enterprise systems with &lt;a href="http://communications1.sun.com/r/c/r?2.1.3J1.2U2.12Tq32.C5pkt2..H.EoiS.1q9A.aT15YXNzZXJ0YWxhdEBnbWFpbC5jb20%5fBOPGHLU0" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;&lt;strong&gt; &lt;span style="color: rgb(53, 85, 107);font-family:Arial,Helvetica,sans-serif;" &gt;new interoperability between Sun and Microsoft technologies&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt; at this live Web chat with top Sun engineers.&lt;br /&gt;&lt;br /&gt;It's a great opportunity to explore results from three years of engineering partnership between Sun and Microsoft. Plus — learn about Sun/Intel collaboration and new Sun x64 systems with Intel Xeon CPUs.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(53, 85, 107);font-family:Arial,Helvetica,sans-serif;font-size:85%;"  &gt; &lt;strong&gt;Q&amp;amp;A Chat on Sun/Microsoft Interoperability&lt;/strong&gt;&lt;/span&gt;   &lt;table border="0" cellpadding="0" cellspacing="0" width="1"&gt;  &lt;tbody&gt;&lt;tr&gt;  &lt;td&gt; &lt;span style="font-size:85%;"&gt;&lt;img alt="" src="http://a676.g.akamaitech.net/f/676/773/60m/images.delivery.net/cm50content/18570/09008101808de9dd/a.gif" border="0" height="10" width="1" /&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;span style="color: rgb(0, 0, 0);font-family:Arial,Helvetica,sans-serif;font-size:85%;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Wednesday, November 28&lt;/strong&gt;&lt;br /&gt;1530 London&lt;br /&gt;1630 Paris&lt;br /&gt;1730 Athens&lt;br /&gt;&lt;/span&gt;   &lt;span style="color: rgb(231, 111, 0);font-family:Arial,Helvetica,sans-serif;font-size:85%;"  &gt;»&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;a href="http://communications1.sun.com/r/c/r?2.1.3J1.2U2.12Tq32.C5pkt2..H.EoiU.1q9A.DRDaEXX0" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;&lt;span style="color: rgb(53, 85, 107);font-family:Arial,Helvetica,sans-serif;" &gt;Check time zones&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nettalk.sun.com/bhive/t/1000/chat_details.jsp?content_id=1345&amp;cid=e4397&amp;mid=1115111618&amp;pid=475722" target="_blank"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Register for chat&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-2096020606715797735?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/W6k6Wxv-jKU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/2096020606715797735/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=2096020606715797735&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/2096020606715797735?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/2096020606715797735?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/W6k6Wxv-jKU/join-interoperability-chat-live.html" title="Join the Interoperability Chat — LIVE November 28" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2007/11/join-interoperability-chat-live.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQFQX8_eyp7ImA9WB9XE0Q.&quot;"><id>tag:blogger.com,1999:blog-7817310760952625957.post-3593648660680190448</id><published>2007-01-16T09:56:00.000+02:00</published><updated>2007-11-07T01:05:10.143+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-07T01:05:10.143+02:00</app:edited><title>My First Blog</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RSA-hg4Gi7CnNMmJzS_OVLpfEXI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RSA-hg4Gi7CnNMmJzS_OVLpfEXI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RSA-hg4Gi7CnNMmJzS_OVLpfEXI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RSA-hg4Gi7CnNMmJzS_OVLpfEXI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;&lt;span style="font-family:verdana;"&gt;My first blog, for those who have not seen it before, was not actually technical. It was mainly about an internet service that I felt we can benefit from, but actually I did not get any benefit from. Maybe I used the service in a wrong way or something. Anyway, execuse me that I am modifying my first blog now trying to make it useful for any technical person who is interested in java development.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I will start this time with some latest news about Sun Microsystems. This is mainly important for the Arab and Middle East people. My main source of this news is an email from the &lt;/span&gt;&lt;a style="font-family: verdana; font-weight: bold;" href="http://www.egjug.org/"&gt;EGJUG&lt;/a&gt; (Egypt Java Users Group) leader, Ahmed Hashim.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" class="q" id="q_11614434e62da249_0" &gt;"Sun Microsystems is going to make a set of technical days in the Middle East, starting with Dubai-UAE then Cairo-Egypt.&lt;br /&gt;&lt;br /&gt;They will make a technical day in Dubai on 19 November 2007 about Netbeans IDE ,Glassfish application server and J2ME. Check the website for more information&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);" class="q" id="q_11614434e62da249_0"&gt; &lt;a href="http://www.cpilive.net/nl/2007/uadf/index.aspx" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; http://www.cpilive.net/nl/2007&lt;wbr&gt;/uadf/index.aspx&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;&lt;span style="font-weight: bold;font-family:verdana;" class="q" id="q_11614434e62da249_0" &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Hope as many Arabs and Middle Easterns benefit as much as possible from such an event.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Yasser Talat
Senior Software Engineer
+20106153556
webmaster@yassertalat.4t.com&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7817310760952625957-3593648660680190448?l=yassertalat.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechTopics/~4/eqvJoq71PLQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yassertalat.blogspot.com/feeds/3593648660680190448/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7817310760952625957&amp;postID=3593648660680190448&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/3593648660680190448?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7817310760952625957/posts/default/3593648660680190448?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechTopics/~3/eqvJoq71PLQ/my-first-blog.html" title="My First Blog" /><author><name>Yasser Talat</name><uri>http://www.blogger.com/profile/18140246754055113536</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://bp1.blogger.com/_RmcGyFOQSI8/SDbjus3fBxI/AAAAAAAAAAM/lvyyc9mf1iI/S220/DSC00288.JPG" /></author><thr:total>2</thr:total><feedburner:origLink>http://yassertalat.blogspot.com/2007/01/my-first-blog.html</feedburner:origLink></entry></feed>

