<?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-4822017179543114046</id><updated>2012-02-16T13:57:14.456+05:30</updated><category term='Innovation'/><category term='JPA'/><category term='Internet'/><category term='JLS'/><category term='Prime Numbers'/><category term='Hibernate'/><category term='Java Puzzlers'/><category term='IMAP'/><category term='About blog'/><category term='Java Persistence'/><category term='SCJP'/><category term='Sieve of Eratosthenes'/><category term='Poem'/><category term='Java'/><category term='Matrices'/><category term='Google'/><category term='Web Workers'/><category term='POP'/><category term='Weblog'/><category term='EJB 3.0'/><category term='Life'/><category term='Failure'/><category term='TCP'/><category term='Programming Questions'/><category term='ORM'/><category term='Effective Java'/><category term='IP'/><category term='code'/><category term='Persistence'/><category term='LOTR'/><category term='HTML5'/><title type='text'>"What I Read Is What You Get"</title><subtitle type='html'>"I Read, I Get, I Share, You Read, You Get"
It doesn't get any simpler...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-6021893379734382065</id><published>2010-08-09T09:18:00.000+05:30</published><updated>2010-08-09T09:29:41.656+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Failure'/><category scheme='http://www.blogger.com/atom/ns#' term='Innovation'/><title type='text'>Productive Innovation @ Google Stalled?</title><content type='html'>&lt;p&gt;Google may say “&lt;a href="http://googlesystem.blogspot.com/2010/08/failure-is-always-option-at-google.html"&gt;Failure is always an option at Google&lt;/a&gt;”, but from the recent developments and the kind of closures of businesses/developments coming out of Google, looks like its got a tough road ahead for not only just innovating, but getting profits out of it too! Closure of online Google Nexus store, stoppage of development of Wave, a weak attempt to tackle Twitter with low intensity ‘Buzz’, on-course project to challenge the social networking giants ‘Facebook’ with already a fading app ‘Orkut’ in arsenal! All these don’t look like Google, the one who still reigns in the domain of search! Maybe its because of ever-growing competitors or delay by Google to enter into a particular field. It may be doing huge profits in Search field, but from technology and innovation perspective, it long time due for Google to come out with something big, eye-catching and off-course profitable! Can look out for Google Apps and Android!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-6021893379734382065?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/6021893379734382065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/08/productive-innovation-google-stalled.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/6021893379734382065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/6021893379734382065'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/08/productive-innovation-google-stalled.html' title='Productive Innovation @ Google Stalled?'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-8101493378580113272</id><published>2010-08-04T14:55:00.000+05:30</published><updated>2010-08-04T14:55:17.124+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><title type='text'>Never such a piece of code in life!</title><content type='html'>while (life) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;...&lt;br /&gt;&amp;nbsp;&lt;b&gt;&amp;nbsp; &amp;nbsp;if(!b.exists())&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;self.exit();&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;...&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-8101493378580113272?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/8101493378580113272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/08/never-such-piece-of-code-in-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/8101493378580113272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/8101493378580113272'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/08/never-such-piece-of-code-in-life.html' title='Never such a piece of code in life!'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-6270912344950703222</id><published>2010-04-05T12:30:00.002+05:30</published><updated>2010-07-14T19:35:10.532+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sieve of Eratosthenes'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Prime Numbers'/><title type='text'>The Sieve to detect Primes</title><content type='html'>&lt;p&gt;Literally, Sieve is “A utensil for separating the finer and coarser parts of a pulverized or granulated substance from each other”. Eratosthenes, a Greek Mathematician, came up with such a sieve to filter out Prime numbers from a given set of integers. The process/algorithm came to be known as Sieve of Eratosthenes!&lt;br&gt;The Algo is pretty simple, start with number 2, cross all its multiples (till MAX_NUMBER), proceed with the next number 3 and cross all its multiples too and so on. The remaining numbers in the set will be primes. The algo itself brings in some optimizations!&lt;br&gt;&lt;br&gt;1. All even numbers get cancelled in first iteration for 2. Next number (3) onwards, start directly checking for multiples starting with the square of the number. &lt;br&gt;2. The multiples need to be crossed for numbers &amp;lt; square root (MAX_NUMBER), because rest of the multiples would have got crossed earlier itself. &lt;br&gt;&lt;br&gt;The code in Java for the Sieve of Eratosthenes is as follows:&lt;/p&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="border-right: #cecece 1px solid; padding-right: 5px; border-top: #cecece 1px solid; padding-left: 5px; min-height: 40px; padding-bottom: 5px; overflow: auto; border-left: #cecece 1px solid; width: 650px; padding-top: 5px; border-bottom: #cecece 1px solid; background-color: #fbfbfb"&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; SieveEratosthenes {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; MAX_NUMBER = 1000;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; main(String[] args) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;boolean&lt;/span&gt;[] arr = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;boolean&lt;/span&gt;[MAX_NUMBER];&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i, j;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #008000"&gt;//Initialize the Boolean array to TRUE (i.e. Prime)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (i = 0; i &amp;lt; arr.length; i++)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;      arr[i] = Boolean.TRUE;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #008000"&gt;//Finish with all divisors of 2 to optimize code for the remaining&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (i = 2; 2 * i &amp;lt; MAX_NUMBER; i++)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;      arr[2 * i] = Boolean.FALSE;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #008000"&gt;//Only odd numbers need to be considered in both loops, since&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;span style="color: #008000"&gt;//   Odd * Even = Even &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #008000"&gt;//And all evens are covered as multiples of 2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (i = 3; i &amp;lt; (Math.sqrt(MAX_NUMBER)); i += 2) {      &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;      &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (j = i; j * i &amp;lt; MAX_NUMBER; j += 2)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;        arr[j * i] = Boolean.FALSE;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;    System.out.println("&lt;span style="color: #8b0000"&gt;The primes below &lt;/span&gt;" + MAX_NUMBER + "&lt;span style="color: #8b0000"&gt; are : &lt;/span&gt;");&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; count = 0;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;    &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (i = 2; i &amp;lt; arr.length; i++)&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;      &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (arr[i]) {&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;        System.out.println(i);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;        count++;        &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;      }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;    System.out.println("&lt;span style="color: #8b0000"&gt;The total no of primes till &lt;/span&gt;" + MAX_NUMBER +  "&lt;span style="color: #8b0000"&gt; are : &lt;/span&gt;" + count);&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #fbfbfb"&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; background-color: #ffffff"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-6270912344950703222?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/6270912344950703222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/04/sieve-to-detect-primes.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/6270912344950703222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/6270912344950703222'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/04/sieve-to-detect-primes.html' title='The Sieve to detect Primes'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-66335787981044102</id><published>2010-03-28T19:12:00.000+05:30</published><updated>2010-03-28T19:12:12.434+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCJP'/><category scheme='http://www.blogger.com/atom/ns#' term='JLS'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Effective Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Puzzlers'/><title type='text'>Java Books</title><content type='html'>4 Books you should read if you &lt;i&gt;adore &lt;/i&gt;Java!&lt;br /&gt;&lt;br /&gt;1. &lt;i&gt;JLS &lt;/i&gt;: Java Language Specification, the blue-print of Java. This book gives an in-depth understanding of Java architecture.&lt;br /&gt;2. &lt;i&gt;SCJP &lt;/i&gt;: Almost all concepts cleared, from programming point of view.&lt;br /&gt;3. &lt;i&gt;Effective Java &lt;/i&gt;and &lt;i&gt;Java Puzzlers&lt;/i&gt; : These two are mind-boggling books. If you feel you are a Java-Guru, do give these a try and verify it out for yourself! :)&lt;br /&gt;&lt;br /&gt;Please feel free to add-on and share any other master-pieces!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-66335787981044102?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/66335787981044102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/03/java-books.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/66335787981044102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/66335787981044102'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/03/java-books.html' title='Java Books'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-3841887469329312043</id><published>2010-03-28T19:05:00.001+05:30</published><updated>2010-04-05T15:01:53.653+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Puzzlers'/><title type='text'>Java Puzzlers</title><content type='html'>Borrowed from Java Puzzlers. An awesome book BTW!!&lt;br /&gt;Guess the output of the two programs below:&lt;br /&gt;&lt;br /&gt;1.&lt;br /&gt;public class SetTest {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static final String[] URLNAMES = &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"http://javapuzzlers.com",&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"http://apache2-snort.skybar.dreamhost.com",&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"http://www.google.com",&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"http://javapuzzlers.com",&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"http://findbugs.sourceforge.net",&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"http://cs.umd.edu"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String[] args) throws MalformedURLException {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set&lt;url&gt; favourites = new HashSet&lt;url&gt;();&lt;/url&gt;&lt;/url&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (String names : URLNAMES) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;favourites.add(new URL(names));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println("Size is : " + favourites.size());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;public class Elvis {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static final Elvis INSTANCE = new Elvis();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private final int beltSize;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final int CURRENT_YEAR =&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Calendar.getInstance().get(Calendar.YEAR);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Elvis() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;beltSize = CURRENT_YEAR - 1930;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public int beltSize() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return beltSize;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println("Elvis wears a size " +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;INSTANCE.beltSize() + " belt.");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Output 1:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Prints 4, if connected to internet and 5 else!! :) Checks for host names and in turn IP addresses for the site names entered as URL objects. Apparently, first and second strings resolve to same IP address. (Haven't verified it though, trusting the author!). URL &lt;i&gt;equal&lt;/i&gt;() and &lt;i&gt;hashcode&lt;/i&gt;() methods are broken, so, instead use URI objects and &lt;i&gt;URI.create()&lt;/i&gt; method to create objects!&lt;/div&gt;&lt;br /&gt;Output 2:&lt;br /&gt;-&lt;i&gt;1930&lt;/i&gt;&lt;br /&gt;Initializing sequence when an object is created. First, static fields get default values, so &lt;i&gt;INSTANCE &lt;/i&gt;defaulted to null and &lt;i&gt;CURRENT_YEAR &lt;/i&gt;defaulted to 0. Then static initializers get called, accordingly, new Elvis() gets executed and &lt;i&gt;beltsize &lt;/i&gt;gets initialized to 0-1930 = -1930!!!! Hence, the output..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-3841887469329312043?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/3841887469329312043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/03/java-puzzlers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/3841887469329312043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/3841887469329312043'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/03/java-puzzlers.html' title='Java Puzzlers'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-3775937720205705886</id><published>2010-02-08T14:43:00.000+05:30</published><updated>2010-02-08T14:43:46.879+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML5'/><category scheme='http://www.blogger.com/atom/ns#' term='Internet'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Workers'/><title type='text'>Wonders of HTML5</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;With the up-coming of HTML5 (Web Applications 1.0), lots of technologies and browsers specializations are expected to suffer setback since it makes the webpage more "lively" as compared to the HTML 4 specification. Went through an introductory &lt;/span&gt;&lt;a href="http://vimeo.com/6691519"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;talk&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;&amp;nbsp;by Brad Neuberg (Developer Advocate @ Google) on HTML5 and its key features. I was curious about the hype on HTML5 and in the quest to get a jist of the thing, went on an exploration spree. The key features portrayed in the talk were :&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;1.&lt;b&gt; Canvas/SVG:&lt;/b&gt; Interactive drawing on a web-page is being provided through the SVG tags and Canvas API's (javascript). Interesting features that enables dynamic modification of attributes of a graphics element on the screen are provided by the API.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;2. &lt;b&gt;Video: &lt;/b&gt;This is a feature that may affect the usage of frameworks that provide for Rich Internet Applications (like MS Silverlight, Sun JavaFX, Adobe Flash, etc.) HTML5 will have tags to embed the video along with provision for controls to play/pause/play-next/play-previous/volume/size, etc. Also, attractive javascript events can be defined on the video through its ID. No need for third party RIA players to play the videos!&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;3. &lt;b&gt;GeoLocation: &lt;/b&gt;API's have been provided to get the location of the web-user and it fetches its data from GPS, IP as well as Mobile providers (Cell phone). Useful in Social Apps, Gaming, etc. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;4. &lt;b&gt;App Cache:&lt;/b&gt; Create an application manifest to save the state of a web application onto local machine and later load the app from the cache by invoking an API, all through HTML and javascript, without using third party storage API's like Google Gears, etc. Primarily this assists offline usage of files. This may mean lowering of market value for third party extensions. Google, though already has started providing support for HTML5 and porting apps to support this revolutionary language.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;5. &lt;b&gt;Web Workers:&lt;/b&gt; This is something, which will further improvise on what Chrome excels in. The latter spawns a separate process to serve each web request in a tab/browser window. This was to remove the situation wherein traditional browsers hang executing a java-script in background. HTML5 on other hand, supports for execution of javascript in separate thread, so that they don't affect the state of browser. But, these threads won't have access to the elements on page from which they were spawned. They can carry on with function execution and return the result back to the invoking page. This serves to remove the overhead due to separate process creation for each webpage request, and also removes the hanging of browser window due to on-going javascript execution.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif;"&gt;Though HTML5 is still in draft phase, the support for the tags and API's are already available in the latest releases of Chrome, Firefox, Opera and IE! Looks revolutionary, apps have to be re-written to make HTML self-sufficient to render pages and remove dependency on third-party apps to render elements.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-3775937720205705886?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/3775937720205705886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/02/wonders-of-html5.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/3775937720205705886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/3775937720205705886'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/02/wonders-of-html5.html' title='Wonders of HTML5'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-7838090174620910004</id><published>2010-01-21T22:22:00.008+05:30</published><updated>2010-01-21T22:36:35.220+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matrices'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming Questions'/><title type='text'>The World is a Matrix</title><content type='html'>&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;Some interesting programming questions related to Matrices.&amp;nbsp;&lt;span style="font-family: 'Trebuchet MS';"&gt;Firstly, get to know what’s a matrix, inverse of matrix, transpose of matrix.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;&lt;div style="margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .5in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; tab-stops: list .5in; text-indent: -.25in;"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;1.&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Input is a matrix of size n x m of 0's and 1's. eg:&lt;br /&gt;1 0 0 1&lt;br /&gt;0 0 1 0&lt;br /&gt;0 0 0 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .5in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;If a location has 1; make all the elements of that row and column = 1. eg&lt;br /&gt;1 1 1 1&lt;br /&gt;1 1 1 1&lt;br /&gt;1 0 1 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .5in; margin-right: 0in; margin-top: 0in;"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Solution should be with Time complexity = O(n*m) and space complexity = O(1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 1.0in;"&gt;&lt;i&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;&lt;/span&gt;use the first row to record columns needed to be set as all 1's&lt;br /&gt;use the first column to record rows needed to be set as all 1's&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 1.0in;"&gt;&lt;i&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;1. scan through the matrix, if (a[x][y]==1) {a[0][y]=1; a[x][0]=1}; time O(m*n)&lt;br /&gt;2. scan through the matrix again, for a[x][y], if (a[0][y]==1 || a[x][0]==1) a[x][y] = 1; time O(m*n)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-left: 1.0in;"&gt;&lt;i&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;overall time O(m*n)&lt;br /&gt;auxiliary space O(1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol start="2" style="margin-top: 0in;" type="1"&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;&lt;/span&gt;Imagine      there is a square matrix with n x n cells. Each cell is either filled with      a black pixel or a white pixel. Design an algorithm to find the maximum      sub-square such that all four borders are filled with black pixel.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Given      an n X n array with rows sorted and cols sorted; find the number of      negative elements in most efficient way&lt;/span&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Each      cell of an N x N grid is either a 0 or a 1. You are given two such N x N      grids, the initial grid and the final grid. There is a button against each      row and each column of the initial N x N grid. Pressing a row-button      toggles the values of all the cells in that row, and pressing a      column-button toggles the values of all the cells in that column. You are      required to find the minimum number of button presses required to      transform the grid from the initial configuration to the final      configuration, and the buttons that must be pressed in order to make this      transformation&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;You      are given a two dimensional array (say 5*5) in which all the rows as well      as the columns are sorted. Describe an efficient algorithm to discover if      an element is present or not.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Give      the algorithm to multiply large matrix on system with very less memory which      can not hold even one column or one row.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Write      a program to rotate a matrix by 90 degrees&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Write      a code to calculate kth power of a matrix of size NxN. You can assume that      matrix multiplication is O(n^3).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Print a given matrix in a &lt;a href="http://www.technicalinterviewquestions.net/2009/03/print-2d-array-matrix-spiral-order.html"&gt;&lt;span style="color: white;"&gt;spiral      manner&lt;/span&gt;&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;Suppose you have a NxN matrix of positive and negative integers. Find the submatrix with the maximum sum of its elements.&lt;/li&gt;&lt;li class="MsoNormal"&gt;Multiply two given matrices.&lt;/li&gt;&lt;li class="MsoNormal"&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;Given a M x N matrix with 0's and 1's, find the largest square matrix consisting on 1's and also find the largest rectangular matrix consisting of 0's&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-7838090174620910004?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/7838090174620910004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/world-is-matrix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/7838090174620910004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/7838090174620910004'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/world-is-matrix.html' title='The World is a Matrix'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-8568832182442777337</id><published>2010-01-21T21:54:00.001+05:30</published><updated>2010-01-21T21:54:48.941+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOTR'/><category scheme='http://www.blogger.com/atom/ns#' term='Poem'/><title type='text'>LOTR</title><content type='html'>Break to tech-stuff……&lt;br /&gt;Perfect lines as the year 2010 starts!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;All that is gold does not glitter,&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Not all those who wander are lost;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;The old that is strong does not wither,&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Deep roots are not reached by the frost.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;From the ashes a fire shall be woken,&lt;/i&gt;&lt;br /&gt;&lt;i&gt;A light from the shadows shall spring;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Renewed shall be blade that was broken,&lt;/i&gt;&lt;br /&gt;&lt;i&gt;The crownless again shall be king.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-8568832182442777337?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/8568832182442777337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/lotr_21.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/8568832182442777337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/8568832182442777337'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/lotr_21.html' title='LOTR'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-3931624283537140564</id><published>2010-01-21T21:11:00.002+05:30</published><updated>2010-01-21T21:13:21.830+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='TCP'/><category scheme='http://www.blogger.com/atom/ns#' term='IP'/><category scheme='http://www.blogger.com/atom/ns#' term='POP'/><category scheme='http://www.blogger.com/atom/ns#' term='IMAP'/><title type='text'>TCP/IP Revised</title><content type='html'>&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;Easy definition and basic intro to TCP/IP (courtesy w3schools.com)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;TCP is for communication between applications.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;      A communication link is established between the applications through a      handshake and it persists until one of them closes it.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;IP is for communication between computers.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;      IP is a "connection-less" communication protocol&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;. With      IP, messages (or other data) are broken up into small independent      "packets" and sent between computers via the Internet. IP      is responsible for "routing" each packet to the correct      destination. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;When an IP      packet is sent from a computer, it arrives at an IP router. The IP router      is responsible for "routing" the packet to the correct      destination, directly or via another router. The path the packet will      follow might be different from other packets of the same communication.      The router is responsible for the right addressing, depending on traffic      volume, errors in the network, or other parameters.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;TCP is      responsible for breaking data down into IP packets before they are sent,      and for assembling the packets when they arrive. IP is responsible for      sending the packets to the correct destination.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;All over the world, DNS servers are connected      to the Internet. DNS servers are responsible for translating domain names      into TCP/IP addresses.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;HTTP takes care of the communication between a      web server and a web browser&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;HTTPS takes care of secure communication      between a web server and a web browser&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;The SSL protocol is used for encryption of      data for secure data transmission.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;SMTP is used for transmission of e-mails&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;.      SMTP can only transmit pure text. It cannot transmit binary data like      pictures, sounds or movies.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;The MIME (Multipurpose Internet Mail      Extensions) protocol lets SMTP transmit multimedia files including voice,      audio, and binary data across TCP/IP networks&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;POP (Post Office Protocol) is used for      downloading e-mails from an e-mail server to a personal computer.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt; If      your email program uses POP, all your emails are downloaded to your email      program (also called email client), each time it connects to your email      server&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;IMAP (Internet Message Access Protocol) is      used for storing and retrieving e-mails&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;The main      difference between the IMAP protocol and the POP protocol is that the IMAP      protocol will not automatically download all your emails each time your      email program connects to your email server. The IMAP protocol allows you      to look through your email messages at the email server before you      download them. With IMAP you can choose to download your messages or just      delete them. This way IMAP is perfect if you need to connect to your email      server from different locations, but only want to download your messages      when you are back in your office.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;FTP takes care of transmission of files      between computers.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;NTP (Network Time Protocol) is used to      synchronize the time (the clock) between computers.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;DHCP is used for allocation of dynamic IP      addresses to computers in a network.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;SNMP (Simple Network Management Protocol) is      used for administration of computer networks.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;LDAP (Lightweight Directory Access Protocol)      is used for collecting information about users and e-mail addresses from      the internet.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;ICMP (Internet Control Message Protocol) takes      care of error-handling in the network.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;ARP (Address Resolution Protocol) is used by      IP to find the hardware address of a computer network card based on the IP      address&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;RARP is used by IP to find the IP address      based on the hardware address of a computer network card.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;BOOTP is used for booting (starting) computers      from the network.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in; text-align: justify;"&gt;&lt;span style="font-family: 'Trebuchet MS', sans-serif;"&gt;&lt;span style="color: #eeeeee;"&gt;PPTP (Point to Point Tunneling Protocol) is      used for setting up a connection (tunnel) between private networks.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Trebuchet MS';"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&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/4822017179543114046-3931624283537140564?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/3931624283537140564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/tcpip-revised.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/3931624283537140564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/3931624283537140564'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/tcpip-revised.html' title='TCP/IP Revised'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-2642841004380337632</id><published>2010-01-20T22:25:00.000+05:30</published><updated>2010-01-20T22:25:04.378+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='EJB 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>Persistence in Java</title><content type='html'>&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;As I read Java Persistence with Hibernate, compiling few points on what are Object Persistence and Object/Relational Mapping and how Hibernate and JPA specification in EJB 3.0 fit into the role.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;In an object-oriented application, persistence allows an object to outlive the process that created it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Persistence of data can be thought of in terms of &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Storage, organization, and retrieval of structured data&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Concurrency and data integrity&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Data sharing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Object - Relational paradigm mismatch (Problems in the interaction of these layers)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Problem of Granularity&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;In relational databases, can’t have the granularity of data that’s possible in Java (in terms of a class having another object reference, an ADT, a basic data type, etc.). UDT (User-defined Datatypes) support is available in relational databases, but there are many limitations of UDT &amp;amp; so not advisable to use them. This leads to less flexible SQL representation upon the object model.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Problem of Subtypes&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Java has type inheritance (subclass and superclass), but a table isn’t a type, so &lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;; mso-bidi-font-family: NewBaskerville-Roman;"&gt;notion of supertables and subtables is questionable. &lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;If they do implement it, they don’t follow a standard syntax and usually lead to data integrity problems.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;SQL databases also lack an obvious way (or at least a standardized way) to represent a polymorphic association. A foreign key constraint refers to exactly one target table; it isn’t straightforward to define a foreign key that refers to multiple tables. We’d have to write a procedural constraint to enforce this kind of integrity rule.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Problem of Identity&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;In Java, object identity is established by either comparing memory locations (a == b) or by return value of ‘equals’ method &lt;i style="mso-bidi-font-style: normal;"&gt;[a.equals(b)]&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;In SQL, identity is established using primary key value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Neither equals() nor == is naturally equivalent to the primary key value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Problems related to Associations&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Object-oriented languages represent associations using object references; but in the relational world, an association is represented as a foreign key column, with copies of key values.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Object references are inherently directional; the association is from one object to the other. They’re pointers. If an association between objects should be navigable in both directions, you must define the association twice, once in each of the associated classes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;On the other hand, foreign key associations aren’t by nature directional. Navigation has no meaning for a relational data model because you can create arbitrary data associations with table joins and projection.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Java associations can have many-to-many multiplicity. Table associations, on the other hand, are always one-to-many or one-to-one. If you wish to represent a many-to-many association in a relational database, you must introduce a new table, called a link table. This table doesn’t appear anywhere in the domain model.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Problem of data navigation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;In Java, when you access a user’s billing information, you call a &lt;i style="mso-bidi-font-style: normal;"&gt;User.getBillingDetails().getAccountNumber()&lt;/i&gt; or something similar. This is the most natural way to access object-oriented data, and it’s often described as walking the object network.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; mso-list: l0 level3 lfo1; tab-stops: list 1.25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings;"&gt;&lt;span style="mso-list: Ignore;"&gt;§&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Unfortunately, this isn’t an efficient way to retrieve data from an SQL database. You may have to query the tables in some way like this &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; text-align: justify;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;select *&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; text-align: justify;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;from USERS u&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; text-align: justify;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;left outer join BILLING_DETAILS bd on bd.USER_ID = u.USER_ID&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.25in; text-align: justify;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;where u.USER_ID = 123&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Serializations can’t be used for persistent layer. A serialized network of interconnected objects can only be accessed as a whole; it’s impossible to retrieve any data from the stream without deserializing the entire stream. Thus, the resulting byte stream must be considered unsuitable for arbitrary search or aggregation of large datasets. It isn’t even possible to access or update a single object or subset of objects independently. Loading and overwriting an entire object network in each transaction is no option for systems designed to support high concurrency.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Object/relational mapping is the automated (and transparent) persistence of objects in a Java application to the tables in a relational database, using metadata that describes the mapping between the objects and the database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;An ORM solution consists of the following four pieces:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;An API for performing basic CRUD operations on objects of persistent classes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;A language or API for specifying queries that refers to classes and properties of classes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;A facility for specifying mapping metadata&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .75in; mso-list: l0 level2 lfo1; tab-stops: list .75in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; mso-fareast-font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style="mso-list: Ignore;"&gt;o&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;A technique for the ORM implementation to interact with transactional objects to perform dirty checking, lazy association&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;fetching, and other optimization functions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;The new EJB 3.0 specification comes in several parts: The first part defines the new EJB programming model for session beans and message-driven beans, the deployment rules, and so on. The second part of the specification deals with persistence exclusively: entities, object/relational mapping metadata, persistence manager interfaces, and the query language. This second part is called Java Persistence API (JPA).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Hibernate is an open source ORM service implementation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Hibernate is about 80,000 lines of code, some of which is much more difficult than &amp;nbsp;typical application code, along with 25,000 lines of unit test code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level1 lfo1; tab-stops: list .25in; text-align: justify; text-indent: -.25in;"&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;·&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;;"&gt;Hibernate is part of the JBoss Application Server (&lt;st1:place w:st="on"&gt;&lt;st1:city w:st="on"&gt;JBoss&lt;/st1:city&gt;  &lt;st1:state w:st="on"&gt;AS&lt;/st1:state&gt;&lt;/st1:place&gt;), an implementation of J2EE 1.4 and Java EE 5.0. A combination of Hibernate Core, Hibernate Annotations, and Hibernate EntityManager forms the persistence engine of this application server&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-2642841004380337632?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/2642841004380337632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/persistence-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/2642841004380337632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/2642841004380337632'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/persistence-in-java.html' title='Persistence in Java'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4822017179543114046.post-2657150389497393594</id><published>2010-01-20T18:13:00.002+05:30</published><updated>2010-01-20T18:32:24.582+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Weblog'/><category scheme='http://www.blogger.com/atom/ns#' term='About blog'/><title type='text'>About the Weblog</title><content type='html'>I just thought of starting off with a tech blog, which has been long pending. And what better than to start it off with the commence of a new year, 2010. The year looks good with ample opportunities to sharpen my technical skills. And accordingly, will be sharing all bits and pieces of knowledge as I read about various technologies. Hence, what I read is what you get (to read over here!) :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4822017179543114046-2657150389497393594?l=wiriwyg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wiriwyg.blogspot.com/feeds/2657150389497393594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/about-weblog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/2657150389497393594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4822017179543114046/posts/default/2657150389497393594'/><link rel='alternate' type='text/html' href='http://wiriwyg.blogspot.com/2010/01/about-weblog.html' title='About the Weblog'/><author><name>Sujit Nair</name><uri>http://www.blogger.com/profile/09115995273583324334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='9' src='http://2.bp.blogspot.com/_bVa0lE0oQyw/SQhMBzyMOZI/AAAAAAAAAOM/T3mIv8DJ2LE/S220/rad00572.png'/></author><thr:total>0</thr:total></entry></feed>
