Skip navigation
ANNOUNCEMENT: community.oracle.com is currently Read only due to planned upgrade until 28-Sep-2020 9:30 AM Pacific Time. Any changes made during Read only mode will be lost and will need to be re-entered when the application is back read/write.
kfarnham

Test for Echo Blog

Posted by kfarnham Jan 31, 2006

Where did my System.out.println go?

Double-clickable JARs are what we have as a base-line for reliably launching Java applications across platforms, including as double-clickable icons on the desktop. It's not a perfect solution -- robust and reliable cross-platform deployment is a big Java SE problem -- but it's pretty useful as far as it goes.

Problem is, launching with a double-click wipes out your ability to work with the System class' "standard I/O" streams:System.out, System.err, andSystem.in, and while the latter is not commonly used (especially in desktop apps), the first two are commonly used for logging and other purposes. In fact, even if you don't useSystem.out, there's a good chance that a library you use does.

So, if something breaks, you'd like to know about it, right?

In todays Feature Article, Sanjay Dasgupta introduces A Console Terminal for JARs:

This article describes an open source project, a-jar-stdio-terminal, that provides console capability to such JARs. It does not require any change to the existing application code, and can, therefore, even be retrofitted onto existing JARs to magically restore lost console capabilities.


In Projects and Communities, Sun is seeking regression reports in the Mustang Regressions Challenge. Every verified regression submitted between now and March 31 wins a t-shirt, and the best five (as judged by Sun engineering and QA) win a new Ultra 20 workstation. There's more information in the FAQ, aforum for discussing the challenge, and a blog about its goals in Announcing the Mustang regressions challenge.

One compelling use of Jini is presented in the Artima.com article Dynamic Clustering with Jini Technology, which describes a high-availability, scalable clustering technique using Jini technology. "As a tool for dynamic networking, Jini technology found a niche as middleware in support of highly available and scalable enterprise systems that operate on clusters built on commodity hardware."


In Also in Java Today, Ruby on Rails creator David Heinemeier Hansson is making a controversial call to Let Java retire from the spotlight of web applications in dignity. In an interview with IndicThreads.com, he claims that Java's popularity is in decline: "I definitely believe that the majority of new web-application development will leave Java in the coming years. Such is evolution. Java served as a very valuable link in that evolution taking business programming out of C++. Now its time to accept that there are more productive ways out there to achieve the same. Just as Java convinced people of that in the mid 90'es. I think 10 years is a great run."

Ready for Mustang? Not sure what it will do for you? Robert Eckstein's More Enhancements in Java SE 6 (Mustang) introduces some of the new features, including setting file and directory permissions, obtaining disk space, adding components to tabbed pane tabs, as well as the inclusion of the SwingWorker class. "Although these features are largely independent of each other, they represent the desire of the Mustang development team to address some of the smaller requests that the Java development community has made."


In today's Weblogs, Scott Violet offers a Swing tutorial in Architecting Applications 2: the Application class: "This is the second blog in a series on architecting applications. In the first blog I discussed the application I'm going to develop, how it would be architected, and briefly went over the model. In this second article I'll motivate the need for an Application class that is suitable for typical Swing based Apps, as well as the functionality it should provide."

Kirill Grouchnikov shares An unexpected bug report: "Here is an unexpected by-product of the collaboration fostered by java.net - a bug report filed completely in Chinese."

In Accessing Derby from Creator, Brian Leonard writes "Yes, I'm a NetBeans guy, but since Creator 2's been released, I can't stop playing with it. Since I've also been playing with Derby a bit lately, and since Derby isn't one of the preconfigured database server types that ships with Creator, I thought a short blog entry might be in order."


In today's Forums,amyatt sees value in certifications, adding to the Re: Certifications? thread a little personal experience: "Certifications are a useful tool. Yes they can be over-hyped, but as someone said above, if you are hiring and with 2 candidates have one person with no certifications and another with several, I might put more weight on the resume of the person with certifications. When evaluating whether to hire programmers it may also be useful to combine the certifications a programmer has with a technical field test."

amyatt is also wondering about Getting Involved With the Java Community Process: "Over the last few months I've been toying with the idea of trying to get our higher IT management interested in possibly participating with the JCP. Other than some of the obvious costs such as the membership fee and the time of staff dedicated to working on JSR's, etc. I haven't seen many negatives to involvement."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Where did my System.out.println go?  
kfarnham

Show Don't Tell Blog

Posted by kfarnham Jan 29, 2006

A breakthrough J2ME app?

Perhaps more than anyone else right now, Google has the ability to legitimize a technology. Would we even be talking about AJAX if Google hadn't put it front and center with GMail and Google Local ( Google Maps)? It helps that these apps are incredibly useful and remarkably well-made. Still, just imagine how different things might be if they'd been done as applets or Java Web Start applications.

Well, maybe lightning will strike twice. Over the weekend, O'Reilly Java Editor Mike Loukides sent an e-mail to the editor's list saying that "Google Local is now available as a J2ME app for your mobile phone," and linking to a tour page that shows the J2ME midlet providing directions, a map of local search results, and even satellite imagery.

Given the splash that Google Maps first made a few years ago, it seems reasonable that a mobile version will be at least as well received, if not moreso: now you can get maps when you need them, when you're on the road and need to find something. That this uses J2ME can only reflect well on the platform, even though it is initially only available in the US and then only from certain providers (not including your editor's, unfortunately).

Putting a real app in users' hands, a useful one, may do a lot more for legitimizing and popularizing J2ME than flashy demos and the 255th variant of Tetris / Columns / Dr. Mario. The proof will be if anyone can now go to their boss and get a J2ME project approved by saying "hey, it's good enough for Google, so it should be good enough for us."

J2ME as the next AJAX? Wouldn't that be nice?


Also in Projects and Communities, Amy Fowler's blog offers an Invitation to weigh in on the future of javadoc: "Javadoc's structure really hasn't changed at all in the last 10 years because it serves quite well as the Java platform's API reference. The questions we are trying to answer for JSR260 are should it evolve? and how?" She invites readers to answer these questions in a short (nine question) SDN Javadoc Survey.


In today's Forums,vbkraemer discovers that Equinox runs on GlassFish: "I was able to deploy and execute the Equinox 1.5 on GlassFish. Equinox is a 'A lightweight version of AppFuse'. What is AppFuse? According to its web site, AppFuse is 'A robust starter web application to ease Java webapp development'. Equinox is based on Spring MVC and Hibernate, so don't believe the dire pronouncements that you may have heard around the 'net (or even other forum threads). GlassFish can run Spring and Hibernate application. There were some hiccups along the way, related to security."

In Re: What is expected from Java, hithacker writes: "Swing is really much much powerful then winforms. But where we make a mistake is in the lack of real world examples, which microsoft do 100 times better then us. What is expected from sun is to provide real world examples of swing's usage. I really wonder why guys like romain, joshua are not giving their attention to provide useful demos of swing."


In this week's Spotlightwe're re-pointing to the major update on the JDK release schedule. "Ray Gans' blog entry Where We Are with the JDK also spells out the JDK team's plans going forward. Mustang(Java SE 6) is expected to go beta in February, with another beta in Summer, with a final release this Autumn. Meanwhile, the Dolphin (Java SE 7) project is expected to open this Spring, releasing its snapshots in parallel with Mustang. While the window is closing to Mustang fixes, it's now time to start thinking about features and start discussing them on the Java SE Forum."


Kohsuke Kawaguchi announces a New version of com4j in today's Weblogs. "I posted a new version of com4j, a Java/COM integration library using Tiger features. This version can nicely handle Microsoft Office."

In When Applets are not WORA, Fernando Lozano writes: "During the end of 2005 I had a customer who could not run a Java Applet on his desktops, despite having the latest update from Sun. And the desktops ran the fastest-growing OS and browser in the market today."

Finally, Robert Stephenson looks at New Learning Content from Down Under: "The Learning Federation in Australia has a new crop of excellent educational games for grades P-10."


In Also in Java Today, Brett McLaughlin's two-part series "In Tune with Tapestry" (part 1, part 2) offers a thorough introduction to this popular web-application framework. The first part covers installation and running sample applications, while the second discusses planning a Tapestry application, building it out, and creating Tapestry components. "By carefully thinking through your components before you write them, you can end up with a reusable toolbox of components, rather than having to write lots of disparate applications that don't share components."

Take your eyes off the screen, pull your hands from the keyboard, and don't go anywhere near your bookshelf. You can learn more about Java just by listening. Podcasts about Java are popping up around the web, each one offering a unique style and format. The ONJava article The Java Podcasters, Part 1 talks with Dick Wall of the Java Posse and Michael Levin of Swampcast about their shows, how they're made, and what they hope to accomplish.


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



A breakthrough J2ME app?  
kfarnham

Too Far Gone Blog

Posted by kfarnham Jan 27, 2006

Applets: What Went Wrong?

Throwing fuel on the fire, or dirt on the grave? Look at what the Wikipedia says in its article about AJAX:

While the Ajax platform is more restricted than the Java platform, current Ajax applications effectively fill part of the one-time niche of Java applets: extending the browser with lightweight mini-applications.

Ouch. Replaced by semi-standard JavaScript and a hope and a prayer that most of the browsers will support what you're doing. What did applets do so wrong to be replaced by this?

Seriously, what happened to applets? If we can figure that out, maybe there's some chance they could be more useful in the future. So, the latest java.net Poll asks "What's wrong with applets?" Cast your vote on the front page, then check out the results and discussion on the results page.


In Projects and Communities, the jsr203pub project is a community forum - not sponsored or endorsed by the JCP - for public discussion of JSR 203, which proposes to enhance the Java filesystem API with bulk access to file attributes, filesystem-specific API's, an API for asynchronous I/O operations on sockets and files, etc.

The Java Sound MODules Library brings support for MOD files - a music container format originally popularized on the Amiga - to Java Sound. MODs offer high quality music in a small file size. The library decodes and plays .MOD, .XM, .S3M, .IT and .ZIP module formats, and runs in J2SE 1.3 and up. A J2ME variant is also planned.


In today's Forums,oda66 discovers the root of some Performance problems when upgrading from JDK1.4.2 to 1.5.0: "What turned out to be the real problem is the extensive use of the class GregorianCalendar with its methods "before", "equals", and "after". They are about 100 times slower for JDK 1.5.0, which leads to a contribution of about 50% of program runtime and completely explains our loss of performance. We reported this problem to Sun Developer Network, it is in progress there."

In What is expected from Java, sse writes: "I look at java community for months. I look at .Net community as well. One cannot understand one thing : Java/Sun have some good points in technology, but Sun remains stuck with Binding and UI. When you look at .Net framework (the current), they have not such a finalized framework, but they have made data management, binding very natural and easy, they have made UI very sexy ! Their framework is not yet as elaborate, but they catching up."


In Also in Java Today, John O'Conner looks at some tricky internationalization issues for web app developers. "Unfortunately, although entering non-ASCII text in a browser can be as easy as entering it into a Swing component, accurately transmitting it over the web can be complicated. As no industry standard governs how application data should be encoded in either GET or POST commands, the trip through various layers of programming interfaces can transform character data into meaningless gibberish." John's article Character Conversions from Browser to Database shows how to properly use character encoding information in your HTML, app server, and database to properly maintain international text.

"Conventional wisdom says that powerful individuals drive open source by working against the grain to institute a methodology of sharing that would balance the power between software vendors and users. While this makes for an entertaining narrative, there is quantitative evidence to the contrary." In an article from ONLamp, John Mark Walker argues that There Is No Open Source Community, and that popular beliefs about open source are not only at odds with the business reasons to go open source, they may actually lead to making poor decisions about open source.


