<?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-33932865</id><updated>2011-12-13T19:59:01.600-08:00</updated><title type='text'>The Java Blog</title><subtitle type='html'>Java and its multifarious faces!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33932865.post-8866882939220313943</id><published>2011-01-18T03:23:00.000-08:00</published><updated>2011-01-18T03:23:02.439-08:00</updated><title type='text'>Interesting article on Reloading Java Classes</title><content type='html'>&lt;div&gt;Look at the code below. TAll the code is trying to achieve is get an instance of iExample. However, kind of complex code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;public class ExampleFactory {&lt;br /&gt;public static IExample newInstance() {&lt;br /&gt;  URLClassLoader tmp =&lt;br /&gt;    new URLClassLoader(new URL[] {getClassPath()}) {&lt;br /&gt;      public Class loadClass(String name) {&lt;br /&gt;        if ('example.Example'.equals(name))&lt;br /&gt;          return findClass(name);&lt;br /&gt;        return super.loadClass(name);&lt;br /&gt;      }&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;  return (IExample)&lt;br /&gt;    tmp.loadClass('example.Example').newInstance();&lt;br /&gt;}&lt;br /&gt;}"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-8866882939220313943?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.zeroturnaround.com/blog/reloading-objects-classes-classloaders/' title='Interesting article on Reloading Java Classes'/><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/8866882939220313943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=8866882939220313943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/8866882939220313943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/8866882939220313943'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2011/01/interesting-article-on-reloading-java.html' title='Interesting article on Reloading Java Classes'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-1981998113892028400</id><published>2011-01-17T08:04:00.000-08:00</published><updated>2011-01-17T08:04:17.144-08:00</updated><title type='text'>JDK 7: Support for dynamically-typed languages</title><content type='html'>&lt;div&gt;JDK 7 is getting ready for GA. One of the very interesting feature of JDK 7 is invoke_dynamic which is about support for dynamically typed language at performance levels near to that of Java language. So far, following has been supported:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;invoke_virtual :Interface related methods&lt;/div&gt;&lt;div&gt;invoke_special: private methods invocation&lt;/div&gt;&lt;div&gt;invoke_static: Static method invocation&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Other enhancements are following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Language enhancements such as following:&lt;/div&gt;&lt;div&gt;- Support for String in Switch-case&lt;/div&gt;&lt;div&gt;- Simplified varargs&lt;/div&gt;&lt;div&gt;- automatic resource management&lt;/div&gt;&lt;div&gt;- Multi-catch statement as part of improved exception handling&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Upgraded class loader architecture to avoid deadlocks in case of non-hierarchy topologies&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Method to close URLClassLoader&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enhanced Concurrency framework&lt;/div&gt;&lt;div&gt;-- A lightweight fork/join framework, flexible and reusable synchronization barriers, transfer queues, a concurrent-reference HashMap, and thread-local pseudo-random number generators&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Internationalization related enhancements&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I/O and networking related enhancements&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;JDBC&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Security &amp;amp; Cryptography&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://openjdk.java.net/projects/jdk7/features/"&gt;JDK 7 Features&lt;/a&gt;: "Support for dynamically-typed languages"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-1981998113892028400?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://openjdk.java.net/projects/jdk7/features/' title='JDK 7: Support for dynamically-typed languages'/><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/1981998113892028400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=1981998113892028400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/1981998113892028400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/1981998113892028400'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2011/01/jdk-7-support-for-dynamically-typed.html' title='JDK 7: Support for dynamically-typed languages'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-359052576467735307</id><published>2011-01-16T18:47:00.000-08:00</published><updated>2011-01-16T18:47:26.318-08:00</updated><title type='text'>Is this beginning for end of Java?</title><content type='html'>&lt;div&gt;Not sure. But with following, I am thinking if developers should start learning newer JVM languages such as Groovy, Scala, JRuby.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Apache Software Foundation (ASF) resigned from Java community.&lt;/div&gt;&lt;div&gt;2. Google &amp;amp; Oracle battling over Java technology&lt;/div&gt;&lt;div&gt;3. Would Java remain open source after Oracle mis-adventures&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-12-2010/101223-fatal-exception.html"&gt;Software development predictions for 2011 - JavaWorld&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-359052576467735307?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.javaworld.com/javaworld/jw-12-2010/101223-fatal-exception.html' title='Is this beginning for end of Java?'/><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/359052576467735307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=359052576467735307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/359052576467735307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/359052576467735307'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2011/01/is-this-beginning-for-end-of-java.html' title='Is this beginning for end of Java?'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-5304707278485855559</id><published>2011-01-14T13:13:00.000-08:00</published><updated>2011-01-14T13:13:42.478-08:00</updated><title type='text'>JMSAppenders COnfiguration for Various Servers</title><content type='html'>JBoss Server:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;pre&gt;Properties env = new Properties( ); env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); env.put(Context.PROVIDER_URL, "jnp://hostname:1099"); env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); InitialContext jndiContext = new InitialContext(env);&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;WebLogic Server:&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal; "&gt;&lt;pre&gt;Properties env = new Properties( ); env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); env.put(Context.PROVIDER_URL, "t3://localhost:7001"); InitialContext jndiContext = new InitialContext(env);&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&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/33932865-5304707278485855559?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://logging.apache.org/log4j/1.2/apidocs/index.html' title='JMSAppenders COnfiguration for Various Servers'/><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/5304707278485855559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=5304707278485855559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/5304707278485855559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/5304707278485855559'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2011/01/jmsappenders-configuration-for-various.html' title='JMSAppenders COnfiguration for Various Servers'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-2181682473207719290</id><published>2011-01-14T12:51:00.000-08:00</published><updated>2011-01-14T12:51:24.061-08:00</updated><title type='text'>Log4J Appenders Performance Analysis</title><content type='html'>This page would give a fair idea of how various log4j appenders perform at a very high load. Well, these are not my stress lab readings, and need to be tested. However, this should give a fair idea for understanding various appenders performance.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.ingrid.org/jajakarta/log4j/jakarta-log4j-1.1.3/docs/api/org/apache/log4j/performance/Logging.html&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, question is whethar to use JMSAppender alone or use AsyncAppender and JMSAppender. The analysis of these are given in following page:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://www.theserverside.com/discussions/thread.tss?thread_id=18742 &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have tried following scenario and TPS (transaction per second) came almost same in both the case in case of load of 100 threads in 60 sec.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;AsyncAppender sending messages to Console and File Appender&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Messages are sent directly to Console and File Appender&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I need to do further analysis to come out with right set of observation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&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/33932865-2181682473207719290?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://wiki.jasig.org/display/UPM30/log4j.xml' title='Log4J Appenders Performance Analysis'/><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/2181682473207719290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=2181682473207719290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/2181682473207719290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/2181682473207719290'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2011/01/log4j-appenders-performance-analysis.html' title='Log4J Appenders Performance Analysis'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-5705009318244517350</id><published>2011-01-14T10:30:00.000-08:00</published><updated>2011-01-14T10:30:11.081-08:00</updated><title type='text'>JVM Language - Groovy, JRuby, Scala and Java</title><content type='html'>Well, this is definitely a news to me. I was looking at this webinar posted at InfoQ and all of a sudden realized that people have been really doing some good work in these other JVM languages such as groovy, Scala and Jruby.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Need to catch up on this... check out the seminar anyways..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.infoq.com/interviews/venkat-subramaniam-jvm-languages"&gt;http://www.infoq.com/interviews/venkat-subramaniam-jvm-languages&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-5705009318244517350?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://groovy.codehaus.org/' title='JVM Language - Groovy, JRuby, Scala and Java'/><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/5705009318244517350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=5705009318244517350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/5705009318244517350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/5705009318244517350'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2011/01/jvm-language-groovy-jruby-scala-and.html' title='JVM Language - Groovy, JRuby, Scala and Java'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116660144683665759</id><published>2006-12-19T23:57:00.000-08:00</published><updated>2006-12-19T23:57:26.840-08:00</updated><title type='text'>Flyweight Design Pattern</title><content type='html'>I was wondering about Flyweight pattern for so many days. Let me present its definition and some detail.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Flyweight pattern&lt;/strong&gt;: Flyweight is one of the structural patterns. The Flyweight Design Pattern is useful when there is the need for many, many objects to exist that share some information. Several thousand or even several hundred thousand objects might be needed, and this is usually very memory-consuming to keep track of. Given certain constraints, it is possible to reduce this problem greatly and make the presence of so many objects possible. If all of the objects share some intrinsic, invariant information that is constant among all of them, it can be removed from each object, and referenced. This eliminates the redundancy of having to repeat the same invariant, intrinsic information for each object, so instead of storing the same information n times for n objects, it is only stored once. This object that contains all of the intrinsic information is called a flyweight object.&lt;br/&gt;It is possible for a flyweight to have extrinsic information as well. This information must be stateless and determined by context, having no stored values, but values that can be calculated on the spot.&lt;br/&gt;The different components involved in the Flyweight Pattern are the Flyweight, the ConcreteFlyweight, the FlyweightFactory and the Client.&lt;br/&gt;&lt;br/&gt;One classic example of a flyweight pattern is the characters stored in a word processor. Each character represents an object that has a font face, font size, and other formatting data. As you can imagine, a large document with this data structure would bloat the memory footprint of the word processor. Moreover, since much of this data is repeated, there must be a way to reduce the footprint - the Flyweight pattern. Each of the character objects would contain a reference to a separate formatting object which contains the required properties. This greatly reduces the memory footprint by combining all of the like-formatted characters into simpler objects that reference a single formatting object.&lt;br/&gt;&lt;br/&gt;In Design Patterns, the &lt;em&gt;Gang of Four (GOF) authors describe the Flyweight pattern &lt;/em&gt;like this:&lt;br/&gt;&lt;br/&gt;&lt;em&gt;Use sharing to support large numbers of fine-grained objects efficiently.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116660144683665759?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116660144683665759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116660144683665759' title='47 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116660144683665759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116660144683665759'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/flyweight-design-pattern.html' title='Flyweight Design Pattern'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>47</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116660106898580781</id><published>2006-12-19T23:51:00.000-08:00</published><updated>2006-12-19T23:51:09.056-08:00</updated><title type='text'>Memory Leak</title><content type='html'>Memory Leak: Unintentional object retention is sometimes called as "memory leaks". It could come about in several ways. One of the case is when an object is no longer needed is referenced through some path from the rootset.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116660106898580781?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116660106898580781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116660106898580781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116660106898580781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116660106898580781'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/memory-leak.html' title='Memory Leak'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116650552487198299</id><published>2006-12-18T21:18:00.000-08:00</published><updated>2006-12-18T21:18:44.903-08:00</updated><title type='text'>OOP vs AOP</title><content type='html'>OOP is object-oriented programming that modularizes software using basic oop concepts such as encapsulation, inheritance and polymorphism. OOP is not bound to any programming languages.&lt;br/&gt;&lt;br/&gt;AOP is aspect-oriented programming. AOP modularizes software applications based on loosely coupled aspects. AOP is a concept and not bound to any programming language. Software vendors can provide implementation for AOP in any programming language and make it available for the entire software community. For example, AspectJ (&lt;a href="http://www.aspectj.org/"&gt;http://www.aspectj.org/&lt;/a&gt; ).&lt;br/&gt;A concern is nothing but a function in a given system. Any system is typically composed of both core and non-core concerns. The non-core concerns such as logging and security are actually the supporting functionalities for the mainstay core functionalities. The core functionality is the one that the system is expected to do.&lt;br/&gt;AOP helps separate the non-core concerns from the core concerns by implementing concerns as aspects. Each aspect is independent and loosely coupled with other aspects in the system. This provides the flexibility for developers to enhance or remove any aspect at a later point in time without affecting the design and current state of the system.&lt;br/&gt;&lt;br/&gt;Examples of AOP are following:&lt;br/&gt;&lt;br/&gt;1. Logging functionality which is non-core concern could be implemented as one of the aspect.&lt;br/&gt;2. Benchmarking logic such as time stamps across a block of code could be senn as one of the aspect.&lt;br/&gt;&lt;br/&gt;Using AOP prevents the utility codes to be tightly coupled from the main code.&lt;br/&gt;&lt;br/&gt;For detail, go to &lt;a href="http://www.developer.com/lang/article.php/3649681"&gt;http://www.developer.com/lang/article.php/3649681&lt;/a&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116650552487198299?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116650552487198299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116650552487198299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116650552487198299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116650552487198299'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/oop-vs-aop.html' title='OOP vs AOP'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116609116089385370</id><published>2006-12-14T02:12:00.000-08:00</published><updated>2006-12-14T02:12:40.926-08:00</updated><title type='text'>Visitor Pattern : Java</title><content type='html'>I was trying to understand Visitor design pattern when I got into Single-dispatch and double-dispatch terms. Well, understanding of visitor pattern is enhanced once you understand the dispatch terminology in OOPs.&lt;br/&gt;&lt;br/&gt;Single dispatch is a mechanism where a function call on an object is rightly dispatched to correct method based on the type of the object. The arguments of function call do not really matters. However, in a double dispatch mechnism, a function call is dispatched to different concrete functions depending on the runtime types of multiple objects involved in the call. Java does support single dispatch mechsnism. However, there is MultiJava compiler written to take of double dispatch mechanism. Check out a nice simple reading on dispatch definition, &lt;a href="http://ifacethoughts.net/2006/07/29/single-double-and-multiple-dispatch/"&gt;http://ifacethoughts.net/2006/07/29/single-double-and-multiple-dispatch/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The link &lt;a href="http://rileywhite.com/software/visitorpattern.html"&gt;http://rileywhite.com/software/visitorpattern.html&lt;/a&gt;&amp;nbsp;&amp;nbsp;presents nice explanation on the visitor pattern. One thing is sure. Visitor pattern is definitely hard to learn, unlike adapter, observer, factory patterns which are intuitive and widely used.&lt;br/&gt;&lt;br/&gt;Another great reading on visitor pattern, which I really loved, is &lt;a href="http://www.javaworld.com/javaworld/javatips/jw-javatip98.html"&gt;http://www.javaworld.com/javaworld/javatips/jw-javatip98.html&lt;/a&gt; .&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Definition&lt;/strong&gt;: The Visitor pattern lets us define a new operation on an object structure without changing the classes of the objects on which it operates. Rather than writing dedicated methods for each programming task and afterwards recompiling, the idea is to (1) insert a so-called accept method in each class, and (2) write the action code in so-called visitors.&lt;br/&gt;&lt;br/&gt;One example code for visitor pattern is &lt;a href="http://bobcat.webappcabaret.net/javachina/jc/ptn/Visitor.htm"&gt;http://bobcat.webappcabaret.net/javachina/jc/ptn/Visitor.htm&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116609116089385370?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116609116089385370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116609116089385370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116609116089385370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116609116089385370'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/visitor-pattern-java.html' title='Visitor Pattern : Java'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116607540481811090</id><published>2006-12-13T21:50:00.000-08:00</published><updated>2006-12-13T21:50:04.823-08:00</updated><title type='text'>Java Concurrency</title><content type='html'>Concurrency according to http://dictionary.reference.com/browse/Concurrency is following:&lt;br/&gt;&lt;br/&gt;1. Simultaneous occurrence; coincidence: the concurrence of several unusual events. OR,&lt;br/&gt;2. Acting together as of agents or circumstances or events&lt;br/&gt;&lt;br/&gt;Example of concurrent application could be following:&lt;br/&gt;&lt;br/&gt;1. The streaming audio application must simultaneously read the digital audio off the network, decompress it, manage playback, and update its display.&lt;br/&gt;2. The word processor should always be ready to respond to keyboard and mouse events, no matter how busy it is reformatting text or updating the display.&lt;br/&gt;&lt;br/&gt;The Java platform is designed from the ground up to support concurrent programming, with basic concurrency support in the Java programming language and the Java class libraries. Since version 5.0, the Java platform has also included high-level concurrency APIs. This lesson introduces the platform's basic concurrency support and summarizes some of the high-level APIs in the java.util.concurrent packages. They are following:&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;&amp;nbsp;Lock objects support locking idioms that simplify many concurrent applications.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Executors define a high-level API for launching and managing threads. Executor implementations provided by java.util.concurrent provide thread pool management suitable for large-scale applications.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Concurrent collections make it easier to manage large collections of data, and can greatly reduce the need for synchronization.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Atomic variables have features that minimize synchronization and help avoid memory consistency errors. &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;For detail, visit http://java.sun.com/docs/books/tutorial/essential/concurrency/highlevel.html.&lt;br/&gt;&lt;br/&gt;Going a little bit over basics, in concurrent programming, there are two basic units of execution: processes and threads. In the Java programming language, concurrent programming is mostly concerned with threads. However, processes are also important.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Processes&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;A process has a self-contained execution environment. A process generally has a complete, private set of basic run-time resources; in particular, each process has its own memory space.&lt;br/&gt;&lt;br/&gt;Processes are often seen as synonymous with programs or applications. However, what the user sees as a single application may in fact be a set of cooperating processes. &lt;br/&gt;&lt;br/&gt;Most implementations of the Java virtual machine run as a single process. A Java application can create additional processes using a ProcessBuilder object.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Threads&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;Threads are sometimes called lightweight processes. Both processes and threads provide an execution environment, but creating a new thread requires fewer resources than creating a new process.&lt;br/&gt;&lt;br/&gt;Threads exist within a process - every process has at least one. Threads share the process's resources, including memory and open files. This makes for efficient, but potentially problematic, communication.&lt;br/&gt;&lt;br/&gt;Multithreaded execution is an essential feature of the Java platform.from the application programmer's point of view, you start with just one thread, called the main thread. This thread has the ability to create additional threads.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116607540481811090?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116607540481811090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116607540481811090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116607540481811090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116607540481811090'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/java-concurrency.html' title='Java Concurrency'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116607334101634585</id><published>2006-12-13T21:15:00.000-08:00</published><updated>2006-12-13T21:15:41.190-08:00</updated><title type='text'>Java Multi-threading Vs Dual Core Processor</title><content type='html'>Multithreading could be categorized in two kinds:&lt;br/&gt;&lt;br/&gt;1. Temporal multithreading where operating systems simulate doing many things at once by rapidly time-slicing between threads.&lt;br/&gt;2. Simultaneous multithreading (SMT) when multiple threads executes instructions during the same clock cycle.&lt;br/&gt;&lt;br/&gt;The java multithreading which we have known so far is actually temporal multithreading as most processors so far has been capable of executing only a single thread in a given time-slice.&lt;br/&gt;&lt;br/&gt;True concurrency could actually be termed as Simultaneous multithreading (SMT). In past, SMT has been possible only on high-end multiprocessor systems. There arrives the Intel Dual Core Processor.&lt;br/&gt;&lt;br/&gt;Intel dual core processor consists of two complete execution cores in one physical processor, both running at the same frequency. This is intended to provide immediate advantages to people looking to buy systems that boosts multitasking computing power and improve the throughput of multithreaded applications. To read more about dual core processors, refer http://www.intel.com/technology/computing/dual-core/.&lt;br/&gt;&lt;br/&gt;Running Java program on a dual core processor does not immediately inherit advantages provided by SMT. One has to adapt the algorithms such that time consuming sections are performed by multiple threads designed to run simultaneously.&lt;br/&gt;&lt;br/&gt;The java concurrency API should be used in such cases to speed up time-consuming tasks on dual core processors. The package java.util.concurrent classes could be used to achieve true concurrency. A simple approach for multithreading follows:&lt;br/&gt;1. Develop a single-threaded, sequential, robust, and clearly organized version of your algorithm.&lt;br/&gt;2. Identify the subtasks.&lt;br/&gt;3. Benchmark the algorithm.&lt;br/&gt;4. Delegate the most time-consuming subtasks to a thread pool.&lt;br/&gt;&lt;br/&gt;For detail reading on java hyper-threading, visit http://www.javaworld.com/javaworld/jw-11-2006/jw-1121-thread.html?fsrc=rss-index&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116607334101634585?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116607334101634585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116607334101634585' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116607334101634585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116607334101634585'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/java-multi-threading-vs-dual-core.html' title='Java Multi-threading Vs Dual Core Processor'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116598030460225823</id><published>2006-12-12T19:25:00.000-08:00</published><updated>2006-12-12T19:25:05.330-08:00</updated><title type='text'>Java SE 6 Support for Javascript</title><content type='html'>Talking about javascript, Java SE 6 has support for javascripting. Earlier to this release, I found myself using mozilla rhino.jar file. Now that’s cool new feature of Java SE 6. For those who want to quickly get familiar with javascript, try out the website, &lt;a href="http://www.quirksmode.org/js/contents.html"&gt;http://www.quirksmode.org/js/contents.html&lt;/a&gt;.&lt;br/&gt;Cheers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116598030460225823?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116598030460225823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116598030460225823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116598030460225823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116598030460225823'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/java-se-6-support-for-javascript.html' title='Java SE 6 Support for Javascript'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116590026914404271</id><published>2006-12-11T21:11:00.000-08:00</published><updated>2006-12-11T21:11:09.150-08:00</updated><title type='text'>JVM and Three kinds of memory</title><content type='html'>JVM has following three kinds of memory:&lt;br/&gt;&lt;br/&gt;1. Heap memory: Runtime data area from which memory for all class instances and array is allocated.&lt;br/&gt;2. Non-heap memory: Method area and memory required for internal processing. Method area stores code for method and constructors. It stores per class structures such as runtime constant pool, field and method data.&lt;br/&gt;3. Native memory: Virtual memory managed by the operating system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116590026914404271?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116590026914404271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116590026914404271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116590026914404271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116590026914404271'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/jvm-and-three-kinds-of-memory.html' title='JVM and Three kinds of memory'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116589983198475490</id><published>2006-12-11T21:03:00.000-08:00</published><updated>2006-12-11T21:03:52.030-08:00</updated><title type='text'>Java Application Common Problems</title><content type='html'>My Java application was running fine some time before and now in the later release, it is slow or it is acting unresponsive. At times, it hangs too.&lt;br/&gt;Well, some of the problems with java application could be following:&lt;br/&gt;&lt;br/&gt;1. Insufficient memory. The symptom is when one gets OutOfMemoryError.&lt;br/&gt;2. Memory Leaks: Following could be symptoms:&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Growing use of memory&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- A class with high growth rate&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- A class with an unexpected number of instances&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- An object being referenced unintentionally&lt;br/&gt;3. Finalizers: Objects are pending for finalization&lt;br/&gt;4. Deadlocks: Thread blocks on object monitor or java.util.concurrent locks&lt;br/&gt;5. Looping threads: Threads CPU time is continuously increasing&lt;br/&gt;6. High lock contention: Thread with high contention statistics&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116589983198475490?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116589983198475490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116589983198475490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116589983198475490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116589983198475490'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/java-application-common-problems.html' title='Java Application Common Problems'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116548944245390851</id><published>2006-12-07T03:04:00.000-08:00</published><updated>2006-12-07T03:04:02.466-08:00</updated><title type='text'>Downcasting vs Upcasting in Java</title><content type='html'>&lt;div&gt;CharSequence l_sq0 = new String( "HelloWorld 0" );&lt;BR&gt;System.out.println( "CharSequence: " + l_sq0.toString() );&lt;BR&gt;&lt;STRONG&gt;// Downcasting CharSequence to String&lt;/STRONG&gt;&lt;/div&gt;  &lt;div&gt;String l_tstr2 = (String)l_sq0;&lt;STRONG&gt; &lt;BR&gt;&lt;/STRONG&gt;byte[] l_bytes = l_tstr2.getBytes();&lt;BR&gt;System.out.println( "String: " + l_tstr2.toString() +&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " Length: " + l_bytes.length );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt; String l_tstr = new String( "Hello World 1" );&lt;/div&gt;  &lt;div&gt;&lt;STRONG&gt;// Upcasting String to CharSequence&lt;/STRONG&gt;&lt;BR&gt;CharSequence l_sq = (CharSequence)l_tstr; &lt;/div&gt;  &lt;div&gt;System.out.println( "String: " + l_tstr.toString() );&lt;BR&gt;System.out.println( "CharSequence: " + l_sq.toString() );&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;In the above example, String which implemented CharSquence in java.lang has been upcasted and downcasted at two different places. So, that is  allowed.&lt;/div&gt;&lt;p&gt;&amp;#32;  &lt;hr size=1&gt;Need a quick answer? Get one in minutes from people who know. Ask your question on  &lt;a href="http://answers.yahoo.com/;_ylc=X3oDMTFvbGNhMGE3BF9TAzM5NjU0NTEwOARfcwMzOTY1NDUxMDMEc2VjA21haWxfdGFnbGluZQRzbGsDbWFpbF90YWcx"&gt;Yahoo! Answers&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116548944245390851?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116548944245390851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116548944245390851' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116548944245390851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116548944245390851'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/downcasting-vs-upcasting-in-java.html' title='Downcasting vs Upcasting in Java'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116548600047348459</id><published>2006-12-07T02:06:00.000-08:00</published><updated>2006-12-07T02:06:40.770-08:00</updated><title type='text'>Does Programming Language really matter?</title><content type='html'>&lt;div&gt;I do not think programming languages really makes difference if the technology remain focussed on object-orientation. Based on one's project's requirements, one could choose the appropriate programming language and work accordingly.&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;Some of the famous ones are following:&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;&lt;STRONG&gt;Java&lt;/STRONG&gt;&lt;/div&gt;  &lt;div&gt;&lt;STRONG&gt;C++&lt;/STRONG&gt;&lt;/div&gt;  &lt;div&gt;&lt;STRONG&gt;Ruby&lt;/STRONG&gt; (Recently)&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;Server-side Scriptling languages also support object-orientation. They are languages such as ASP, PHP.&lt;/div&gt;&lt;p&gt;&amp;#32;  &lt;hr size=1&gt;Everyone is raving about &lt;a href="http://us.rd.yahoo.com/evt=45083/*http://advision.webevents.yahoo.com/mailbeta"&gt;the all-new Yahoo! Mail beta.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116548600047348459?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116548600047348459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116548600047348459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116548600047348459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116548600047348459'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/does-programming-language-really.html' title='Does Programming Language really matter?'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116530699470233378</id><published>2006-12-05T00:23:00.000-08:00</published><updated>2006-12-05T00:23:14.820-08:00</updated><title type='text'>I am fed up with AJAX.</title><content type='html'>&lt;div&gt;Is &lt;STRONG&gt;AJAX&lt;/STRONG&gt; worth that attention?&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;Give me a break! It is OK that AJAX is a cool technology, a Web 2.0 enabler. But, it has been there since so long. It is only that now, IT gurus have formalized the technology and guys out there are coming otu with so many toolkits. Do not why?&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;Well, its just that I goto &lt;A href="http://java.sun.com"&gt;http://java.sun.com&lt;/A&gt; to read every day and find that every 15 days there is one AJAX related article on the front home page.&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;Now, please give AJAX a break and move on.&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&amp;#32; &lt;hr size=1&gt;Cheap Talk? &lt;a href="http://us.rd.yahoo.com/mail_us/taglines/postman8/*http://us.rd.yahoo.com/evt=39663/*http://voice.yahoo.com"&gt;Check out&lt;/a&gt; Yahoo! Messenger's low PC-to-Phone call rates.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116530699470233378?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116530699470233378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116530699470233378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116530699470233378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116530699470233378'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/12/i-am-fed-up-with-ajax.html' title='I am fed up with AJAX.'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116488376281004759</id><published>2006-11-30T02:49:00.000-08:00</published><updated>2006-11-30T02:49:22.843-08:00</updated><title type='text'>Cool Features of Web Services in the Java SE 6 Platform</title><content type='html'>&lt;div&gt;I tried Java SE 6 webservices today by turning an existing class into webservice and it worked perfectly fine. I got it done both, manually and also using NetBeans 5.5. Watch out for annotation &lt;STRONG&gt;@WebService&lt;/STRONG&gt;. If you selectively want to put methods as web services, you could as well use &lt;STRONG&gt;@WebMethod&lt;/STRONG&gt; annotation. This is one cool feature thats coming in java se 6.&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;package generalproj;&lt;/div&gt;  &lt;div&gt;import javax.jws.WebService;&lt;/div&gt;  &lt;div&gt;import java.io.File;&lt;BR&gt;import java.io.FileOutputStream;&lt;BR&gt;import java.io.IOException;&lt;BR&gt;import java.util.List;&lt;BR&gt;import javax.xml.ws.Endpoint;&lt;/div&gt;  &lt;div&gt;@WebService&lt;BR&gt;public class GeneralClass {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public GeneralClass() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void writeToFile( String a_file, String a_content )  {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( a_file != null &amp;amp;&amp;amp; a_content != null ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileOutputStream l_fos = new FileOutputStream( new File( a_file ));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] l_bytes = a_content.getBytes();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l_fos.write( l_bytes, 0, l_bytes.length );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l_fos.close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch( IOException iox ) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  iox.printStackTrace();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param args the command line arguments&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Endpoint.publish(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&lt;A href="http://localhost:8077/generalproj/GeneralClass"&gt;http://localhost:8077/generalproj/GeneralClass&lt;/A&gt;",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new GeneralClass());&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;BR&gt;}&lt;BR&gt;&lt;/div&gt;  &lt;div&gt;For reference, visit the webpage &lt;A href="http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/"&gt;http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/&lt;/A&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116488376281004759?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116488376281004759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116488376281004759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116488376281004759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116488376281004759'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/11/cool-features-of-web-services-in-java.html' title='Cool Features of Web Services in the Java SE 6 Platform'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116486640582261034</id><published>2006-11-29T22:00:00.000-08:00</published><updated>2006-11-29T22:00:06.260-08:00</updated><title type='text'>My java starters for the day!</title><content type='html'>&lt;div&gt;Some of the websites that I regulary visit these days are following:&lt;/div&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;  &lt;div&gt;&lt;A href="http://www.developer.com/"&gt;http://www.developer.com/&lt;/A&gt;&lt;/div&gt;  &lt;div&gt;&lt;A href="http://www.infoq.com/"&gt;http://www.infoq.com/&lt;/A&gt;&lt;/div&gt;  &lt;div&gt;&lt;A href="http://www-128.ibm.com/developerworks"&gt;http://www-128.ibm.com/developerworks&lt;/A&gt;&lt;/div&gt;  &lt;div&gt;&lt;A href="http://java.sun.com/"&gt;http://java.sun.com/&lt;/A&gt;&lt;/div&gt;  &lt;div&gt;&lt;A href="http://www.theserverside.com/"&gt;http://www.theserverside.com/&lt;/A&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116486640582261034?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116486640582261034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116486640582261034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116486640582261034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116486640582261034'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/11/my-java-starters-for-day.html' title='My java starters for the day!'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116478756113235016</id><published>2006-11-29T00:06:00.000-08:00</published><updated>2006-11-29T00:06:01.176-08:00</updated><title type='text'>My java readings for today!</title><content type='html'>&lt;div&gt;Some of the things I read today include following:&lt;/div&gt;  &lt;UL&gt;  &lt;LI&gt;&lt;STRONG&gt;Always close IO streams&lt;/STRONG&gt;.&lt;/LI&gt;  &lt;LI&gt;&lt;STRONG&gt;Model Objects&lt;/STRONG&gt;: Core problem domain objects.&lt;/LI&gt;  &lt;LI&gt;&lt;STRONG&gt;IO buffering usually appropriate&lt;/STRONG&gt;. Prefer&amp;nbsp;IO buffering. Java IO classes for buffering are BufferedReader and BufferedWriter&lt;/LI&gt;  &lt;LI&gt;&lt;STRONG&gt;Checked and unchecked exceptions&lt;/STRONG&gt;: Checked exceptions are those which are, simply speaking, out of immediate control. For example, FileNotFoundException or network, database problem based exception. They need to be caught or passed to upward classes for compilation to happen successfully. Classes must oblige with checked exceptions. Unchecked exceptions are exceptions generated due to bad programming. Examples are ClassCastException, NullPointerException etc. Class need not to oblige with unchecked exceptions.&lt;/LI&gt;&lt;/UL&gt;  &lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116478756113235016?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116478756113235016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116478756113235016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116478756113235016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116478756113235016'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/11/my-java-readings-for-today.html' title='My java readings for today!'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-116048984098363738</id><published>2006-10-10T06:42:00.000-07:00</published><updated>2006-10-10T07:17:21.046-07:00</updated><title type='text'>Interface or multiple inheritence?</title><content type='html'>Well, I thought I could quickly put something about interfaces and their significance in java in particular and object oriented programming in general.&lt;br /&gt;&lt;br /&gt;Let us take a look at the interface.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public interface IRole {&lt;br /&gt;    String getName();&lt;br /&gt;    &lt;br /&gt;    String getDescription();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The above interface describes a contract that every class has to meet in order to be non-abstract. For example, say there are two different roles, one of student and other of teacher.&lt;br /&gt;&lt;br /&gt;For above two roles, I would write two implementations. They are StudentRoleImpl and TeacherRoleImpl.&lt;br /&gt;&lt;br /&gt;Both of the below statements are valid:&lt;br /&gt;&lt;br /&gt;IRole l_role = new StudentRoleImpl();&lt;br /&gt;&lt;br /&gt;IRole l_role = new TeacherRoleImpl();&lt;br /&gt;&lt;br /&gt;To continue further...!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-116048984098363738?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/116048984098363738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=116048984098363738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116048984098363738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/116048984098363738'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/10/interface-or-multiple-inheritence.html' title='Interface or multiple inheritence?'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-115980236434780209</id><published>2006-10-02T08:12:00.000-07:00</published><updated>2006-10-02T08:19:24.350-07:00</updated><title type='text'>Java String - What is there to discuss?</title><content type='html'>Java String presents lots of confusion if you really do not understand the basics very tightly. Look at the following two statements:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Statement 1&lt;/strong&gt;&lt;br /&gt;String s1 = "hello world";&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Statement 2&lt;/strong&gt;&lt;br /&gt;String s2 = new String( "hello world" );&lt;br /&gt;&lt;br /&gt;Wha is the difference between the above two statements?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Statement 1 means:&lt;/strong&gt; String variable s1 refers to a string "hello world" in the string pool maintained by JVM. Thus, JVM first searches for the string "hello world" in the string pool. If it finds one, it returns the reference to the string. If it does not find, it creates an entry "hello world" in the string pool.&lt;br /&gt;&lt;br /&gt;Thus, next time, you create String s3 = "hello world", variable s3 points to alreasy existing "hello world" in the string pool.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Statement 2 means:&lt;/strong&gt; A new object is created on the heap and the reference to it is passed to variable s2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-115980236434780209?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/115980236434780209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=115980236434780209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/115980236434780209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/115980236434780209'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/10/java-string-what-is-there-to-discuss.html' title='Java String - What is there to discuss?'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33932865.post-115751394691624205</id><published>2006-09-05T20:36:00.000-07:00</published><updated>2006-10-02T08:10:02.593-07:00</updated><title type='text'>Enough of reading and experimenting! Lets start some posting!</title><content type='html'>O yes, I have doing a lot of reading and experimenting with various newer technologies. I thought to test my tech writing skills. So here I am!&lt;br /&gt;&lt;br /&gt;Well, I would not be sticking to any technologies. But, I must admit that I love OOAD and I love any language which strengthen OOAD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33932865-115751394691624205?l=my2bytes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://my2bytes.blogspot.com/feeds/115751394691624205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33932865&amp;postID=115751394691624205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/115751394691624205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33932865/posts/default/115751394691624205'/><link rel='alternate' type='text/html' href='http://my2bytes.blogspot.com/2006/09/enough-of-reading-and-experimenting.html' title='Enough of reading and experimenting! Lets start some posting!'/><author><name>A Kumar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
