<?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-6700366350637900546</id><updated>2011-12-13T13:03:45.107-08:00</updated><category term='Webapp'/><category term='Exhibition'/><category term='Logging'/><category term='eclipse'/><category term='javascript'/><category term='j2ee'/><category term='conference'/><category term='JavaPosse'/><category term='JUG'/><category term='EJB3'/><category term='Appserver'/><category term='Testing'/><title type='text'>pcjuzer_en</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>pcjuzerV</name><uri>http://www.blogger.com/profile/04207475725733406436</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>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6700366350637900546.post-8813745632271048589</id><published>2010-09-22T02:40:00.000-07:00</published><updated>2010-09-22T02:42:37.649-07:00</updated><title type='text'>Installing Firefox Java plugin on Ubuntu Linux for Dummies</title><content type='html'>As a Windows user, I was amused how not easy to install Java on Ubuntu Linux (10.04) nor installing Java (1.6) plugin into Firefox (3.6). It's not nearly a &lt;span style="font-style: italic;"&gt;download-next-next-finish&lt;/span&gt; task. Additionally, digging into forums I found a lot outdated solutions which I tried and soon realized that they doubtlessly aren't working. &lt;a href="http://forums.sun.com/thread.jspa?threadID=5428712"&gt;Here&lt;/a&gt; is the one which worked for me:&lt;br /&gt;&lt;br /&gt;First, open a terminal window:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="font-style: italic;"&gt;Applications menu -&gt; Accessories -&gt; Terminal.&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Type the followings (you will be promted for admin password, because &lt;span style="font-family: courier new;"&gt;sudo&lt;/span&gt; prefix means you want to do something in the name of the super (or sytem) user):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo aptitude update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo aptitude install sun-java6-jdk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then you have to select things with arrows and pressing enter.&lt;br /&gt;Then Timothy says in the forum you have to type this, but I didn't need it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo update-alternatives --config java&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you can check if java is installed by typing &lt;span style="font-family: courier new;"&gt;java -version&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Installing Java plugin into Firefox is no more than making a symbolic link with the &lt;span style="font-family: courier new;"&gt;ln&lt;/span&gt; command. I had to go in the &lt;span style="font-family: courier new;"&gt;/usr/lib/mozilla/plugins&lt;/span&gt; directory, then make the symbolic link with this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;sudo ln -s /usr/lib/jvm/java-6-sun/jre/lib/i386/libnpjp2.so &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Restart Firefox if it's running. Java may work.&lt;br /&gt;Sorry for the laxity, I'm still a beginner Ubuntu user.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-8813745632271048589?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/8813745632271048589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=8813745632271048589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/8813745632271048589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/8813745632271048589'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2010/09/installing-firefox-java-plugin-on.html' title='Installing Firefox Java plugin on Ubuntu Linux for Dummies'/><author><name>tvik</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-6700366350637900546.post-2062174135703418616</id><published>2010-08-16T05:14:00.000-07:00</published><updated>2010-08-16T05:17:09.885-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Web-based chart libraries</title><content type='html'>Recently I was hunting for &lt;b&gt;good web-based client-side chart-drawing libraries&lt;/b&gt;. I've found a number of blog entries or articles which enumerates some subset of existing frameworks and write sentences about them, like this: '&lt;i&gt;This is fancy, this is not so fancy but it's still good.&lt;/i&gt;' Those writings didn't help me a lot.&lt;br /&gt;What I am interested in?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Presentation model:&lt;/b&gt; Can be Flash, HTML Canvas or any other magic. This influences interoperability and scalability of the charts.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Licensing model:&lt;/b&gt; Is it free, commercial or GPL.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Dependencies:&lt;/b&gt; Should I have to bring another dependencies with the chart-drawing facility?&lt;/li&gt;&lt;li&gt;&lt;b&gt;Docs:&lt;/b&gt; quality of documentation.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Examples:&lt;/b&gt; quality of examples.&lt;/li&gt;&lt;li&gt;And finally, &lt;b&gt;outlook&lt;/b&gt; of the charts and number of the &lt;b&gt;options&lt;/b&gt; are also matters.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I've found 16 libraries up to now and made an &lt;a href="https://spreadsheets.google.com/pub?key=0ArvfmdrIXoF_dGNGYldXZHUwXzltQVBpd2d6TFZoUFE&amp;hl=en&amp;output=html"&gt;overall matrix&lt;/a&gt; about them, regarding considerations above.&lt;br /&gt;&lt;br /&gt;Check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-2062174135703418616?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/2062174135703418616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=2062174135703418616' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2062174135703418616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2062174135703418616'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2010/08/web-based-chart-libraries.html' title='Web-based chart libraries'/><author><name>tvik</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-6700366350637900546.post-9182799075297823783</id><published>2010-03-19T01:25:00.000-07:00</published><updated>2010-03-19T01:28:36.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JUG'/><title type='text'>Brillien</title><content type='html'>There were three presentation as usual at the 14th &lt;a href="http://jum.javaforum.hu/?q=node/2"&gt;Java User Meeting&lt;/a&gt; at Budapest yesterday, but this time I'll write only about the first one.&lt;br /&gt;&lt;br /&gt;Imre Fazekas had been invited from Debrecen to make a presentation about &lt;a href="http://www.brillien.org"&gt;Brillien&lt;/a&gt;, their Java enterprise platform. It's an alternative way of modeling and implementing business logic in place of Java Enterprise (J2EE) Technology. It uses invasive programming model which means we have to extend classes from Brillien superclasses and we may use annotations. The whole system based on asynchronous XMPP communication and a set-context-flow concept. It's something like an application server, but uses a more logical and set-based approach. As the presenter said, it has very good speed and performance characteristics.&lt;br /&gt;&lt;br /&gt;Currently there are no IDE or other tools for editing models because this is a very young project, however a Maven plugin and a Maven archetype is accessible on the homepage.&lt;br /&gt;&lt;br /&gt;A very good introduction and tutorial can be also found on the homepage. The code can be downloaded as binary distribution and SVN repository is also accessible. As he said they are preparing to run it in production environment and they know about a few other users.&lt;br /&gt;&lt;br /&gt;It seems very exciting. Unfortunately I dont't have time to check it out at the moment, however, it's in the queue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-9182799075297823783?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/9182799075297823783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=9182799075297823783' title='32 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/9182799075297823783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/9182799075297823783'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2010/03/brillien.html' title='Brillien'/><author><name>tvik</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>32</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6700366350637900546.post-5947629343713672455</id><published>2009-09-30T01:13:00.000-07:00</published><updated>2010-03-10T08:34:41.257-08:00</updated><title type='text'>Hacking Apache POI</title><content type='html'>In the near future, presumably, I'll have to read and process complex &lt;b&gt;xlsx&lt;/b&gt; documents containing a lots of formulas. &lt;b&gt;Jexcelapi&lt;/b&gt; can't even open those kinds documents, so I turned to &lt;b&gt;Apache POI&lt;/b&gt;. Unfortunately, POI also have problems with some formulas becase support of this field is not fully laboured.&lt;br /&gt;&lt;br /&gt;[&lt;span style="font-weight: bold;"&gt;Update 2010.03.10:&lt;/span&gt;  After some experimentations I found that Apache POI can read and process new Excel (&lt;span style="font-family: courier new;"&gt;xlsx&lt;/span&gt;) documents including calculating very complex formulas: Basically, &lt;span style="font-family: courier new;"&gt;cell.getStringCellValue()&lt;/span&gt; gives the evaluated outcome. This way, I didn't have to hack POI. That's great!]&lt;br /&gt;&lt;br /&gt;I choosed to start two methods:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Knowing exact static structure of the Excel template document, I do problematic calculations in the reader program itself, eliminating POI's formula support.&lt;/li&gt;&lt;li&gt;I study Apache POI's internal structure and try to make up the missing functionality. Unfortunately, POI isn't amendable in a non-invasive way with registering components at certain extension points, so I had to dig in the source code in order to make modifications. Here are the basic experiences regarding setting up the POI sources locally:&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Sources can be obtained from subversion &lt;a href="http://svn.apache.org/repos/asf/poi/trunk/"&gt;http://svn.apache.org/repos/asf/poi/trunk/&lt;/a&gt; or from &lt;a title="direct download" href="http://www.apache.org/dyn/closer.cgi/poi/" id="m7bu"&gt;direct download&lt;/a&gt;. There are some "&lt;a title="how to build info" href="http://poi.apache.org/howtobuild.html" id="hm8."&gt;how to build info&lt;/a&gt;" on the homepage but it may be useful to record my own experiences, because there are some tricks. Downloaded source has pdf and html docs, but SVN repo contains those in xml format which can be converted by running &lt;span style="font-family:Courier New;"&gt;docs&lt;/span&gt; Ant target after installing &lt;a title="Apache Forrest" href="http://forrest.apache.org/" id="c6gl"&gt;Apache Forrest&lt;/a&gt; &lt;b&gt;&lt;a title="v0.4" href="http://archive.apache.org/dist/forrest/pre-0.6/" id="znbg"&gt;v0.5.1&lt;/a&gt;&lt;/b&gt; (unzip &amp;amp; set FORREST_HOME system variable to the forrest's root directory). I had to edit &lt;span style="font-family:Courier New;"&gt;forrest.build.xml&lt;/span&gt; at line 630, changing &lt;span style="font-family:Courier New;"&gt;failonerror&lt;/span&gt; value to &lt;span style="font-family:Courier New;"&gt;false&lt;/span&gt;, otherwise the build failed. Place of generated docs is written on the console after a successful build.&lt;br /&gt;&lt;br /&gt;For running &lt;span style="font-family:Courier New;"&gt;dist&lt;/span&gt; target, &lt;a title="JDepend" href="http://clarkware.com/software/JDepend.html#download" id="xlpf"&gt;JDepend&lt;/a&gt; jar have to be on the classpath and setting &lt;span style="font-family:Courier New;"&gt;-Xmx512m&lt;/span&gt; VM argument is needed. It completes in 7 minutes for me but no need to run it regularly, just to see if everything can go smoothly. Target &lt;span style="font-family:Courier New;"&gt;jar&lt;/span&gt; completes in 45 seconds from scratch and makes all needed jars.&lt;br /&gt;&lt;br /&gt;For building with an interactive IDE, add jars to the project from &lt;span style="font-family:Courier New;"&gt;lib&lt;/span&gt; and &lt;span style="font-family:Courier New;"&gt;ooxml-lib&lt;/span&gt; directories. Setting up JUnit3 may be also needed for running test cases. When running unit tests, add &lt;span style="font-family:Courier New;"&gt;test-data&lt;/span&gt; directory to the classpath or specify &lt;span style="font-family:Courier New;"&gt;POI.testdata.path&lt;/span&gt; system property.&lt;br /&gt;&lt;br /&gt;Target &lt;span style="font-family:Courier New;"&gt;maven-poms&lt;/span&gt; creates jar and POM files for Maven and a Unix shell script to install the artifacts in the &lt;span style="font-family:Courier New;"&gt;build/dist&lt;/span&gt; directory. I created a DOS batch file with commands like this:&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;call mvn install:install-file -Dfile=poi-scratchpad-@VERSION@.jar -DpomFile=poi-scratchpad-@VERSION@.pom&lt;/span&gt;&lt;br /&gt;I ommited date timestamp info from the artifacts' name. &lt;span style="font-family:Courier New;"&gt;build.xml&lt;/span&gt; must have been modified in the &lt;span style="font-family:Courier New;"&gt;jar&lt;/span&gt; target to ommit timestamp postfixes. &lt;span style="font-family:Courier New;"&gt;maven-poms&lt;/span&gt; also must have been modified to copy the new maven-deploy batch file.&lt;span style="font-family:Courier New;"&gt; version.id&lt;/span&gt; property may be modified in &lt;span style="font-family:Courier New;"&gt;build.xml&lt;/span&gt; to flag the forked version.&lt;br /&gt;&lt;br /&gt;Apache POI is now ready to be hacked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-5947629343713672455?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/5947629343713672455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=5947629343713672455' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/5947629343713672455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/5947629343713672455'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2009/09/hacking-apache-poi.html' title='Hacking Apache POI'/><author><name>tvik</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-6700366350637900546.post-2124422274971173242</id><published>2009-07-30T03:09:00.000-07:00</published><updated>2009-07-30T03:21:28.667-07:00</updated><title type='text'>Json-lib vs Hibernate</title><content type='html'>&lt;b&gt;Subtitle: &lt;code&gt;java.util.Date&lt;/code&gt; vs &lt;code&gt;java.sql.Timestamp&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;One of my projects has a data path where &lt;a href="https://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; entities are converted to &lt;a href="http://www.json.org/"&gt;Json&lt;/a&gt; objects by using &lt;a href="http://json-lib.sourceforge.net/"&gt;json-lib&lt;/a&gt;. I have some special formatters, e.g. for Date objects for having an easy readable format instead of this: &lt;br /&gt;&lt;br /&gt;&lt;code&gt;{"date":1,"day":4,"hours":1,&lt;br /&gt;"minutes":0,"month":0,"nanos":0,&lt;br /&gt;"seconds":0,"time":0,"timezoneOffset":-60,"year":70}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;A &lt;a href="http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JsonConfig.html"&gt;JsonConfig&lt;/a&gt; object can be suited by special formatters which later will be given to the &lt;a href="http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html#fromObject(java.lang.Object,%20net.sf.json.JsonConfig)"&gt;fromObject&lt;/a&gt; method:&lt;br /&gt;&lt;pre&gt;JsonConfig cfg = new JsonConfig();  &lt;br /&gt;cfg.registerJsonValueProcessor(&lt;br /&gt;  java.util.Date.class, new JsonValueProcessor() {&lt;br /&gt;  private static final SimpleDateFormat SDF =&lt;br /&gt;  new SimpleDateFormat("yyyy-MM-dd");&lt;br /&gt;  public Object processArrayValue(Object value, JsonConfig c) {&lt;br /&gt;    return format((Date)value);&lt;br /&gt;  }&lt;br /&gt;  public Object processObjectValue(&lt;br /&gt;    String key, Object v, JsonConfig c) {&lt;br /&gt;    return format((Date)v);&lt;br /&gt;  }&lt;br /&gt;  public static String format(Date date) {&lt;br /&gt;    return SDF.format(date);&lt;br /&gt;  }&lt;br /&gt;});&lt;br /&gt;JSONObject json = JSONObject.fromObject(objToConvert, cfg);&lt;/pre&gt;&lt;br /&gt;The problem is, that the code above sometimes doesn't work, because json-lib's default search mechanism regarding value formatters is based on exact class match, however, Hibernate sometimes replaces values for something else, say &lt;code&gt;java.util.Date&lt;/code&gt; to &lt;code&gt;java.sql.Timestamp&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;It's no matter when using final classes, but we simply cannot apply substitution principle (&lt;a href="http://en.wikipedia.org/wiki/Liskov_substitution_principle"&gt;LSP&lt;/a&gt;) generally when using &lt;b&gt;getClass-match&lt;/b&gt;. In this case, &lt;code&gt;fromObject&lt;/code&gt; won't convert descendants properly when we register a formatter for the superclass. An ugly solution is to register formatters for all descendant classes explicitly but this violates &lt;a href="http://en.wikipedia.org/wiki/Open/closed_principle"&gt;Open Closed Principle&lt;/a&gt;. When a new descendant appears, we must amend the code which registers the formatters.&lt;br /&gt;&lt;br /&gt;Fortunately it's possible to replace the default search mechanisn too:&lt;br /&gt;&lt;pre&gt;cfg.setJsonValueProcessorMatcher(&lt;br /&gt;  new JsonValueProcessorMatcher() {&lt;br /&gt;  public Object getMatch(Class target, Set set) {&lt;br /&gt;    if( target != null &amp;&amp; set != null) {&lt;br /&gt;      for(Object obj : set) {&lt;br /&gt;        Class c = (Class) obj;&lt;br /&gt;        if(c.isAssignableFrom(target)) return c;&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    return null;&lt;br /&gt;  }&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;code&gt;target&lt;/code&gt; is the runtime class type of the object to convert, &lt;code&gt;set&lt;/code&gt; contains the registered formatters' keys. &lt;code&gt;getMatch&lt;/code&gt; contract method returns the key for the appropriate formatter or &lt;code&gt;null&lt;/code&gt; if no such one.&lt;br /&gt;&lt;br /&gt;This solution still have drawbacks. Say, if I register &lt;code&gt;java.util.Date&lt;/code&gt; and &lt;code&gt;java.sql.Timestamp&lt;/code&gt; too, the matcher will randomly find them, based on the order of the keys in the set. So, some logic is missing which searches for closest match or something like that. But it's good for a demo code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-2124422274971173242?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/2124422274971173242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=2124422274971173242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2124422274971173242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2124422274971173242'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2009/07/json-lib-vs-hibernate.html' title='Json-lib vs Hibernate'/><author><name>tvik</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-6700366350637900546.post-893904420154069819</id><published>2009-06-20T11:18:00.000-07:00</published><updated>2009-06-20T11:24:37.799-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logging'/><category scheme='http://www.blogger.com/atom/ns#' term='j2ee'/><title type='text'>jxl.log</title><content type='html'>In an intranet production environment we have running a &lt;a title="Glassfish v2" href="https://glassfish.dev.java.net/" id="csf_"&gt;Glassfish v2&lt;/a&gt; appserver with several J2EE applications which all use &lt;a title="JexcelApi" href="http://jexcelapi.sourceforge.net/" id="rlzx"&gt;JexcelApi&lt;/a&gt;, a.k.a JXL, which is an open source library for accessing, generating or manipulating Microsoft Excel documents. We use version 2.6.3 of JXL because it's the recent one in the &lt;a title="Maven" href="http://maven.apache.org/" id="ktev"&gt;Maven&lt;/a&gt; repository which we use, however, at the official JXL site there are newer versions. Additionally we have &lt;a title="log4j" href="http://logging.apache.org/log4j/1.2/index.html" id="z.g:"&gt;log4j&lt;/a&gt; and &lt;a title="Java Commons Logging" href="http://commons.apache.org/logging/" id="eiw_"&gt;Java Commons Logging&lt;/a&gt; (JCL), ignoring Glassfish's &lt;a title="JSR-47" href="http://jcp.org/en/jsr/detail?id=47" id="dyxx"&gt;JSR-47&lt;/a&gt; Java Util Logging (JUL) facility.&lt;br /&gt;&lt;br /&gt;Application #1 uses purely log4j and gets its log4j.xml config from a custom location.&lt;br /&gt;Application #2 runs Java Commons Logging with no explicite configuration file given, so JCL uses the default JUL facility of the appserver.&lt;br /&gt;&lt;br /&gt;Application #1 had been running for a long time without problems but when we installed #2 we realized that a &lt;b style="font-family: Courier New;"&gt;jxl.log&lt;/b&gt; file had been created in the &lt;span style="font-family:Courier New;"&gt;glassfish/domain/domain1/config &lt;/span&gt;directory and it's rapidly growing. As it happens, we realized that when the partition had been fulled and all enterprise applications had been badly crashed.&lt;br /&gt;&lt;br /&gt;I looked into the JexcelApi source and saw that it has a &lt;span style="font-family:Courier New;"&gt;log4.xml&lt;/span&gt; which set everything into debug mode and set up a file appender for file jxl.log. It was clear that it's a demo config file and because of the &lt;a title="JCL configuration mechanism" href="http://commons.apache.org/logging/guide.html#Configuration" id="xtjp"&gt;JCL configuration mechanism&lt;/a&gt;, the Log4 DOM Configurator gained control and did its job. As Andy Khan wrote "&lt;i&gt;The sample log4j file included along with the distribution is only indicative&lt;/i&gt;" and as Kevin replied at the &lt;a title="Registration needed." href="http://tech.groups.yahoo.com/group/JExcelApi/" id="zyjm"&gt;Yahoo JexcelApi group&lt;/a&gt; back in 2007: &lt;i&gt;"I think the problem occurs when using jexcelapi in an environment that where multiple logging frameworks are used. Some libraries use log4j, some use commons logging and some use the jdk logging framework. The ones that use log4j or commons logging sometimes look for a log4j.xml on the classpath.  When jexcelapi is jarred up, the log4j.xml gets stuck in the "root" of the jar and often gets picked up by log4j or commons logging.  Since the default log4j config of jexcelapi is so broad, it ends up overwriting the policies of other libraries."&lt;/i&gt; Yes, I can confirm it's definitively a problem.&lt;br /&gt;&lt;br /&gt;So, the narrower task was to fix this particular problem but the broader task was to prepare for those cases when a jar in a j2ee application contains a log4j config for any reasons.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It's a good fix to remove log4j.xml from the jar, but say when we talk about Maven build system, it's not a trivial task to dig into an artifact and change it. What's more, who want to care about changing third party dependencies even when using Ant? Fortunately, later versions of JXL don't contain this config file so it could be a good fix to use one of them. Conclusion for component builders to not to put log4j (and any) config into the root of the artifact.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;However, it could happen that it's not enough to change the jar to a newer one, make a new build and deploy to the appserver, because the appserver may hold the configured loggers running and some jar files in a devious working directory and couldn't release them when undeploying. Additionally, when it restarts it may pick up again the old wrong jars. Particularly, we have had the old jar files in the &lt;span style="font-family:Courier New;"&gt;application/j2ee-apps&lt;/span&gt; and the webapps' directory of the Glassfish's domain directory and couldn't delete it even by hand until the appserver had been stopped.&lt;/li&gt;&lt;li&gt;As Application #1 showed us, it may be a rough but useful practice to get the log4j config from a custom location by giving an absolute file name in an environment variable. (-D argument of the JVM.) But this defends only the particular application. And when we don't want to use log4j in that application we also have to give a log4j config just for hide the corrupted one, which is unacceptable.&lt;br /&gt; &lt;/li&gt;&lt;li&gt;A good practice according to me, to follow Andreas Shaefer's tip regarding set up log4j logging in Glassfish in his blog entry: &lt;a title="To the hell with JDK logging II." href="http://weblogs.java.net/blog/schaefa/archive/2007/08/to_the_hell_wit_1.html" id="d3dc"&gt;To the hell with JDK logging II.&lt;/a&gt;. In our case it prevented Application #1 from corrupt logging by placing a log4j.xml to the very front of the classpath, however, it enabledApplication #2 to use its special config.&lt;br /&gt; &lt;/li&gt;&lt;/ul&gt;Otherwise, a correct and useful logging tip collection would be very handsome for J2EE environment, but not a one which says that every logger instance method invocation should be an EJB call.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-893904420154069819?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/893904420154069819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=893904420154069819' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/893904420154069819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/893904420154069819'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2009/06/jxllog.html' title='jxl.log'/><author><name>tvik</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6700366350637900546.post-5486000658228369418</id><published>2009-05-30T10:23:00.000-07:00</published><updated>2009-05-30T11:19:09.027-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><title type='text'>JUM VIII. - IX. - X.</title><content type='html'>In the recent months there were a few Java-related microconferences organized at Budapest.&lt;br /&gt;&lt;br /&gt;At the eighth occassion of the &lt;a href="http://www.jum.hu/?q=node/2"&gt;Java User Meeting&lt;/a&gt; (JUM) in January we had a presentation about &lt;a href="http://en.wikipedia.org/wiki/Osgi"&gt;OSGi&lt;/a&gt; by local guys and about &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; by &lt;a href="http://cornelcreanga.com/2009/01/java-user-group-budapest/"&gt;Cornel Creanga&lt;/a&gt; from the Romanian Adobe office. I've read his blog and I must say life of an evangelist can be very cool (if there's no wife or girlfriend:)). Visiting Java and Adobe user groups all around in Europe, it's great.&lt;br /&gt;&lt;br /&gt;At the ninth occasion in March we had three presentations: introduction to the &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; build system, SOAP testing with &lt;a href="http://www.soapui.org/"&gt;SOAPui&lt;/a&gt; and various other components, and &lt;a href="http://en.wikipedia.org/wiki/Olap"&gt;OLAP&lt;/a&gt; architectures. The latter was driven by the magnificant &lt;a href="http://prezi.com/"&gt;prezi&lt;/a&gt; presentation engine, which is a very young Hungarian startup project and which will be &lt;a href="http://launchsiliconvalley.org/presentingc.html"&gt;introduced&lt;/a&gt; soon at the Silicon Walley and I'm sure it will have a great success. Otherwise, I guess this time we beat down the highest participant number with about 40 attendees.&lt;br /&gt;&lt;br /&gt;At the tenth occassion we had a presenter again from outside of the country: Corsin Decurtins from Switzerland came and talked about &lt;a href="http://jazoon.com/jazoon07/en/conference/presentationdetails.html?type=sid&amp;amp;detail=874"&gt;Rapid prototyping with object oriented databases&lt;/a&gt;. The discourse had also been presented at the &lt;a href="http://jazoon.com/"&gt;Jazoon&lt;/a&gt; conference in 2007. He also talked about the conference itself which is organized in Zurich every summer. I think this time I skip it due to various domesticies. Other two discourses were about SOAP testing with &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; and &lt;a href="http://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The next Java User Meeting will be held at the third wednesday of September. If you are an ardent evangelist or your company would appreciate if you would talk about their product, (and this product can be connected to Java somehow) &lt;a href="http://www.jum.hu/?q=contact"&gt;contact&lt;/a&gt; with the JUM organizers. Budapest is still beautiful in September and we know the right pubs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-5486000658228369418?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/5486000658228369418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=5486000658228369418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/5486000658228369418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/5486000658228369418'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2009/05/jum-viii-ix-x.html' title='JUM VIII. - IX. - X.'/><author><name>tvik</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-6700366350637900546.post-1238511364733615246</id><published>2009-01-19T04:00:00.000-08:00</published><updated>2009-01-19T04:04:01.952-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><title type='text'>Budapest Newtech Meetup</title><content type='html'>The originally planned programme of the January Budapest Newtech Meetup contained some interesting presentations like the smart 3D visualizer solution (&lt;a href="http://www.3dforall.hu/"&gt;3dForAll&lt;/a&gt;) from a young Hungarian inventor or the &lt;a href="http://code.google.com/intl/hu/appengine/"&gt;Google App Engine&lt;/a&gt; which is an alternative server-side solution for those who don't have own server facilities. It can be used mainly for OpenSocial applications which is actual nowadays because of leader social network of Hungary (Wiw: Who is Who) had been announced to support opensocial applications in the near future. Further live demo would had been the &lt;a href="http://www.microsoft.com/SURFACE/index.html"&gt;Surface&lt;/a&gt; which is a Microsoft hardware but it had been also cancelled.&lt;br /&gt;&lt;br /&gt;The event had been organized this time in a small art movie near the Buda-side of the Margareth bridge. About 130 people were present, some of them couldn't fit into the room.&lt;br /&gt;&lt;br /&gt;The first demo was about the &lt;a href="http://www.zoomery.com/hun/fromorigo.aspx"&gt;Zoomery&lt;/a&gt; application which is built on Microsoft Silverlight technology and used for deep-zooming a set of pictures or documents. Several kinds of documents can be converted to this special image format which is highly zoomable, filterable and orderable with the application itself.&lt;br /&gt;&lt;br /&gt;Next presentation was about the &lt;a href="http://www.sensenet.hu/"&gt;Sensenet&lt;/a&gt;, a unique open source .NET based Enterprise Content Management System. They have some working project with this CMS at some larger company or organization in Hungary and abroad. It can be a deliberate solution for those who adhere Microsoft technology. In Java world, &lt;a href="http://www.alfresco.com/"&gt;Alfresco&lt;/a&gt; is a similar open source Enterprise CMS.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Ustream"&gt;UStream&lt;/a&gt; is a web-based video streaming solution. The company have some Hungarian relations and not least most development happen at Budapest. We saw a video stream on the movie screen in a web browser which was being captured by a 3G phone in the room and was passed through a server placed in the US. Not the technology was the main point but the possibility to manage the stream as a service: embedding it into own webpage, placing own trademark on the stream, managing user-access. Afterall, it was a great demonstration.&lt;br /&gt;&lt;br /&gt;Last presentation was about &lt;a href="http://www.turulmeme.com"&gt;TurulMeme&lt;/a&gt;, which is a webpage based on sharing facilities of Google Reader. People can register their sharings into the TurulMeme and they appear on the page as tagged, commentable, filterable news with information on how many other users read it and something like this. It wasn't a big technological breakthrough according to me, there are many more similar services on the web, but the main difference that this site focuses mainly on Hungarian news sources. As the developer said it had been completed in days (MS techonology) and it's rather fun than a serious competitor of other link sharing services.&lt;br /&gt;&lt;br /&gt;Afterall, it was a great event in a great place with many people and hot vine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-1238511364733615246?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/1238511364733615246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=1238511364733615246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/1238511364733615246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/1238511364733615246'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2009/01/budapest-newtech-meetup.html' title='Budapest Newtech Meetup'/><author><name>tvik</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-6700366350637900546.post-3890415161389967108</id><published>2008-12-19T05:42:00.000-08:00</published><updated>2008-12-19T05:51:28.940-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB3'/><category scheme='http://www.blogger.com/atom/ns#' term='Appserver'/><title type='text'>Client's transaction aborted</title><content type='html'>I've met the above error message using a &lt;span style="font-weight: bold;"&gt;Wicket 1.2&lt;/span&gt; / &lt;span style="font-weight: bold;"&gt;EJB3&lt;/span&gt; intranet application under &lt;span style="font-weight: bold;"&gt;Glassfish v2&lt;/span&gt;.&lt;br /&gt;Here is the more particular head of the stack trace:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;javax.ejb.TransactionRolledbackLocalException: Client's transaction aborted&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    at com.sun.ejb.containers.BaseContainer.useClientTx(BaseContainer.java:3394)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:3274)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1244)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:195)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:127)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This exception raised on the integration server sometimes, randomly, for simple page fetch operations. After pressing reload on the browser, the operation was usually successful. I couldn't reproduce the failure on the local machine where I regularly restart the app server and have run some tiny applications only beside the subject one.&lt;br /&gt;&lt;br /&gt;After some hours code bugging I'd found a &lt;a href="http://forums.sun.com/thread.jspa?threadID=5258852&amp;amp;tstart=-1"&gt;forum message&lt;/a&gt; which gave me an idea to play some rounds with the Glassfish's HTTP Service configuration. Maybe not my EJB logic is buggy or misconfigured but the client web application causes the error somehow. Unfortunately I couldn't quarry anything regarding this from the default server logs.&lt;br /&gt;&lt;br /&gt;Finally I tried the following on the Glassfish admin console which solved the problem as a symptomatic treatment:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuration&lt;/span&gt; &gt; &lt;span style="font-weight: bold;"&gt;HTTP Service&lt;/span&gt; &gt; &lt;span style="font-weight: bold;"&gt;RequestProcessing&lt;/span&gt; &gt; &lt;span style="font-weight: bold;"&gt;Thread Count&lt;/span&gt; (set a higher value, the default is 5. 10 is worked for me.)&lt;br /&gt;&lt;br /&gt;It seems to be working now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-3890415161389967108?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/3890415161389967108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=3890415161389967108' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/3890415161389967108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/3890415161389967108'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/12/clients-transaction-aborted.html' title='Client&apos;s transaction aborted'/><author><name>tvik</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-6700366350637900546.post-4933698292970613305</id><published>2008-12-10T05:34:00.000-08:00</published><updated>2008-12-10T07:17:53.359-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Eclipse DemoCamp Budapest</title><content type='html'>This year I also couldn't get to any of the heavy European Java conferences, so I stayed at visiting some tiny local events intown. For example last week I attended on the Eclipse DemoCamp Budapest which was organized by the right engaging &lt;a href="http://www.b2international.com"&gt;b2i&lt;/a&gt; local team at a pleasant (but not too silent) downtown pub.&lt;br /&gt;&lt;br /&gt;Around 20 participant were present and there were two presentations, or rather demos planned. When people entered they were asked if they had some interesting subject to speak about, so the whole thing had an unconference style. &lt;a href="http://www.fotgroup.com/"&gt;FOT Testing Services&lt;/a&gt; guys actually had a notebook with a copy of their recent project so they took the opportunity to introduce it to the public.&lt;br /&gt;&lt;br /&gt;First demo was about making a generic data model with &lt;a href="http://www.eclipse.org/modeling/emf/"&gt;EMF&lt;/a&gt; (Eclipse Modeling Framework) plugin and creating a model editor with Eclipse &lt;a href="http://www.eclipse.org/modeling/gmf/"&gt;GMF&lt;/a&gt; (Graphical Modeling Framework) which is given by &lt;a href="http://www.eclipse.org/gef/"&gt;GEF&lt;/a&gt; (Graphical Editing Framework). The example model was a basic CD database.&lt;br /&gt;&lt;br /&gt;With suitable experiences, it takes about 10-20 minutes to create a comfortable class diagram-like Eclipse-based graphical editor for a data model with the same complexity. b2i assembled a complex healthcare system model and editor in six months as they said. (I don't know how many people, I guess 2-4.) It's worth considering to use these tools in case of a similar proposition.&lt;br /&gt;&lt;br /&gt;Second demo was about testing banking applications with Eclipse environment (FOT Testing Services) with their plugin set. There were green and red strikes, an imitation of the GUI of the banking application for testing, report generation tools and much more. People with &lt;br /&gt;&lt;br /&gt;Third demo was about Eclipse tips and tricks. A guy showed a number of smart keyboard shortcuts and useful functions. Most of us know most funtions so I observed that the average knowledge was rather high.&lt;br /&gt;&lt;br /&gt;After that, or rather during the last demo, the event slightly turned into a drinking party. Unfortunately I had to leave but I decided to be there at the next occassion, maybe in next Juny or so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-4933698292970613305?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/4933698292970613305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=4933698292970613305' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/4933698292970613305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/4933698292970613305'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/12/eclipse-democamp-budapest.html' title='Eclipse DemoCamp Budapest'/><author><name>tvik</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-6700366350637900546.post-4835442957243655798</id><published>2008-08-07T07:03:00.000-07:00</published><updated>2008-08-07T07:06:49.357-07:00</updated><title type='text'>Cloud Computing</title><content type='html'>Is it the ultimate innovation or is it the next buzzword managers and sales staff members must record into their notebooks?&lt;br /&gt;&lt;br /&gt;After reading some &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;material&lt;/a&gt; it doesn't mean more for me than a clustered client-server architecture where processing capacity and memory can be hired and clients are generally web browsers or other applications. It's not a big novelty form the developers' point of view so first of all we got a new phrase for the hot water.&lt;br /&gt;&lt;br /&gt;Don't mix it with 'grid computing' where real math computations are running on a statically or dynamically built distributed network (SETI@home for an example) and clients are active participants of the process. Instead of this, with cloud computing, you connect to the service and use it. So I don't get again where is the  magic. (Maybe the magic is in the ability of obtaining a large amount of personal data and money from the users.) I can imagine an architecture which discovers (sourceforge does this) or even deploys automatically service components geographically closer to the requester. So yes, there can be interesting aspects.&lt;br /&gt;&lt;br /&gt;Anyway, we have to learn:&lt;ul&gt;&lt;li&gt;Internet, Server (deprecated, past)&lt;/li&gt;&lt;li&gt;Cloud Computing (trendy, future)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-4835442957243655798?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/4835442957243655798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=4835442957243655798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/4835442957243655798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/4835442957243655798'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/08/is-it-ultimate-innovation-or-is-it-next.html' title='Cloud Computing'/><author><name>tvik</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-6700366350637900546.post-2606727407761468901</id><published>2008-06-05T09:10:00.001-07:00</published><updated>2008-06-05T09:28:42.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB3'/><title type='text'>Setting up EJB3 default interceptor</title><content type='html'>It &lt;a href="http://www.developer.com/java/ejb/article.php/10931_3670496_4"&gt;wasn't easy&lt;/a&gt; to find out how to configure a default interceptor in EJB3 environment.&lt;br /&gt;It's okay to make this snippet into the ejb-jar.xml:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;assembly-descriptor&amp;gt;&lt;br /&gt;      &amp;lt;interceptor-binding&amp;gt;&lt;br /&gt;          &amp;lt;ejb-name&gt;*&amp;lt;/ejb-name&amp;gt;&lt;br /&gt;          &amp;lt;interceptor-class&amp;gt;pkg.IC&amp;lt;/interceptor-class&amp;gt;&lt;br /&gt;      &amp;lt;/interceptor-binding&amp;gt;&lt;br /&gt;  &amp;lt;/assembly-descriptor&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Maybe everybody forget to mention maybe it's a Glassfish V2 trick that I get this error message during deployment:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:courier new;" &gt;Interceptor binding contains an interceptor class  name = pkg.IC that is not defined as an interceptor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...unless I register the interceptor class itself too with this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &amp;lt;interceptors&amp;gt;&lt;br /&gt;      &amp;lt;interceptor&amp;gt;&lt;br /&gt;          &amp;lt;interceptor-class&gt;pkg.IC&amp;lt;/interceptor-class&amp;gt;&lt;br /&gt;          &amp;lt;around-invoke&amp;gt;&lt;br /&gt;              &amp;lt;method-name&amp;gt;call&amp;lt;/method-name&amp;gt;&lt;br /&gt;          &amp;lt;/around-invoke&amp;gt;&lt;br /&gt;      &amp;lt;/interceptor&amp;gt;&lt;br /&gt;  &amp;lt;/interceptors&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&amp;lt;interceptors&amp;gt; and &amp;lt;assembly-descriptor&amp;gt; are children of &amp;lt;ejb-jar&amp;gt; element in this order as it &lt;span style="font-style: italic;"&gt;seems well&lt;/span&gt; in the &lt;a href="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"&gt;xsd&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-2606727407761468901?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/2606727407761468901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=2606727407761468901' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2606727407761468901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2606727407761468901'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/06/setting-up-ejb3-default-interceptor.html' title='Setting up EJB3 default interceptor'/><author><name>tvik</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6700366350637900546.post-4872249221220819336</id><published>2008-05-06T06:53:00.000-07:00</published><updated>2008-05-06T06:55:38.250-07:00</updated><title type='text'>Survey</title><content type='html'>Some months ago I read an article which said programmers usually do their hobby projects much better than their working projects. There are several reasons like time-pressure, predefined set of useless tools and pointless procedures, rubber specifications etc.&lt;br /&gt;&lt;br /&gt;I've made a little survey about that. Do you feel sometimes it would be better to be a shepherd somewhere on a sympathetic highland in, say, Scotland and to forget all office crap? Or do you arrive at yor workplace every morning that you know you will change the world a little, of course in the right direction?&lt;br /&gt;&lt;br /&gt;The survey is here at the right. Thank you for giving an answer if you did.&lt;br /&gt;&lt;br /&gt;It would be nice to know the distribution of the answers by several categories like programming languages, destination environments, open source and commercial projects, speciality of the projects (banking, science, administration, telecommunications, entertainment, web/publishing), however, this simple survey is not capable for that.&lt;br /&gt;&lt;br /&gt;But I have some opinions. It's apparent that open source projects are cooler than commercial ones. Scientific and academic projects must be also nice as they can have much more time for research and development than, let's say, outsourced banking projects where contracting party is generally absolutely disinterested in the question of nice, reusable and well-unit-tested code in contrast with delaying the payment for the software. I don't know what is the situation between programming languages but I think C or C++ programmers on embedded devices make a much more precise work than Java  programmers at enterprise projects. Lower-level programming languages need more enthusiasm, higher-level ones are more popular which implies broader distribution in the level of knowledge of the programmers. But these are just thoughts...&lt;br /&gt;&lt;br /&gt;Let's see the results at 1st of July.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-4872249221220819336?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/4872249221220819336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=4872249221220819336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/4872249221220819336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/4872249221220819336'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/05/survey.html' title='Survey'/><author><name>tvik</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-6700366350637900546.post-2607294206264961955</id><published>2008-04-02T03:22:00.000-07:00</published><updated>2008-04-02T03:26:03.959-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JUG'/><category scheme='http://www.blogger.com/atom/ns#' term='Appserver'/><title type='text'>AppServer Shootout</title><content type='html'>Recently we organized an AppServer shootout (we call it deatmatch) on our local Java User Meeting. The three contestants would have been Sun's Glassfish v2, Redhat's JBoss and IBM's Geronimo. Unfortunately IBM guy couldn't attend on this event because of other business and JBoss presentation had technical difficulties so we had to do with Glassfish demo. Let's see the 8 tasks:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;1. Deploying simple EJB3/JPA webapplication with pre-initialized DB. Checking WSDL as a bonus.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It was easy and elegant. We checked WSDL which was an ugly and large XML but it's been generated automatically. We did a test request by using the Glassfish's admin console. That means we filled an HTML form containing one of the webservice's method's parameters and submitted it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;2. Remote deploy from build script. (Usual development task.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We did it from Netbeans using Ant and a special Glassfish deploy task. AFAIK hot deploy is also supported by Glassfish when appserver scans a pre-set directory and our task is to plump ear or war file into that place.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;3. Changing logging config during runtime.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We did it by using the admin console and logs could be browsed by a fancy HTML table. Severity level of loggers could be set by logger instance as usual. The Test application was Glassfish-friendly because it used Java Util Logging and 'fortunately' Glassfish also supports that (and only that?) logger framework. I think log4j config could had been happened by editing log4j.xml by hand and we had to pass up the fancy HTML log table, nevertheless I would have been happy with that since I prefer anything else than java.util.logging.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;4. Remote runtime-debugging of the application.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It was OK, however Glassfish must have been restarted each time before connecting debugger client. As I remember JBoss doesn't need restart when a certain JVM switch is set. Of course it needs when we want to change that switch. We used Netbeans as a debugger client but it would have been anything else, for example Eclipse.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;5. Changing data-source.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We expected it won't work without restarting the application and of course it did (not). Other expectation could be against the appserver to not to totally crash down in this case. It didn't crash, just the application started to throw ugly excpetions with long-long stack traces. Changing datasource had been worked after restarting application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;6. Restarting appserver with the application. (How much time does it take?)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We restarted appserver, but unfortunately forgot to measure it with stopwatch. It could have been 10 seconds.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;7. Integrating LDAP (if we have time)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Guys started to configure it but there were some technical difficulties. They said usually it can be done in 10 minutes. We wanted to see the stress test so we jumped.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;8. Stress test with JMeter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That would have been exciting if we had the other contestant appservers running on the same hardware, unfortunately we had not. However, a plain dual-core notebook could serve 1700 requests per second without tuning, and 2200 with tuning.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.sun.com/app/docs/doc/819-3681"&gt;Tuning tips&lt;/a&gt; we used.&lt;br /&gt;&lt;a href="http://weblogs.java.net/blog/sdo/archive/2007/03/ab_considered_h.html"&gt;Why&lt;/a&gt; didn't we use Apache Benchmark.&lt;br /&gt;We used &lt;a href="http://jakarta.apache.org/jmeter/"&gt;JMeter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm looking forward to the next occassion where we'll have hopefully other competitors with sharpened environments.&lt;br /&gt;&lt;br /&gt;Beyond this appserver stuff, we had a presentation about &lt;a href="http://blog-o-lok.blogspot.com/2008/03/jum-6.html"&gt;component models&lt;/a&gt; and a BlazeDS, Flex&lt;a href="http://jhacks.anzix.net/space/kocka/blazeproto-0.1.tar.gz"&gt; prototype app&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-2607294206264961955?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/2607294206264961955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=2607294206264961955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2607294206264961955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2607294206264961955'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/04/appserver-shootout.html' title='AppServer Shootout'/><author><name>tvik</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-6700366350637900546.post-830517912420920907</id><published>2008-03-07T00:51:00.000-08:00</published><updated>2008-03-07T01:01:08.099-08:00</updated><title type='text'>Challenge24 EC</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Challenge24&lt;/span&gt; had been started as an internal competition at the local techincal university of Budapest. For now it became an international programming contest which is being organized 8th time this year. The contest itself usually happens in May when teams must be present personally but it's preceeded by a qualifying session (a.k.a &lt;span style="font-weight: bold;"&gt;Electronic Contest&lt;/span&gt;) which has been arranged on the last weekend of February and teams didn't have to be present personally, just to be online.&lt;br /&gt;&lt;br /&gt;At Electronic Contest there are up to 8 combinatorical, geometrical, game theorical problems which have to be solved by sending the result files to the central server. Teams are free to choose platform and programming language.&lt;br /&gt;&lt;br /&gt;More information including rules, list of teams and their scores, assignment of the Electronic Contest can be found on the &lt;a href="http://www.blogger.com/www.challenge24.org"&gt;homepage&lt;/a&gt;. The name is Challenge24, because the main contest in May lasts for 24 hours.&lt;br /&gt;&lt;br /&gt;I didn't take part nor this year nor earlier but I usually download and solve some tasks from the Electronic Contest's problem set, just to keep my mind rolling. I need these screwed examples because at work I'm developing administration and web-based software components for business sector where capability of whoomping buzzwords and using the four elementary math operations is rather enough than real thinking and planning.&lt;br /&gt;&lt;br /&gt;Sometimes I envy guys who are working on games, 3D engines, embedded devices where the iron is highly finite or anything else than administrative software.&lt;br /&gt;&lt;br /&gt;And I'm curious how leader teams are preparing for the competition. I guess they need a very rich algorythm collection, they have to know perfectly the language and the IDE they are using, strong self-confidence is also a must in algorythms but I don't know how deep mathematical knowledge is required. How much counts the targeted knowledge, how much are exercies finger-practices for those who have targeted knowledge, let's say geometrical examples. It would be interesting to know what language and IDE do they use. Do they use mainstream production languages (Java, C#, C++) or use some functional or logic programming languages like Prolog? Do they use artificial intelligence modules?&lt;br /&gt;&lt;br /&gt;Who are the leader teams at all? University students? Colleagues in a company? Talent freelancers? It's a pity that challenge24.org doesn't serve a short introduction of the teams. &lt;span style="font-weight: bold;"&gt;Hey! Write a comment if you know anything abut them.&lt;/span&gt; So I don't know anything but it seems something goes very well in Sweeden and Poland.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Congratulations!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-830517912420920907?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/830517912420920907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=830517912420920907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/830517912420920907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/830517912420920907'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/03/challenge24-ec.html' title='Challenge24 EC'/><author><name>tvik</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-6700366350637900546.post-7425915415860945500</id><published>2008-03-05T04:31:00.001-08:00</published><updated>2008-03-07T00:58:24.888-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 157</title><content type='html'>Why do I post these? I've been regularly listening these podcasts and sometimes I flag more interesting subjects in order to be able to re-listen them. It's just one step forward to flag *all* main subjects and make it public whether it's useful for others. This one was the latest Episode in 2007 or the first in 2008 depending on the point of view. With this, all tracklists of 2008-episodes are present up to now. Further ones are posted to the JavaPosse Google Group. Henceforward, I plan to write real posts here. :)&lt;br /&gt;&lt;br /&gt;Original shownotes and the audible mp3 of the podcast can be found &lt;a href="http://www.javaposse.com/index.php?post_id=293004"&gt;here&lt;/a&gt;.&lt;br /&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?docid=dgqxb88q_7c2qm8h8d"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;00:10 Metal theme, intro&lt;br /&gt;03:40 Announcing JavaPosse Roundup&lt;br /&gt;09:35 'Smart Drink Coasters - Digital Pub' / Is java slow?&lt;br /&gt;14:00 Is java loosing place? Reflecting for weird articles.&lt;br /&gt;21:55 What did you give for Christmas?&lt;br /&gt;31:55 Favourite aspect or moments of the year&lt;br /&gt;33:10 JavaPosse Google Group&lt;br /&gt;41:40 Last year predictions&lt;br /&gt;45:50 Predictions for next year&lt;br /&gt;47:30 Special guests :)&lt;br /&gt;50:10 Winners or loosers&lt;br /&gt;52:20 Happy New Year&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-7425915415860945500?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/7425915415860945500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=7425915415860945500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/7425915415860945500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/7425915415860945500'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/03/javaposse-episode-157.html' title='JavaPosse Episode 157'/><author><name>tvik</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-6700366350637900546.post-58445348036924530</id><published>2008-02-24T23:45:00.000-08:00</published><updated>2008-02-24T23:46:56.700-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 158</title><content type='html'>This is a tracklist of a JavaPosse Episode.&lt;br /&gt;Original shownotes and the audible mp3 can be found &lt;a href="http://www.javaposse.com/index.php?post_id=295209"&gt;here&lt;/a&gt;.&lt;br /&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?docid=dgqxb88q_7c2qm8h8d"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Newcast for January 9th 2008&lt;br /&gt;&lt;br /&gt;00:25 Intro (T-shirt is available)&lt;br /&gt;01:44 Roundup - only days left for the early bird price&lt;br /&gt;02:35 Bruce Eckel: should we simply stop adding new features to Java?&lt;br /&gt;17:40 Apple has released an updated developer preview version of Java 6&lt;br /&gt;22:50 Two Professors from NYU have slammed Java as a teaching language&lt;br /&gt;33:20 Scala Roundup&lt;br /&gt;38:00 Library of the week - PDF Renderer&lt;br /&gt;40:30 Up and coming Project of the Week - Mighty Box&lt;br /&gt;&lt;br /&gt;Quick News Items&lt;br /&gt;&lt;br /&gt;44:00 JSR 271 - The Mobile Information Device Profile 3 (better known as MIDP 3)&lt;br /&gt;44:23 Chris Adamson has issued a call for comments on how java.net might be improved in 2008&lt;br /&gt;44:48 Is Rails a Ghetto?&lt;br /&gt;45:51 Apache Wicket 1.3 has been released&lt;br /&gt;46:09 Motorola has released a new version of the ROKR music playing phone&lt;br /&gt;46:15 JSR 286 - the Java Portlet Specification 2.0&lt;br /&gt;46:33 JSR 255 - JMX (the Java Management Extensions) version 2.0&lt;br /&gt;46:45 JSR 279 - Service Connection API for Java ME&lt;br /&gt;47:12 JSR 235 - Service Data Objects - has been stalled for about 3 years&lt;br /&gt;48:20 Apache Jakarta have released a new version Commons configuration&lt;br /&gt;48:43 There is a new preview version of Oracle JDeveloper 11g available&lt;br /&gt;49:05 Using Erlang (a functional language) and Java together&lt;br /&gt;49:30 Pearson Education held a four day GWT conference in San Francisco&lt;br /&gt;49:50 The NetBeans source code is being moved to Mercurial&lt;br /&gt;50:18 Django is getting very close to running on top of Jython&lt;br /&gt;50:35 NetBeans has once again kicked off it's world tour&lt;br /&gt;51:00 The Java 2 Fifth Edition Complete Reference is now available for free as a PDF download&lt;br /&gt;51:19 Groovy 1.5.1 has been released&lt;br /&gt;51:34 The JDIC project have updated their netbeans plugin for NetBeans 6&lt;br /&gt;51:47 Infoworld reckons that Sun Microsystems is back in the game&lt;br /&gt;52:16 Nominations for the 2008 Eclipse Community Awards are now being accepted&lt;br /&gt;52:43 Jason LaPier has put together a NetBeans cheat sheet for Ruby and Rails development&lt;br /&gt;53:00 Grizzly 1.7 is out&lt;br /&gt;53:20 On a related note, Glassfish v2 update release 1 is also now available&lt;br /&gt;53:30 Metro versions 1.0.1 and 1.1 have been released&lt;br /&gt;53:46 A new version of Excelsior JET is now available&lt;br /&gt;54:09 JRuby 1.1RC1 released&lt;br /&gt;&lt;br /&gt;54:20 BluRay Wins?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-58445348036924530?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/58445348036924530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=58445348036924530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/58445348036924530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/58445348036924530'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/02/javaposse-episode-158.html' title='JavaPosse Episode 158'/><author><name>tvik</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-6700366350637900546.post-2003592358075824448</id><published>2008-02-14T00:28:00.001-08:00</published><updated>2008-02-14T00:29:00.075-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 163</title><content type='html'>&lt;div class="gmail_quote"&gt;This is a tracklist of a JavaPosse Episode.&lt;br&gt;Original shownotes and the audible mp3 can be found &lt;a href="http://www.javaposse.com/index.php?post_id=305735" target="_blank"&gt;Shownotes&lt;/a&gt;.&lt;br&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?docid=dgqxb88q_7c2qm8h8d" target="_blank"&gt;More Tracklists&lt;/a&gt;.&lt;br&gt;  &lt;br&gt;00:30 Intro -couple of guests in studio, club feeling, somebody is speaking from the cupboard. Roundup, Sun / MySQL, etc.&lt;br&gt;17:28 Grails 1.0 released&lt;br&gt;21:10 Registration for JavaOne is now open&lt;br&gt;30:25 Closures&lt;br&gt;  38:50 JSF has passed Swing as the number one GUI component model for job demand&lt;br&gt;42:20 JavaFX update N, reinventing client Java&lt;br&gt;49:40 Nymbus Look and Feel&lt;br&gt;52:10 Font rendering&lt;br&gt;&lt;br&gt;Quick News&lt;br&gt;64:00 A NetBeans Innovators Grants program has been introduced by Sun&lt;br&gt;  64:50 How to write a full application that uses JSF, Seam 2.0 and JPA together, Carol McDonald&amp;#39;s blog&lt;br&gt;65:26 Duke&amp;#39;s Choice Award (deadline is 14th March)&lt;br&gt;65:40 Opera Mobile&lt;br&gt;69:37 TheServerSide.com has an introduction to using MapReduce in Java applications&lt;br&gt;  69:58 Sun has released a new version of their Solaris Express Developer Edition&lt;br&gt;70:57 Sun has also posted a proposed final draft of JSR 293 - Location API 2.0&lt;br&gt;71:20 Thanks&lt;br&gt; &lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-2003592358075824448?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/2003592358075824448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=2003592358075824448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2003592358075824448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2003592358075824448'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/02/javaposse-episode-163.html' title='JavaPosse Episode 163'/><author><name>tvik</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-6700366350637900546.post-287513610278024390</id><published>2008-02-13T07:39:00.000-08:00</published><updated>2008-02-13T07:43:59.587-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 162</title><content type='html'>This is a tracklist of a JavaPosse Episode.&lt;br /&gt;Original shownotes and the audible mp3 can be found &lt;a href="http://www.javaposse.com/index.php?post_id=303679"&gt;here&lt;/a&gt;.&lt;br /&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?docid=dgqxb88q_7c2qm8h8d"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Interview with Dalibor Topic about Open JDK, the JCP, Kaffe, Iced Tea and more&lt;br /&gt;&lt;br /&gt;00:40 Intro&lt;br /&gt;01:44 About Kaffe project&lt;br /&gt;05:28 What's the current state of Kaffe now?&lt;br /&gt;07:35 Are annotations and generics supported by Kaffe now?&lt;br /&gt;09:15 What were the trade-offs between those two licenses and why did you end up picking the GPL side of the two?&lt;br /&gt;10:45 How difficult is it to hit a moving target like the Java Language Specification in a project like Kaffe?&lt;br /&gt;12:26 What do you think is the future for Kaffe?&lt;br /&gt;14:25 ... Are you seeing now that OpenJDK is open sourced or at least mostly open sourced that it's definitely being picked up from those kind of distributions? (Java in Linux)&lt;br /&gt;16:25 Any other project you are involved? (GNU classpath)&lt;br /&gt;17:20 Dalibor's relationship with OpenJDK.&lt;br /&gt;20:33 The OpenJDK was released under the GPLv2 with the classpath exception. Do you think it was a good choice?&lt;br /&gt;22:10 About Interim Governance Board&lt;br /&gt;24:47 How does this Governance Board relate to the JCP?&lt;br /&gt;26:37 What will happen once the temporary governance board is finished with its work?&lt;br /&gt;28:50 Are you personally interested in serving on the next GB for the OpenJDK meeting ...?&lt;br /&gt;29:45 How much of the current binary ... the Java is carrying can be replaced by stuff out of projects like Iced Tea and do you think that's likely to happen?&lt;br /&gt;31:20 Do you think that JCP is too slow?&lt;br /&gt;32:15 Do you think maybe they should have a little bit more development going on before JSR-s are formed from the ideas?&lt;br /&gt;34:50 Do you think that JCP is dominated by Sun?&lt;br /&gt;40:20 Superpackages vs OSGi (JSR277,JSR294 vs JSR291)&lt;br /&gt;47:50 Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-287513610278024390?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/287513610278024390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=287513610278024390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/287513610278024390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/287513610278024390'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/02/javaposse-episode-162.html' title='JavaPosse Episode 162'/><author><name>tvik</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-6700366350637900546.post-7525011809259826142</id><published>2008-02-11T01:34:00.000-08:00</published><updated>2008-02-11T01:39:16.071-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 161</title><content type='html'>This is a tracklist of a JavaPosse Episode.&lt;br /&gt;Original shownotes and the audible mp3 can be found &lt;a href="http://www.javaposse.com/index.php?post_id=301490"&gt;here&lt;/a&gt;.&lt;br /&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?docid=dgqxb88q_7c2qm8h8d"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Open JavaME and JavaSE interviews&lt;br /&gt;&lt;br /&gt;00:30 Intro : About roundup signups, skiing, next episode (will be a listener feedback session), etc&lt;br /&gt;05:00 About interview at Sun Java Mobile and Embedded Developer Days&lt;br /&gt;06:10 Sun aquiring MySQL&lt;br /&gt;12:52 Oracle acquiring BEA&lt;br /&gt;17:25 Is the Geronimo in trouble?&lt;br /&gt;20:00 Applet of the Week: Sea Level applets&lt;br /&gt;21:05 Project of the week - LoboBrowser&lt;br /&gt;&lt;br /&gt;Quick News&lt;br /&gt;23:43 JDK6u4&lt;br /&gt;24:00 CommunityOne 2008 call for participation&lt;br /&gt;24:38 JavaZone 2008 call for presentations&lt;br /&gt;25:17 Jazoon 08 &lt;br /&gt;25:50 EclipseCon&lt;br /&gt;26:21 Artifactory, Maven&lt;br /&gt;26:34 Chris Richardson's blog entry&lt;br /&gt;27:04 JSR 323 - Strong Mobility for Java&lt;br /&gt;27:41 Bill Venners has released a new testing tool - ScalaTest ('JUnit for Scala')&lt;br /&gt;28:06 The Developer.com product awards for 2008 have been announced&lt;br /&gt;28:32 JackRabbit 1.4&lt;br /&gt;28:49 Apache Jakarta Commons Pool 1.4&lt;br /&gt;29:10 Neal Gafter: Java is dead&lt;br /&gt;29:32 Posse listeners in Pune, India&lt;br /&gt;30:02 Apache Lenya 2.0 (Content Management System)&lt;br /&gt;30:26 Sun is holding another Second Life virtual meeting&lt;br /&gt;30:36 Sun's JavaFX tools to interop with Adobe&lt;br /&gt;&lt;br /&gt;31:38 An easy-going interview with Roger and Terrence at Sun Java Mobile and Embedded Developer day&lt;br /&gt;32:16 Are You gonna have this scene next year?&lt;br /&gt;35:50 Why hasn't there been an event like this already?&lt;br /&gt;42:40 ...Google's Android is a reflection that so many things in the industry went wrong...&lt;br /&gt;43:00 Some announcements&lt;br /&gt;45:15 One of the big goals of the community...&lt;br /&gt;45:45 Vodafone r&amp;d&lt;br /&gt;46:50 Squack (?) virtual machine is open source&lt;br /&gt;49:10 When the Sun spot blend? (?)&lt;br /&gt;56:10 Thanx&lt;br /&gt;&lt;br /&gt;56:45 Outro&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-7525011809259826142?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/7525011809259826142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=7525011809259826142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/7525011809259826142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/7525011809259826142'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/02/javaposse-episode-161.html' title='JavaPosse Episode 161'/><author><name>tvik</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-6700366350637900546.post-5833379215365755385</id><published>2008-02-06T11:01:00.000-08:00</published><updated>2008-02-06T11:03:10.276-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 159</title><content type='html'>This is a tracklist of a JavaPosse Episode.&lt;br /&gt;Original shownotes and the audible mp3 can be found &lt;a href="http://www.javaposse.com/index.php?post_id=297953"&gt;here&lt;/a&gt;.&lt;br /&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?docid=dgqxb88q_7c2qm8h8d"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Open source ME and SE interviews&lt;br /&gt;&lt;br /&gt;00:30 Intro, background&lt;br /&gt;&lt;br /&gt;01:16 Interview with Terence Barr, introduction&lt;br /&gt;02:11 What happened since the announcement of open sourcing JavaME?&lt;br /&gt;03:21 What were the reasons for applying GPLv2 without the classpath exception? Has it turned out to be a good choice in retrospect?&lt;br /&gt;05:53 Had commercial licensees react to the open sourcing of JavaME?&lt;br /&gt;07:42 What the deal is with JavaME CLDC and JavaME CDC? It was reported earlier that CLDC was being killed. What's going on here?&lt;br /&gt;10:02 Have you seen any unusual or unexpected port JavaME since it was open sourced?&lt;br /&gt;12:52 Do you think JavaME development has accelerated as a result of its open sourcing?&lt;br /&gt;14:06 How will the JavaFX script work in JavaME? When will we see FX script running on mobile devices any time soon?&lt;br /&gt;15:45 What's the story with device availability? Are there any devices running CDC yet?&lt;br /&gt;17:16 When we gonna see some MobileFX or JavaFX mobile stuff comeout?&lt;br /&gt;18:15 Why isn't there a mobility pack for Mac OS 10 yet?&lt;br /&gt;20:14 Are there any regrets inside of Sun about open sourcing JavaME?&lt;br /&gt;22:35 Are you still confident we'll see JavaME for Apple iPhone?&lt;br /&gt;24:30 About Java Mobile and Embedded Developer Days.&lt;br /&gt;26:27 Thx&lt;br /&gt;&lt;br /&gt;26:43 Interview with Mark Reinhold about state of open source Java and OpenJDK&lt;br /&gt;26:55 Introduction&lt;br /&gt;27:53 A quick update on the state of open sourcing the JDK.&lt;br /&gt;28:41 What is the work remained to be done?&lt;br /&gt;30:11 Do you have any non-Sun regular contributors?&lt;br /&gt;31:10 About moving to Mercurial.&lt;br /&gt;32:10 About governance (?) board.&lt;br /&gt;34:57 Ice Tea project of RedHat&lt;br /&gt;38:25 GPLv2, questions about licesing. &lt;br /&gt;41:08 Have OpenJDK a positive effect on improving the language (Java7)?&lt;br /&gt;43:00 Do you have any personal favourite JSR?&lt;br /&gt;46:40 Are there any regrets inside of Sun from the open sourcing the JDK?&lt;br /&gt;47:20 How do you feel the community building is going around the OpenJDK?&lt;br /&gt;48:45 Are there any other tools for helping the community development efforts?&lt;br /&gt;49:55 Are people each other helping ...&lt;br /&gt;51:50 Thx&lt;br /&gt;&lt;br /&gt;53:30 outro&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-5833379215365755385?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/5833379215365755385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=5833379215365755385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/5833379215365755385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/5833379215365755385'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/02/javaposse-episode-159.html' title='JavaPosse Episode 159'/><author><name>tvik</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-6700366350637900546.post-8674345066867418787</id><published>2008-02-06T10:57:00.000-08:00</published><updated>2008-02-06T10:59:40.845-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 155</title><content type='html'>This is a tracklist of a JavaPosse Episode.&lt;br /&gt;Original shownotes and the audible mp3 can be found &lt;a href="http://www.javaposse.com/index.php?post_id=289334"&gt;here&lt;/a&gt;.&lt;br /&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?docid=dgqxb88q_7c2qm8h8d"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;00:25 Prologue&lt;br /&gt;00:50 Introducing Martin Odersky&lt;br /&gt;05:14 How long have you been working on Scala?&lt;br /&gt;06:35 Do you think Scala can be a general purpose language?&lt;br /&gt;08:58 Why Scala is a much more practical approach to functional&lt;br /&gt;programming than something like Miranda is?&lt;br /&gt;11:37 What are monets? (?)&lt;br /&gt;13:42 What do you suggest for Java programmers to get started in&lt;br /&gt;Scala? (First steps to Scala)&lt;br /&gt;17:16 Earliest real world examples of Scala usage&lt;br /&gt;20:00 What other applications do you see as perfect fits for Scala?&lt;br /&gt;22:00 Why immutability is kind of that important in functional&lt;br /&gt;languages or Scala?&lt;br /&gt;24:10 About XML 'efficiency' in Java&lt;br /&gt;26:00 What do you think about closures in Java?&lt;br /&gt;28:28 Embedding XML in Scala&lt;br /&gt;30:52 What's your strategy about (backward) compatibility?&lt;br /&gt;34:00 ending&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-8674345066867418787?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/8674345066867418787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=8674345066867418787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/8674345066867418787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/8674345066867418787'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/02/javaposse-episode-155.html' title='JavaPosse Episode 155'/><author><name>tvik</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-6700366350637900546.post-6910151526536246644</id><published>2008-02-05T23:55:00.000-08:00</published><updated>2008-02-05T23:57:48.383-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 153</title><content type='html'>This is a tracklist of a JavaPosse Episode.&lt;br /&gt;Original shownotes and the audible mp3 can be found &lt;a href="http://www.javaposse.com/index.php?post_id=285790"&gt;here&lt;/a&gt;.&lt;br /&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?id=dgqxb88q_7c2qm8h8d"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Newscast for Dec 6th 2007&lt;br /&gt;&lt;br /&gt;02:55 NetBeans 6.0 GWT plugin, Scala plugin(s)&lt;br /&gt;09:05 Spring 2.5 has been released&lt;br /&gt;11:25 Applets of the Week: Maths, Physics and Engineering applets&lt;br /&gt;14:30 Android news: Robert Cooper's article&lt;br /&gt;15:20 Carlos Bazarella from Polipus, ME4Android&lt;br /&gt;15:40 OHA member Ascender announced 'Droid Fonts'&lt;br /&gt;16:52 Starting with android. Article from John Lombardo&lt;br /&gt;17:12 AndroidPort - new Google Group&lt;br /&gt;17:22 Karl Pauls of Luminis has managed, to get Apache Felix to work on Android&lt;br /&gt;Quick New Items&lt;br /&gt;17:44 TheServerSide article about RestFaces&lt;br /&gt;18:45 Mark Reinhold, Governance Board&lt;br /&gt;20:00 Think Record Storage &lt;br /&gt;20:30 Atlassian Software has released version 1.2 of Crowd&lt;br /&gt;20:50 The Apache project has released version 1.1 Final of Continuum&lt;br /&gt;21:00 JBoss has released a JSF unit testing tool: JSFUnit&lt;br /&gt;21:46 Project Mojarra&lt;br /&gt;23:46 JSR321 - Trusted Computing API for Java&lt;br /&gt;24:10 Roberto Chinnici blogs that he has got GlassFish v2 running on SoyLatte on Tiger&lt;br /&gt;24:30 DeveloperLife has started a series of tutorials about developing with GWT&lt;br /&gt;25:12 Microsoft released GWT like API&lt;br /&gt;26:10 The third season of Lost on Blu-Ray...&lt;br /&gt;26:55 Sun has announced a new program to compensate Open Source developers for their coding efforts&lt;br /&gt;28:30 JavaRanch has an article about James Gosling's recent "State of the Java Universe" talk&lt;br /&gt;30:06 Kelly O'Hair blogs about JDK 7...&lt;br /&gt;&lt;br /&gt;32:10 Listener Feedback&lt;br /&gt;33:04 'return this'&lt;br /&gt;36:20 'instance initializers in anonymous inner classes'&lt;br /&gt;38:40 Closures&lt;br /&gt;41:38 Ryan Dewsbury's new GWT book&lt;br /&gt;43:28 Java ME OS 10&lt;br /&gt;45:30 Delegation vs Inheritance&lt;br /&gt;49:10 NetBeans6 syntax coloring glitch&lt;br /&gt;50:20 JUG popularity&lt;br /&gt;52:55 JavaPosse T-shirts&lt;br /&gt;55:50 Javapolis&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-6910151526536246644?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/6910151526536246644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=6910151526536246644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/6910151526536246644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/6910151526536246644'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/02/javaposse-episode-153.html' title='JavaPosse Episode 153'/><author><name>tvik</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-6700366350637900546.post-2398756917965962225</id><published>2008-02-04T09:20:00.000-08:00</published><updated>2008-02-04T09:27:56.986-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaPosse'/><title type='text'>JavaPosse Episode 160</title><content type='html'>This is a tracklist of a JavaPosse Episode.&lt;br /&gt;Original shownotes and the audible mp3 can be found &lt;a href="http://www.javaposse.com/index.php?post_id=299505"&gt;here&lt;/a&gt;.&lt;br /&gt;More tracklists can be found &lt;a href="http://docs.google.com/Doc?id=dgqxb88q_7c2qm8h8d"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Interview with Bob Lee about Guice&lt;br /&gt;(Guice is an IoC framework.)&lt;br /&gt;&lt;br /&gt;00:30 Intro&lt;br /&gt;00:47 What is Guice?&lt;br /&gt;03:56 What was the reason to start a new framework?&lt;br /&gt;10:23 Have you seen people use it for really small things?&lt;br /&gt;12:51 What's coming up?&lt;br /&gt;22:50 Some things about Google Collections API&lt;br /&gt;23:55 Differences between weak and soft references&lt;br /&gt;26:15 Interesting combinations of strong and weak references in practice&lt;br /&gt;28:18 What are the other things that you think are coming in the future for Google Collections?&lt;br /&gt;30:30 Anything else, goodbye, outro...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-2398756917965962225?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/2398756917965962225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=2398756917965962225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2398756917965962225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/2398756917965962225'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/02/javaposse-episode-160.html' title='JavaPosse Episode 160'/><author><name>tvik</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-6700366350637900546.post-8960475565689857867</id><published>2008-01-13T04:22:00.000-08:00</published><updated>2008-01-13T05:07:08.972-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exhibition'/><title type='text'>Nav N Go @ CES Las Vegas</title><content type='html'>It always inflates me with pride when I see a Hungarian company at a famouns international &lt;a href="http://www.cesweb.org/default.asp"&gt;exhibition&lt;/a&gt;. Many tiny software companies in Hungary are usually forming for optimizing income and for supplying ordinary software demands of other tiny companies which have not too much aim beside optimizing income and supplying some ordinary human demands. No creative ideas, just for hunting contracts and tenders on more or less fair ways.&lt;br /&gt;&lt;br /&gt;After reading their &lt;a href="http://www.navngo.com/pages/global/eng/navngo_story"&gt;story&lt;/a&gt; I guess Nav N Go absolutely doesn't belong to this gang. They deal with car navigation systems and as I far I know they are market leader in the European region.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-8960475565689857867?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/8960475565689857867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=8960475565689857867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/8960475565689857867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/8960475565689857867'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2008/01/nav-n-go-ces-las-vegas.html' title='Nav N Go @ CES Las Vegas'/><author><name>tvik</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-6700366350637900546.post-7944063136609945767</id><published>2007-12-30T06:37:00.000-08:00</published><updated>2007-12-30T07:45:47.680-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><title type='text'>JUnit 3.8 JUnit 4.x</title><content type='html'>Recently I looked through some JUnit 3.8 - JUnit 4 stuffs. Here are two useful readings in the subject: First is at &lt;a title="IBM" href="http://www-128.ibm.com/developerworks/java/library/j-junit4.html" id="tbk0"&gt;IBM&lt;/a&gt;, other is on &lt;a title="DevX" href="http://www.devx.com/Java/Article/31983" id="cwz4"&gt;DevX&lt;/a&gt;. JUnit 4.X is basically direct improvement of JUnit 3.X with exploiting new features of JDK5. Current version is 4.4 and it can be downloaded from &lt;a title="www.junit.org" href="http://www.junit.org/" id="mkbd"&gt;www.junit.org&lt;/a&gt;. What have been changed?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It needs (surprisingly) at least Java 5.&lt;/li&gt;&lt;li&gt;Package has been changed from &lt;code&gt;junit.framework&lt;/code&gt; to &lt;code&gt;org.junit&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Using &lt;code&gt;@Test&lt;/code&gt; annotations instead of naming conventions. Methods must be public with &lt;code&gt;void&lt;/code&gt; return type and they shouldn't have parameters. If we don't comply with these we would expect the following runtime exceptions:&lt;br /&gt;&lt;code&gt;java.lang.Exception: Method xxx should have no parameters&lt;br /&gt;java.lang.Exception: Method xxx should be void&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Using static import: &lt;code&gt;import static org.junit.Assert.assertEquals;&lt;/code&gt;  We can write instead of &lt;code&gt;Assert.assertEquals(...);&lt;/code&gt; a sorter &lt;code&gt;assertEquals(...);&lt;/code&gt;. (Of course we can use static import with JUnit 3.8 if we have Java 5.)&lt;/li&gt;&lt;li&gt;Extending &lt;code&gt;TestCase&lt;/code&gt; isn't necessary anymore, so it becames possible to test protected methods by extending the subject class with the class which has the tests.&lt;/li&gt;&lt;li&gt;Instead of method &lt;code&gt;setUp()&lt;/code&gt; we use &lt;code&gt;@Before&lt;/code&gt; annotation, even more than one. Order of executing these methods is theoretically random.&lt;/li&gt;&lt;li&gt;&lt;code&gt;tearDown()&lt;/code&gt;'s annotation pair is &lt;code&gt;@After&lt;/code&gt;, which we can have also more than one.&lt;/li&gt;&lt;li&gt;In super classes we haven't have to invoke explicite &lt;code&gt;setUp()==@Before&lt;/code&gt; and &lt;code&gt;tearDown()==@After&lt;/code&gt; methods because their invocation is automatic: First &lt;code&gt;@Before&lt;/code&gt;-s of the super class are invoked, then ones in descendant classes. Order of invoking  &lt;code&gt;@After&lt;/code&gt; is reversed. First the descendant classes, then super classes.&lt;/li&gt;&lt;li&gt;A &lt;code&gt;@Before&lt;/code&gt; and &lt;code&gt;@After&lt;/code&gt; is invoked before and after every test method as &lt;code&gt;setUp()&lt;/code&gt; and &lt;code&gt;tearDown()&lt;/code&gt; does. We have the possibility to concede &lt;code&gt;@BeforeClass&lt;/code&gt; and &lt;code&gt;@AfterClass &lt;/code&gt; which will be invoked before and after all test methods in the given class. There is no such feature in JUnit 3.X. (It has &lt;code&gt;TestSuite&lt;/code&gt; class which ensures similar functionality.)&lt;/li&gt;&lt;li&gt;If a class doesn't have any &lt;code&gt;@Test&lt;/code&gt; annotation, we will get an error.&lt;/li&gt;&lt;li&gt;In JUnit 3.X we could check exceptions by writing an &lt;code&gt;assert&lt;/code&gt; into the &lt;code&gt;catch&lt;/code&gt; block. In JUnit 4 we can define expected exceptions in annotation: &lt;code&gt;@Test(expected=ArithmeticException.class)&lt;/code&gt;. If exception isn't thrown or different exception has been thrown the test will fail. If more checks needed about parameters and message of the thrown exceptions we must follow the well-known &lt;code&gt;try-catch&lt;/code&gt; practice.&lt;/li&gt;&lt;li&gt;If we don't want to run some test methods for some reason it's possible to ignore it by using &lt;code&gt;@Ignore&lt;/code&gt;. (&lt;code&gt;@Test&lt;/code&gt; needn't have to be removed. &lt;code&gt;@Ignore&lt;/code&gt; can follow or precede it.) It can have a String-type parameter with the reason why is the test ignored. Test won't run and the runner will sign the  fact that it was ignored. We can say &lt;code&gt;@Ignore&lt;/code&gt; for the whole class but it's slightly differs from ignoring each test methods one by one, because &lt;code&gt;@AfterClass&lt;/code&gt; and &lt;code&gt;@BeforeClass&lt;/code&gt; will run in the latter case.&lt;/li&gt;&lt;li&gt;Highly appreciated feature to be able to give timeout for the test cases: &lt;code&gt;@Test(timeout=500) &lt;/code&gt;Millisec.&lt;/li&gt;&lt;li&gt;There is a new assert which compares object arrays, however many (12) assert method removed because of the autoboxing feature. &lt;code&gt;assertXXX(Object, Object)&lt;/code&gt; is used instead of them. More precisely DevX writes this happened but oddly I can use these old asserts in the &lt;code&gt;TestCase&lt;/code&gt; class.&lt;/li&gt;&lt;li&gt;&lt;code&gt;assert&lt;/code&gt; keyword of Java1.4 can also be used, however &lt;code&gt;-ea&lt;/code&gt; JVM switch must be given at running the tests, otherwise &lt;code&gt;assert&lt;/code&gt;s won't be evaluated. When using native asserts, instead of the JUnit's &lt;code&gt;assertException&lt;/code&gt;, the general &lt;code&gt;java.lang.AssertionError&lt;/code&gt; will raise in certain cases.&lt;/li&gt;&lt;li&gt;In JUnit4 there is no &lt;code&gt;suite()&lt;/code&gt; method. We can create an empty class which has the runnable classes in annotation:&lt;pre&gt;&lt;code&gt;@RunWith(Suite.class)&lt;br /&gt;@Suite.SuiteClasses({My1Test.class, My2Test.class, My2Test.class})&lt;br /&gt;&lt;/code&gt;&lt;code&gt;public class AllTests {&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;By using &lt;code&gt;@RunWith&lt;/code&gt; class annotation we can define own runner for the test cases. For an example, the &lt;code&gt;org.junit.runners.Parameterized&lt;/code&gt;, which drives the test by a set of parameters we defined previously. A public static method with &lt;code&gt;@Parameters&lt;/code&gt; annotation is needed which returns a &lt;code&gt;Collection&lt;/code&gt; and a public constructor is needed which can accept elements of the previous Collection. If the Collection contains integer pairs, constructor must have two integer parameters. The runner walks through on the Collection, calls the constructor and the test methods for every element of the Collection. DevX article has a good example about this on the third page. (Listing 2.)&lt;/li&gt;&lt;li&gt;Giving &lt;code&gt;@RunWith(TestClassRunner.class)&lt;/code&gt; doesn't make any difference than giving anything because the &lt;code&gt;TestClassRunner&lt;/code&gt; is the default runner.&lt;/li&gt;&lt;li&gt;JUnit4 doesn't make difference between expected failures and wrongly written test cases. This is a stepback. One testcase can have (passed/error/failure) in JUnit 3.8. In JUnit 4 it can have (passed/failure/(ignored)) only.&lt;/li&gt;&lt;li&gt;Test can be runned by &lt;code&gt;java –ea org.junit.runner.JUnitCore&lt;/code&gt;. It can run 3.8 tests according to the DevX article. Practically 3.8 must have a small modification:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="java_keyword"&gt;public&lt;/span&gt;&lt;span class="java_plain"&gt; &lt;/span&gt;&lt;span class="java_keyword"&gt;static&lt;/span&gt;&lt;span class="java_plain"&gt; junit&lt;/span&gt;&lt;span class="java_separator"&gt;.&lt;/span&gt;&lt;span class="java_plain"&gt;framework&lt;/span&gt;&lt;span class="java_separator"&gt;.&lt;/span&gt;&lt;span class="java_type"&gt;Test&lt;/span&gt;&lt;span class="java_plain"&gt; suite&lt;/span&gt;&lt;span class="java_separator"&gt;()&lt;/span&gt;&lt;span class="java_plain"&gt; &lt;/span&gt;&lt;span class="java_separator"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="java_plain"&gt;   &lt;/span&gt;&lt;span class="java_keyword"&gt;return&lt;/span&gt;&lt;span class="java_plain"&gt; &lt;/span&gt;&lt;span class="java_keyword"&gt;new&lt;/span&gt;&lt;span class="java_plain"&gt; &lt;/span&gt;&lt;span class="java_type"&gt;JUnit4TestAdapter&lt;/span&gt;&lt;span class="java_separator"&gt;(&lt;/span&gt;&lt;span class="java_type"&gt;MyTestClass&lt;/span&gt;&lt;span class="java_separator"&gt;.&lt;/span&gt;&lt;span class="java_keyword"&gt;class&lt;/span&gt;&lt;span class="java_separator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;4.0 tests certainly won't run on 3.8. When having both old and new JUnit on the classpath they may impact. It least I had securityException.&lt;/li&gt;&lt;li&gt;I've heard about a so called &lt;code&gt;assertThat&lt;/code&gt; method. Theoretically 4.4 have this but I didn't see it in the current javadoc on junit.org.&lt;/li&gt;&lt;li&gt;Eclipse 3.3 has JUnit4.4 and JUnit3.8 support.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If you need this in Hungarian, click &lt;a href="http://pcjuzer.blogspot.com/2007/12/junit-4.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-7944063136609945767?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/7944063136609945767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=7944063136609945767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/7944063136609945767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/7944063136609945767'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2007/12/junit-38-junit-4x.html' title='JUnit 3.8 JUnit 4.x'/><author><name>tvik</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-6700366350637900546.post-6690109977278472482</id><published>2007-12-01T08:58:00.000-08:00</published><updated>2007-12-01T10:02:44.112-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logging'/><title type='text'>Logger frameworks</title><content type='html'>Let's have a look round in the world of logging.&lt;br /&gt;There is a &lt;a href="http://en.wikipedia.org/wiki/Java_Logging_Frameworks"&gt;glorious article&lt;/a&gt; in the Wikipedia about fundamental concepts of logging.&lt;br /&gt;&lt;br /&gt;Two (or rather three) competitors are log4j, java logging API == java.util.logging == JUL == JSR47 and Java Commons Logging == JCL. The latter is not a real logging framework, just an adapter which quests for the available framework in runtime and uses it. It can be helpful when we don't want to wrap some modul to log4j, JUL or anything, however, it has disadvantages regarding efficiency and functionality. See this article about it: &lt;a href="http://www.qos.ch/logging/thinkAgain.jsp"&gt;Think again before adopting the commons-logging API &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is an opinion about differences between &lt;a href="http://www.jajakarta.org/log4j/jakarta-log4j-1.1.3/docs/critique.html"&gt;log4j and JUL&lt;/a&gt;. I've read it a long time ago and deeply agree with it with the supplement, that because of the continuous inconveniences I hate Java Logging API.&lt;br /&gt;&lt;br /&gt;(The author of the former article, &lt;a href="http://apachecon.com/2001/US/html/speakers.html"&gt;Ceki Gülcü&lt;/a&gt; is the founder of log4j. He has a &lt;a href="http://ceki.blogspot.com/"&gt;blog&lt;/a&gt; where he writes engaging things. For an example, &lt;a href="http://ceki.blogspot.com/2007/06/git-vs-subversion.html"&gt;mentions&lt;/a&gt; presentation of Linus Torvalds about GIT vs SVN. Well, I also didn't like that style not to say about &lt;a href="http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918"&gt;this&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Nowadays it seems that he (Ceki Gülcü) walks differents ways from Apache group, because he is working on the possible posteriors of log4j and JCL, namely &lt;a href="http://logback.qos.ch/"&gt;LogBack&lt;/a&gt; and &lt;a href="http://www.slf4j.org/"&gt;SLF4J&lt;/a&gt;. (Wikipedia article doesn't mentions these.) Theoretically, SLF4J will have log4j support. I don't know how much will be SLF4J efficient but I guess they started to implement a new framework because they wanted to make something better.&lt;br /&gt;&lt;br /&gt;log4j exists since Java 1.1, JUL was invented in 1.4. By exploring homepage of log4j it turns out soon that there's no version which exploits advantages of Java 5.0. Log4j 2.0 would have been the one which fulfils this task, but there are not too much (any) visible activity in this subject.&lt;br /&gt;&lt;br /&gt;However, LogBack and SLF4J are going to be in a useable shape soon. LogBack has version 0.9.X nowadays. On our Hungarian forum there was a &lt;a href="http://www.javaforum.hu/forum?categoryId=25&amp;amp;topicId=599"&gt;flame&lt;/a&gt; about logBack and using &lt;span style="font-family:courier new;"&gt;isDebugEnabled&lt;/span&gt;. First important consequence was for me, that people do log in many different styles and it depends on the developed application. Somebody can use &lt;span style="font-family:courier new;"&gt;toString&lt;/span&gt; often, somebody doesn't have this possibility. Secondly, &lt;span style="font-family:courier new;"&gt;isDebugEnabled&lt;/span&gt; condition can't be dropped out in every cases, just when there are no expressions in the parameter list. (For sample, explicit high-cost function calls.) By the way, using varargs instead of String evaluation can be rather beneficial during logging.&lt;br /&gt;&lt;br /&gt;Which one would I choose? In conservative software &lt;span style="font-style: italic;"&gt;modules&lt;/span&gt;, when embedding environment may not be log4j-based I would choose JCL. Otherwise I would use log4j. At newly started projects I would use LogBack or SLF4J, although I would get a line if there are existing appenders which I should use. Regarding log4j, (as it is an old professional in the scene) there are a &lt;a href="http://www.allappforum.com/log4j/log4j_appenders.htm"&gt;lot of&lt;/a&gt; appenders.&lt;br /&gt;&lt;br /&gt;(This was a translation again. See original &lt;a href="http://pcjuzer.blogspot.com/2007/10/krkp.html"&gt;here&lt;/a&gt; in Hungarian.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-6690109977278472482?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/6690109977278472482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=6690109977278472482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/6690109977278472482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/6690109977278472482'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2007/12/logger-frameworks.html' title='Logger frameworks'/><author><name>tvik</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-6700366350637900546.post-4050440830232422778</id><published>2007-11-09T05:05:00.000-08:00</published><updated>2007-11-09T05:07:28.606-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webapp'/><title type='text'>Wicket vs JSF</title><content type='html'>This post is the translation of the &lt;a title="http://pcjuzer.blogspot.com/2007/08/wicket-vs-jsf.html" href="http://pcjuzer.blogspot.com/2007/08/wicket-vs-jsf.html" id="lsmm"&gt;writing&lt;/a&gt; (Hungarian) from my other blog with the identical title.&lt;br /&gt;&lt;br /&gt;In the recent months I had the pleasure to get acquainted with &lt;a href="http://wicket.apache.org/" target="_blank"&gt; Wicket&lt;/a&gt; and &lt;a href="http://java.sun.com/javaee/javaserverfaces/" target="_blank"&gt; JSF&lt;/a&gt; which are both servlet-based web technology frameworks with identical position and purpose. A &lt;a href="http://www.metaprime.hu/users/cserepj/wicket.pdf" target="_blank"&gt; Wicket&lt;/a&gt; presentation was also organized by Hungarian Javafórum guys at the summer, but unfortunately, I couldn't attend on it.&lt;br /&gt;&lt;br /&gt;JSF is part of the J2EE standard, Wicket is a Sourceforge-project which has joined to the Apache Foundation some months ago. Wicket means the implementation itself, while JSF is just a specification with a reference implementation and some real implementations. I met &lt;a href="http://myfaces.apache.org/tomahawk/" target="_blank"&gt;Tomahawk&lt;/a&gt; among real implementations, which is also related to Apache.&lt;br /&gt;&lt;br /&gt;Wicket uses HTML markup with wicket tags which are replaced to real HTML components in rendering time on the server-side. (Similar to &lt;a href="http://dojotoolkit.org/" target="_blank"&gt;Dojo&lt;/a&gt; with the difference, that Dojo replaces components on the client side.) JSF is taglib-based.&lt;br /&gt;&lt;br /&gt;We used Facelets with JSF which helps modularization of pages. We also used standard tag library where we could. Instead of writing a long discourse, I've chosen some criterias and here I compare the two competitors:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;HTML element set: What kinds of prefabricated elements are present.&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; In the core API, there are just the most basical form components. There aren't sortable table or tree, however a bunch of cool components can be found here&lt;i&gt;: &lt;/i&gt;&lt;a href="http://wicket.sourceforge.net/wicket-extensions/" rel="nofollow" target="_blank"&gt;&lt;i&gt; Wicket extensions&lt;/i&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;JSF: &lt;/b&gt; Reference implementation is rather poor, however, there are &lt;a href="http://www.irian.at/myfaces/home.jsf" target="_blank"&gt;some more&lt;/a&gt; opportunities in Tomahawk. Theoretically, it's possible to mix more implementations by getting the appropriate components even from commercial implementations. There's much room for improvement in Tomahawk JSF components. I've met &lt;a href="http://wiki.apache.org/myfaces/Tree2" target="_blank"&gt;tree2&lt;/a&gt; which doesn't support default expanded nodes (when showing the tree for the first time, some nodes couldn't be expanded by default without attaching a workaround logic). Generally, a lot of workaround code was needed for creating really usable components, which was very time-consuming and rankling, considering we should spend that time for polishing the application's business logic.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;DHTML support: Is it possible to inject javascript into the page or to components  and is it possible to refer components?&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; It's okay, but sometimes it's tricky to inject javascript into the pages.&lt;br /&gt;&lt;b&gt;JSF: &lt;/b&gt; Referencing components is problematic with the base implementation because it  shares identifiers itself. With using "forceId" in Tomahawk, we can specify identifiers, which is basically enough for javascripting.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Logic extensibility: How much can we affect or modify the framework's workflow  logic?&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; It's quite possible even to change the code of the framework itself if needed, however, in most cases it's enough to inject logic by implementing and applying specified interfaces.&lt;br /&gt;&lt;b&gt;JSF:&lt;/b&gt; It's not easy to intercept, because the JSF engine is outside of the competency of the application. Additionally, JSF page life-cycle is very strict and not too much applicable for some cases. Validation, model update and page render stages have their own unchangeable places. We usually stuck to the problem for a long time when we use more complex validation logic, not to say about multiple forms on a page.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;   AJAX:&lt;/i&gt; They are coming from the pre-Ajaxian era, so Ajax-support is an added feature in each of them. However, supposedly JSF has Ajax-based implementations. (Maybe commercial ones.) Wicket fans say that embedded Ajax support is absolutely good. Practically, it's possible to make nice dynamic functions without writing any line of javascript. In the comment-conversation of the original post I described that I called an application really cool dynamic and "Ajaxified" if it had the same functionality as the Google Calendar. I don't think a JSF or Wicket application could convey this.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Data-model presentation bridge: Model must be pumped into the HTML elements.&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; It happens in Java which is highly comfortable and makes easy to find errors. Hierarchy of the markup must be followed by the Java behind-code, e.g. if a text input is inside a frame stack, the model must contain these frame elements too. Generally, a lots of anonymous inner class must be used for describing the Wicket data-model. It's relatively easy to build in pieces of validation logic.&lt;br /&gt;&lt;b&gt;JSF:&lt;/b&gt; Bindigs between the page and the JavaBean-based model is described in XML. So-created model can be detached from the presentation somewhat easier but it needs more boilerplate XML code and JSF can cause further problems. If we manage to create XML without errors and there are no special demands, assembled parts may work in a surprisingly little while. When we want dynamic play, e.g. validation rules of a field depend on another field's value, we might expect problems.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Bugs:&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; It logs quite detailed error messages and stack traces. It's straightforward to find the roots of the error messages in the java code. It's harder to make errors because a lot of potential error is filtered out by the used modern IDEs. Many errors come from mistyping hierarchy between the java behind-code and the HTML markup. It has to be mentioned again, that Wicket pages are simple HTMLs which can be displayed in a simple browser without any server.&lt;br /&gt;&lt;b&gt;JSF:&lt;/b&gt; Generally error messages are indirect or even there aren't error messages but anomalies can be seen on the page. Control is empty or it's falled apart. Searching for the missing comma or the mistyped name in the JSF and the XMLs is a 'great fun'. Using some static analyzer for developing JSF application is highly recommended.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Modularity, reusability: Reusability of HTML page fragments. &lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; The embedded "fragment" mechanisum can be used. I'd expect much more, however, Wicket fans are delighted with it.&lt;br /&gt;&lt;b&gt;   JSF:&lt;/b&gt; Facelet support is an amazing hit, nevertheless, it's not direct part of the  JSF spec.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Graphic design:&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; As the markup is plain X(HTML), it can be designed by any HTML tool. Images and CSS can be used.&lt;br /&gt;&lt;b&gt;JSF:&lt;/b&gt; It isn't plain HTML, but there are more and more WYSWYG JSF editors to be used. Some of them are integrated into graphical IDE-s. (Netbeans, Eclipse, Idea) With these tools I managed to construct simple pages only. Images and CSS can be used too.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;I18n:&lt;/i&gt;    Certainly each of them supports internationalization.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Flow control on pages: Iterations, controlling components' visibility and other properties&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; Doesn't support because it's a base principle that pages don't contain business logic. (But what's about presentation logic-related flow control?) 'Fragment' and 'iterator' mechanism can be used instead of writing direct flow control into the markup. Particular conditions of the iterations and if-else statements are located in the java code behind the page markup. You can switch some component properties also in the java code.&lt;br /&gt;&lt;b&gt;JSF:&lt;/b&gt; Supports flow control at more levels by certain tags of the standard taglibs, JSF tags and facelets. However, these mixed technologies don't always cooperate well, which can tremendously increase suck factor.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Server loading:&lt;/i&gt; I feel they are in the same level in this question. wicket needs more memory because it must store information about component hierarchy in user sessions. JSF rebuilds server-side representation of component structure upon every HTTP request, which needs increased amount of processing and theoretically settles for less memory. Be aware of serialization when using Wicket, because misconfigured members can easily pull up some megs into the session. Also take care of inactive clients and their sessions. Each of JSF and wicket can be clustered (as I know).&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Documentation:&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Wicket:&lt;/b&gt; it has good docs according to me. People who used more deeply say that it could be better.&lt;br /&gt;&lt;b&gt;JSF:&lt;/b&gt; every kind of writings can be found. Tomahawk has a Wiki wich contains mainly  descriptions of problems among some useful posts. J2EE specification also has a JSF section.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Which of them would I use in the next web-project?&lt;/span&gt;&lt;br /&gt;JSF, although it's somewhat more cumbersome, has more opportunities because it has more implementations. Before choosing JSF I'm sure I would look after a good one. However, if there would be less dynamic form-styled content I would use Wicket because it stands closer to the plain HTML, it's easier to design it, it's easier to code it. For those who are not familiar with JSP-s and taglibs I also would &lt;span style="font-style: italic;"&gt;highly&lt;/span&gt; recommend Wicket. If there would be more logic, reused and nested model and form elements I would choose JSF. However, it would be too early to forget other web-frameworks. If I would have to make a really dynamic AJAX web-application I would presumably choose another framework beyond these two ones.&lt;br /&gt;&lt;br /&gt;&lt;a title="http://raibledesigns.com/rd/entry/choosing_a_jvm_web_framework2" href="http://raibledesigns.com/rd/entry/choosing_a_jvm_web_framework2" id="qkif"&gt;Here&lt;/a&gt; is another argumentation on the subject. It also contains a Wicket vs JSF opinion strongly on the Wicket-side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-4050440830232422778?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/4050440830232422778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=4050440830232422778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/4050440830232422778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/4050440830232422778'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2007/11/wicket-vs-jsf.html' title='Wicket vs JSF'/><author><name>tvik</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-6700366350637900546.post-7955197550064564162</id><published>2007-10-27T12:04:00.000-07:00</published><updated>2007-10-27T12:32:15.211-07:00</updated><title type='text'>post[0]</title><content type='html'>I have been writing a blog about Java programming and software technology since 2005. Originally, main purpose of these postings was to ingrain my own thoughts and experiences for myself, but recently I realized that 5 to 10 readers visit these pages per day. Some of these hits come from static links and the more from Google search result pages. Unfortunately, that blog is in Hungarian which is my mother language, so, as I guess, some people finally don't get what they are looking for.&lt;br /&gt;&lt;br /&gt;So, I start another one in English to be able to share thoughts with more people, and not least, to improve my English composition skills. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6700366350637900546-7955197550064564162?l=pcjuzeren.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcjuzeren.blogspot.com/feeds/7955197550064564162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6700366350637900546&amp;postID=7955197550064564162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/7955197550064564162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6700366350637900546/posts/default/7955197550064564162'/><link rel='alternate' type='text/html' href='http://pcjuzeren.blogspot.com/2007/10/post0.html' title='post[0]'/><author><name>tvik</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>