Jean-Francois Arcand returns to discuss high-performance I/O in today's Weblogs. InGrizzly NIO Architecture: part II, he writes: "A long time ago I started discussing the GlassFish new HTTP NIO based engine called Grizzly. After several releases, bugs fixing, fired rills, fear of writing in English, and a new member in the family, I'm continuing the exploration of the Grizzly Architecture."

Carla Mott points to a solution to Allow users to demo your J2EE app: "The app-hosting project has been created for java.net projects to showcase their J2EE applications and allow users to demo the app live."

In Introducing Java Web Services / WCF Interoperability, Harold Carr writes: "Sun and Microsoft are working together to ensure web service interoperability in reliable messaging, security and atomic transactions. This blog gives you the big picture as well as letting you know when and where the Sun bits are available and how to use them."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Applets: What Went Wrong?  

Event handling throughout Java

Something I thought was funny while editing today's feature article was a feeling of deja vu. In discussing a server-side event-distribution framework that supports multiple, pluggable listeners, the author proposed the idea of an event-handler which took little or no action, and was meant to be extended with more sophisticated handling.

And I'm like... yeah, in AWT and JavaBeans, this is the concept of the "Adapter".

What I realized is that when we talk about event-handling, Java and its various extensions have expresed the same concept in many diferent ways, depending on the context. JMS messages,AWTEvents, Jini RemoteEvents, JavaBeansPropertyChangeNotifications, java.util'sObserver and Observable, and others all speak to the same concept, the idea of registering interest events and receiving callback-style notifications of them. After all, this is all really the Gang of Four's Observer pattern in many guises.

So... am I wondering aloud why there isn't a single uber-API that would provide event-handling in every context? No thanks. Distributed systems, servers, and GUIs have different needs, and it probably makes sense to tune API's for those cases rather than, say, add networkable events to GUIs that don't need them. Besides, I rolled my own distributed event system once and walked into a baffling OutOfMemoryError bug that ended up involving Swing TreeModels and distributed garbage collection. It's better for everyone if those worlds stay apart when possible.

In Server-Side Typed Event Distributors, today's Feature Article, Satya Komatineni says event processing isn't just for GUIs and enterprise messaging systems anymore. Even an HTTP server can be seen as processing a series of events, and it can be advantageous to wire up one or more handlers to each event. In this article, he shows how to build an event distribution framework and what it can do for you.


The clarified timeline for Mustang and Dolphin, revealed in Ray Gans' Where We Are With the JDK, has kicked off several responses in today's Weblogs. InMustang Beta approaching - we want to know about your bugs and regressions, David Herron writes: "This is where you come in. You have your application and your environment. Please, now is the time to begin taking a serious look at whether Java 6 (a.k.a. Mustang) will successfully run your application."

Calvin Austin wonders what things would be like If Java was a car, in which he asks "And is the delay of JDK 6.0 Mustang a good thing?"

In Interceptors with EJB 3, Meeraj Kunnumpurath writes: "I have been having a look at EJB 3.0 interceptors with Glassfish. EJB 3.0 allows you to define interceptor methods that are called around the business methods and lifecycle events on the bean instances. Here, I will try to provide a simple example of using interceptors on business methods using annotations."


In Also in Java Today, Joel Spolsky, of the Joel on Software site, is kicking off a new series on design, with an Introduction to Great Design. Using the pathological example of a mobile phone which is turned on with its red button, he writes: "it's surprising just how many of today's devices and gadgets and remote controls have actually made TVs, stoves, and telephones harder to use. Suddenly, bad computer user interface design is seeping into the entire world."

For those adopting EJB 3 and using Hibernate for persistence, JBoss' Andrew C. Oliver has posted a mini-guide of performance tuning practices in the blog entry Hibernate/EJB3 Tuning: "These are the top 8 things I tend to find when tuning Hibernate/EJB3 apps. I am going to talk about this predominantly in Hibernate terms but most of it applies to EJB3 persistence (some of the detached object/etc stuff is a bit Hibernate specific) as well. All of it obviously applies to JBoss's EJB3 persistence implementation (which is Hibernate) either by default or through the use of 'extensions'."


In Projects and Communities, voting is underway in the 2006 JXTA Elections, which are being held to fill two open seats on the JXTA Board of Directors. Balloting ends at midnight PST on February 1, and the two winners will serve a one-year term starting March 1. There is also a referendum on the ballot to extend board members' terms to two years.

If you'd like to join fellow java.net community members at JavaOne 2006, acting soon could save you some money. A new "Super Saver Discount" can save you up to $400 off the on-site price if you register for JavaOne before February 15. The conference runs from May 16 - 19 in San Francisco's Moscone Center.


In today's Forums,jurna wonders about the state of Escape analysis and stack allocation: "There have been quite a lot of posts on the net about Mustang's escape analysis and stack allocation capabilities. But recently I can't find any progress on that topic. I know that escape analysis is already performed, but stack allocation is not implemented yet. Is this feature still planned for Mustang?"

In Re: Another "Entities are not POJOs" scenario,dibyendumajumdar writes: "The EJB specification uses the term 'managed' to mean entities that are known to the Entity Manager. I think a more literal term would be 'cached', as this is what appears to be happening. A managed entity is simply one that is in the cache of the Entity Manager. A 'detached' entity is one that isn't."

kfarnham

Fair Warning Blog

Posted by kfarnham Jan 25, 2006

Mustang approaches

Ray Gans' blog entry Where We Are With the JDK offers a major status update for the JDK projects -- Mustang (Java SE 6) and Dolphin (Java SE 7) -- and is effectively required reading, in order to set expectations of what's coming, when, and how:

Sun began the Mustang project (Java SE 6) on java.net over a year ago when we started releasing weekly binary and source snapshots that included bug fixes and minor enhancements to Tiger (Java SE 5). Over time we've introduced major features described by new and existing JSRs that are part of the Mustang release. For those of you who have been watching the blogs, articles, JavaOne presentations and Mustang snapshots, you've seen these new features unfold.

Details are in the blog, but the basic roadmap for Mustang is a beta in February, a likely summer beta, and Mustang final in autumn. Meanwhile, the Dolphin project is set to open in Spring, with some fixes applied to both the Mustang beta and the nascent Dolphin for the time that the projects run concurrently. Following Mustang's release, the focus moves to Dolphin, with an expected release in 2008.

So, what's your priority? Need a bug fix soon? Track Mustang. Want a new feature? It's not going to be in Mustang if it's not already there, so speak up in the newly-renamed Java SE forum (formerly the Mustang forum) and help explain what you need in Java and why.


Also in Projects and Communities, the NetBeans Community home page has noted the release of NetBeans 5.0 RC 2. The new version includes the Matisse GUI builder, better support for JSF and Struts, speedier code completion, better support for refactoring, version control, and debugging, and more. Supported app servers include WebLogic 9, JBoss 4, and Sun Application Server 8.2. Final release is expected later this month.

In today's Forums,claudio asks: Is mustang RC ? "As Ray Gans points out, the beta will be released on february, but some latest builds of mustang displays it as RC. So, what is RC on "java -version" for mustang latest builds ?"

jwenting continues to argue against putting a simple database in core Java. In Re: Embedded basic java db engine inside Jdk, he writes: "I've never seen a non-trivial application that used an embedded database except for temporary storage or storage of configuration data. Things they are useful for are mainly restricted to mobile applications that need a repository of data which can be easily synchronised with a central server when that server can be reached yet allow the user to keep working in an offline mode. For such applications embedded systems are already available and plentiful, ranging from small open source systems like Hsqldb to full blown commercial OODBMSs like Borland JDatastore."


In Also in Java Today, Daniel Steinberg's blog Don't Give us your Tired Your Poor rejects facile taunts that Java isn't "cool" anymore. "I think I'm hypersensitive about this right now because I'm trying to recruit cool Java talks for this year's OSCON in Portland. Now that Java is so commonly seen as an important part of many enterprise applications, that is all that folks see it as." Having spoken with fellow OSCON program committee member Kathy Sierra about great Java apps, Daniel says, "sure, we're going to also look at the Harmony and Eclipse proposals - but give us something to show these Ruby and Perl folks. Give us something to show them that Java is still a compelling language and programming environment."

iBATIS tends to get lost in persistence discussions, walking as it does a middle line between rolling your own JDBC and throwing control over to Hibernate. In Spring: Integrating iBATIS, an excerpt from Spring: A Developer's Notebook, authors Bruce Tate and Justin Gehtland show you how to install iBATIS, use it in a Spring application, and explain why you might want to go this SQL-intense route.


Ed Burns shows his appreciation in today's Weblogs. In NetBeans Team is So Responsive to Bugs!, he gives "a shout out to the NetBeans team for being really responsive to bug reports. I don't know how you do it, and do it so consistently!"

In O'Reilly offers pre-publication access to manuscripts, Scott Schram writes: "O'Reilly has introduce a new service called "Rough Cuts" that gives pre-publication access to books as they are being written."

Marina Sum has tips for using Sun Java System Application Server and Third-Party ORBs: "The configuration procedure as described in a recent article is straightforward. Sun Java System Application Server is certainly versatile!"


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Mustang approaches  
kfarnham

Honest Work Blog

Posted by kfarnham Jan 24, 2006

Of BlackBerries, patents, and extortion

Timing is a curious thing. About the time our producer was looking at today's feature article on developing J2ME applications for the BlackBerry handheld, the U.S. Supreme Court was issuing a ruling refusing to get involved in a BlackBerry patent case. The patent-infringement case has consistently gone against BlackBerry maker Research In Motion (RIM), with the prospect of the company having to shut down the service to comply with a legal injunction. In fact, one of the first comments on the article reads:

How useful is this going to be since RIM has been found guilty of patent infringement and may be required to shut down its network if no agreement can be reached?

Fair enough, but context is necessary. A Fortune magazine commentary from November, BlackBerry Held Hostage does much to explain the situation. It also serves to frame the case as a poster child for how completely and obviously broken the U.S. patent system is, when you consider:

  • The plaintiff in the case, NTP, has never done anything with its patents and apparently never intends to. It exists solely for the purpose of owning patents.
  • Neither NTP, nor anyone else, alleges RIM copied NTP's patents.
  • The Patent and Trademark Office has issued a preliminary invalidation of all 1,921 claims in NTP's eight relevant patents, including all those named in the suit against RIM, with a final decision to come later.

NTP is using the threat of a business-destroying injunction to demand, according to Fortune, that RIM "pay essentially whatever sum NTP names, which some analysts think will approach ten figures." Pretty nice money for not actually doing anything.

Having said all that, it doesn't look to me like there's any endgame that actually puts RIM out of business or shuts off BlackBerries permanently. If NTP destroys the RIM company, there'll be no settlement money, and in time, the Patent Office may finalize its invalidation of the patents in the suit, which makes the entire case moot.

So, I don't mind running BlackBerry content on the site today. Maybe I'll get one someday just to stick it to NTP, once I know that none of my purchase price will go towards buying them off. I do kind of mind that RIM's dev tools are Windows-only, but that's another story...

In today's Feature Article,An Introduction to BlackBerry J2ME Applications, Edward Lineberry says "For the average Java developer--even one with no experience in J2ME--writing applications for the BlackBerry is fairly easy. In this article, I will give an overview of building a simple user interface, and, because networking is the very heart and strength of the BlackBerry platform, how to transmit data through the BlackBerry Enterprise Server to a CGI servlet."


