<!– 611 | 0 –><img src="/images/Kevin99×68.jpg" border="0", align="left" /><p>The JCP Program Office <a href="http://blogs.sun.com/jcp/entry/happy_new_year_2010_calendar">wishes us a Happy New Year</a>, and has posted the <a href="http://jcp.org/en/whatsnew/calendar">JCP 2010 Event Calendar</a>. The <a href="http://jcp.org/en/press/pmo/newsletter/1209">December JCP Newsletter</a> is also available, if you haven't taken a look at that yet. I see that the newsletter mentions my recent <a href="http://today.java.net/article/2009/12/17/editors-interview-adam-bien-java-ee-6-ejbs-and-more">interview with Adam Bien</a> — another thing to check out, if you haven't yet done so.</p>
<p><img src="http://jcp.org/images/home/pmo_2010.jpg" alt="" /></p>
<p>The Program Office's happy new year message begins with a brief wrap-up of 2009:</p>
<blockquote> December 2009 was a busy month, with Final Releases for JSR 316, Java Enterprise Edition (Java EE) 6 and its' component JSRs, along with the Final Release of JSR 271, MIDP 3, among others. </blockquote>
<p>And a brief look at the start of 2010:</p>
<blockquote> Coming up next week, nominations for the EC Special Election to fill the ME EC seat vacated by Jacob Feldman will be open. Watch for details on how to nominate yourself on jcp.org. Now is the time to prepare your nomination if you are interested in serving on the EC; read more about the Elections <a href="http://jcp.org/en/whatsnew/elections">here</a>. The JCP EC will meet Face to Face (F2F) for the first meeting of 2010 on Tuesday and Wednesday in Santa Clara, CA at the Sun Campus. Materials and minutes will be made available following the meeting. </blockquote>
<p>The <a href="http://jcp.org/en/whatsnew/calendar">2010 JPC Calendar</a> at this point doesn't tell us too much about what's actually going to happen in 2010. Primarily, it lists the dates for known events that must be planned far in advance (for example, election deadlines, executive meetings in various locations in the world, etc.). But then, there really is no possibility of going beyond this in an annual calendar, because there is no way for the JCP to predict exactly what the core areas of focus and progress will be in 2010, with respect to individual JSRs, etc.</p>
<p>The major upcoming event right now is the special election to replace the Java ME Executive Committee that was vacated by Jacob Feldman. If you are interested in running for this seat, the time is to prepare your materials is now. Nominations (you can nominate yourself) are open until January 24. The election itself will take place from January 26 through February 8.</p>
<hr />
<p>In <a href="http://community.java.net/"><b>Java Today</b></a>, James Gosling notes that <a href="http://blogs.sun.com/jag/entry/this_modern_age_is_weirdly">This Modern Age is Weirdly Cool</a>:</p>
<blockquote> Having spent most of my life turning science fiction into reality, I'm incredibly amused by the recent <a href="http://www.timesonline.co.uk/tol/comment/faith/article6984258.ece"><i>Blessing of the Plow</i></a> service performed in London. Another <a href="http://en.wikiquote.org/wiki/Laozi">step in the journey</a>… </blockquote>
<p>David Holmes advises <a href="http://blogs.sun.com/dholmes/entry/minimize_garbage_generation">Minimize Garbage Generation: GC is your Friend, not your Servant</a>:</p>
<blockquote> Throughput oriented garbage-collectors, in particular generational, copying-based collectors, are very efficient at dealing with large quantities of garbage as they never have to visit garbage objects and so the cost of a GC pass is not dependent on the amount of garbage to be found. As these kinds of collectors exist in the mainstream Java SE implementations, there has been a tendency for developers to become very unconcerned with the amount of garbage they may generate, because they expect the collector will deal with it simply and efficiently. For deterministic, non-generational, garbage collectors, such as the Java RTS Real-Time Garbage Collector, where latency and pause-times are the main concerns, this is not the case… </blockquote>
<p>The JCP Program Office says <a href="http://blogs.sun.com/jcp/entry/happy_new_year_2010_calendar">Happy New Year, 2010 Calendar posted</a>:</p>
<blockquote> Welcome to 2010! December 2009 was a busy month, with Final Releases for JSR 316, Java Enterprise Edition (Java EE) 6 and its' component JSRs, along with the Final Release of JSR 271, MIDP 3, among others. You can read about the latest JCP program news in the<a title="December Newsletter" href="http://jcp.org/en/press/pmo/newsletter/1209"> December newsletter</a>. The<a title="2010 Calendar" href="http://jcp.org/en/whatsnew/calendar"> 2010 Calendar</a> is now posted on jcp.org…. </blockquote> <hr />
<p>In today's <a href="http://www.java.net/blogfront">Weblogs</a>, John Ferguson Smart announces the current <a href="http://weblogs.java.net/blog/johnsmart/archive/2010/01/12/java-power-tools-bootcamps-and-tdd-workshops-first-half-2010">Java Power Tools Bootcamps and TDD workshops for the first half of 2010</a>:</p>
<blockquote> We are finalizing plans for the Java Power Tools Bootcamps and TDD training sessions for the first half of 2010. Highlights include the upcoming <a href="http://skillsmatter.com/course/java-jee/java-power-tools-bootcamp">London</a> and <a href="http://skillsmatter.com/course/java-jee/java-power-tools-bootcamp">Paris</a> sessions of the Java Power Tools bootcamps, as well as many sessions Wellington, Sydney, Canberra and Melbourne… </blockquote>
<p>Cay Horstmann wonders about <a href="http://weblogs.java.net/blog/cayhorstmann/archive/2010/01/12/flash-pan">A Flash in the Pan?</a>:</p>
<blockquote> JSF 2 introduces an EL variable <code>flash</code>. Anything you set persists for one post-redirect-get cycle. (In contrast, anything in the request scope is gone after a redirect.) A typical use of the flash is for messages. A managed bean method might put a message in the flash… </blockquote>
<p>Fabrizio Giudici writes about <a href="http://weblogs.java.net/blog/fabriziogiudici/archive/2010/01/11/hierarchy-api">The Hierarchy API</a>:</p>
<blockquote>< Tree-like structures are a very common pattern. Just to count instances of this pattern in my FLOSS projects: 1. The File Explorer in blueMarine, where photos are shown as they are stored in directories on the local disk. 2. The Calendar Explorer in blueMarine, where nodes representing year / month / day are shown for each day in which a photo has been taken. 3. The Metadata Explorer in blueMarine, where various metadata directories are shown (ok, this is a very shallow tree with only two levels). 4. The Catalog Explorer in blueMarine, where photo tags and tag categories are shown in hierarchical fashion…. </blockquote> <hr />
<p>In the <b><a href="http://forums.java.net/jive/index.jspa">Forums</a></b>, <code>jagwire</code> is thinking about <a href="http://forums.java.net/jive/thread.jspa?threadID=72439&tstart=0">Borrowing the marbelous particle system</a>: "I think I'm about ready to add a particle system to my world but I've got a couple questions first. From what I can tell, the system starts as soon as the particle system's constructor is called when the createMarble() method is executed, is that really all there is to it? I feel like it should be harder than that…"</p>
<p><code>dmalis</code> has a comment for <a href="http://forums.java.net/jive/thread.jspa?threadID=72431&tstart=0">Vprise: Latest SVN commit introduced an issue to my app</a>: "Hey vprise - today I've updated LWUIT to rev 832 and noticed that my GlassPane Scrollbar implementation started to work noticeably slower then with rev 831. So I have it reverted to r831 and proved my case. My implementation follows (copies) this example…"</p>
<p><code>itamar123</code> is <a href="http://forums.java.net/jive/thread.jspa?threadID=72284&tstart=0">Trying to create two separate networks using socket</a>: "Hello, I have 2 separate networks and 2 network cards on each of my computers. Network #1. Network #2. I bind a socket to Network #1 and Surprisingly i had success connecting to ip address on Network #2. What needs to be done to prevent it? …"</p>
<hr />
<p>Our current <a href="http://today.java.net/today/projectspotlight.csp"><b>Spotlight</b></a> is Christopher Lam's <a href="http://netbeans.dzone.com/javaee6-netbeans-timerservice?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+javalobby%2Ffrontpage+(Javalobby+%2F+Java+Zone)">How to Create a Scheduler Module in a Java EE 6 Application with TimerService</a>: "Many a time, in a Java EE application, besides the user-triggered transactions via the UI (e.g. from the JSF), there's a need for a mechanism to execute long running jobs triggered over time, e.g., batch jobs. Although in the EJB specs there's a Timer service, where Session Beans can be scheduled to run at intervals through annotations as well as programmatically, the schedule and intervals to execute the jobs have to be pre-determined during development time and Glassfish does not provide the framework and the means to do that out-of-the-box. So it is left to the developer to code that functionality or to choose a 3rd party product to do that…"</p>
<hr />
<p>Our current <b>java.net Poll</b> asks <a href="http://java.net/poll/which-java-ee-6-enhancement-most-significant">Which Java EE 6 enhancement is most significant?</a> Voting will run through Thursday or Friday (depending on where you live).</p>
<hr />
<p>We've just published a new java.net <a href="http://www.java.net/articles"><b>Feature Article</b></a>, <a href="http://today.java.net/article/2010/01/04/maven-repository-managers-enterprise">Maven Repository Managers for the Enterprise</a>, by John Smart. We're also featuring Jeff Friesen's <a href="http://today.java.net/article/2009/12/23/reading-newsfeeds-javafx-feedread">Reading Newsfeeds in JavaFX with FeedRead</a>, in which Jeff demonstrates how to apply JavaFX's RSS and Atom newsfeed capabilities to create a snazzy little JavaFX app that can run stand-alone or in a browser.</p>
<hr />
<p>The latest <b><a href="http://today.java.net/pub/ct/mobileandembedded">Java Mobility Podcast</a></b> is <a href="http://today.java.net/article/2009/12/18/java-mobile-podcast-92-midp-30-depth-tutorials-and-demonstrations">Java Mobile Podcast 92: MIDP 3.0 in Depth: Tutorials and Demonstrations</a>: Excerpts from the JavaOne 2009 MIDP 3.0 In Depth: Tutorials and Demonstrations session with Roger Riggs, Lakshmi Dontamsetti and Stan Kao.</p>
<hr />
<p>Current and upcoming <a href="http://www.java.net/events"> <b>Java Events</b></a>:</p>
<ul>
<li>January 15: <a href="http://www.springgrailsasia.com/">Spring Grails Asia 2010</a></li>
<li>January 25: <a href="http://www.activelearning.ph/courses/323_java_servlets_jsp_struts_philippines.html">Developing Java Web Applications</a></li>
<li>February 4-6: <a href="http://fosdem.org/2010/">FOSDEM 2010</a></li>
<li>March 17-19: <a href="http://javasymposium.techtarget.com/?Offer=JScal110509jvnet">TheServerSide Java Symposium 2010</a></li>
</ul>
<p>Registered users can submit event listings for the <a href="http://www.java.net/events">java.net Events Page</a> using our <a href="http://today.java.net/cs/user/create/e">events submission form</a>. All submissions go through an editorial review before being posted to the site.</p>
<hr />
<p><b>Archives and Subscriptions:</b> This blog is delivered weekdays as the <a href="http://weblogs.java.net/blog/45/feed">Java Today RSS feed</a>. Also, once this page is no longer featured as the front page of <a href="http://www.java.net">java.net</a> it will be archived along with other past issues in the <a href="http://today.java.net/today/archive/">java.net Archive</a>.</p>
<p align="right">– <a href="http://www.java.net/author/kevin-farnham-0">Kevin Farnham</a><br />
O'Reilly Media</p>
<div class="grayline"> </div>
<!– | 0 –><p>
Kirill Grouchnikov completed a week-long six-part series of posts on animation with <a href="http://www.pushing-pixels.org/?p=1596">Animations - the big picture</a>. The earlier posts were:
</p>
<ul>
<li><a href="http://www.pushing-pixels.org/?p=1579" rel="bookmark" title="Permanent Link: Animations 101 – from point A to point B">Animations 101 – from point A to point B</a>: Movement is all around us in the physical world. We take it for granted since we see it from the…</li>
<li><a href="http://www.pushing-pixels.org/?p=1583" rel="bookmark" title="Permanent Link: Animations 102 – changing direction">Animations 102 – changing direction</a>: The examples in the previous entry talked about moving from point A to point B in a straight line: Now…</li>
<li><a href="http://www.pushing-pixels.org/?p=1586" rel="bookmark" title="Permanent Link: Animations 103 – going back">Animations 103 – going back</a>: After looking at movement paths involving three points, let’s go back to the case of two points: Now, once you…</li>
<li><a href="http://www.pushing-pixels.org/?p=1589" rel="bookmark" title="Permanent Link: Animations 201 – color">Animations 201 – color</a>: After seeing how the rules of the physical world constrain and shape movements of real objects, it’s time to turn…</li>
<li><a href="http://www.pushing-pixels.org/?p=1593" rel="bookmark" title="Permanent Link: Animations 202 – scrolling">Animations 202 – scrolling</a>: After seeing how the rules of physical world can be applied to animating colors, it’s time to talk about layout…</li>
</ul>
<p>
In the concluding piece, Kirill wraps up by reiterating a primary point of the series — the fact that emulating the physical laws that define the real world within an animated virtual realm can be a complex task:
</p>
<blockquote>
Every movement in the real world is governed by the laws of physics. Sometimes these laws are simple, and sometimes they are not. Understanding and emulating these laws in the virtual world of pixels takes time. It takes time to analyze how the objects in the physical world move. It takes time to find the right physical model for the specific dynamic change on the screen. It takes time to implement this physical model in the code. It takes time to optimize the implementation performance so that it is fluid and does not drain too much device power.
</blockquote>
<p>
Kirill then talks about the modern world, where people are flooded with opportunities for viewing content. It's a world where attention spans have become ever shorter, because there's always something else available to grab (probably briefly) your attention.
</p>
<p>
This means that your app may have only seconds (minutes if you're lucky, Kirill says) to win over the user. Yes, they'll give it a try. But if anything seems awry, unintuitive, sloppily crafted, etc., they will click away from your page to something else, and they won't ever come back.
</p>
<p>
It's kind of like, as an application developer, you're not much different from a songwriter. If you write a song, and you want to present it to a producer, you may make a CD with a few songs on it. But, it's guaranteed that the producer will only listen to a verse and the chorus before moving on to the next song. So, if you make a CD for a producer, you put your very best song first, you make the intro very brief, and you make sure that first verse and chorus fully capture the art and energy of the song, in the rendition you send to a producer.
</p>
<p>
As a software application developer, your time to impress a new user is about the same — probably less than a minute. In those few seconds, your app <em>has</em> to impress, or it will be abandoned. If your app involves animation, you've got to get it right, realistic, or your application will look amateurish.
</p>
<p>
It's not all physics, either. Creating appealing animation is an art, as well. It involves careful design. As Kirill says:
</p>
<blockquote>
Drawing on the existing user experience is an incredibly powerful tool – if used properly. Some things are universal, and some things change across cultures. Distilling the universal triggers and transplanting them to your application is not an easy task. It requires a great deal of time and expertise from both the designers and programmers. And if you do it right, you will create a friendly and empowering experience for your users.
</blockquote>
<p>
Ultimately, it's all about satisfying the users, giving them what they want. Part of what they want, in an animation, is world that seems "real" even though it's animated. If it doesn't seem real, then it's difficult for the users to relate to what you've created.
</p>
<p>
Kirill concludes with some discussion of the movie Avatar, after which he summarizes the art and science of animation, and its objectives:
</p>
<blockquote>
Make your users productive. Make them happy that they have spent time in your application. Make them want to come back and use your other products. Make an emotional connection. Build on what they know. Make them believe that every choice they make is their own. Or better yet, guide them towards where you want them to go while making them believe that they are in charge.
</blockquote>
<hr/>
<p>
In <a href="http://community.java.net/"><b>Java Today</b></a>, Kirill Grouchnikov presents <a href="http://www.pushing-pixels.org/?p=1596">Animations - the big picture</a>:
</p>
<blockquote>
Over the course of this week i’ve talked about movements of physical objects in the real world, and how they can be applied to animating pixels on the screen. The last two entries have just skimmed the surface of animating UI objects, and even such straightforward areas as color animations and scroll animations can be much deeper and more complicated than it originally seems…
</blockquote>
<p>
Kelly O'Hair feels like he's performing <a href="http://blogs.sun.com/kto/entry/whack_a_mole_testing">Whack a Mole Testing</a>:
</p>
<blockquote>
Of late I seem to have entered a Twilight Zone game of Whack a Mole with the jdk tests. It appears that the odds that a test can fail on some particular OS or machine, with or without any jdk change is higher than I ever thought possible. Very frustrating. Why is that? I have a list of possible contributing factors…
</blockquote>
<p>
<code>Alexismp</code> writes about <a href="http://blogs.sun.com/theaquarium/entry/sang_s_newest_passion_java">Sang's newest passion - Java EE 6 Code Camp</a>:
</p>
<blockquote>
Sang Shin, the tireless creator of <a href="http://www.javapassion.com/">javapassion.com</a> teamed up with Antonio Goncalves (author of the <a href="http://www.apress.com/book/view/1430219548">first Java EE 6 book</a>) and others to provide you with a free, week-long <a href="http://www.javapassion.com/courses/javaee6codecamp.html"><strong>Java EE 6 Online Codecamp</strong></a>…
</blockquote>
<hr />
<p>
In today's <a href="http://www.java.net/blogfront">Weblogs</a>, Aaron Houston provides commentary on <a href="http://weblogs.java.net/blog/sunahouston/archive/2010/01/11/cls-west-%E2%80%93-community-cabal-09-jan-2010">CLS West – A Community Cabal</a>:
</p>
<blockquote>
I had the opportunity to attend the <a target="_blank" href="http://clswest.blogspot.com/">CLS West Event</a> (<a target="_blank" name="wiki page" href="http://www.communityleadershipsummit.com/wiki/index.php/CLS_West">wiki</a>, <a target="_blank" href="http://clswest.blogspot.com/2009/12/check-out-our-attendee-photo-gallery.html">attendee photo gallery</a>, <a target="_blank" href="http://clswest.eventbrite.com/">eventbrite registration site</a>, <a target="_blank" href="http://www.communityleadershipsummit.com/wiki/index.php/CLS_West_Session_Notes">CLS session notes page</a>, etc) this last weekend <strong>(Jan 9th, 2010)</strong> at the Devry campus in Daly City. It was an unconference event. Lots of Community Leaders from different Tech Companies were there which was interesting to me working for Sun–<strong>it was a sort of a <a target="_blank" href="http://www.merriam-webster.com/dictionary/cabal">Community Cabal</a></strong>. STATS: <b>31 un-conference sessions. (8) classrooms utilized. 80+ people were in attendance</b>, lots of familiar faces from other Bay Area community events. My Notes on the "Communities Go Global" are below as well as a graphical representation which Bay Area Tech Companies and Communities that participated or programs that were discussed…
</blockquote>
<p>
John Ferguson Smart presents <a href="http://weblogs.java.net/blog/johnsmart/archive/2010/01/11/maven-mythbusters-2-maven-requires-internet-connection-delete-dire">Maven Mythbusters #2 - Maven requires an internet connection to delete a directory</a>:
</p>
<blockquote>
Maven seems to be one of those topics that brings out passion in many developers. In this series of articles, I want to take a look at some of the common myths and ideas that circulate about Maven, and see how they stand up to the light of scientific examination. Last time, we looked at the idea that <a href="http://www.wakaleo.com/blog/246-maven-mythbusters-maven-automatically-updates-for-every-build">Maven automatically updates for every build</a>. This time we look at another myth quoted in this article: that Maven requires an internet connection to delete a directory…
</blockquote>
<p>
Fabrizio also posted <a href="http://weblogs.java.net/blog/fabriziogiudici/archive/2010/01/11/type-safe-map-class">A type-safe map-like class</a>:
</p>
<blockquote><
In the <a href="http://forceten.tidalwave.it">forceTen</a> GeoCoding API there's a simple map-like class named <span style="font-family: monospace;">FactSheet</span>, that contains a few attributes about a geographic entity (such as the population count, or the official elevation of the place). It's the typical scenario where you'd use a <span style="font-family: monospace;">Map</span> or a map-like class, because data items can be there or not for some entities and/or for different service providers. This class is used with something like…
</blockquote>
<hr />
<p>
In the <b><a href="http://forums.java.net/jive/index.jspa">Forums</a></b>, <code>mammutglassfish</code> wonders <a href="http://forums.java.net/jive/thread.jspa?messageID=380106&tstart=0#380106">how to prevent XmlSchemaForm.Unqualified</a>: "XmlSchemaForm Tag Unqualified…"
</p>
<p>
Bobby Bissett responds <a href="http://forums.java.net/jive/thread.jspa?messageID=380105&tstart=0#380105">Re: migrating a domain configuration from gfv2.x to gvf2.1.1 or gfv3</a>: "If you want to migrate it from v2.1.1 to v3, you can use the upgrade tool for this. It's the 'asupgrade' script in the v3 bin directory. In essence, this will make a copy of your original domainA and then upgrade the copy so that it…"
</p>
<p>
<code>ruiminde</code> responds <a href="http://forums.java.net/jive/thread.jspa?messageID=380096&tstart=0#380096">Re: Glassfish v3 deployment exception</a>: "It includes the Axis2 library for web services, so yes probably it's using a non-default XML parser (I'm not aware of its low level details)…"
</p>
<hr />
<p>
Our current <a href="http://today.java.net/today/projectspotlight.csp"><b>Spotlight</b></a> is Christopher Lam's <a href="http://netbeans.dzone.com/javaee6-netbeans-timerservice?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+javalobby%2Ffrontpage+(Javalobby+%2F+Java+Zone)">How to Create a Scheduler Module in a Java EE 6 Application with TimerService</a>: "Many a time, in a Java EE application, besides the user-triggered transactions via the UI (e.g. from the JSF), there's a need for a mechanism to execute long running jobs triggered over time, e.g., batch jobs. Although in the EJB specs there's a Timer service, where Session Beans can be scheduled to run at intervals through annotations as well as programmatically, the schedule and intervals to execute the jobs have to be pre-determined during development time and Glassfish does not provide the framework and the means to do that out-of-the-box. So it is left to the developer to code that functionality or to choose a 3rd party product to do that…"
</p>
<hr />
<p>
Our current <b>java.net Poll</b> asks <a href="http://java.net/poll/which-java-ee-6-enhancement-most-significant">Which Java EE 6 enhancement is most significant?</a> Voting will run through Thursday or Friday (depending on where you live).
</p>
<hr/>
<p>
We've just published a new java.net <a href="http://www.java.net/articles"><b>Feature Article</b></a>, <a href="http://today.java.net/article/2010/01/04/maven-repository-managers-enterprise">Maven Repository Managers for the Enterprise/a>, by John Smart. We're also featuring Jeff Friesen's <a href="http://today.java.net/article/2009/12/23/reading-newsfeeds-javafx-feedread">Reading Newsfeeds in JavaFX with FeedRead</a>, in which Jeff demonstrates how to apply JavaFX's RSS and Atom newsfeed capabilities to create a snazzy little JavaFX app that can run stand-alone or in a browser.
</p>
<hr />
<p>
The latest <b><a href="http://today.java.net/pub/ct/mobileandembedded">Java Mobility Podcast</a></b> is <a href="http://today.java.net/article/2009/12/18/java-mobile-podcast-92-midp-30-depth-tutorials-and-demonstrations">Java Mobile Podcast 92: MIDP 3.0 in Depth: Tutorials and Demonstrations</a>: Excerpts from the JavaOne 2009 MIDP 3.0 In Depth: Tutorials and Demonstrations session with Roger Riggs, Lakshmi Dontamsetti and Stan Kao.
</p>
<hr/>
<p>
Current and upcoming <a href="http://www.java.net/events"> <b>Java Events</b></a>:
</p>
<ul>
<li>January 15: <a href="http://www.springgrailsasia.com/">Spring Grails Asia 2010</a></li>
<li>January 25: <a href="http://www.activelearning.ph/courses/323_java_servlets_jsp_struts_philippines.html">Developing Java Web Applications</a></li>
<li>March 17-19: <a href="http://javasymposium.techtarget.com/?Offer=JScal110509jvnet">TheServerSide Java Symposium 2010</a></li>
</ul>
<p>
Registered users can submit event listings for the <a href="http://www.java.net/events">java.net Events Page</a> using our <a href="http://today.java.net/cs/user/create/e">events submission form</a>. All submissions go through an editorial review before being posted to the site.
</p>
<hr />
<p>
<b>Archives and Subscriptions:</b> This blog is delivered weekdays as the <a href="http://weblogs.java.net/blog/45/feed">Java Today RSS feed</a>. Also, once this page is no longer featured as the front page of <a href="http://www.java.net">java.net</a> it will be archived along with other past issues in the <a href="http://today.java.net/today/archive/">java.net Archive</a>.
</p>
<p align="right">
– <a href="http://www.java.net/author/kevin-farnham-0">Kevin Farnham</a><br/>
O'Reilly Media
</p>
<div class="grayline"></div>
<!– | 0 –><p>
The <a href="http://java.net/poll/whats-your-outlook-technology-software-engineering-economy-2010">latest java.net poll</a> shows that expectations for the technology / software engineering economy in 2010 vary greatly. However, a majority expect the outlook to be improved as 2010 proceeds.
</p>
<p>
A total of 266 votes were cast in the non-scientific survey. The exact question and results were:
</p>
<blockquote>
<p>
<strong>What's your outlook for the technology / software engineering economy in 2010?</strong>
</p>
<ul>
<li>22% (58 votes) - 2009 was great for me; 2010 will be great too</li>
<li>11% (29 votes) - We've turned the corner, work should become plentiful</li>
<li>33% (87 votes) - I expect a slow recovery in 2010</li>
<li>12% (31 votes) - 2010 won't be any better than 2009</li>
<li>11% (29 votes) - The downturn will worsen, lost jobs aren't coming back</li>
<li>12% (32 votes) - I don't know;other</li>
</ul>
</blockquote>
<p>
Of course, one thing that makes it difficult to assess a poll like this is the fact that the people who voted live in many different countries, and the economic outlook in some countries is far better than it is in other countries. So, given a person who votes "2009 was great for me; 2010 will be great too" and another person who votes "the downturn will worsen, lost jobs aren't coming back" — both people may be accurately predicting what will happen in their own country.
</p>
<p>
It's the nature of global downturns that the shock affects and pulls down everyone at the moment of crisis. But, since the economies of different countries are so different, and since the policies their governments enact in response to the crisis vary greatly, some countries return to a more normal level of economic vibrancy sooner than others. Then, there are potentially other countries that may never return to their prior level of economic growth and vitality, because the downturn and response fundamentally changes the structure of that nation's economy (the United States may be in this category).
</p>
<p>
Still, setting all of that aside, and looking at the poll from a global perspective — a pretty high percent of voters (22%) did not find 2009 to be a bad year, or even a merely good year. For them, 2009 was great, and they expect their own personally great economy to continue in 2010.
</p>
<p>
The highest number of votes (33%) went to "I expect a slow recovery in 2010." This is in line with the median forecast by most economists in the United States, Western Europe, and many other of the what used to be called "First World" nations. Still, in the United States, for example, there are a quite a lot of economists who expect a "W" shaped recession, where we are now on the first upward leg, but by 2011 we'll be sliding downward again. I don't see many economists predicting this scenario for countries like China, India, Brazil, and other economies that were enjoying quite fast growth before the 2008 crisis.
</p>
<p>
Anyway, I very much hope that these 33% of voters and the 11% who voted "we've turned the corner, work should become plentiful" are correct, at least for most of the world. A good economy in one part of the world often helps pull the rest of the world out of their slump.
</p>
<p>
Meanwhile, it's very easy for me to see why 12% selected "2010 won't be any better than 2009" and 11% selected "the downturn will worsen, lost jobs aren't coming back."
</p>
<p>
One group of voters is certain to be correct — those who said: "I don't know." None of us do, really. Even the most respected, highly paid economists in government, in finance, and everywhere else, were unable to form a consensus that would have prevented the 2008 crisis — though a great many warned pretty precisely, and years in advance, that what happened would happen…
</p>
<p>
<strong>New poll: Java EE 6</strong>
</p>
<p>
Our new poll asks <a href="http://java.net/poll/which-java-ee-6-enhancement-most-significant">Which Java EE 6 enhancement is most significant?</a> Voting will be open for the next week.
</p>
<hr/>
<p>
In <a href="http://community.java.net/"><b>Java Today</b></a>, Adam Bien talks about <a href="http://www.adam-bien.com/roller/abien/entry/java_ee_6_and_the">Java EE 6 and the JCP Stuff - Perfect for Lazy Developers</a>:
</p>
<blockquote>
Clarification: all developers should be lazy :-). Java EE (6) is an abstraction of existing products (Hibernate, TopLink, Glassfish, JBoss, Geronimo, Tomcat+, …) and API-implementations. So if you develop Java EE 6 applications, you can start with the spec and dig into the implementation details as needed. If you are using e.g. Glassfish application server, EclipseLink (JPA), Equinox or Felix(OSGi), RedHat Weld (CDI) … are working for you - but you don't have usually to care about the details. …
</blockquote>
<p>
Kirill Grouchnikov continues instructing with <a href="http://www.pushing-pixels.org/?p=1589">Animations 201 – color</a>:
</p>
<blockquote>
After seeing how the rules of the physical world constrain and shape movements of real objects, it’s time to turn to the pixels. State-aware UI controls that have become pervasive in the last decade are not pure eye candy. Changing the fill / border color of a button when you move the mouse cursor over it serves as the indication that the button is ready to be pressed. Consistent and subtle visual feedback of the control state plays significant role in enabling flowing and productive user experience, and color manipulation is one of the most important techniques…
</blockquote>
<p>
Sean Mullan announces the availability of <a href="http://blogs.sun.com/mullan/entry/secure_coding_guidelines_for_the">Secure Coding Guidelines for the Java Programming Language, Version 3.0</a>:
</p>
<blockquote>
A new version (3.0) of the Secure Coding Guidelines for the Java Programming Language has just been published at <a href="http://java.sun.com/security/seccodeguide.html">http://java.sun.com/security/seccodeguide.html</a>. The secure coding guidelines documents best practices and patterns that you should adhere to when writing Java code in order to avoid vulnerabilities. These guidelines are important for every Java developer, whether you are writing a trusted library or an end-user application…
</blockquote>
<hr />
<p>
In today's <a href="http://www.java.net/blogfront">Weblogs</a>, Fabrizio Giudici talks about <a href="http://weblogs.java.net/blog/fabriziogiudici/archive/2010/01/07/issue-deterministic-builds-maven-hudson">An issue for deterministic builds with Maven + Hudson</a>:
</p>
<blockquote>
Given that Maven is much more complex than Ant, and it dinamically resolves dependencies, people are right to be concerned with having deterministic builds. But the vast majority of problems are solved by just three good practices: 1. version everything, including all Maven plugins; 2. run once in a while mvn dependency:go-offline, that will download all the required stuff; 3. routinely use mvn -o (offline mode)…
</blockquote>
<p>
Wouter van Reeven is <a href="http://weblogs.java.net/blog/wvreeven/archive/2010/01/06/getting-started-primefaces-glassfish-v3">Getting started with PrimeFaces on GlassFish v3</a>:
</p>
<blockquote>
According to <a href="http://www.primefaces.org/">the PrimeFaces website</a>, "<em>PrimeFaces is an open source component suite for Java Server Faces featuring 70+ Ajax powered rich set of JSF components. Additional TouchFaces module features a UI kit for developing mobile web applications.</em>". Since it is an OpenSource JSF implementation that is very close to releasing JSF 2.0 compliant components, I figured it was time to try it out on GlassFish v3…
</blockquote>
<p>
John Ferguson Smart presents <a href="http://weblogs.java.net/blog/johnsmart/archive/2010/01/06/maven-mythbusters-maven-automatically-updates-every-build">Maven Mythbusters - Maven automatically updates for every build</a>:
</p>
<blockquote>
Maven seems to be one of those topics that brings out passion in many developers. Apparently, some developers love it, and find it a highly valuable and time-saving tool, whereas others hate it with a passion. (Of course there are <a href="http://www.insaneprogramming.be/?p=90">still others</a> who just want to get on with the job, but those ones usually keep quiet on the blogosphere). Every once in a while someone comes out with a <a href="http://kent.spillner.org/blog/work/2009/11/14/java-build-tools.html">blog entry</a> explaining in more or less detail what they dislike so much about Maven. Sometimes these articles contain constructive criticism that allows Maven to evolve in the right direction. That's great. Sometimes they contain inaccuracies or misunderstandings about how Maven works. Sometimes they are just downright wrong. But they nevertheless represent a perception of Maven in parts of the Java community. So in this series of articles, I want to take a look at some of the common myths and ideas that circulate about Maven, and see how they stand up to the light of scientific examination…
</blockquote>
<hr />
<p>
In the <b><a href="http://forums.java.net/jive/index.jspa">Forums</a></b>, <code>ivanferdelja</code> has an <a href="http://forums.java.net/jive/thread.jspa?threadID=72120&tstart=0">Issue when scrolling with padding</a>: "hi guys, i've searched the forum and found bunch of scrolling issues but nothing with padding. Awy, i have a simple container (a menu) that occupies part of the screen and contains a bunch of button components. the scrolling works ok. however, id like to put some padding between the border and the content, i.e. buttons. so i've used padding on the container. however, when i scroll…"
</p>
<p>
<code>ssoyut</code> posted <a href="http://forums.java.net/jive/thread.jspa?threadID=72135&tstart=0">Sailfin, jax-ws problem in ear project with sip.xml</a>: "Hi all, I have a project that has some EJBs, jax-ws web services and sip servlets. After i create and deploy ear file to sailfin for this project, and call my web service, i have an exception in server.log file like below…"
</p>
<p>
Lianhao Gao asks <a href="http://forums.java.net/jive/thread.jspa?threadID=72100&tstart=0">how to change sequence message ID in tube handler?</a>: "hi guys. We are testing a scenario "secure request reply fault close sequence", which demand to change sequence id after client sent out CloseSequence message. Since it's a security scenario, we have to change sequence id before it was encrypted…"
</p>
<hr />
<p>
Our current <a href="http://today.java.net/today/projectspotlight.csp"><b>Spotlight</b></a> is Geertjan Wielenga's post <a href="http://blogs.sun.com/geertjan/entry/2010_the_year_of_documented">2010: The Year of Documented Reference Material for the NetBeans Platform</a>: "Towards the end of 2008, I predicted that 2009 would be <a href="http://blogs.sun.com/geertjan/entry/2009_the_year_of_documented">The Year of Documented Business Scenarios for the NetBeans Platform</a>. I think, looking back at the past year, that, in particular via <a href="http://netbeans.dzone.com/crud-on-netbeans-platform">How to Create a Swing CRUD Application on NetBeans Platform 6.8</a>, the year turned out as I had hoped. In addition to that, <a href="http://www.amazon.com/Definitive-Guide-NetBeans-trade-Platform/dp/1430224177/ref=sr_1_1?ie=UTF8&s=books&qid=1244881034&sr=8-1">The Definitive Guide to NetBeans Platform</a> was released during the past year as well, together with a <a href="http://platform.netbeans.org/screenshots.html">massively updated NetBeans Platform screenshots page</a>, which all relate closely to business scenarios for the NetBeans Platform. In the case of the book, the business scenarios were <i>enabled</i>, in the case of the screenshots page, the business scenarios were <i>proved</i>…"
</p>
<hr />
<p>
Our new <b>java.net Poll</b> asks <a href="http://java.net/poll/which-java-ee-6-enhancement-most-significant">Which Java EE 6 enhancement is most significant?</a> Voting will run through next Thursday or Friday (depending on where you live).
</p>
<hr/>
<p>
We've just published a new java.net <a href="http://www.java.net/articles"><b>Feature Article</b></a>, <a href="http://today.java.net/article/2010/01/04/maven-repository-managers-enterprise">Maven Repository Managers for the Enterprise/a>, by John Smart. We're also featuring Jeff Friesen's <a href="http://today.java.net/article/2009/12/23/reading-newsfeeds-javafx-feedread">Reading Newsfeeds in JavaFX with FeedRead</a>, in which Jeff demonstrates how to apply JavaFX's RSS and Atom newsfeed capabilities to create a snazzy little JavaFX app that can run stand-alone or in a browser.
</p>
<hr />
<p>
The latest <b><a href="http://today.java.net/pub/ct/mobileandembedded">Java Mobility Podcast</a></b> is <a href="http://today.java.net/article/2009/12/18/java-mobile-podcast-92-midp-30-depth-tutorials-and-demonstrations">Java Mobile Podcast 92: MIDP 3.0 in Depth: Tutorials and Demonstrations</a>: Excerpts from the JavaOne 2009 MIDP 3.0 In Depth: Tutorials and Demonstrations session with Roger Riggs, Lakshmi Dontamsetti and Stan Kao.
</p>
<hr/>
<p>
Current and upcoming <a href="http://www.java.net/events"> <b>Java Events</b></a>:
</p>
<ul>
<li>January 11: <a href="http://www.activelearning.ph/courses/321_java_training_philippines.html">Java Training Philippines</a></li>
<li>January 15: <a href="http://www.springgrailsasia.com/">Spring Grails Asia 2010</a></li>
<li>January 25: <a href="http://www.activelearning.ph/courses/323_java_servlets_jsp_struts_philippines.html">Developing Java Web Applications</a></li>
<li>March 17-19: <a href="http://javasymposium.techtarget.com/?Offer=JScal110509jvnet">TheServerSide Java Symposium 2010</a></li>
</ul>
<p>
Registered users can submit event listings for the <a href="http://www.java.net/events">java.net Events Page</a> using our <a href="http://today.java.net/cs/user/create/e">events submission form</a>. All submissions go through an editorial review before being posted to the site.
</p>
<hr />
<p>
<b>Archives and Subscriptions:</b> This blog is delivered weekdays as the <a href="http://weblogs.java.net/blog/45/feed">Java Today RSS feed</a>. Also, once this page is no longer featured as the front page of <a href="http://www.java.net">java.net</a> it will be archived along with other past issues in the <a href="http://today.java.net/today/archive/">java.net Archive</a>.
</p>
<p align="right">
– <a href="http://www.java.net/author/kevin-farnham-0">Kevin Farnham</a><br/>
O'Reilly Media
</p>
<div class="grayline"></div>
<!– | 0 –><p>
Kirill Grouchnikov talks about the origins of his series of animations posts and looks ahead in his latest post <a href="http://www.pushing-pixels.org/?p=1599">Animations - footnotes</a>. First, how did the series come about?
</p>
<blockquote>
The animation series that was published on this blog last week has been largely the product of reworking the animation layer in Substance look-and-feel and replacing it with the Trident animation library.
</blockquote>
<p>
So, when some people posted comments asking if they could see actual code that implements the laws of motion and other aspects of animation that Kirill was presenting, the response was that much of the code exists in the upcoming versions of Kirill's open source projects, specifically <a href="http://kenai.com/projects/trident/pages/Home">Trident</a>, which is being integrated into <a href="https://substance.dev.java.net/">Substance</a>. But, since this is new code, developers who have existing applications that use these open source libraries may need to make some modifications to their apps, in order to take advantage of the new animation features:
</p>
<blockquote>
If you're using Substance look-and-feel library in your applications, you will need to add the matching Trident jar to your classpath – starting from release 6.0 of Substance. The matching Trident version is 1.2 and it will be officially released at the same time with Substance 6.0. While this is not a major Trident release, it does remove deprecated APIs and as such will break applications that are using those APIs. All the removed APIs have direct replacements, and the final release notes will provide additional information (if you cannot find it in the code). The final Trident 1.2 / Substance 6.0 releases are scheduled for March-April 2010 timeframe.
</blockquote>
<p>
In <a href="http://www.pushing-pixels.org/?p=1599">Animations - footnotes</a>, Kirill talks a bit about the timing of state changes:
</p>
<blockquote>
Suppose it takes 500ms to complete a single animation. The user moves the mouse over a button, and Substance starts animating the color from light blue to light yellow. Halfway through the animation (250ms), the user presses the button. Now, there are three states participating in the animation: default with light blue, rollover with light yellow and pressed with saturated orange. All the states contribute to the overall appearance of the button as long as the combined animation is in progress.
</blockquote>
<p>
This brings up a very important issue for any application that applies animation: processing time and display time. A problem I've seen many times arises because developers tend to develop on fairly high-end computers, which are often much faster and more powerful than the computers that many users of the applications work on. This can lead to the development of complex animations that work very well on the developer's own system, but which bog down a user's system, which lacks the resources to perform the necessary computations and display the results in an adequate time frame, resulting in choppy, halting animations on the user's computer.
</p>
<p>
As Kirill noted early in the series, you probably have only one chance, and it's probably limited to less than a minute, to impress a new user. If you've created something that can only run properly on a high-end developer's system, but you're selling your application to a wide user base (perhaps through the <a href="http://www.java.com/en/store/index.jsp">Java Store</a>), you've got to be careful not to let the excitement that comes with creating dazzling displays on your own system carry you away — if, that is, your objective is broad distribution of your app.
</p>
<p>
Where this can become a real problem is situations where you have large numbers of animated objects all working within as single field of view. If all users had N-core computers (where N is the number of simultaneouly animated objects your app manages), it probably wouldn't be a problem. But even today, you have to assume that many users still have older single processor computers. If widespread distribution is your goal, I think you need to ensure that your application runs well on computers that were fairly mainstream in the consumer market 3-4 years ago.
</p>
<p>
Anyway, Kirill's animations series, which started with <a href="http://www.pushing-pixels.org/?p=1579">Animations 101 - from point A to point B</a>, illustrated the complexity of real-world movement and state transitions. In <a href="http://www.pushing-pixels.org/?p=1599">Animations - footnotes</a>, Kirill notes that a lot of work remains with respect to coding everything that was discussed in the series:
</p>
<blockquote>
The current implementation of the multi-state transitions in Substance 6.0dev does not model most of the physical laws discussed in this series. Handling momentum / inertia, direction change involving smooth turns, and the matching velocity models are not implemented. The work on this will continue throughout 2010, and some of it might find its way to the Trident itself. I am not aware of any other animation library (Java based or otherwise) that provides out-of-the-box support even for simple animations based on the physical rules discussed in this series.
</blockquote>
<p>
My guess is that volunteers who would like to assist in the effort will be welcomed!
</p>
<hr/>
<p>
In <a href="http://community.java.net/"><b>Java Today</b></a>, Kirill Grouchnikov has posted <a href="http://www.pushing-pixels.org/?p=1599">Animations – footnotes</a> as a finale (I think) to his recent animations series:
</p>
<blockquote>
The animation series that was published on this blog last week has been largely the product of reworking the animation layer in Substance look-and-feel and replacing it with the Trident animation library. This work has some implications for the users of both library, and today i’m going to talk about those…
</blockquote>
<p>
Bruce Hopkins has a new Sun Developer Network article, <a href="http://java.sun.com/developer/technicalArticles/javacard/javacard-servlets/">Deploying Servlets on Smart Cards: Portable Web Servers with Java Card 3.0</a>:
</p>
<blockquote>
No, that's not a typo. No, I'm not talking about technology that will be available 10 years from now. Java Card 3.0 technology is available today that allows application developers to create and deploy servlet applications on smart card devices. This article shows developers how to get started with developing servlets with the <a href="http://java.sun.com/javacard/devkit/">Java Card Connected Development Kit 3.0.2</a>…
</blockquote>
<p>
Danny Coward has <a href="http://blogs.sun.com/theplanetarium/entry/java_me_midp_3_0">Java ME MIDP 3.0 in hand</a>:
</p>
<blockquote>
<a href="http://jcp.org/en/jsr/detail?id=271">Java
ME MIDP 3.0 shipped recently</a>, and the Janitor has already one of
the developer phones in his hand as he writes (no jokes about one
handed-typing please), complete with battery, clock and Twitter <a
href="http://en.wikipedia.org/wiki/MIDlet">MIDlets</a> and more. No
big deal, but its the MIDlet environment that's really changed. These MIDlets, which can now run <a
href="http://www.j2mesalsa.com/midp3/concurrency.php">concurrently</a>,
in the <a
href="http://developer.motorola.com/docstools/articles/November_07/">background</a>,
can <a href="http://www.j2mesalsa.com/midp3/SreenSaver.php">start when
the phone boots</a>…
</blockquote>
<hr />
<p>
In today's <a href="http://www.java.net/blogfront">Weblogs</a>, Cay Horstmann comments on <a href="http://weblogs.java.net/blog/cayhorstmann/archive/2010/01/13/project-stage-and-openness">Project Stage and Openness</a>:
</p>
<blockquote>
One nice thing about JSF 2.0 is that they have taken good ideas from elsewhere, such as the “project stage” concept from Rails. If you set the project stage to ”development”, you get detailed error and warning messages. If you set it to “production”, you get more aggressive caching. Better diagnostics or better performance? The choice is yours, and that is good…
</blockquote>
<p>
John Ferguson Smart announces the current <a href="http://weblogs.java.net/blog/johnsmart/archive/2010/01/12/java-power-tools-bootcamps-and-tdd-workshops-first-half-2010">Java Power Tools Bootcamps and TDD workshops for the first half of 2010</a>:
</p>
<blockquote>
We are finalizing plans for the Java Power Tools Bootcamps and TDD training sessions for the first half of 2010. Highlights include the upcoming <a href="http://skillsmatter.com/course/java-jee/java-power-tools-bootcamp">London</a> and <a href="http://skillsmatter.com/course/java-jee/java-power-tools-bootcamp">Paris</a> sessions of the Java Power Tools bootcamps, as well as many sessions Wellington, Sydney, Canberra and Melbourne…
</blockquote>
<p>
Fabrizio Giudici writes about <a href="http://weblogs.java.net/blog/fabriziogiudici/archive/2010/01/11/hierarchy-api">The Hierarchy API</a>:
</p>
<blockquote><
Tree-like structures are a very common pattern. Just to count instances of this pattern in my FLOSS projects: 1. The File Explorer in blueMarine, where photos are shown as they are stored in directories on the local disk. 2. The Calendar Explorer in blueMarine, where nodes representing year / month / day are shown for each day in which a photo has been taken. 3. The Metadata Explorer in blueMarine, where various metadata directories are shown (ok, this is a very shallow tree with only two levels). 4. The Catalog Explorer in blueMarine, where photo tags and tag categories are shown in hierarchical fashion….
</blockquote>
<hr />
<p>
In the <b><a href="http://forums.java.net/jive/index.jspa">Forums</a></b>, <code>ymikhel</code> asks about <a href="http://forums.java.net/jive/thread.jspa?threadID=72523&tstart=0">Package com.sun.xml.wss.saml javadoc?</a>: "Hi, There are differences between the documented methods in the package com.sun.xml.wss.saml (Assertion class methods, for the example) and the methods exposed by the real class (for example getID() method is not documented). Is there any updated javadoc for that package? …"
</p>
<p>
<code>bsevindi</code> has a <a href="http://forums.java.net/jive/thread.jspa?threadID=72521&tstart=0">Locale Problem of j_security_check</a>: "Hello, I am using form based authentication against an ldap realm. Login operations fail with users that have Turkish characters in their user names…"
</p>
<p>
<code>ronanoc</code> seeks help with <a href="http://forums.java.net/jive/thread.jspa?threadID=72495&tstart=0">Thread priorities</a>: "Hi all, could Chen / Shai or other comment on recommended thread priorities to have a good animated UI where networking is going on in the background? How can I set the priority of the EDT etc…"
</p>
<hr />
<p>
Our current <a href="http://today.java.net/today/projectspotlight.csp"><b>Spotlight</b></a> is Christopher Lam's <a href="http://netbeans.dzone.com/javaee6-netbeans-timerservice?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+javalobby%2Ffrontpage+(Javalobby+%2F+Java+Zone)">How to Create a Scheduler Module in a Java EE 6 Application with TimerService</a>: "Many a time, in a Java EE application, besides the user-triggered transactions via the UI (e.g. from the JSF), there's a need for a mechanism to execute long running jobs triggered over time, e.g., batch jobs. Although in the EJB specs there's a Timer service, where Session Beans can be scheduled to run at intervals through annotations as well as programmatically, the schedule and intervals to execute the jobs have to be pre-determined during development time and Glassfish does not provide the framework and the means to do that out-of-the-box. So it is left to the developer to code that functionality or to choose a 3rd party product to do that…"
</p>
<hr />
<p>
Our current <b>java.net Poll</b> asks <a href="http://java.net/poll/which-java-ee-6-enhancement-most-significant">Which Java EE 6 enhancement is most significant?</a> Today is the last full day of voting.
</p>
<hr/>
<p>
We've just published a new java.net <a href="http://www.java.net/articles"><b>Feature Article</b></a>, <a href="http://today.java.net/article/2010/01/04/maven-repository-managers-enterprise">Maven Repository Managers for the Enterprise</a>, by John Smart. We're also featuring Jeff Friesen's <a href="http://today.java.net/article/2009/12/23/reading-newsfeeds-javafx-feedread">Reading Newsfeeds in JavaFX with FeedRead</a>, in which Jeff demonstrates how to apply JavaFX's RSS and Atom newsfeed capabilities to create a snazzy little JavaFX app that can run stand-alone or in a browser.
</p>
<hr />
<p>
The latest <b><a href="http://today.java.net/pub/ct/mobileandembedded">Java Mobility Podcast</a></b> is <a href="http://today.java.net/article/2009/12/18/java-mobile-podcast-92-midp-30-depth-tutorials-and-demonstrations">Java Mobile Podcast 92: MIDP 3.0 in Depth: Tutorials and Demonstrations</a>: Excerpts from the JavaOne 2009 MIDP 3.0 In Depth: Tutorials and Demonstrations session with Roger Riggs, Lakshmi Dontamsetti and Stan Kao.
</p>
<hr/>
<p>
Current and upcoming <a href="http://www.java.net/events"> <b>Java Events</b></a>:
</p>
<ul>
<li>January 15: <a href="http://www.springgrailsasia.com/">Spring Grails Asia 2010</a></li>
<li>January 25: <a href="http://www.activelearning.ph/courses/323_java_servlets_jsp_struts_philippines.html">Developing Java Web Applications</a></li>
<li>February 4-6: <a href="http://fosdem.org/2010/">FOSDEM 2010</a></li>
<li>March 17-19: <a href="http://javasymposium.techtarget.com/?Offer=JScal110509jvnet">TheServerSide Java Symposium 2010</a></li>
</ul>
<p>
Registered users can submit event listings for the <a href="http://www.java.net/events">java.net Events Page</a> using our <a href="http://today.java.net/cs/user/create/e">events submission form</a>. All submissions go through an editorial review before being posted to the site.
</p>
<hr />
<p>
<b>Archives and Subscriptions:</b> This blog is delivered weekdays as the <a href="http://weblogs.java.net/blog/45/feed">Java Today RSS feed</a>. Also, once this page is no longer featured as the front page of <a href="http://www.java.net">java.net</a> it will be archived along with other past issues in the <a href="http://today.java.net/today/archive/">java.net Archive</a>.
</p>
<p align="right">
– <a href="http://www.java.net/author/kevin-farnham-0">Kevin Farnham</a><br/>
O'Reilly Media
</p>
<div class="grayline"></div>
<!– | 0 –><p>
I came across an interesting demonstration and analysis of the Java "code too large" error in a post by Dustin Marx, <a href="http://marxsoftware.blogspot.com/2010/01/reproducing-code-too-large-problem-in.html">Reproducing "code too large" Problem in Java</a>. In the post, Dustin describes his effort to intentionally produce the "code too large" error. Why would someone do this?
</p>
<blockquote>
In this case, it is because I always understand things better when I tinker with them rather than just reading about them and because doing so gives me a chance to demonstrate <a href="http://groovy.codehaus.org/">Groovy</a>, the <a href="http://java.sun.com/javase/6/docs/api/javax/tools/package-summary.html#package_description">Java Compiler API</a> (<a href="http://java.sun.com/javase/6/">Java SE 6</a>), and <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/javap.html">javap</a>.
</blockquote>
<p>
And off Dustin goes. His first discovery is that 65535 bytes of compiled byte code is the number that produces the "code too large" error. And these 65535 bytes have to be the compilation of a single method.
</p>
<p>
Now, realistically, what programmer would <em>ever</em> create a single method that compiled down to 65535 or more bytes? No one I've ever met. Yet, the "code too large" problem does actually exist "in the wild" (as Dustin calls it) — specifically, it can happen when code is generated by, for example, Groovy.
</p>
<p>
To analyze the problem, Dustin built a Groovy script that:
</p>
<blockquote>
generates a Java class that isn't very exciting. However, the class will have its main function be of an approximate size based on how many conditions I tell the script to create. This allows me to quickly try generating Java classes with different <code>main()</code> method sizes to ascertain when the <code>main()</code> becomes too large.<br /><br />After the script generates the Java class, it also uses the <a href="http://java.sun.com/mailers/techtips/corejava/2007/tt0307.html#1">Java Compiler API</a> to automatically <a href="http://java.sun.com/javase/6/docs/technotes/tools/windows/javac.html">compile</a> the newly generated Java class for me. The resultant <code>.class</code> file is placed in the same directory as the source <code>.java</code> file.
</blockquote>
<p>
The Groovy script generates a very simple Java class consisting of a set of conditional statements. Dustin found the maximum number of conditionals that would produce a runnable class, then used the <code>javap</code> tool to analyze the <a href="http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html">class file</a>.
</p>
<p>
Dustin then presents key snippets from the output of <code>javap</code>:
</p>
<blockquote>
From the snippets of <a href="http://www.idevelopment.info/data/Programming/java/miscellaneous_java/Using_javap.html">javap</a> output shown above, we see that the highest <code>Code</code> offset (65512) for this function pushing the limits of the method size was getting awfully close to the magic 65535 bytes (<code>2<sup>16</sup>-1</code> or <code>Short.MAX_VALUE - Short.MIN_VALUE</code>).
</blockquote>
<p>
Dustin has named his blog <a href="http://marxsoftware.blogspot.com/">Dustin's Software Development Cogitations and Speculations</a>, and says he uses it as a way to document things for his own future reference, while also providing information to help other developers. For example, his post <a href="http://marxsoftware.blogspot.com/2010/01/favorite-development-cheatsheets.html">Favorite Development Cheatsheets</a> is a convenient page to bookmark, since there he's placed links to many useful quick references for Java and other technologies.
</p>
<p>
Other recent posts investigate <code>Double</code> to <code>BigDecimal</code> conversion in Java and Groovy, and commentary on the <a href="http://marxsoftware.blogspot.com/2010/01/i-use-dead-programming-languages.html">"java is dead"</a> discussion. There are also posts like <a href="http://marxsoftware.blogspot.com/2009/11/using-groovy-to-check-seventh-grade.html">Using Groovy to Check Seventh Grade Homework</a>.
</p>
<p>
Dustin Marx does some interesting investigations and documents them well in his blog. I've subscribed and look forward to seeing what he investigates next.
</p>
<hr/>
<p>
In <a href="http://community.java.net/"><b>Java Today</b></a>, Dustin Marx investigates <a href="http://marxsoftware.blogspot.com/2010/01/reproducing-code-too-large-problem-in.html">Reproducing "code too large" Problem in Java</a>:
</p>
<blockquote>
<a href="http://java.sun.com/docs/codeconv/CodeConventions.pdf">Code conventions</a> and standard <a href="http://www.cs.usfca.edu/~parrt/doc/devnybbles.html">software development wisdom</a> dictate that methods should not be too long because they become difficult to fully comprehend, they lose readability when they get too long, they are difficult to appropriately <a href="http://en.wikipedia.org/wiki/Unit_testing">unit test</a>, and they are difficult to <a href="http://archive.devx.com/java/free/articles/ohearne01/OHearne01-1.asp">reuse</a>. Because most Java developers strive to write highly modular code with small, highly cohesive methods, the "<a href="http://forums.sun.com/thread.jspa?threadID=747860">code too large</a>" error in Java is not seen very often. When this <a href="http://www.velocityreviews.com/forums/t274120-code-to-large-for-machine-generated-code.html">error is seen</a>, it is often in <a href="http://www.certpal.com/blogs/2009/08/code-too-large-for-try-statement/">generated code</a>…
</blockquote>
<p>
Matt Givney describes <a href="http://mattgivney.blogspot.com/2010/01/unit-testing-java-with-groovy.html">Unit Testing Java with Groovy</a>:
</p>
<blockquote>
Much of the development I do for my clients is in Java. While I am still very much a fan of java, it is not without it's complexity. Groovy, on the other hand, builds on java to abstract and simplify a lot of the things we do in java. One particular place that I love using groovy to enhance a java project, is in unit testing. It's simplified syntax, built-in support for mocking and stubbing and meta programming makes unit testing java a complete cinch. In this installment of the Weekly Give, I am going to show an example of using the Groovy StubFor class to stub java method…
</blockquote>
<p>
<code>Peligri</code> talks about an <a href="http://blogs.sun.com/theaquarium/entry/expired_certificate_in_glassfish_keystore">Expired Certificate in GlassFish Keystore</a>:
</p>
<blockquote>
One of the authority certificates in the <a href="http://glassfish.org/">Glassfish</a> truststore expired on Jan 7, 2010. This is generating a (verbose and somewhat scary) error message on startup. You can just ignore the message, wait - the expired root was removed in update 18 of Java SE 6 and will be removed in later patches of GlassFish Server - or…
</blockquote>
<hr />
<p>
In today's <a href="http://www.java.net/blogfront">Weblogs</a>, Remi Forax looks forward to <a href="http://weblogs.java.net/blog/forax/archive/2010/01/18/fosdem10">FOSDEM'10</a>:
</p>
<blockquote>
In 19 days, I will be at <a href="www.fosdem.org">FOSDEM</a>. If you want to heard about <a href="http://www.fosdem.org/2010/schedule/devrooms/freejava">JSR 292 and lambdas</a> or <a href="http://www.fosdem.org/2010/schedule/devrooms/freejava">DaVinci VM project</a>, you can <a href="http://wiki.debian.org/Java/DevJam/2010/Fosdem">join us</a>, it's free…
</blockquote>
<p>
John Ferguson Smart announces <a href="http://weblogs.java.net/blog/johnsmart/archive/2010/01/17/new-java-power-tools-newsletter-out-web-application-testing-strate">A new Java Power Tools Newsletter is out: Web application testing strategies with Selenium</a>:
</p>
<blockquote>
In <a style="text-decoration: none; color: rgb(0, 102, 153);" href="http://us1.campaign-archive.com/?u=8a43ccdb821548b314780e0f3&id=d80178a6f2">this issue</a> we will be looking at how automated web testing fits into the larger picture. In particular, we will look at how you can use Selenium in different ways for different types of testing…
</blockquote>
<p>
Hamada Zahera posted <a href="http://weblogs.java.net/blog/eng7mada/archive/2010/01/17/get-best-scjp">get the best for SCJP ?</a>:
</p><a href="http://today.java.net/today/projectspotlight.csp"><b>Spotlight</b></a> is Alexis Moussine-Pouchkine's <a href="http://blogs.sun.com/alexismp/entry/glassfish_embedded_and_javadb_embedded">Testing with the GlassFish Maven plugin and JavaDB Embedded</a>
<blockquote>
Now SCJP certification become one of the most important sun certifications for java and it's simple to take it ,coz SUN will consider you as a Java programmer .There are many JProgrammers didn't take this certification although they are very well ,but taking this certification become more important than before specially to raise your rank as a programmer and also it's bonus for you to find better job than you have…
</blockquote>
<hr />
<p>
In the <b><a href="http://forums.java.net/jive/index.jspa">Forums</a></b>, <code>lmcjome</code> is seeing <a href="http://forums.java.net/jive/thread.jspa?threadID=72842&tstart=0">Excessive memory (280K) per connection in grizzly</a>: "Hi. We are doing some benchmarking with glassfish comet/grizzly on SUSE linux 2.6.x. During our prototyping, we established 10000 connections and found that memory consumption is 280K/connection. We ran jprofiler (see attachments) and found that "byte[]" is consuming most of the memory. We did a heap scan to see what objects are using byte and found that 99% of this use is by com.sun.grizzley.util.WorkerThreadImpl.run…"
</p>
<p>
<code>mahdi_hijazi</code> wonders if an LWUIT application has a <a href="http://forums.java.net/jive/thread.jspa?threadID=72806&tstart=0">List problem or bug?</a>: "Hi to you all. I was trying to make a simple list demo when I got this unexpected behavior. I do not need the form to cyclic the focus, so I use the setCyclicFocus( false ), but when I hit the down key on the last item on the list it gets back to the first component, why this happens? …"
</p>
<p>
<code>tdbuchanan</code> is getting a <a href="http://forums.java.net/jive/thread.jspa?threadID=72775&tstart=0">JAX-WS MTOM Applet OutOfMemoryError</a>: "I have an applet that uses jaxws proxy classes with MTOM enabled to upload and download files from a WCF service (Netbeans 6.8 with the Metro 2 libraries and jdk/jre 1.6.18). I can upload large files to the WCF service just fine, but when I try to download a large file I receive an OutOfMemoryError with the following stack trace…"
</p>
<hr />
<p>
Our current <a href="http://today.java.net/today/projectspotlight.csp"><b>Spotlight</b></a> is Alexis Moussine-Pouchkine's <a href="http://blogs.sun.com/alexismp/entry/glassfish_embedded_and_javadb_embedded">Testing with the GlassFish Maven plugin and JavaDB Embedded</a>: "Having GlassFish v3 usable in <a href="http://blogs.sun.com/alexismp/tags/embedded">embedded mode</a> made it easy to create a maven plugin with multiple goals (see this <a href="http://blogs.sun.com/alexismp/entry/glassfish_documentation_embedded_guide">previous entry</a>). This in turn makes it easy to configure the plugin for maven-driven unit testing. Here's an example…"
</p>
<hr />
<p>
This week's <b>java.net Poll</b> <a href="http://www.java.net/poll/what-your-favorite-oraclesun-supported-ide">What is your favorite Oracle/Sun supported IDE?</a>. Voting will end this Friday.
</p>
<hr/>
<p>
We've just published a new java.net <a href="http://www.java.net/articles"><b>Feature Article</b></a>, <a href="http://today.java.net/article/2010/01/04/maven-repository-managers-enterprise">Maven Repository Managers for the Enterprise</a>, by John Smart. We're also featuring Jeff Friesen's <a href="http://today.java.net/article/2009/12/23/reading-newsfeeds-javafx-feedread">Reading Newsfeeds in JavaFX with FeedRead</a>, in which Jeff demonstrates how to apply JavaFX's RSS and Atom newsfeed capabilities to create a snazzy little JavaFX app that can run stand-alone or in a browser.
</p>
<hr />
<p>
The latest <b><a href="http://today.java.net/pub/ct/mobileandembedded">Java Mobility Podcast</a></b> is <a href="http://today.java.net/article/2009/12/18/java-mobile-podcast-92-midp-30-depth-tutorials-and-demonstrations">Java Mobile Podcast 92: MIDP 3.0 in Depth: Tutorials and Demonstrations</a>: Excerpts from the JavaOne 2009 MIDP 3.0 In Depth: Tutorials and Demonstrations session with Roger Riggs, Lakshmi Dontamsetti and Stan Kao.
</p>
<hr/>
<p>
Current and upcoming <a href="http://www.java.net/events"> <b>Java Events</b></a>:
</p>
<ul>
<li>January 25: <a href="http://www.activelearning.ph/courses/323_java_servlets_jsp_struts_philippines.html">Developing Java Web Applications</a></li>
<li>February 4-6: <a href="http://fosdem.org/2010/">FOSDEM 2010</a></li>
<li>March 17-19: <a href="http://javasymposium.techtarget.com/?Offer=JScal110509jvnet">TheServerSide Java Symposium 2010</a></li>
</ul>
<p>
Registered users can submit event listings for the <a href="http://www.java.net/events">java.net Events Page</a> using our <a href="http://today.java.net/cs/user/create/e">events submission form</a>. All submissions go through an editorial review before being posted to the site.
</p>
<hr />
<p>
<b>Archives and Subscriptions:</b> This blog is delivered weekdays as the <a href="http://weblogs.java.net/blog/45/feed">Java Today RSS feed</a>. Also, once this page is no longer featured as the front page of <a href="http://www.java.net">java.net</a> it will be archived along with other past issues in the <a href="http://today.java.net/today/archive/">java.net Archive</a>.
</p>
<p align="right">
– <a href="http://www.java.net/author/kevin-farnham-0">Kevin Farnham</a><br/>
O'Reilly Media
</p>
<div class="grayline"></div>
source : pascale.laurier