<?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-20074245</id><updated>2011-04-21T17:59:57.675-07:00</updated><title type='text'>Java-Web</title><subtitle type='html'>Anything that has to do with java or java in the web.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20074245.post-115558300302437290</id><published>2006-08-14T12:15:00.000-07:00</published><updated>2006-08-14T12:16:43.040-07:00</updated><title type='text'>My Picture</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6955/1999/1600/Stephane%20Zafirov.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6955/1999/320/Stephane%20Zafirov.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;For those who don't know me, here is a picture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-115558300302437290?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/115558300302437290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=115558300302437290' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/115558300302437290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/115558300302437290'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/08/my-picture.html' title='My Picture'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20074245.post-114608472622428369</id><published>2006-04-26T13:40:00.000-07:00</published><updated>2006-08-14T12:11:41.856-07:00</updated><title type='text'>The new look of jsp/js code</title><content type='html'>Years ago, we used to write stuff like :&lt;code&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" language="Javascript 1.2"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;  (document.all ? document.foo.bar :&lt;br /&gt;                  document.getElementById('foo').bar) =&lt;br /&gt;    foo(&lt;%=MyStaticLib.bar(baz)%&gt;)['&lt;%=map.get("quux")%&gt;'];&lt;br /&gt;--&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Nowadays, with XHTML, the browser evolution and JSP 2.0 combined with prototype.js gives us a new fresh look on things:&lt;code&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;// &amp;lt;![CDATA[&lt;br /&gt;     $('foo').bar = foo('${custFn:bar(baz)}')['${map['quux']}'];&lt;br /&gt;// ]]&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-114608472622428369?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/114608472622428369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=114608472622428369' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/114608472622428369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/114608472622428369'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/04/new-look-of-jspjs-code.html' title='The new look of jsp/js code'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20074245.post-114130869583623528</id><published>2006-03-02T06:06:00.000-08:00</published><updated>2006-03-02T11:02:00.293-08:00</updated><title type='text'>Java Black Belt</title><content type='html'>I don't blog here as often because I have been spending my free internet time on &lt;a href="http://www.javablackbelt.com/jbb/"&gt;Java Black Belt&lt;/a&gt; trying to go up the belt latter. It is a free java testing site, well not completely free, but money free. You have to give in some of your time and experience to contribute a little something to get points which in turn allow you to take the tests. &lt;a href="http://www.javablackbelt.com/jbb/UserView.do?id=231253"&gt;Here&lt;/a&gt; is my profile there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-114130869583623528?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/114130869583623528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=114130869583623528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/114130869583623528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/114130869583623528'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/03/java-black-belt.html' title='Java Black Belt'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-114061746495352200</id><published>2006-02-22T06:09:00.000-08:00</published><updated>2006-02-22T06:13:09.836-08:00</updated><title type='text'>JSP CheatSheet</title><content type='html'>Here is a nice &lt;a href="http://ndpsoftware.com/JSPXMLCheatSheet.html"&gt;cheat sheet&lt;/a&gt; for jsp 2.0 xml documents. It covers pretty much everything: jsp directives, tag file directives, JSTL, implicit objects, and EL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-114061746495352200?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/114061746495352200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=114061746495352200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/114061746495352200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/114061746495352200'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/02/jsp-cheatsheet.html' title='JSP CheatSheet'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113941338265134564</id><published>2006-02-08T07:39:00.000-08:00</published><updated>2006-02-08T07:44:09.130-08:00</updated><title type='text'>OSCache and MVC</title><content type='html'>(Continued from previous post) Another way to configure OSCache is through the provided &lt;a href="http://www.opensymphony.com/oscache/wiki/CacheFilter.html"&gt;CacheFilter&lt;/a&gt;. Now my page is even faster (15 ms on average) and I am not breaking my MVC.&lt;br /&gt;So the morale of the story is: the tags are flexible, but if the flexibility doesn't suit you, don't use them!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113941338265134564?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113941338265134564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113941338265134564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113941338265134564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113941338265134564'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/02/oscache-and-mvc.html' title='OSCache and MVC'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113937575056851855</id><published>2006-02-07T21:05:00.000-08:00</published><updated>2006-02-08T07:39:45.526-08:00</updated><title type='text'>OSCache tags with MVC?</title><content type='html'>I tried to cache a relatively slow page today using &lt;a href="http://www.opensymphony.com/oscache/"&gt;OSCache&lt;/a&gt;. I simply embedded the entire content in  &amp;lt;oscache:cache&amp;gt; tags and was surprised to discover it took longer using the cache. My page load time was around 800 ms and became 900 ms once cached. &lt;oscache:cache&gt;&lt;br /&gt;&lt;br /&gt;After some playing around I realized it was due to my MVC-Struts &lt;/oscache:cache&gt;architecture &lt;oscache:cache&gt;which was incompatible with the way I was using the cache tag. Since the heavy work of loading and refactoring the data was performed before even reaching the jsp, it was performed aimlessly &lt;/oscache:cache&gt;every time even though&lt;oscache:cache&gt; the tag was caching the content&lt;/oscache:cache&gt;&lt;oscache:cache&gt;.&lt;br /&gt;&lt;br /&gt;So, I hacked my MVC and put an ugly scriplet inside the cache tag calling a static execute method &lt;/oscache:cache&gt;&lt;oscache:cache&gt;and set the original execute method of my Action blank. The page time went down to 125 ms which is a significant improvement.&lt;br /&gt;&lt;br /&gt;I am left to figure out a way to use it without hacking my MVC. To be continued...&lt;br /&gt;&lt;/oscache:cache&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113937575056851855?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113937575056851855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113937575056851855' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113937575056851855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113937575056851855'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/02/oscache-tags-with-mvc.html' title='OSCache tags with MVC?'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20074245.post-113866587152990295</id><published>2006-01-30T15:38:00.000-08:00</published><updated>2006-01-30T16:06:02.850-08:00</updated><title type='text'>Facelets : Like Tapestry but JSF</title><content type='html'>Facelets is a view technology that focuses on building JSF component trees.    The web community is eagerly seeking a framework like &lt;a href="http://jakarta.apache.org/tapestry/index.html"&gt;Tapestry&lt;/a&gt;, backed by JavaServer Faces   as the industry standard. While JavaServer Faces and JSP are meant to be aligned, Facelets   steps outside of the JSP spec and provides a highly performant, JSF-centric view technology.   Anyone who has created a JSP page will be able to do the same with Facelets. Even though Facelets is being   developed open source under Sun's guidance, it can work with any JSF 1.2 compliant implementation or &lt;a href="http://myfaces.apache.org/"&gt;MyFaces&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It has been included in both the free and PRO versions of &lt;a href="http://www.exadel.com/web/portal/products/Overview"&gt;Exadel&lt;/a&gt;  - the choise for JSF as an Eclipse extension based on WTP, and it is also the purpose of the &lt;a href="http://wiki.apache.org/myfaces/Use_Facelets_with_Tomahawk"&gt;Tomahawn Taglib&lt;/a&gt; in MyFaces. Now that Facelets has been &lt;a href="http://jroller.com/page/thogau?entry=using_facelets_with_appfuse"&gt;integrated in AppFuse&lt;/a&gt;, we have no more reasons not to try it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113866587152990295?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113866587152990295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113866587152990295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113866587152990295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113866587152990295'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/01/facelets-like-tapestry-but-jsf.html' title='Facelets : Like Tapestry but JSF'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113805939524085845</id><published>2006-01-23T15:28:00.000-08:00</published><updated>2006-01-23T15:36:35.276-08:00</updated><title type='text'>What is OGNL</title><content type='html'>&lt;a href="http://www.ognl.org"&gt;OGNL&lt;/a&gt; stands for &lt;span style="font-weight: bold;"&gt;O&lt;/span&gt;bject &lt;span style="font-weight: bold;"&gt;G&lt;/span&gt;raph &lt;span style="font-weight: bold;"&gt;N&lt;/span&gt;avigation &lt;span style="font-weight: bold;"&gt;L&lt;/span&gt;anguage. It is an expression and binding language for getting and setting properties of Java objects. For instance, OGNL is used as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A binding language between GUI elements&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A data source language to map between table columns and a Swing TableModel&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A binding language between web components and the underlying model objects (&lt;a href="http://www.ognl.org/"&gt;WebOGNL&lt;/a&gt;, &lt;a href="http://jakarta.apache.org/tapestry/index.html"&gt;Tapestry&lt;/a&gt;, &lt;a href="http://sourceforge.net/projects/opensymphony"&gt;WebWork&lt;/a&gt;, &lt;a href="http://wonder.sourceforge.net/index.html"&gt;WebObjects&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A more expressive replacement for the property-getting language used by the Jakarata Commons BeanUtils package or JSTL's EL (which only allow simple property navigation and rudimentary indexed properties)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Most of what you can do in Java is possible in OGNL, plus other extras such as list projection and selection and pseudo-lambda expressions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113805939524085845?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113805939524085845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113805939524085845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113805939524085845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113805939524085845'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/01/what-is-ognl.html' title='What is OGNL'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113771710211163430</id><published>2006-01-19T16:20:00.000-08:00</published><updated>2006-01-19T16:33:51.116-08:00</updated><title type='text'>The do's and don'ts of good API</title><content type='html'>Very interesting and relevant &lt;a href="http://www.oreillynet.com/pub/wlg/8878?CMP=OTC-FP2116136014&amp;ATT=APIs:+Howto"&gt;article&lt;/a&gt; on what pitfalls to avoid when designing a new API. In summary, be a &lt;span style="font-weight: bold;"&gt;minimalist&lt;/span&gt;. Don't try to anticipate what the user may need. Only add methods that are essential. Keep the API simple to learn and use. The more stuff there is, there harder it is to learn, the bigger it is, the more things can go wrong. &lt;span style="font-weight: bold;"&gt;I&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;nterfaces&lt;/span&gt; are difficult to work with in the implementation of the API, they cannot have constructors  (you need a factory) or static methods, they cannot evolve and they cannot be serialized.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113771710211163430?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113771710211163430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113771710211163430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113771710211163430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113771710211163430'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/01/dos-and-donts-of-good-api.html' title='The do&apos;s and don&apos;ts of good API'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113770985019307032</id><published>2006-01-19T14:25:00.000-08:00</published><updated>2006-01-19T14:37:01.593-08:00</updated><title type='text'>Subversion: a better CVS</title><content type='html'>&lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; is undoubtedly a much better &lt;a href="http://www.nongnu.org/cvs/"&gt;CVS&lt;/a&gt; and anyone who can should consider using it instead. Today I tried it and it works very well. The integration with Eclipse is seamless thanks to the &lt;a href="http://subclipse.tigris.org/"&gt;Subclipse &lt;/a&gt;plug-in which is very similar to the provided CVS plug-in and there is an &lt;a href="http://subclipse.tigris.org/svnant.html"&gt;Ant task&lt;/a&gt; available. It is currently possible to migrate your existing CVS repository using &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://cvs2svn.tigris.org/"&gt;cvs2svn&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113770985019307032?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113770985019307032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113770985019307032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113770985019307032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113770985019307032'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/01/subversion-better-cvs.html' title='Subversion: a better CVS'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113762891468268205</id><published>2006-01-18T15:54:00.000-08:00</published><updated>2006-01-18T16:08:10.256-08:00</updated><title type='text'>How toString() a file</title><content type='html'>Today I got tired of writing the following piece of code:&lt;code&gt;&lt;pre&gt;InputStream is = this.getClass().getClassLoader()&lt;br /&gt;  .getResourceAsStream("file.txt");&lt;br /&gt;byte[] buffer = new byte[4096];&lt;br /&gt;StringBuffer sb = new StringBuffer();&lt;br /&gt;int n = -1;&lt;br /&gt;while ((n = is.read(buffer)) != -1) {&lt;br /&gt;  sb.append(new String(buffer, 0, n));&lt;br /&gt;}&lt;br /&gt;String content = sb.toString();&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;I will henceforth write the following instead:&lt;code&gt;&lt;pre&gt;URI uri = this.getClass().getClassLoader()&lt;br /&gt;  .getResource("file.txt");&lt;br /&gt;String content = FileUtils.readFileToString(&lt;br /&gt;  new File(uri), "ISO-8859-1");&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;It works thanks to &lt;a href="http://jakarta.apache.org/commons/io"&gt;Jakarta Commons IO&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113762891468268205?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113762891468268205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113762891468268205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113762891468268205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113762891468268205'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/01/how-tostring-file.html' title='How toString() a file'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113760534872936676</id><published>2006-01-18T07:41:00.000-08:00</published><updated>2006-01-19T14:40:02.203-08:00</updated><title type='text'>JSP 2.0 Useful trick</title><content type='html'>It isn't anything new but people (including myself) often forget about some of the useful features of JSP 2.0 that is by the way supported by the whole family Tomcat 5.*&lt;br /&gt;&lt;br /&gt;The tag JSP &amp;lt;jsp-property-group&amp;gt; is very handy, the example below defines a page group on which it applies the following properties:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;define the charset&lt;/li&gt;&lt;li&gt;disable scripting&lt;/li&gt;&lt;li&gt;ignore expressions like ${param.name}&lt;/li&gt;&lt;li&gt;include JSP fragments (top and bottom)&lt;/li&gt;&lt;/ul&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;&amp;lt;jsp-config&amp;gt;&lt;br /&gt;&amp;lt;jsp-property-group&amp;gt;&lt;br /&gt;  &amp;lt;description&amp;gt;&lt;br /&gt;      Property group for custom JSP Configuration.&lt;br /&gt;  &amp;lt;/description&amp;gt;&lt;br /&gt;  &amp;lt;display-name&amp;gt;JSPConfiguration&amp;lt;/display-name&amp;gt;&lt;br /&gt;  &amp;lt;url-pattern&amp;gt;/view/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;  &amp;lt;page-encoding&amp;gt;ISO-8859-1&amp;lt;/page-encoding&amp;gt;&lt;br /&gt;  &amp;lt;scripting-invalid&amp;gt;true&amp;lt;/scripting-invalid&amp;gt;&lt;br /&gt;  &amp;lt;el-ignored&amp;gt;true&amp;lt;/el-ignored&amp;gt;&lt;br /&gt;  &amp;lt;include-prelude&amp;gt;/common/top.jspf&amp;lt;/include-prelude&amp;gt;&lt;br /&gt;  &amp;lt;include-coda&amp;gt;/common/bottom.jspf&amp;lt;/include-coda&amp;gt;&lt;br /&gt;&amp;lt;/jsp-property-group&amp;gt;&lt;br /&gt;&amp;lt;/jsp-config&amp;gt;&lt;br /&gt;&lt;/pre&gt;The proper schema needs to be specified in the deployment descriptor:&lt;pre&gt;&lt;code&gt;&amp;lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee"&lt;br /&gt;  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee&lt;br /&gt;    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&lt;br /&gt;  version="2.4"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113760534872936676?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113760534872936676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113760534872936676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113760534872936676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113760534872936676'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/01/jsp-20-useful-trick.html' title='JSP 2.0 Useful trick'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113641647183099615</id><published>2006-01-04T14:34:00.000-08:00</published><updated>2006-01-04T15:19:02.770-08:00</updated><title type='text'>AspectJ 5.0 Released</title><content type='html'>The &lt;a href="http://www.eclipse.org/"&gt;Eclipse Foundation&lt;/a&gt; announced the release of &lt;a href="http://www.eclipse.org/aspectj/doc/released/README-150.html"&gt;AspectJ 5.0&lt;/a&gt; which fully supports Java EE 5.0 and is also integrated by the upcoming version of the &lt;a href="http://www.springframework.org/node/208"&gt;Spring Framework 2.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For those unfamiliar yet with the concept of &lt;a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming"&gt;aspect oriented programming&lt;/a&gt; (AOP), it is the newest attempt to achieve minimum overlap between distinct parts of functionalities also known as &lt;a href="http://en.wikipedia.org/wiki/Separation_of_concerns"&gt;separation of concerns&lt;/a&gt;. Some older paradigms include &lt;a href="http://en.wikipedia.org/wiki/Procedural_programming"&gt;procedural&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Object-oriented_programming"&gt;object oriented&lt;/a&gt; programming. &lt;a href="http://en.wikipedia.org/wiki/AspectJ"&gt;AspectJ&lt;/a&gt; is an AOP extension for Java. For more definitions, &lt;a href="http://en.wikipedia.org/wiki/Main_Page"&gt;Wikipedia&lt;/a&gt; is always a good start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113641647183099615?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113641647183099615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113641647183099615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113641647183099615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113641647183099615'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2006/01/aspectj-50-released.html' title='AspectJ 5.0 Released'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113605382059331860</id><published>2005-12-31T10:02:00.000-08:00</published><updated>2006-01-18T16:54:29.613-08:00</updated><title type='text'>Display Tag Overview</title><content type='html'>The &lt;a href="http://displaytag.sourceforge.net/10/"&gt;Display tag library&lt;/a&gt; development seems to have stopped: the version has been frozen at 1.0 for the past year. Development team claims that its due to a major refactoring of the project and apparently a new version is nearing. The most worth noting feature of the new version (1.1) is the &lt;a href="http://displaytag.sourceforge.net/11/tut_externalSortAndPage.html"&gt;external sorting and paging&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you are looking for Ajax support, sourceforge is also providing the &lt;a href="http://ajaxtags.sourceforge.net/usage.html#ajax:displayTag"&gt;AjaxTags&lt;/a&gt; which is part of the &lt;a href="http://prototype.conio.net/" class="externalLink" title="External Link"&gt;Prototype framework&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is the original &lt;a href="http://raibledesigns.com/page/rd?anchor=the_future_of_the_displaytag"&gt;post&lt;/a&gt; from raible designs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113605382059331860?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113605382059331860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113605382059331860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113605382059331860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113605382059331860'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/display-tag-overview.html' title='Display Tag Overview'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113605190300509824</id><published>2005-12-31T09:54:00.000-08:00</published><updated>2006-01-04T14:28:27.216-08:00</updated><title type='text'>AppFuse in Eclipse</title><content type='html'>AppFuse does not easily integrate with Eclipse due to XDoclet. The idea is to use Ant instead of the default builder to auto-build your AppFuse project in Eclipse. Here are the &lt;a href="http://raibledesigns.com/page/rd?entry=use_ant_to_auto_build"&gt;details&lt;/a&gt; thanks to raible designs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113605190300509824?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113605190300509824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113605190300509824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113605190300509824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113605190300509824'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/appfuse-in-eclipse.html' title='AppFuse in Eclipse'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113580810995916063</id><published>2005-12-28T14:12:00.000-08:00</published><updated>2005-12-28T14:15:09.976-08:00</updated><title type='text'>AppFuse Authentication</title><content type='html'>&lt;a class="wikipage" href="http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse"&gt;AppFuse&lt;/a&gt; has used &lt;a class="external" href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Security4.html#67530"&gt;Container-Managed Authentication&lt;/a&gt; since it was first created.  However, in version 1.8, this was replaced with the &lt;a class="external" href="http://acegisecurity.sf.net/"&gt;Acegi Security Framework for Spring&lt;/a&gt;.  The main reasons for this can be found on &lt;a class="external" href="http://raibledesigns.com/page/rd?anchor=re_j2ee_app_server_security"&gt;raibledesigns.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113580810995916063?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113580810995916063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113580810995916063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113580810995916063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113580810995916063'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/appfuse-authentication.html' title='AppFuse Authentication'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113554607657712772</id><published>2005-12-25T13:12:00.000-08:00</published><updated>2005-12-27T08:57:05.946-08:00</updated><title type='text'>Javascript interpreter in Mustang</title><content type='html'>The Mozilla Rhino JavaScript interpreter is available through the ScriptEngineFactory class in the javax.script package, which includes the Rhino interpreter by default. Here is a short snippet of source code that invokes the JavaScript interpreter: &lt;pre&gt;&lt;code&gt;import javax.script.*;&lt;br /&gt;&lt;br /&gt;ScriptEngineManager manager = new ScriptEngineManager();&lt;br /&gt;ScriptEngine rhinoEngine = manager.getEngineByName("javascript");&lt;br /&gt;   &lt;br /&gt;try {&lt;br /&gt;    Object o1 = rhinoEngine.eval("new Date().getMonth()");&lt;br /&gt;    System.out.println(o1);&lt;br /&gt;} catch (ScriptException e) {&lt;br /&gt;    System.err.println(e);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113554607657712772?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113554607657712772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113554607657712772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113554607657712772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113554607657712772'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/javascript-interpreter-in-mustang.html' title='Javascript interpreter in Mustang'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113554460566205662</id><published>2005-12-25T13:00:00.000-08:00</published><updated>2005-12-27T08:55:29.710-08:00</updated><title type='text'>New Java Naming</title><content type='html'>&lt;a href="http://www.java.com/en/about/brand/naming.jsp"&gt;What's New and When?&lt;/a&gt; It's very simple. With the new versions of the platform shipping early 2006, the Java name is losing the "2", and the "dot zero".&lt;br /&gt;&lt;ul&gt;&lt;li&gt;J2SE 6.0 will become Java SE 6 (code name Mustang), and J2SE 7.0 will become Java SE 7 (code name Dolphin).&lt;/li&gt; &lt;li&gt;J2EE 5.0 will become Java EE 5.&lt;/li&gt; &lt;li&gt;J2ME has become Java ME as of June 2005, because it does not have a version number.&lt;/li&gt; &lt;li&gt;Java Card is not affected by this name change.&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/20074245-113554460566205662?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113554460566205662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113554460566205662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113554460566205662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113554460566205662'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/new-java-naming.html' title='New Java Naming'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113528963262917394</id><published>2005-12-22T13:51:00.000-08:00</published><updated>2005-12-22T14:15:03.443-08:00</updated><title type='text'>Javascript Debugging</title><content type='html'>Do you work on javascript intensive projects ?&lt;br /&gt;Do you have trouble copping with the IE message:&lt;br&gt;&lt;br /&gt; &lt;code&gt;Object expected, line 1, char 1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;We all know that now you can use the Firefox Javascript Console which will always provide precise and meaningful error messages.&lt;br /&gt;&lt;br /&gt;Now, if you are using Eclipse, and moreover, if you are using a set of common plug-ins packaged under the name of MyEclipse, you can really make your life easier. The latest version: &lt;b&gt;MyEclipse Enterprise Workbench 4.1M2&lt;/b&gt;, provides among others an outline view, auto-completion and a debugger with breakpoints and everything, all of which are seamlessly integrated in the eclipse environment. View the &lt;a href="http://www.myeclipseide.com/ContentExpress-display-ceid-70.html"&gt;details&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In my opinion, &lt;a href="http://www.myeclipseide.com"&gt;MyEclipse&lt;/a&gt; really is a professional worth noting web development tool and although not free, the basic version is cheap, 30$/year/installation.&lt;br /&gt;&lt;br /&gt;For example, MyEclipse 4.1 is the first Eclipse-based platform to support Web 2.0/AJAX development through an innovative WebTools 2.0 Tools Platform (W2TP) and uniquely integrates Spring, Hibernate and database technologies into a single intuitive solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113528963262917394?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113528963262917394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113528963262917394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113528963262917394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113528963262917394'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/javascript-debugging.html' title='Javascript Debugging'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113528403948722771</id><published>2005-12-22T12:35:00.000-08:00</published><updated>2005-12-27T08:56:17.823-08:00</updated><title type='text'>Joda Time - Java date and time API</title><content type='html'>&lt;a href="http://joda-time.sourceforge.net/index.html"&gt;Joda-Time&lt;/a&gt; has been created to radically change date and time handling is Java. The JDK classes Date and Calendar are very badly designed, have had numerous bugs and have odd performance effects.&lt;br /&gt;&lt;br /&gt;Some of the key concepts are:&lt;dl&gt; &lt;dt style="color: green"&gt;Instant&lt;/dt&gt;&lt;dd&gt; an instant in time&lt;/dd&gt; &lt;dt style="color: green"&gt;Partial&lt;/dt&gt;&lt;dd&gt;a partial datetime supporting any set of datetime field&lt;/dd&gt; &lt;dt style="color: green"&gt;Interval&lt;/dt&gt;&lt;dd&gt;a period of time between two instants&lt;/dd&gt; &lt;dt style="color: green"&gt;Duration&lt;/dt&gt;&lt;dd&gt;a length of time in milliseconds&lt;/dd&gt; &lt;dt style="color: green"&gt;Period&lt;/dt&gt;&lt;dd&gt;time period specifying a set of duration field values&lt;/dd&gt; &lt;dt style="color: green"&gt;Chronology&lt;/dt&gt;&lt;dd&gt;a chronological calendar system&lt;/dd&gt;&lt;/dl&gt;Supported chronologies:&lt;ul&gt;&lt;li&gt;ISO8601&lt;/li&gt;&lt;li&gt;Buddhist&lt;/li&gt;&lt;li&gt;Coptic&lt;/li&gt;&lt;li&gt;Ethoipic&lt;/li&gt;&lt;li&gt;Gregorian&lt;/li&gt;&lt;li&gt;GregorianJulian&lt;/li&gt;&lt;li&gt;Islamic&lt;/li&gt;&lt;li&gt;Julian&lt;/li&gt;&lt;/ul&gt;Joda-Time also has &lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; and JSP taglib support.&lt;br /&gt;Original &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=38204"&gt;article&lt;/a&gt; from theserverside.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113528403948722771?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113528403948722771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113528403948722771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113528403948722771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113528403948722771'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/joda-time-java-date-and-time-api.html' title='Joda Time - Java date and time API'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113526524189722242</id><published>2005-12-22T07:23:00.000-08:00</published><updated>2005-12-22T11:24:56.456-08:00</updated><title type='text'>Java Overview 2005</title><content type='html'>I just read a great Java overview &lt;a href="http://www.onjava.com/pub/a/onjava/2005/12/21/onjava-2005-year-in-review.html?CMP=OTC-FP2116136014&amp;amp;ATT=ONJava:+2005+Year+in+Review"&gt;article&lt;/a&gt; by the O'Reilly network. The articles discusses not only Java but also the satelite technologies that we have been using or the ones we should be using.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113526524189722242?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113526524189722242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113526524189722242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113526524189722242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113526524189722242'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/java-overview-2005.html' title='Java Overview 2005'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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-20074245.post-113519423033879150</id><published>2005-12-21T11:27:00.000-08:00</published><updated>2005-12-21T12:12:33.606-08:00</updated><title type='text'>XML Properties with Tiger</title><content type='html'>I read an interesting &lt;a href="http://www-128.ibm.com/developerworks/java/library/j-tiger02254.html?ca=dgr-UVs09-JDK_5.0-XML"&gt;article&lt;/a&gt; from IBM about taming Tiger. You can now easily load properties from an xml file.&lt;br /&gt;&lt;br /&gt;For example, given the followin xml:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE properties SYSTEM &lt;br /&gt; "&lt;a id="linkification-flag-id" class="linkification-ext" href="http://java.sun.com/dtd/properties.dtd"&gt;http://java.sun.com/dtd/properties.dtd&lt;/a&gt;"&amp;gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;comment&amp;gt;Hi&amp;lt;/comment&amp;gt;&lt;br /&gt;&amp;lt;entry key="foo"&amp;gt;bar&amp;lt;/entry&amp;gt;&lt;br /&gt;&amp;lt;entry key="fu"&amp;gt;baz&amp;lt;/entry&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;/code&gt;&lt;/pre&gt; You can simply load it as:&lt;br /&gt;&lt;pre&gt;&lt;code&gt; Properties prop = new Properties();&lt;br /&gt; FileInputStream fis = new FileInputStream("foo.xml");&lt;br /&gt; prop.loadFromXML(fis);&lt;br /&gt; prop.list(System.out);&lt;br /&gt; System.out.println("\nThe foo property: " +&lt;br /&gt; prop.getProperty("foo"));&lt;/code&gt;&lt;/pre&gt; Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20074245-113519423033879150?l=java-web.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://java-web.blogspot.com/feeds/113519423033879150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20074245&amp;postID=113519423033879150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113519423033879150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20074245/posts/default/113519423033879150'/><link rel='alternate' type='text/html' href='http://java-web.blogspot.com/2005/12/xml-properties-with-tiger.html' title='XML Properties with Tiger'/><author><name>Stefan</name><uri>http://www.blogger.com/profile/04527639970190616267</uri><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>