In today's Weblogs, Annette Vernon says the process of JavaOne speaker notifications is underway. In Fulfilling Dreams and Shattering Dreams: All in one day, she writes: "At the top of Today's To Do List: 1) send out notifications for accepted, alternate and declined JavaOne technical sessions..."

Greg Murray sees AJAX Everywhere I have a bit silent recently on my blog as I have been traveling around the globe talking with developers and companies about AJAX. I have found that many people and companies are using AJAX today.

In How to setup JBoss to work with Sun Java Studio Creator, Dru Devore offers "a guide for setting up JBoss 4.0.1sp1 and JBoss 4.0.3sp1 to work with Sun Java Studio Creator."


In today's Forums,jwenting rejects a feature-add in the thread Re: Embedded basic java db engine inside Jdk: "And why add more CRUD to the core distribution that noone who needs something serious will ever use? Isn't it enough we're lugging around a demonstration JDBC driver, a webserver, etc. etc.? If and when a database engine is needed there will almost always be a need for something more serious than whatever you'd get as standard."

oda66 notes a performance regression in Performance problems when upgrading from JDK1.4.2 to 1.5.0: "Hello, we have some performance problems after an upgrade from JDK 1.4.2 to 1.5.0 in a fairly large web application running under Windows and Linux with Apache Tomcat/4.1.30. A test process which mainly carries out a extraction/conversion of data (a lot of file I/O operations) slows down by a factor of about 2."


In Projects and Communities, the Tampa Bay JUG is hosting a presentation called "Practical SOA using JINI and Javaspaces" for its meeting next Tuesday (January 31). In this presentation, Dave Zaffery will discuss how to create a Service Oriented Architecture (SOA) using Jini and JavaSpaces for the services to show how they can communicate in a loosely-coupled manner.

jini.org has posted a white paper called A Scalable Architecture for Low Latency Pricing (PDF, 264 KB), which discusses strategies for building a scalable pricing architecture using JavaSpaces grid technology. "The architecture proposed has the potential to be grid-enabled", distributing work to separate nodes of a low-cost cluster.


In Also in Java Today, some interpreted languages have gained popularity lately, but how do you write an interpreter? One option is to use the JavaCC parser generator. In Writing an Interpreter Using JavaCC, Anand Rajasekar creates a simple syntax for assignments and then walks through the steps of defining it as a context-free grammar and expressing it a form that JavaCC can understand.

"Tapestry is an open-source framework for object-oriented, component-based Java Web application development. Simply put, instead of dealing with the Servlet API or with Struts Actions, the Tapestry programmer stores user data with object properties and handles user actions with event-handling methods." In Rapid Java Web Application Development with Tapestry, John Ferguson Smart "demonstrates a few of the main features of Tapestry, and shows how Tapestry 4, released in December 2005, makes things even easier than previous versions."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Of BlackBerries, patents, and extortion  
kfarnham

Just One Victory Blog

Posted by kfarnham Jan 23, 2006

Will your app take home a Dukie?

The JavaOne keynotes have a section that can be an inspiring affirmation of the power of Java... and it's not whiz-bang neato-keen demos that will never be real applications that anyone uses. I think it's far more impressive to see recognition of real applications. In particular, it's nice to innovation recognized and rewarded in the Java realm.

For example, one of last year's winners was java.net's JDDAC project, which uses remote sensors in the San Francisco Bay to monitor water quality, using Java to run the sensors and an ad hoc peer-to-peer network of mobile phones to share data. Real problem, real app, real data... really innovative!

In this week's Spotlight, nominations for the 2006 Duke's Choice Awards are now being accepted, with a submission deadline of March 15. The "Dukies" celebrate innovation in Java development, putting small developers on an equal footing with big companies. Winners are recognized at the JavaOne keynote and receive a statuette of "Duke", the Java technology mascot.


James Gosling returns to mathematical subjects Cosine redux, which kicks off today's Weblogs. "I was doing some recreational hacking over the holidays that involved evaluating cosines. I ended up doing (once again!) an implementation of cosine (don't ask why)..."

Kohsuke Kawaguchi reports on his Dalma project in Dalma 0.2 released: "Today, I posted a new version of the Dalma project, a continuation-based workflow engine."

In Developer scenario testing, David Herron writes: "The thing I've been thinking about is the testing that we cannot do. That is, we cannot test your applications in your environment."


In Projects and Communities, the Federated Database Management System project offers a component that accepts a query from the programmer, executes it in a distributed environment, and returns the results. This means developers don't have to care what kinds of databases are used in the process, and allows use of Hibernate in a distributed manner.

The JavaDesktop Community has recently added the Ephox EditLive! JavaBean to the Swing Depot: Component Suites page. This component offers "a robust, Word-like, HTML authoring component that can be instantly added to Swing applications." Lists, tables, and images are supported, as is pasting content from other document formats.


In today's Forums,chris_e_brown thinks he sees a Mustang regression, as described in Classloader / security manager: "I use the Foxtrot API for handling long-running tasks without blocking the Swing Event-Dispatching Thread. In Mustang b68 (not b67 or earlier), it fails. I've already starting discussing this on the API's mailing list and on another thread on another forum I'm raising the subject HERE for a different reason: the stacktrace suggests that there have been some changes to the security manager / classloader with regards to proxy classes."

Reviving the discussion of Harmony,wadechandler writes in Re: What do you think?: "I wanted to write on this topic and I kept seeing the same things posted over and over basically, so this seemed like one I could add to and maybe try to shift some direction in this over all thread. The facts are simple: The group writing a JVM should not matter. If the JVM follows the standards (VM, language, APIs, JCP, and JSR) then it should work and if not it has a bug. The bug should be attended to and fixed."


In Also in Java Today, In Using Lucene to Search Java Source Code, Renuka Sindhgatta says, "in this article I propose the approach of using Lucene, the Java-based open source search engine, to search source code by extracting and indexing relevant source code elements." He shows how to customize Lucene to work with Java source code and then support Java-specific queries, like searching for classes that extend certain other classes, or methods that take specific parameter types.

"Most Java developers know JUnit and how to write testable software. But unit tests are not sufficient to ensure high quality software. The customer does not care about units, but expects the complete system to perform correctly. So we also need acceptance tests which test the system as a whole. There have been some attempts to use JUnit for implementing acceptance tests, but I don't feel very comfortable with them. Currently FIT is gaining momentum in this area. FIT provides a clear separation of concerns: Domain experts write human readable acceptance tests, and the developers have to write some code snippets to make the FIT tests run against the system. FitNesse is a special WiKi based on FIT, which provides the possibility to edit the test documents and execute the tests directly from a web browser." Approrpiately, Ralf Stuckert's tutorial Acceptance Tests with FIT/FitNesse is, itself, implemented as a FitNesse wiki.


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Will your app take home a Dukie?  
kfarnham

Come Down in Time Blog

Posted by kfarnham Jan 20, 2006

Hey, what'cha downloading?

One of the discussions we had in this week's infrastructure meeting was prompted by one of our old polls, How active are you in java.net projects? One of the slight controversies, as you'll see in the comments to that poll, is that in a descending level of commitment and activity, we went from "Have discussed projects in lists/forums" to "Not active in projects". Some people said, "well, hey, I download code from projects", which may be true, but begs the question of whether that's really a form of beingactive, and of being active in a project.

By the way, that omission was purposeful. I basically saw it as a read-write distinction: for the purposes of that poll, activity consists of contributing something, even as simple as feedback or a bug report. Read-only access didn't count.

Given that, the 68% "inactive" response is actually very low by typical open source standards. Passive downloaders usually outnumber active members by a wide, wide margin.

But we did wonder this week if we could get a further view of that crowd, whether they're looking at source, pulling jars to use in their projects, or not using the project space at all. Rather than re-running the poll with finer-grained answers, we're asking everyone a slightly different question in the latest java.net Poll: "What do you download from java.net projects?" Cast your vote on the front page, then check out the results page for results and discussion.


Bruce Tate says We should learn from Active Record in today's Weblogs: "I've long been an ORM bigot. I tend to think ORM is the answer to questions that haven't even been asked yet. But a couple of months of Active Record development is changing the way I think about wrapping. We can learn from Ruby on Rails in this area."

In Enable Dropping into Empty JTables, "Shannon Hickey shows how to enable dropping into empty JTables with a single method call in Mustang, or a simple override in earlier versions of J2SE."

Zarar Siddiqi has soem tips for Passing arbitrary data between JSP pages and SiteMesh decorators: "When passing data between your JSP pages and SiteMesh decorators, you are not restricted to just the head, body and title elements. You can pass in any amount of data as long as you know how to use the <content> tag."


In Also in Java Today, the latest Swampcast podcast features an interview with Bruce Eckel, discussing the fourth edition of the classic "Thinking in Java", recent changes to the language, and whether C# is a real challenger to the Java platform. In another Java-oriented podcast, ZDot's Tim Shadel calls JSF "The 7-Layer Burrito I Won't Eat Again". Tune in for his first-person account of adopting this technology and his post mortem reflections.

The combination of aspect-oriented programming approaches with Spring's Inversion of Control philosophy is a fairly natural one, as it allows you to have the provider insert functionality in needed points. In the dev2dev article Using the Spring AOP Framework with EJB Components, Eugene Kuleshov writes: "With the Spring Framework you can wire business logic implemented in plain Java objects with traditional J2EE infrastructure and significantly reduce the amount of code needed for accessing J2EE components and services. On top of that you can mix traditional OO design with orthogonal AOP componentization."


In Projects and Communities, the JDDAC community has announced version 1.0 of the JDDAC platform. "This is a major release and contains all the changes and improvements that have been added for the NetBEAMS project deployment. In addition, this is the first release which contains measurement server software," allowing you to run your own server instead of JDDAC's public server.

In his blog Service Orchestration vs. Service Choreography, John Reynolds tries to clarify an obfuscated bit of naming: "The distinction between WS-Orchestration and WS-Choreography is important to understand, but unfortunately the vocabulary that we are defining for dealing with web services and SOA is... uh... (How shall I put it?)... unhelpful."


In today's Forums,cayhorstmann spells out a purported GlassFish bug inRe: Lazy/eager fetch question: "But the fact remains that the client who deals with a detached entity must be aware that it doesn't have the whole thing. If the client reads a lazy collection, it should get an exception and not quietly the illusion of an empty collection. There are mechanisms for controlling the parts that are fetched (e.g. join fetch, visiting lazy collections in the container,...) The session bean simply needs to publish a contract how much of the entity is fetched. My beef is that the client doesn't even have the chance to operate on the fetched parts of the detached entity. Like I said, I think that's a bug."

In GTK Look and feel unacceptable on Linux...,prime21 writes: "Please continue to make native look-and-feel fidelity a major priority with Mustang. I'm running b67 and the GTK L&F *still* has major issues on Linux. My biggest complaint is font sizes not matching. Font sizes in native GTK apps are slightly smaller than Swing/GTK -- that is to say that Swing's GTK fonts are too big. The JMenuBar is also too tall. Additionally, performance is an issue. I don't know if this is strictly due to the fact that GTK L&F is based on Synth or what. Resizing or maximizing a window is noticeably slow."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Hey, what'cha downloading?  
kfarnham

The Cage Blog

Posted by kfarnham Jan 19, 2006

Catching bogus input with WebWork

OpenSymphony'sWebWork is a web application framework designed to keep productivity high and the code simple. It has gained popularity for several reasons, including its integration with Spring, a powerful tag library, and OGNLsupport. Its powerful validation framework is borrowed from another OpenSymphony project, XWork.

WebWork doesn't get as much attention as some of the other webapp frameworks, and that's too bad, because its adherents think it gets a lot of things right. Its most recent release clears things up for its upcoming merger with Struts, where it will presumably get on more developers' radar.

In today's Feature Article,WebWork Validation, Zarar Siddiqi looks at how to do web-form validation with WebWork, setting aside simplistic approaches like hard-coding validation inside the execute() method in favor of reusing WebWork's built-in validators and writing your own custom validators. He also briefly notes WebWork's client-side validation capabilities, which are provided by another java.net project, Direct Web Remoting.


In Projects and Communities, Shannon Hickey's blog entry Location-Sensitive Drag and Drop in Mustang illustrates changes made to drag-and-drop in Mustang, allowing potential drops over a JTree to be indicated by showing the drop location only when the mouse is over a valid location. "Prior to Mustang, developers could not implement this very important behavior due to oversights in the Swing implementation."

From the Java Enterprise Community: "The Weblets project announces the availability of its Version 0.1 release, and has graduated out of the Java Enterprise community incubator. Weblets makes resource file management and versioning as easy for Web development (for example, for JavaServer Faces component library developers) as it already is today for desktop-based Java development. application frameworks."


In Also in Java Today, the interview SOA Best Practices: A Conversation with Sun Microsystems Distinguished Engineer Mark Hapner discusses the goals and realities of building service-oriented architectures today, covering standards (and why not to wait for them), the importance of XML, the relationship of SOA to web services, and advice for SOA programmers.

Dealing with Swing's event dispatch thread is a challenge for some Swing developers, but Scott Delap still thinks you should Learn to Dance with the EDT (When Debugging Swing). Responding to comments compiled by Alexander Potochkin's Blog, which call for automating the transition of calls to and from the event dispatch thread, Scott writes "Desktop application development is this very choreographed dance. On one side you have the predictability and simplicity of running all UI logic (painting, input handling, etc) on one thread (the EDT in the case of Swing, the display thread in the case of SWT). Then you mix in the complexity of having worker threads for long running tasks and the asynchronous complexity that this brings. Automating this dance is not impossible but not trivial either. Your code ends up only as good as your defenses."


In today's Forums,ylzhao seeks solutions for Numerical compuing in Java Recently, I want to write an application, which involves some numerical computations like matrix, linear algebra and linear and nonlinear optimization, equation root find etc. Traditionly, numerical computation is done by Fortran or C language and some commerical softwares. However, if I use Java language, then I need to use JNI to communicate with the library files. If not, I should convert the librares written in Fortran or C language to Java, which is not so easy. So my question and request are: Does JDK team or JCP group consider to add some standard numerical computation packages to JDK in the future?

kfarnham

Tower of Babel Blog

Posted by kfarnham Jan 18, 2006

The underappreciated hazards of blogging

Over at JavaLobby, Rick Ross is kicking off a very interesting program to spur interest and attention in overlooked blogs. In this week's newsletter, he announces a program to reward good blogs with a small cash bounty: $50, $30, and $20 to the top three blogs each day. Here's his rationale:

Having managed the 10,000-blog JRoller.com service for some time now, Matt and I have an unusual vantage point on the importance of blogs in the overall fabric of the Java developer community. Blogs are fascinating tools for personal empowerment, and we both respect them deeply as outlets for the individual expression of developer perspectives. The numbers of page views at popular blogs like Hani

kfarnham

Teacher I Need You Blog

Posted by kfarnham Jan 17, 2006

About those funny symbols...

Now that Java is 10 years old, it should be obvious that it is now the first language for a lot of young programmers. Or at least their first serious one... lots of us went through a BASIC phase when we were 12. Still, the key point is that not everyone in the Java space will be a C/C++ convert who's done everything in the syntax of the classic "curly brace languages".

And as Java tends towards the abstract, higher-level tasks, it shouldn't be surprising that some people have never had the need to shift bits. Sure, some of us old people can easily say "why, when I was your age..." and rattle off some tale about bit-shifting and masking to interface with some embarrasingly primitive piece of hardware over an embarrasingly slow interface. Point noted. But in all likelihood, a lot of developers probably haven't needed to mask off bits as behavior flags or spin bits around to deal with endianness or other grungy issues. So it's only natural that a lot of developers don't know what these operators do, or more importantly, why they're even in the language.

Today's Feature Articlefeatures the latest in our series of queries you might have been afraid to ask. (Not So) Stupid Questions 7: >>, >>>, <<, and ?: operators asks "What are the >>>, >>>, <<, and ?: operators, and why would I ever use them?" If you can help answer this question -- not just what the operators do (that's easy enough to look up), but why they matter and what they're good for -- I hope you'll contribute your insights in the talkbacks section.


In Projects and Communities, the Virtual Universe project offers a Java-based virtual reality environment using pure Java and Java3D. Virtual Universe bills itself as "a combination of the Web, chat, and instant messaging within a realistic, three-dimensional cyberspace. Here people can meet, interact with each other, and build houses and whole worlds."

Noting that most attempts to bring Macromedia Flash functionality to Java are expensive or dependent on native code, the JFlash project seeks to create a pure-Java player for Flash .swf files that runs in J2SE or J2ME. The current J2SE version is an alpha that supports most of the functionality of the Flash 3 format.


In Also in Java Today, the Free Software Foundation has released the first public review draft of the GPL v3 license. In Public debate on GPL 3 draft begins, News.com reports that "the foundation is revising the GPL for the first time in 15 years, and this time the organization is accepting suggestions from the broad base of people and organizations now involved in the free software and open-source software movements." Significant deltas in the proposed GPL include language to deal with DRM software, automatic granting of patent rights by those distributing GPL software, and "a retaliation clause that prohibits an organization from using privately modified GPL software if it files a patent infringement lawsuit relating to that software."

Application developers may need to ratchet down their expectations for 2006, according to a new survey. The Integration Developer News article Survey: IT Pay Outlook Mixed for '06 says "The Enterprise Systems 2005 IT Salary Survey find the IT job market 'strengthening' over the past year, and into 2006. But, it’s far for clear sailing for a wide range of IT professionals, including those in application development." The survey says "for IT line positions, the bumpy IT economy and continued pressure on IT budgets are still putting a damper on salaries." Application Developer manager salaries wentdown one percent last year, and in the Systems Programming realm, Java programmer salaries actually trail COBOL, C, and even Visual Basic.


Sahoo addresses the popular question When can I use hibernate as EJB3 persistence provider in GlassFish in today's Weblogs, noting that "a number of folks have asked me question about using hibernate in GlassFish. Read on to know the state of things..."

Shannon Hickey introduces you to toto, The Francophone foo, "where Shannon Hickey learns about metasyntactic variables in other languages, during a recent trip to Montreal, Canada."

Finally in Dealing With Rapid Change, David Ockwell-Jenner asks, "can we deal with rapid change by using a simplified version of Service Oriented Architecture (SOA)?"


fak sees tools as an alternative to String-simplifying language changes in today's Forums. In Re: What Do you Think? A Proposal to Java Language For String, he writes: "historically, Java has relied more on tools than on clever language features. So I think many people will agree with me on this post. Many people on this thread argumented that multiline strings would ease the cut and paste of string literals from other editors. Isn't it time for those nice and huge IDEs to have a special shortcut to automatically format the input of a paste operation into a string literal, automatically scaping the special characters and adding plus signs and doing the indentation? For example, instead of doing a Crtl+v on Eclipse, do a Crtl+Shift+v, and the IDE will do de job for you."

bjb busts out the exclamation points for his insistent entry Provide sources package inside build package: This one is a MUST do ASAP! "Dear Glassfish team: Having a bundled version of sources as part of the build will enable us to debug easilly glassfish code an as a result will generate better issue repport : more consistent with build, more detailed, maybe even some patch (!!) provided. Time saved for us and time saved for you ! As we have already access to it, I anticipate no legal issue at all ... I think this is what we call win-win situation?"


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



About those funny symbols...  
kfarnham

All the Nasties Blog

Posted by kfarnham Jan 16, 2006

JRE code you shouldn't call

It's tempting to call code that you know is in the JRE, and that you also know is off-limits. The fact that the class is packaged as com.sun and not javaor javax is enough to tell you that it's an implementation detail, not a public API. Yet it's a hard-to-resist practice at times. Until J2SE 1.4 brought the Image I/O API's to the core, Java graphics books often advocated using Sun's JPEG decoder and encoder classes, even though these were all but certain to be absent in non-Sun Java runtimes. When you need the functionality, and it's not available in a proper form, it's hard not to just go for it... hard until your stuff breaks in the field, of course.

David Herron writes about this in his blog about The non-public classes in Sun's Java implementation. Following up on a blog by Romain Guy about SwingUtilities2, David writes:

I'm sure the SwingUtilities2 class has some useful features. No doubt that's why it's there. But if one uses that class, one should absolutely expect their programs to break.

We treat the public documented API's as our contract with you, the developers of Java applications. We go to great length to maintain compatibility with the public API's. But when something is undocumented or otherwise clearly a private API, we feel very free to make changes.

The SwingUtilities2 class which Romain mentions is in the latter camp. We mave made zero contract with the public about that class, just like all the other private classes. Those are all implementation details which are free to change at any time as we refactor the internals to fix bugs and add features.

OK, everyone consider themselves warned? Great, let's move on...


Also in today's Weblogs is , Jacob Hookom writes about an Experiment: Going Stateless with JSF: "What if JSF components were stored in Request Scope instead of the session or client? What are the possible consequences versus the gains?"

In Natural String Order, Stephen Kelvin writes: "Make string comparisons a little more clever by correctly sorting contained numbers. Hey, Windows XP finally sorts files intelligently, e.g. picture 9.jpg < picture 10.jpg < picture 11.jpg. So your Java software should be able to avoid stupidities like picture 1.jpg < picture 10.jpg < picture 2.jpg"


In this week's Spotlight, JXTA Community member Vanessa Williams writes: "while surfing around looking for research papers on JXTA, I came across a paper by Nicolas Theodoloz which contained in an appendix a reverse-engineered set of use cases for the J2SE reference implementation. With his permission, I have duplicated these in Wiki format and added them to the JXTA Wiki." This JXTA J2SE Reference Implementation Use Cases wiki page iterates through the steps required for working with discovery services (including publishing and getting advertisements, providing error notifications and becoming a peer), resolver services, pipe services, rendez-vous services, and more.


In Projects and Communities, Kirill Grouchnikov has rounded up a set of useful GUI components, describing the process as A file viewer, a wizard and a button strip walk into a breadcrumb bar.... "During these two weeks I have refactored and extracted a collection of (more or less) useful components into one single Flamingo component suite right here at java.net."

The NetBeans Community is getting closer, as NetBeans 5.0 has reached RC 1 status. The new version includes the Matisse GUI builder, better support for JSF and Struts, speedier code completion, better support for refactoring, version control, and debugging, and more. The final release of NetBeans 5.0 is scheduled for later this month.


In Also in Java Today, the SDN article Java Technology 2005: A Year in Review takes one last look at the year gone by, covering the growing adoption of J2SE 5.0 ("Tiger") and its prominent Generics feature, the availability of Java SE 6 ("Mustang") snapshot releases on java.net, simplified Java naming and licensing, the creation of the GlassFish project, the rise of AJAX, and more.

Given a big enough project, it's easy for your exception-handling practices to fall into disarray, creating hazards for the well-being of your project. A few lazy empty-catch blocks here and there and you might never find what's going on. But properly declaring and propagating exceptions has proven unwieldy for many projects. In An Exception Handling Framework for J2EE Applications, ShriKant Vashishtha offers an alternative--a framework to wrap all exceptions in a base runtime exception, allowing you to drop your various "throws" declarations, and conveniently inspect and handle them in a single appropriate place.


Forum member mernst has a request regarding Mustang snapshots in today's Forums: Please put source into CVS. "Hello J2SE meisters, you could make my life a lot easier, if you provided the JDK source bundle via CVS. Note I'm not talking about write access; I just want a convenient way to a) not download tens of megabytes every week b) easily merge updates with patches I'm preparing c) easily get the diff to submit my patch. Right now, everyone has to do the versioning himself. Thanks for considering."

Mobicents developers continue to track Google Talk integration opportunities. In Re: Google Talk Voice opening up, rdeadman writes: "I just noticed that Google has released a C++ reference implementation for Google Jingle. I'm one of the leads on GJTAPI, an open-source JTAPI and Jcc framework. I might be able to rustle up some interest in building a GJTAPI service provider for Jingle. One question is whether we just bridge through JNI to the Google libjingle library, or whether we build off the existing Java Google Talk APIs with native Java for talking the new protocol extensions."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



JRE code you shouldn't call  
kfarnham

Both Ends Burning Blog

Posted by kfarnham Jan 13, 2006

Rival posts, united by fate!

Some days, the dots connect themselves. Earlier in the week, we had a day where a bunch of JNI related stuff popped up on different parts of the site, and we collected it on the front page in a fit of native code fury.

This morning at 5 AM, as I'm loading up on Coke Zero and waiting for the CBC Radio 3 Podcast to download, I scroll through the RSS feeds from theForums, and what should I find but two people, saying the exact opposite thing, not to one another, but in two different threads of theMustangforum.

Both posts involve proposed enhancements to Java Strings. The first thread proposes a self-explanatory convenience static methodString.isNullOrEmpty(String str). The second thread (whose initial posts couldn't appear on the front page because their code formatting would get mangled) propses an inline string concatenation and assignment syntax, which would work like this:

public static void main( String[] args )
{
string 
{
The quick brown
Fox jumps over 
The lazy dog.
} vstat1, vstat2;

System.out.println( vstat1 + " " + vstat2 );

} // main()

Are both syntactic sugar? Maybe. Are both useful? Maybe. Are both controversial... hoo boy. Forum members, take it away...

In Re: String.isNullOrEmpty(String str), tsingerwrites: "Sorry, I have no understanding for people, who want everything in the JDK itself. Haven't you heard about utility classes yet? Do you know, that you can write them yourself? Does anybody know, that one also can create own application-indepedent libraries, which contain all the nice utilities one wrote around the JDK? What do you think is more expensive: learning a bloated JDK or just the language core and writing the extra utilities ourself?"

And, in what would be a perfect reply if not for being in a completely different thread, fuerte writes in Re: What Do you Think? A Proposal to Java Language For String: "I just can't understand why so many Java people oppose EVERY change, be it so trivial as this multi-line string literal, which would not hurt anyone. It seems that Java people are a bunch of fossils, compared to other languages like C# and Python, which are evolving with good speed. The official comment to this is that 'this is just syntactic sugar to save some people from typing'. It seems that people developing Java are sadists, they want to make us suffer."


Vikram Goyal says he's Frustrated with J2ME implementation differences in today's Weblogs: "I am getting increasingly frustrated with the level of differences in MIDP, CLDC and optional API's implementations. Device manufacturers are increasingly making independent rules for their implementations, so much so, that it is almost impossible to port applications from one device to another."

In 400 Horsepower: Image I/O Improvements in Mustang, Chris Campbell hits on a number of bullet points: "Image I/O performance enhancements in Mustang... (In)action shots of the Java Client team... And my first external Mustang fix submission..."

In Alexander Potochkin's Debugging Swing, the summary #1, he explains "why automatic dispatching Swing methods to Event Dispatch Thread is not so good..."


The latest java.net Poll asks "How old is the computer you do most of your programming on?" Cast your vote on the front page, then visit theresults page for results and discussion.


In Also in Java Today, many developers have been slow to migrate to Java 5, despite the fact that it's now more than a year old, so there's a small group of developers who can now claim to have done a full release cycle under the new version. In an article from dev2dev.bea.com, Jess Garms and Tim Hanson report on their Experiences with the New Java 5 Language Features: "We just completed a large Java 5.0-based assignment, and this article looks at our experiences with many of these features. It's not an introduction but a somewhat deeper examination of the features and how they'll affect you, along with a few tips on how to effectively use these features in your own projects."

If you're not already using Dependency Injection (also known as Inversion of Control) in frameworks like Spring, Java EE 5 will offer a compelling reason to check it out. Casting off the difficult and error-prone get-your-own-resources-from-JNDI approach, dependency injection lets you declare your need for a resource and have the container provide it. The next version of Java EE embraces this approach, and as Debu Panda writes in Using Dependency Injection in Java EE 5.0, you can try out the early EJB 3.0 dependency injection support in application servers from Oracle and JBoss today.


In Projects and Communities, the JDK Community is featuring Bryan W. Taylor's commentary "Java Is Dead, Long Live Java!" - The Future of Java: "What many may not realize, Taylor notes, is that some big breakthroughs have arrived and that the Java development landscape is solving important problems. In this column he takes a view of where Java is going to go in the next year or two as these ideas gain traction."

The Public Review Draft Specification for JSR-221, the JDBC 4.0 API Specification, is now available for Public Review. JDBC 4.0 uses new J2SE 5.0 features like annotations and generics "to improve Java application access to SQL data stores by the provision of ease-of-development focused features and improvements at both the utility and API level." This Public Review closes on 23 January 2006.


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Rival posts, united by fate!  
kfarnham

Chance Meeting Blog

Posted by kfarnham Jan 12, 2006

eBay meets rich-client Java, by way of XML

OK, GUI article for you today, one that doesn't involve AWT, SWT, or Swing. Instead, today's Feature Articleintroduces XUI, a rich-client framework that uses XML markup to declare and layout your widgets. Author Luan O'Carroll writes:

As a rich-client framework, XUI takes care of some of the common tasks involved in constructing applications, and aims to promote accepted design practices like the MVC architecture and a clean separation of concerns. XUI applications run on a wide variety of platforms, from handheld computers to high-end desktops running Windows, Linux, and the Mac OS.

XUI makes use of XML for many aspects of the framework. But once processed, the objects declared in XML are first-class Java objects and at almost any stage these objects can be customized by normal Java code.

But this article is no "Hello World" introduction. Instead, Building an eBay Rich Client using the XUI Framework shows how you tie an XUI user interface to the public eBay SDK, allowing you to develop eBay auction GUI's that are far more responsive and pleasant to work with than what's possible with a purely browser-based interface.

XUI tends to get left out of the Swing/SWT GUI arguments. It's a vastly different way to think about building a GUI, and may be a project to watch.


James Gosling dishes the non-dirt on The new Macintoshes in today's Weblogs: "Now that the new Intel Macintoshes are officially out, it's probably safe for me to comment on my experience as a developer in their transition program: it was completely boring - as it should have been. Things just worked."

In RESTful Web Services with JAX-WS, Marc Hadley writes: "The JAX-WS implementation that is included in the recently released JWSDP 2.0 preview now supports the XML/HTTP binding. This new functionality allows JAX-WS applications to implement and use RESTful Web services. Here is a worked example that demonstrates how to use JAX-WS to query the Yahoo News Search service."

Felipe Gaucho says Let's do it again, using GregorianCalendar: "Workdays calculus over a time interval is a repetitive algorithm that every company needs to implement by itself - why it is not included in the Java API?"


In today's Forums,soupdragon has some ideas about improving Printing: "Lately I've been using the print API for the first time and I really think it must be possible to come up with some improvements. I think fairly typical printing would involve a mixture of fixed size items, and tables which may run over several pages. The PrintPage Book functionality seems aimed at this kind of thing, but the TablePrinter doesn't cooperate. Doesn't give you the number of pages, doesn't allow you to treat the first and last pages (where a table is likely to compete with other stuff) differently. And, if print is going to rotate around printables, should there be a getPrintable on the generic AWT components?"

aidan_walsh is disappointed about a missed opportunity in Re: Need for new deployment schemes: "To be honest, I have to admit that I was rather surprised to find that Java wasn't included in Google Pack. I would have thought that a distribution and update method like this, from a company with this kind of public profile and perception would have been just what Sun would kill for. I wonder were they even approached by Google about it?"


In Projects and Communities, Carla Mott's blog Eclipse plugin available for GlassFish describes the latest addition to the GlassFish Plug-insproject: "I'm excited to announce that you can now download the initial version of the Eclipse plugin and try it out. The plugin requires Eclipse 3.1 and is based on Eclipse WPT and includes a quick start guide."

The JavaDesktop Community is featuring the blog entry SwingWorker: Throttling and monitoring? "Antonio Vieiro's blog has an interesting entry on using background threads without spawning too many. Be sure to check out the comments, which clarify details such as SwingWorkers sharing a 10-thread pool."


In Also in Java Today, "Maven is a project comprehension tool at heart. Its general goal is to wrap existing project sources and makes sense of them by providing different views." With this, Maven: A Developer's Notebook authors Vincent Massol and Timothy A. O'Brien kick off Chapter 4, featured in the ONJava excerpt Maven Project Reporting and Publishing, Part 1. This excerpt will show you how to use Maven's reporting features to check out project membership, issue tracking, dependencies, test results, code style, and more.

Still slow to adopt Java 5 Generics? The tutorial Introduction to Java 5.0's Generic List Collections helps you get the most out of the generics-enhanced Listclasses. "We use various List capabilities and show how iterators can be used to traverse collections to access (and possibly modify) their elements. We also demonstrate Java 5.0's enhancedfor statement, which uses a collection's iterator to traverse the collection. This tutorial is intended for students who are already familiar with Java and for Java developers." The tutorial is excerpted from Java How To Program, 6th Edition.


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



eBay meets rich-client Java, by way of XML  
kfarnham

Bitter-Sweet Blog

Posted by kfarnham Jan 11, 2006

Dealing with native code

Native code. Seriously. It's easy enough to say "why, after 10 years and with 3,500 classes just in core Java SE, do we even need native code? What could we possibly need that's not already available in Java or its standard libraries?" Good rhetorical question. And yet, when we asked in a poll How often do you write Java Native Interface (JNI) code?, only 60% of you said you never wrote JNI, meaning that 40% of you had to do it at some point. That seemed really high to me.

And I'm saying this while I'm pining for a little time away from editing to get back to my own project which is, ironically, JNI-based.

Due to a curious combination of items in the editing queue, we have a bunch of JNI stuff on the front page today. All these blurbs came in this week, and I decided to just have one JNI day to get it out of the system. So, if you're looking for C/C++ pointers (ha ha), info on compiling JNI for the new Intel Macs, or if you want an alternative to JNI, today's your lucky day.


Kelly O'Hair kicks off today's JNI fest in today's Weblogs, with his blog entryCompilation of JNI Code: "When compiling JNI code on Solaris, Linux, or Windows, it is important to know what C/C++ compiler options to avoid. This is sometimes obvious, sometimes documented, and sometimes not."

Dru Devore offers extensive tips on EJB Creation and Consumption with NetBeans and JBoss: "This is a guide to working with EJBs in NetBeans deploying them to JBoss. It wilks through creating and consuming EJBs with a sample application."

Continuing his long-running quest to commit a fix into the JDK, John O'Conner reports on Contributing to Mustang: Integrating the fix for bug #4994762: "After coming out of holiday hibernation, Sun shows signs of integrating the bug fix I contributed late last month."


Our JNI theme appears in Projects and Communities: with the release of the first Intel-based Macs, Apple has updated the Universal Binary Programming Guidelines, whose Java Applications section points to an updated Technical Q&A QA1295: Java on Intel-Based Macintosh Computers. While most Java applications will work with no modifications, two scenarios require re-compilation as Universal Binaries: JNI libraries and Native Launchers.

Hans Muller had a dream, and after a lot of coding and configuring, it's a reality: Using Java Web Start to Launch NetBeans details his efforts to improve the presentation of code in articles and blogs by giving the reader a one-click option to download example source code and launch NetBeans to present it in a readable and buildable form. The blog also contains a clickable example of the NetBeans launcher.


Those seeking a JNI alternative can find one option in Also in Java Today: the latest OCI "Technical Insight of the Month" introduces the Simplified Wrapper and Interface Generator. In this article, Mark Volkmann explains that "SWIG generates wrapper code from C/C++ header files that allows C/C++ functions to be invoked from other languages", including compiled languages like Java and C#, scripting languages, and LISP and Scheme variants. Why does this matter to the Java developer? "Using SWIG reduces the amount of manual coding required to invoke C/C++ functions from other programming languages. In the case of Java, JNI can be used directly, but this requires a large amount of tedious coding. Another benefit of using SWIG is that it is less error prone than manual coding. Correct use of JNI is complicated, especially for passing non-primitive types."

"Addressing the issue of bringing Java development more in line with the needs of Web 2.0 developers, an open-source project has emerged to deliver Java support for the Representational State Transfer architectural style." The eWeek article Java Development Gets Web 2.0 Treatment profiles developer Jerome Louvel and his Restletproject, which aims to create a REST framework on top of the Java Servlet API.


In today's Forums,loubs001 hits some points of comparison in Re: Java 6 vs C# 2005 gap analysis: "ok: Java vs C# Gap Analysis in 30 seconds: MSBuild is just a knock off of Ant. Layout has been addressed by the Matisse guys and is far more flexible than Windows Forms (eg. platform and locale independant spacings). collections["row"]["col"] are an example of operator overloading which goes against the Java philosophy mainly because they can get confusing (how do you look up documentation for an overloaded operator? ctrl-space in your IDE isnt going to work is it...) The deployment size of the JRE runtime is 16MB on Windows, compared to the 25MB for .NET (v1.1, I imagine 2.0 is even bigger). Also if deployment size is an issue, pack200 can compress your JARs by as much as 50%. Try doing that with .NET assemblies. Also Java Webstart will make your deployment and versioning a breeze."

miker has some answers on efforts Re: Need for new deployment schemes: "We are doing several things to try and improve deployment. To begin with, we are making every effort we can to convince system providers to install Java on every system they ship. Because of this, on many newer machines there is no need for your application to provide/install the JRE. It can simply use the system JRE that is already installed. We are also working on a Deployment Toolkit. This toolkit will help standardize the way Java is deployed over the network. Some of the things the toolkit will allow is a reliable method to determine A) if a user has Java installed, and B) if so, what version. Another feature helps developers get the latest version of the JRE installed on their customers machine."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Dealing with native code  
kfarnham

If There Is Something Blog

Posted by kfarnham Jan 10, 2006

Web-crawling your own sites

Seriously, in the age of Google, does your company or organization need its own search engine? Plenty of sites are happy to defer to Google by just putting a site:example.comin front of the search terms and throwing it over to the big search engine.

Maybe going outside like this doesn't seem right to you, any more than using the yellow pages to find the phone number of another department in your company. Or maybe, when you think about it, you have a genuine need for your own search engine. Maybe you have confidential material that needs to be searchable in-house, but not outside. Maybe you don't care for the opacity of Google's rankings and want (or for political reasons, need) a transparent process for prioritizing search results.

Or, maybe, you'd just like to see how this stuff works. For a developer, that's as good a reason as any.

In today's Feature Article, we kick off a two-part series on the open-source Java search engineNutch. InIntroduction to Nutch, Part 1: Crawling, Tom White describes how Nutch is split into two parts, the crawler and the searcher: "The main practical spin-off from this design is that the crawler and searcher systems can be scaled independently on separate hardware platforms. For instance, a highly trafficked search page that provides searching for a relatively modest set of sites may only need a correspondingly modest investment in the crawler infrastructure, while requiring more substantial resources for supporting the searcher."

In this installment, he shows how the crawler works and how you can use it to specify what parts of your web you want to capture in the search index.


In Also in Java Today, Java has displaced C as the top computer programming language, according to the latest stats from the The TIOBE Programming Community index, which tracks language popularity from a normalized scan of occurrences in a scan of the Google, MSN, and Yahoo! web search engines and Google newsgroups. "The Java language has increased its popularity in 2005 with 4.77%. This is the highest positive delta if compared to other programming languages. Congratulations to the Java team! Java version 5, released at the end of 2004, has definitely proven to be a step forward in strong typing with its generic types. We are looking forward to Java 6 in 2006! The runners up for 2005 are C# (+1.35%) and suprisingly Visual Basic (+1.17%)."

"A surefire way to ignite a Web flame war is to say one programming language is better than another. James Gosling, known the 'father of Java,' understands that as well as anybody. In a recent blog, Gosling walked into the most recent dustup regarding Java and scripting languages." In the News.com interview Is Java getting better with age?, Gosling speaks about "the never-ending debate over programming languages, the bright side of being flamed and the future direction of Java."


In Projects and Communities, the Java Unlimited Java 4K Programming Contest bills itself as "the ultimate byte-squeezing Java challenge". Entrants in this annual contest have to deliver a working, playable game in just 4096 bytes, bytecode and resources included. But it can be done - last year's contest attracted 50 qualifying submissions. The 2006 contest is open through March 1. Questions and comments can be directed to the Official Java 4K forum.

The SDN article The New Modality API in Mustang reports on changes in dialog modality in Java SE 6 (Mustang). The desktop developer now has four kinds of modality to work with: modeless, document-modal, application-modal, and toolkit-modal. "This new model allows the developer to scope, or limit, a dialog box's modality blocking, based on the modality type that the developer chooses."


Pierre Delisle digs into Resource Injection and the Java Persistence API in web applications in today's Weblogs, offering "some thoughts on the experience of migrating the Duke's Bookstore sample web application (in the J2EE 1.4 tutorial) from JNDI and JDBC to the new Resource-Injection and Java-Persistence-API combo.

In HOME - Time to fix the product website, Malcolm Davis writes: "HTML is a simple technology that seems to have escaped a few developers. Invalid HTML, bad names, no descriptions, and missing favorite icons are some the problems facing the basic website."

Go Geronimo Go! Calvin Austin writes: "Did you know Geronimo is now 1.0? Find out how to get started with this new release."


In today's Forums,christhatcher has a question about asychronous callback patterns: "I was wondering if anyone could explain the details of how asynchronous callbacks are handled. eg does the client maintain an open connection to the server while it waits for a response, how long can it wait(is this bound to the session timeout)? Further since JAX-WS supports WS-Addressing through support for WS-I Basic Profile, is it possible to specify to return address for a proxied call? Finally, has anyone considered if it is possible to implement a Subscriber/Notification pattern using JAX-WS so that clients can 'subscribe' once to server-side 'events types' and receive multiple callbacks stemming from those 'events'?"

guypelletier has an explanation and suggestions Re: StackOverflow on OneToOneMapping ? "Yes section 2.1.8.3.1 is one area that is currently being addressed (implementation wise). The current code was written to support the Public draft and work is underway as we speak to support this section of the PFD. Just a shot in the dark though, I wonder if the defaulting on the 1-1 is causing this. Try specifying the name attribute on the one to one (that is name=PARENT_ID). If that doesn't help I can certainly look into this problem further now that I have your model class to work with."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Web-crawling your own sites  
kfarnham

A Really Good Time Blog

Posted by kfarnham Jan 9, 2006

The java.net Community Corner returns to JavaOne

One of the best things about java.net's presence at last year's JavaOne was the Community Corner and the mini-talks. This gave project owners, community leaders, and others an opportunity to give 20-minute mini-talks in our booth space - complete with monitor, audio, and seating for an audience of a couple dozen. Some remarked that they liked the short, focused talks, others liked the variety, and still others were grateful for a break from the predictable and sometimes marketing-driven official JavaOne sessions.

Given the great feedback, it's only natural we'd do it again. While we continue to work some of the details of our JavaOne 2006 presence (like where we'll be on the floor and how the booth will be arranged), we're already committing to some improvements to the mini-talk arrangement. For one thing, we're planning to make abstracts and papers published for the talks available in the booth. If this convinces your boss that publishing and presenting your paper at the show is worth the company sending you ot JavaOne, you can thank us when you get there.

While arrangements are still something of a work in progress, we decided we wanted to open up the java.net Community Corner 2006 wiki page now. Like last year, you can use the page to propose a mini-talk, and volunteer to work at the booth and tell people about your community and java.net as a whole. We're also planning on having another slide show of projects and community members, and when that's ready, you'll find the upload link on the wiki page.

JavaOne is early this year, May 16-19. I hope we'll see you there... and if not, send pictures!


In Projects and Communities, the next Jini webinar is scheduled for Wednesday, January 18, and features Greg Trasuk presenting "Simple Jini: The Harvester Application Container". "The Harvester application container provides a simple way to develop and deploy Jini applications. You build services using a servlet-like API, and the container handles some of the sticky issues in Jini," such as managing your codebase, providing an http server, and handling infrastructure services like reggie.

JXTA Community Manager Helen Chen has announced the schedule for the 2006 JXTA Board of Directors elections. The elections will fill two seats whose current term ends on February 28. The Call for Nominees is open and extends through January 17. Voting will run from January 18 through February 1. A second issue up for consideration is whether to extend board members' terms from one year to two. Questions and followups can be posted on the discuss@jxta.org list.


In today's Forums,cayhorstmann issues Another plea for better error messages in GlassFish: "Indeed, a test suite of typical beginner's messages would be a good thing. (A couple of days ago, I wasted two hours with inscrutable stack traces because I kept pointing my browser to localhost:8080/index.jsp instead of localhost:8080/index.faces. Surely I wasn't the first and only idiot who ever did this...) But there is a more sinister issue. The error reporting in GlassFish (and, I am sure, Hibernate) is fundamentally deficient. The GlassFish (and Hibernate and ... and ...) developers think they are doing a great and wonderful thing if they launch an exception or write a log message. They are not. Imagine for a minute if the Java compiler worked like that. Every time you have a syntax error, the compiler would simply die with an exception, or it would deposit a logging message into a log file. It would take you forever to get your programs compiled. Compiler writers know that errors are to be expected. Human errors are normal things, and not exceptions. Compiler writers make an effort to report errors that humans can understand, and to keep going to find more errors."

smartinumcp wonders about Swing/JSP Compatiblity: "Has any project given serious interest to developing a standard to allow client and web based versions for JSP and Swing. The current frameworks (struts, spring) actually push more work on the developer for the front-end then supporting multi-client environments. Our XML configuration seem targeted towards the server and persistence layers. Without a true standard at the HTML and desktop client level we will still remain bound to manual writing or rewriting code. I recommend Sun takes some of the lead on this to combat one of .NET's key strength and to keep the maintainability of our code for future iterations."


In Also in Java Today, Ted Neward, author of Effective Enterprise Java, has weighed in with his 2006 Tech Predictions. He forsees the hype for AJAX fading, EJB 3.0 getting people talking about EJB again, a new interest in rich client-side Java apps, a serious discussion of what should be in Java SE 7 ("Dolphin"), and more. He also goes out on a couple of limbs: "My long-shot hope, rather than prediction, for 2006: Sun comes to realize that the Java platform isn't about thelanguage, but the platform, and begin to give serious credence and hope behind a multi-linguistic JVM ecosystem."

Your favorite bug tracker probably doesn't do everything you want or need it to, which has Practical Development Environments author Matthew B. Doar wondering, Bug Trackers: Do They Really All Suck? He writes: "To be fair, while they don't all suck, they are annoying. I've listed some of the most common frustrations with tracking bugs; you may have others to share, or even suggestions for fixing some of these annoyances."


Gregg Sporar has an introduction to Dynamic Bytecode Instrumentation in today's Weblogs: "It sounds esoteric and it sort of is... but it sure can make profiling Java applications easier. Ian Formanek and I have an article in the new issue of Dr Dobb's Journal that provides more info."

Sun Java Studio Enterprise 8 on Mac OS X? Marina Sum shares some helpful information: "Interested in running Sun Java Studio Enterprise 8 on Mac OS X? Read a couple of forum threads on that subject."

Dru Devore has a tutorial on NetBeans with JBoss Setup, showing off "how to set up NetBeans and JBoss to work together."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



The java.net Community Corner returns to JavaOne  
kfarnham

Now More Than Ever Blog

Posted by kfarnham Jan 6, 2006

Are CS students learning the right material?

Continuing with the theme of whether computer science students are learning what they need to know in order to be quality software developers (or, if indeed that's the proper point of a computer science education), Fernando Lozano has checked in with an important viewpoint, someone who's actually taught computer science. In How Should You Teach Software Development?, he writes:

First of all, I have to admit that teaching in college was not the pleasant experience I expected it to be. I love teaching. But I found most students had no interest in what I was trying to teach them. I know I am not a bad teacher, because when I do training I receive a good feedback from my customers. And I am proud a handful of my students actually became respected software developers and they openly state this happened thanks to me.

Working with IT for more than 10 years, I found the same problems other bloggers are complaining about to recruit people, specially undergraduates. And I feel each year the problem gets worse, that is, people become able to get a computer-related degree having less and less competence to write computer programs. But I was surprised to learn this was not just a problem in Brazil, where the educational system is deteriorating in all levels, but a problem hirers and project leaders also have in the US and Europe.

Among Fernando's concerns: a mismatch between what the IT industry needs and what students are taught:

It's a fact that most students have a need for employment and so they'll chase whatever they see in employment ads. That's the reason so many universities are teaching Java early on. You'll never have interested students if you teach using an "underground" language and spends most of the time teaching boring examples like sorting algorithms. You won't also have results if you require the students to learn complex math like queue theory while at work (or at internship) all they do is CRUD applications.

It doesn't matter either whether functional programming, lambda calculus and finite automatus are important for solving complex problems if you can't show the students real-world problems, which they can relate to what they believe it will be their daily work routine.

There's a lot more in Fernando's blog, and it has kicked off a significant discussion in the talkbacks. Check it out.


Also in today's Weblogs, Romain Guy shows off a Video Presentation: Desktop Java in Action: "If you speak french, you can download a video of Desktop Java in Action. Otherwise, get the slides."

Getting Started With EJB 3.0, Brian Leonard writes: "EJB 3.0 promises to be developer friendly, but there's still plenty to learn. In this blog entry I use JBoss and NetBeans to get you started."


In Also in Java Today, Bruce Eckel has just finished the work on his latest book "Thinking in Java, 4th ed" and he appears on the latest episode of Michael Levin's Swampcast podcast to talk about the book and answer a wide range of questions. Eckel talks about all of the changes in Java 5 and is glad that there aren't many changes in Java SE 6, which he says can be thought of as a "point release". He also looks at the practical differences between the Java language and platform and C# together with .Net.

From IRC Hacks author Paul Mutton's page jibble.org comes this amusing Simple Java Implementation of Wake-on-LAN, which allows you to wake up certain computers from sleep (we used it to wake up a PowerMac G5), provided you know the target's IP and MAC addresses. "Some people are surprised how difficult it is to find out how to create a Wake-on-LAN packet. There are a few oddities about it, sure, but this guide will hopefully explain what you need to do. I'll show you how to create a simple Java program that sends a Wake-on-LAN packet to wake up a specified machine. This program can easily be translated into other languages, but Java offers the platform independence which is useful in a networked environment."


The latest java.net Poll asks "How often do you listen to Java-oriented podcasts?" Cast your vote on the front page, then check out the results page for results and discussion.


In Projects and Communities, the 67th JavaTools Community Newsletter welcomes four projects to the community and celebrates two graduations from the incubator: JMXRemote and a-jar-stdio-terminal. It also links to a large number of end-of-year software releases and has a "tools tip" about the Eclipse-Tutorial project.

"Derby is the open source database being developed as part of the Apache DB Project. The Derby project does not develop any GUI tooling. However, some of the engineers working on the Derby project have developed a plug-in for NetBeans 5.0." Brian Leonard's Derby Demoshows how to install and use the plug-in.


In today's Forums,wadechandler expresses his Need for new deployment schemes: "It would be really nice to be able to deploy the JRE without having to include everything. There are many packages which are not used in different applications that would be really nice to be able to leave out completely when packaging/embedding the JRE within an application. This would allow for much smaller applications. Basically, not everyone has highspeed internet, so to distribute some applictions online it's nearly impossible considering code size of the JRE nowadays."

ted780 seems to have a pretty difficult Threading problem: "I am having a Threading problem with my Java App. I am running in WSAD 5.1.2 and using Tomcat 4.1 with JRE 1.4.2_08. I have this app Job Groups that users use to assign Job Titles to Job Groups. The system works fine if people log in one by one. But if we have 2 people login at the same time, it fails or returns weird records. List of things I have tried..."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Are CS students learning the right material?  

Another fine day without pointers

I'm going to try to get some coding done late today or early tomorrow. I won't have to worry about crashing because I typed too many (or too few) asterisks in defining a pointer or a pointer-pointer, or referring to freed memory, or running out of memory by forgetting to free something, or various other hazards. Entire classes of crash-worthy programming mistakes have been eliminated, and my users will never be the wiser.

And, this according to Joel On Software, is abad thing. It means I'm a bad programmer.

No... really!

Joel's The Perils of JavaSchools has spawned a number of blogs in response, and one of the better ones is from John Reynolds, What do programmers really need to know? He takes on Joel's assertion that teaching Java, which lacks pointers (or, more accurately, only lets developers use them as references to objects), automates mamory management, and which merely supports and does not aggressively advocate recursion, fails to challenge developers in important ways. John points out that "A lot of software 'out there' is great, but it contains pervasive security flaws. A lot of software 'out there' is great, but it is way too expensive to maintain," and after noting some nefarious examples, points out that most of the poster children for insecure and unmaintainable software isn't written in Java.

John then works to the point that, in the end, isn't writing software ultimately about focusing on concrete requirements and delivering working systems that meet those needs? Java does that well, and that's why people choose it.

One thought that occurs to me is that the languages recently asserted to be superior to Java in getting things done -- Ruby, python, etc. -- are also garbage-collected and not particularly focused around academic concepts like recursion. Why isn't Joel taking a swipe at these, too? Maybe there's a problem out there for which the perfect solution is a combination of LISP and lovely hand-crafted assembly. If you genuinely believe that's what you need to use, by all means, go for it.

But I don't think Java has made me stupider, thank you very much. I can still be a bit-shifting fiend when I need to. Stop by sometime and I'll show you a VTR deck control I wrote withjavax.comm, complete with low-level opcodes and CRC's and everything. With Java, I was able to use threads and carefully-managed concurrency to run a once-a-second status checker, which gave us the ability to pretty much treat the RS-232 connection like USB, in that it supported hot-pluggability and device status awareness. Yank the cable and the GUI gets an event. Best of both worlds, I'd say.


Also in today's Weblogs. David Ockwell-Jenner is Valuing Diversity: "Looking around our development team, I notice a huge array of tools being used. This got me to thinking just how much this diversity contributes to our overall productivity."

In the announcement JAXB jars are available on Maven repository, Kohsuke Kawaguchi writes: "The JAXB project started posting its jars (both the RI and the API jars) to a maven repository."


In our latest Feature Article, Jason Zhicheng Li looks at Business Object State Management Using State Machine Compiler. Many business processes involve well-defined transitions from one state to another, and are easy enough to represent in code. But oftentimes, developers unnecessarily combine their state transition logic and business logic, which makes maintenance harder. Separating out the state machine makes this easier, and the State Machine Compiler project offers a powerful tool to do this, which Jason introduces by way of a simple order-filling example.


In Projects and Communities, the GlassFish project has announced the release of Milestone 4 of its open-source Java EE 5 implementation. In a blog entry, Carla Mott says "GlassFish is targeting Feb 6 as the release date for Beta" and that "MileStone 4 is the hardcode freeze build which means only approved bug fixes are allowed in the workspace at this time."

The Cejug-Classifiedsproject reports that it "received a Christmas gift from Hemeterio: a new logo. It is a special moment when a project receives such friendly support, and the project crew is even more motivated to publish our first release, now with a visual id." The project is developing a classified ads application as a means of studying J2EE concepts.


In today's Forums,chris_e_brown thinks he may have spotted a Swing actions regression: "However, this stopped working in Mustang (I've been using very recent builds). In Java 5, when the property 'enabled' is changed (this is frequent occurrence in my application, based on context), the toolbar icons are enabled/disabled (drawn ghosted) in the toolbar as expected. In Mustang, it doesn't happen. I looked at this, and it seemed that with both Java 5 and Java 6, calling 'Action.setEnabled(true|false)' always correctly fires the property change event, but in Java 6, for the toolbar at least, when I propagate the property change for 'enabled', nothing happens."

arkara asks Is jaxws 2.0 ready for production? "I wonder if jaxws RI is stable and performant enough for prime time? I'm just starting new project and could potentially use jaxws 2.0, but I'm not sure how performant and stable is RI implementation. My tests are quite impressive but want advice from more experienced jaxws users. Moreover it's far, far more convenient than any existing java WS framework. Do You think it will be ready for production within 3-4 months timeframe?"


In Also in Java Today, "As J2EE to .NET interoperability continues to become a higher priority for IT execs, a growing number of services firms are gaining first-hand experience in such projects." In the Integration Developer News article Top 5 Best Practices for J2EE to .NET Interop, Manjunatha Kutarahalli, Vice President Global Delivery for Marlabs, discusses the pros and cons of various approaches, saying "in this space, we hear from our clients that major vendors are not offering enough Best Practices information, they are just defining the standards. So, Marlabs is documenting patterns and Best Practices for interop from our engagement experiences."

Got a clustered database? Care to roll back a failed transaction that spans multiple nodes? The result isn't always pretty, and can produce numerous errors. In Using Global/Distributed Transactions in Java/JDBC with Oracle Real Application Clusters, Sachin Shetty offers a solution: move the load balancing functionality into your own application. "In this article, I discuss the ways to achieve load balancing of connections across RAC nodes and yet maintain the sticky nature to the same RAC node for the all of the participants of a single global transaction."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to thejava.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Another fine day without pointers  

Following the OSWorkflow

One of the most significant projects on java.net is OpenSymphony. It's a collection of enterprise frameworks that, inexplicably, isn't as well known as some other foundries, like Jakarta. One possible reason for this is that the pieces are very loosely coupled -- WebWork, Quartz, and TestNG are all popular of their own accord, but since none requires the others, many developers don't realize they share a common parent project, goals, and practices.

In today's Feature Article, we're taking an in-depth look at another of the OpenSymphony projects, OSWorkflow. In Implementing Business Processes with OSWorkflow, Diego Naya writes:

OSWorkflow is an open source workflow engine written entirely in Java with a flexible approach and a technical user base target. You can create simple or complex workflows, depending on your needs. You can focus your work in the business logic and rules. No more Petri Net or finite state machine coding. You can integrate OSWorkflow into your application with a minimum of fuss. OSWorkflow provides all of the workflow constructs that you might encounter in real-life processes, such as steps, conditions, loops, splits, joins, roles, etc.

Diego goes on to introduces the concepts that OSWorkflow works with, how it represents these in XML to create a workflow, and how you can integrate the workflow into your application. Step-by-step processes are a common business requirement, and we hope this introductory article will help you get yours up and running quickly and correctly.


In Projects and Communities, the Jenclassworking toolkit project recently reached its third milestone, version 0.30, and is nearing feature completion. Jen is a high-level classworking toolkit that "harnesses the power and performance of ASM in a convenient, easy to work with package," aiming to make classworking almost as simple as Collections.

The Deployment Utilities for Jini Technology-Based Applications (deployutil) project hasannounced its initial release. deployutil provides utilities to "make it easier to deploy Jini technology-based applications that use the security and configuration features in release 2.1 of the Jini Technology Starter Kit."


In today's Forums,dibyendumajumdar wants to know about Sequencing query in GlassFish: "Is there any documentation on how Glassfish handles various sequencing options? I am testing EJB with Apache Derby, and am a bit puzzled by following: 1. Apache Derby supports autoincrement columns, but Glassfish seems to use a Sequence table instead of native sequencing even when generate is set to AUTO. 2. The SEQUENCE table is generated in the default schema - how can one specify the schema for this? I have worked around this issue by specifying the schema name as the JDBC connect id. 3. There does not appear to be any primary key on the SEQUENCE table. Is this correct? I have seen multiple rows being inserted into the table with the same Sequence name."

In Add the ability to GC soft references, doronrajwanasks: "please add the ability to collect all soft references, e.g., Runtime.cleanSoftReferences(). I am using caches, which implemented using soft references (java.lang.ref.SoftReference). All objects are in the cache, but the dirty ones are also hard-referenced. The SoftReference interface assures that they will not be GCd, and I can safely find them using the soft referenced cache. In order to check code correctness, I want to simulate low-memory conditions, dropping all references to objects, which are not hard referenced as well. Adding such a method will help a lot."


In today's Weblogs. Sahoo offers a totorial on Custom tags to use Java Persistence API in JSP: "In this article we will talk about developing and using JSP tags to access database using Java Persistence API in a web application. It includes a complete sample as well as a tag library with a handful of ready to use custom tags. It also shows how to inject persistence context into JSPs."

Eduardo Pelegri-Llopart offers a report on The Aquarium - The First Month: "December was our first month at The Aquarium, so time for a quick retrospective. So far, it is going really well..."

In Open Office Java API, Krishnan Viswanath reports: "After looking around, I ended up discovering OpenOffice UNO (Universal Network Objects) Java API . After going through an initial ramp, it worked out pretty good. With OO UNO and JDBC, ugly and complex reporting became a breeze!"


In Also in Java Today, a recent weblog by Desktop Java Liveauthor Scott Delap asks How Many Data Binding Frameworks = A Bad Thing? "I've noticed an interesting trend in the last year or two. Two or three years ago there was little activity in the desktop java data binding space. Now there are a large number of projects attempting to solve the issue. This reminds me of the java web framework space where there are many projects and little consolidation. I'm wondering if this is a good or bad thing." He goes on to list some of these frameworks (including JGoodies Binding) and wonders aloud about the relevance of JSR 227 to all of this.

Timothy M. O'Brien's blog entry Commons Collections w/ Generics says "Commons Collections has a ubiquitous presence in Java programming, and I haven't seen a single project in the last four years that hasn't included this library." Now a new version of this library, refactored to work with J2SE 5.0 Generics, is available as the Commons-Collections with Generics project.


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Following the OSWorkflow  
kfarnham

Call on Me Blog

Posted by kfarnham Jan 3, 2006

Rules for API designers

All of us are API consumers. Some of us are API producers. It seems obvious that when creating an API, you'll use the knowledge you've accumulated from using other API's in designing yours. So, given some well-established practices throughout the Java class libraries, this should all be straightforward, right?

Feel free to take a second and laugh at the thought of this.

Of course API design isn't easy. That's why there are remarkably bad examples throughout the Java universe, and more than a few in core Java itself.

But rather than curse the darkness -- and you can use the comments to this blog to point out some of the worst offenders if you like -- Eamonn McManus and Elliotte Rusty Harold (author of XOM and owner of the java.net projectAmateur) have offered to shine a light.

Eamonn's Artima blog entry Java API Design Guidelines summarizes a presentation by Eliotte from last month's JavaPolis and adds some pointers from McManus' own experience developing and working with API designs. "There are tons of books and articles about how to design and write good Java code, but surprisingly little about the specific topic of API design. Yet with the proliferation of new Java APIs, whether through JSRs or through Open Source projects, this is an increasingly important subject. I've been closely involved with the evolution of the JMX API for over five years and have learnt a great deal about what works and what doesn't during that time. During the talk, I had the odd experience of continually wanting to cheer as Elliotte made point after point that I hugely agreed with."

The key point to take away is that API's need to be able to evolve. Just thinking through that imposes some good design constraints: once you know your API will need to grow, and will be used in unanticipated ways, you'll think small, think expandable, and run some 0.x releases past your testers. Most importantly, you can never remove classes or method names, so just get the smallest set of absolutely correct functionality in there for your 1.0.


Also in Also in Java Today, according to the article IT Spending Moving from CYA to SOA, "a new report from Financial Insights claims that IT spending over the next few years will be driven by enterprises migrating legacy architectures to SOA, and shoring up their data -- through management and security projects. The new survey reflects a shift in priorities for enterprise IT spending away from concerns about regulatory compliance, such as Sarbanes-Oxley projects."


In Projects and Communities, Project Looking Glass, which uses modern GPU power to enhance the desktop experience, is nearing a major public debut. OpenSolaris has announced that the Project Looking Glass platform and sample desktop will be included in OpenSolaris, with a target release of November 2006.

The premiere episode of the GAME ON! Podcastfeatures Sun Chief Gaming Officer, Chris Melissinos, speaking on the topic of Java game development. He talks about Sun's involvement in the gaming industry, lists five top games on java.com, talks up noteworthy console games, and discusses the ESRB rating system.


In today's Forums,tackline has some thoughts Re: Turn Off Sorting for JTable TableModel Insert? The obvious way to make new rows appear at the end is to sort first on a hidden column. The value can be cleared at a time appropriate for the application. The technique has the major advantage that concurrent updates to the table will still work. From a usability stand point, I don't think scrolling to the bottom of a sorted table when adding a new record makes much sense. Better would be to add to a matching, headerless table outside of the scrollable area.

kfarnham

Beginnings Blog

Posted by kfarnham Jan 2, 2006

Kicking off 2006

Some people have or are taking today off as a weekend-bumped New Year's Day holiday. In the U.S., this will be our day for the traditional college football "bowl" games that we usually wake up late for after a night of revelry, but your front page is back for a new year of collaboration, community, and code.

Speaking of revelry... there's been activity throughout the site while some of you were away for the holidays. We've gotten a lot of blurbs about new projects, old projects with new releases, new event listings, forum postings, a bunch of weblogs, and more. Right now, our database is packed with items to catch up on, which we'll be rolling out as "Projects and Communities" (java.net-related) and "Also in Java Today" (off-site) blurbs all week.

"But," you say, "what about my project? What do I have to do to get on the front page?" I'm glad you rhretorically asked. Check out the "Publicize Your Project" and "Submit Content" links on the left nav for ways to get the word out about your activities. Here's a quick summary of the available links:

To get the word out, you can also send an e-mail to your community leader. java.net is a community of communities and every community has a home page with items of interest to that community, including project news, off-site items of interest, weblogs, and more.

The new year before us is teeming with possibilities. Have some fun, write some code, meet some people and make the most of 2006.


Kicking off today's Weblogs Gregg Sporar wishes you a A Happy New NetBeans Year: "There are many things that I like about my job, but if I had to pick just one favorite thing, it would be the people that I get to meet."

Konstantin I. Boudnik's blog series continues in Java. Quality. Metrics (part 5): "A introduction to a cool technology we had developed with my colleagues. It can do a really good job, predicting buggy spots in your source code."

Kirill Grouchnikov reminds us of NetBeans look and feel competition - a low-hanging iPod: "If you haven't heard already, here's your chance to win and iPod (or half-Eclipse bashing t-shirt) by sending a screenshot of NetBeans in action."


In Projects and Communities, the JAXB project has released early access 3of their 2.0 reference implementation. In Kohsuke Kawaguchi's blog about the release, he says "I expect this to be our last EA toward EA3. The next release hopefully will be the FCS (or 'first customer ship'), which means the spec is finalized and the RI passes all the TCK tests."

Sun, as one of the three partners behind java.net, is interested in hearing the java.net community's feedback on its products and developer programs. To participate, please visit the General Sun Feedback survey. As an incentive, one participant will receive a six-month subscription to Safari Online Books


In Also in Java Today: published just after java.net went on holiday break, The Java SE 6 (Mustang) Holiday Quiz from the Sun Developer Network offers a challenging collection of questions related to the contents of the the next major Java SE release. If you think youreally know what's in Mustang, and why it matters, take your best shot at this quiz and see how you do.

2005 didn't see a new version of Java SE or EE, but it was a momentous year as developers continued to grow the Java universe. This was the year that Java displaced C++ as the top language for projects on SourceForge, and the year that AJAX became a big deal for the client side. Hibernate, Spring, and Eclipse were big news this year, and even Ant proved to have some new tricks up its sleeve. ONJava: 2005 in Review looks at the developments in Java through the most popular articles published on the site in 2005.


This week's Spotlightis on FeedPod: "Don't have time to offer a podcast version of your blog? Not to worry. The FeedPod project offers "a Text-To-Speech RSS/ATOM Newsfeed reader." This means that "You can use FeedPod as a personal feed reader. [Or] you can integrate FeedPod into you Portal site and offer audio subscriptions and 'Listen Now' links. You can use FeedPod on your site to offer a PodCast of your blog." FeedPod is packaged as a pair of two WAR files that you deploy to your servlet container, and has been tested on Win32, Fedora Core 3, and Solaris 10."


In today's Forums,snakajima wants to see Pervasive Computing at JavaOne: "I think we should have a discussion about Pervasive Computing (or Ubiquitous Computing). This is slightly too generic topic for JavaOne conference, but I think it is better to have this kind of general topic, and discuss (1) what we want to achieve, and (2) what kind of roles Java can play to achieve such a vision."

Wrapping up the language comparisons in the "Beyond Java" Book Club discussion, an anonymous contributor writes, in Re: Chapter 9: The Contenders, "I have seen some big Perl apps, and one might argue that dynamic language could do well, but I think the GREAT advantage of Java is the standard platform and tools, and that is unmatchable. Changing a little bit of the subject, for ease of maintaining piece of software, I'd go for Java any time. Thank God I'm paid to think, not to type. Saving keystrokes, the same way Perl does, is not exactly the route to maintainable code."


In today's java.net News Headlines :

Registered users can submit news items for the java.net News Page using our news submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to thejava.net News RSS feed.


Current and upcoming Java Events :

Registered users can submit event listings for the java.net Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.


Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.



Kicking off 2006  

Filter Blog

By date: