Skip navigation

We've just published a new article, HTML5 Server-Push Technologies, Part 1 by Gregor Roth. This is the first installment in a two-article series. Part 1 provides the historical background behind the evolution that led to the server-push technologies that are implemented in HTML5, and goes into the details of Server-Sent Events; Part 2 will cover the new WebSockets API in detail, and provide concluding remarks.

If you're old enough to have watched the evolution of the web -- or perhaps you participted in it -- you are familiar with the growth from static pages to today's rich internet applications (RIAs). But, you may not know the details of how an interactive web was foisted onto the strict request/response structure of HTTP.

In Part 1, Gregor goes into the details of this evolution, describing the HTTP request/response mechanism, then AJAX and Comet:

While Ajax is a popular solution for dynamically pulling data requests from the server, it does nothing to help to push data to the client. Sure, a server push channel could be emulated by an AJAX polling approach as described above, but this would waste resources. Comet, also known as reverse Ajax, enhances the Ajax communication pattern by defining architecture for pushing data from the server to the client. For instance, the Comet pattern would allow pushing a 'new mail available' event from the mail server to the WebMail client immediately.

Then Gregor introduces HTML5 Server-Side Events.

HTML5 also applies the Comet communication pattern by defining Server-Sent Events (SSE), in effect standardizing Comet for all standards-compliant web browsers. The Server-Sent Events specification "defines an API for opening an HTTP connection for receiving push notifications from a server."

HTML5 offers developers a new route for developing rich internet applications, alongside Adobe Flash and Microsoft Silverlight. Gregor also compares Server-Side Events with the Bayeux and BOSH Comet protocols:

Although Server-Sent Events do have less functionality than Bayeux or BOSH, Server-Sent Events have the potential to be become the dominant protocol for use cases where a unidirectional server push channel is required only (which is the case in many instances). The Sever-Sent Events protocol is much simpler than Bayeux or BOSH. For instance, you are able to test the event stream by using telnet. No handshake protocols have to be implemented. Just send the HTTP GET request and get the event stream. Furthermore Server-Sent Events will be supported natively by all HTML5-compatible browsers

If you'd like to learn some of the details about the evolution of the web into an RIA platform, and where we're headed with HTML5, read Gregor Roth's HTML5 Server-Push Technologies, Part 1. Part 2 will be coming up within the next couple weeks.


In Java Today, Janice J. Heiss has published an interview she did with Java Champion Yakov Fain: On Enterprise Software:

Java Champion Yakov Fain is a Managing Director at Farata Systems where he's responsible for Enterprise Architecture and emerging technologies. He has authored several Java books, dozens of technical articles, and has a popular blog. He holds a BS and MS in Applied Mathematics, leads the Princeton Java Users Group, and is an Adobe Certified Flex Instructor. In addition, he hosts podcasts in English and Russian in which he explores issues of interest to IT professionals...

gnu_andrew announces IcedTea6 1.7.3 Released!:

We are pleased to announce the release of IcedTea6 1.7.3 (2010/03/31)! The IcedTea project provides a harness to build the source code from OpenJDK6 using Free Software build tools. It also includes the only Free Java plugin and Web Start implementation, and support for additional architectures over and above x86, x86_64 and SPARC via the Zero assembler port...

The Oracle Technology Network recently published Daniel Amadei's article, Joining Oracle Complex Event Processing and J2ME to React to Location and Positioning Events:

Real-time processing of data is becoming more important every day. The speed of changes in all kinds of market segments is increasing more than ever. Conversely, the time for reaction is getting shorter. This article shows how the concept of complex event processing (CEP) can help us address these challenges

Terrence Barr provides an embedded Java update in his most recent blog post, leading off with the soon-to-be-released GuruPlug. The GuruPlug offers a 1.2 GHz ARM processor with 512 MB DRAM, 512 MB Flash memory/drive, Ethernet, WiFi, 2 USB ports, Bluetooth, GPIO, and Linux 2.6. It's a little box (about 5 x 2.5 x 8 cm) that draws under 5 Watts of power (just for reference, I'm writing this on a desktop system that has a 500 Watt power supply). The base GuruPlug model costs $99. I want one!

In his post, Terrence notes:

The GuruPlug is but one in an amazing range of interesting devices: Be it the BUG, the ACME Systems FOX G20 board, the PC Engines ALIX 3D2(a very compact and cheap PC-class SBC), the Nokia N900, the Marvell plug computer (as exemplified by the GuruPlug/SheevaPlug above), the Sun SPOT, and many more.

The increase in hardware capability is also enabling the introduction of more user-friendly and capable software technologies onto these devices:

a simple executable, a C compiler, and some cobbled-together libraries just don't cut it anymore to build feature-rich embedded solutions on time. Embedded Java is a perfect match...

Terrence discusses how you can get Java onto your mini device. It's easy if it's an X86-based platform, a bit more complicated if you've got an ARM (Advanced RISC Machine) device -- still doable, though. As Terrence says:

And once you have Java running on your target device you then have all the joys of development with Java: Advanced tools (NetBeans and many others), developing and testing on the host (no more complicated cross-compilation), and easy of deployment to the target (just run the class files on the target via memory card, Bluetooh, ftp/ssh, NFS, SMB, or other methods that works best for your situation).

Nice!


In Java Today, the Continuous Blog announces Hudson 1.353 Released:

This week's release comes slightly later than usual and is mostly a clean-up of a few bugs. Due to a problem with the Kohsuke's GitHub mirror of Hudson's core, I can't mine the commits for interesting information as per usual so you'll just have to trust that Hudson 1.353 is chock full of good, wholesome bug fixes...

Terrence Barr reports on The GuruPlug and more: An Embedded Java Update:

Embedded systems are becoming ever more powerful and affordable. Check out the GuruPlug, which is scheduled for release in a couple of weeks and has amazing specs: * Linux 2.6; * 1.2 GHz ARM processor with 512 MB DRAM; * 512 MB Flash, Ethernet, WiFi, 2 x USB, Bluetooth, GPIO; * Low power consumption and small footprint; * Java and OSGi available from distributor; * Retail price: US $99 (standard version)...

Mitchell Pronschinske reports in a JavaLobby Daily Dose - Novell Keeps Unix Copyrights; Linux is Safe:

A US federal judge ruledon Tuesday that Novell owns the Unix copyrights, and not SCO. In the 7-year court battle, SCO claimed that copyrights transferred from their predecessor, the Santa Cruz Operation, to them. In the court ruling, the judge said that the copyrights never transferred to the Santa Cruz Operation in the first place. Tuesday's ruling was a key victory for IBM, who would have faced a multibillion dollar lawsuit had SCO won, and for Linux users, who could have been subject to fees if SCO had gotten the copyrights...

In the Weblogs, Sahoo talks about his EJB as OSGi Service demo at eclipsecon:

I will wrap up my experience at eclipsecon. This was my first time at eclipsecon. Folks who had been here earlier told me that this year there was a lot of topics around eclipse runtime projects – so the focus has shifted from tools to runtime. Overall I liked eclipsecon. My topic, OSGi & Java EE in GlassFish, was also of the same type. The slides of my talk are available here. The source code for the sample used to demonstrate “Modularized Enterprise Java Application” running in GlassFish is now available here. Just download, unzip and run it following the steps listed below...

Juliano Viana reviews Nested forms - what a WickeT idea!:

Have you ever got into the situation where you feel like you need to stretch the limits of HTTP form processing? Sometimes when developing complex web applications you end up with a form that has just too many features on it. This situation is particularly common when the application uses Ajax forms, as these forms often end up accumulating an enormous amount of funcionality - different actions for different buttons, events related to list choices or check box changes, partial screen updates etc. One of the applications I'm currently working on has a requirement that the user should be able to upload files as part of bigger system interactions...

Rama Pulavarthi has posted a Rant on Ant 1.7.1:

If you are using Ant 1.7.1 for developing Web Services with JAX-WS/JAXB, I suggest you to move to the latest version Ant 1.8.0. JAXB/JAX-WS rely on package level runtime annotations for lot of things. For ex: JAXB relies on the @XmlSchema annotation in package-info.java and uses it for binding Java data types to XML schema types. You might be puzzled to see that the mappings are not as expected. I wasted almost half a day trying to figure out if there was some regression in JAX-WS/JAXB as I was suspecting Ant the least. A bug in Ant 1.7.1 javac ant task, makes it not compile package-info.java. This is a serious regression...

In the Forums,shhmikey is confronting a Glassfish V3 multiple virtual servers problem: I have thirteen different IP's all listening on port :80 under Glassfish V2 - but after spending 2 days on GF V3 - I can't get multiple IP's listening on port 80 to work. Fresh Solaris Sparc install. Fresh Glassfish V3 install...

In the GlassFish WebTier forum, digitalseraphim has noted Strange behavior/Possible bug: I'm writing a simple JSF 2.0 app using Glassfish V3. I will be outputting types other than just (x)html, so I wanted to change javax.faces.DEFAULT_SUFFIX to ".jspx" instead of the default of ".xhtml" just because the contents are not always xhtml. When...

In the Metro and JAXB forum, durfff is working onListing Available Methods & Parameters from a WSDL: Hi, I'm trying to find a way to access a WSDL and generate a list of available methods and their respective parameters. Typically I've done this via the generated service classes and reflection, but now need to do this by accessing the WSDL...


Our Spotlightthis week is Window / dock icon for ribbon frame in Flamingo 5.0:

The application menu buttonin the ribbon component from Flamingo component suite is a big round button in the top left corner of the ribbon. It is not a direct replacement for the usual application menu bar, but rather a place to hold actions that (as a general rule) do not affect the visual content of the document

Dustin Marx fears that he may suffer from some mild phobias (fear of crowds and sermons -- and perhaps the fear of being phobic?) -- but, to Dustin, the relatively common fear of SQL that he observes in the software development community seems quite irrational. So he says, in his latest software development cogitation, Sqlphobia: The Irrational Fear of SQL:

The Phobia Listprovides an exhaustive list of phobias. Although it is difficult for many of us to understand or relate with many of these phobias, some are all too easy [for] me to understand. For example, I fear that I suffer at least mild cases of demophobia(fear of crowds) and homilophobia(fear of sermons). However, one fear that I see with a relatively high degree of occurrence in the software development community is the seemingly irrational (to me) fear of SQL.

Dustin hits the nail on the head, when he notes:

There have been numerous attempts at abstracting away or hiding SQL from the developer. The object-relational mapping (ORM) approach is probably the largest of these efforts in terms of person hours invested. This approach attempts to allow developers to focus on objects and their mappings to relational database structures (such as tables and columns) with the hope that the developer will never (or at least much less often) have to read, write, or maintain SQL.

The question, though, is: why? Or, perhaps, why so vehement an effort? If you're developing a database application, isn't it important to understand the nature of database tables and queries?

It's one thing to look back to user interface programming from decades ago, and say -- OK, you no longer have to draw each pixel to create your window, because now you can just send this snazzy function a set of parameters and it will do all the low-level work for you. There, you're just providing an interface to a function that performs a task that must be repeatedly performed in the exact same way (drawing pixels to create a UI window) in any modern interactive application.

With SQL, I think you're dealing with a different beast. Each query is unique. Furthermore, there are multiple paths to accomplishing the same objective. And how you do it makes a difference. Even if your query satisfies the needs of a client application, with SQL you're actually always working on the back-end, the server side, where performance matters. Where performance matters, abstraction is always a potential problem. One size does not fit all where performance is concerned. So, an abstraction that lets you set switch-like parameters on an object that "controls" your database querying poses significant performance risks in a scaled system.

But that's all my view, and, like Dustin, I don't have Sqlphobia. To me, it's just another language that's highly useful for me to know somewhat (since the bulk of my software development work in the past 15 years has been in a Data Center environment where SQL -- first Postgres, now Oracle -- has been a backbone of the processing). Furthermore, it's highly useful for me to understand at least the basics of tables, how JOINworks, etc., if I want to be able to legitimately consider myselfworthy of the title of highly-experienced software engineer / architect.

SQL is just another programming language! Though it's a very specialized one.

Getting back to the ORM SQL obfuscation tactic, Dustin points out:

Early Enterprise JavaBeans (EJB)container-managed persistence [CMP] (and especially container-managed relationships [CMR]) was a disaster by nearly all accounts. Not only was it more difficult (for most of us) to use than using SQL directly, but its (EJB 2's) EJB Query Language looked and felt suspiciously like SQL made worse by embedding it in XML.

But what about today? What about Java EE 6 and JPA? Dustin says:

Overall, I'm a fan of JPA as I hope I made clear in my article Basic JPA Best Practices. I like the ability to relatively easily tie my normal Java objects into the transaction support of the supporting application server. Also, I think its advantageous to have a standardized approach to ORM rather than using a proprietary solution such as pre-JPA Hibernate.

However:

With all the positives of JPA, I still find there are times when it either is more than I need or when the impact it has on my object design is too great to justify. Furthermore, I have found the ability to be able to read SQL invaluable in debugging problems with my code that uses JPA implementations. In other words, I still need to know and be comfortable with SQL, even when using JPA implementations.

As always, when Dustin Marx tackles a topic, he tackles it from all sides, including the four cardinal directions, and from the top (high-level overview) -- then he burrows into software engineering history and mounts an attack from underneath as well. Reading Dustin's Software Development Cogitations and Speculations is always a worthwhile venture. He does a lot of interesting, and sometimes quirky, experimentation with Java, JVMs, etc.

If your current work involves SQL, or if you have a history of phobia related to SQL, or if you just want to read some really interesting "cogitations and speculations" about "Sqlphobia" -- take a few minutes to read or at least browse Dustin Marx's Sqlphobia: The Irrational Fear of SQL. It's not thatscary. I promise! (your non-SQL-phobic editor says with aevil grin!)


In other Java Today news, Mohammad Juma has created a JAX-WS Five Minute Tutorial:

This tutorial is for people who want to run a JAX-WS example (Endpoint + Client) in just five minutes. What you need to run this example: 1. JDK 1.6; 2. Eclipse; 3. Be Excited ;) ...

Stephen Chin announces JavaFX Store and JFrog Artifactory Videos on Ubivent:

This past month we had a great combined meeting of theSilicon Valley JavaFX User Group (SvJugFx) together with the Silicon Valley Web User Group. The presenters included Richard Hyde and James Allen from Oracle on the Java Store and Yoav Landman and Fred Simon from JFrog on repository management with Artifactory...

In the Weblogs, Rama Pulavarthi has posted a Rant on Ant 1.7.1:

If you are using Ant 1.7.1 for developing Web Services with JAX-WS/JAXB, I suggest you to move to the latest version Ant 1.8.0. JAXB/JAX-WS rely on package level runtime annotations for lot of things. For ex: JAXB relies on the @XmlSchema annotation in package-info.java and uses it for binding Java data types to XML schema types. You might be puzzled to see that the mappings are not as expected. I wasted almost half a day trying to figure out if there was some regression in JAX-WS/JAXB as I was suspecting Ant the least. A bug in Ant 1.7.1 javac ant task, makes it not compile package-info.java. This is a serious regression...

Masoud Kalili provides details of the GlassFish Modularity System, How extend GlassFish CLI and Web Administration Console (Part 2: Developing Sample Modules):

Administrators are always looking for a more effective, easier to use, and less time consuming tool to use as the interface sitting between them and what they supposed to administrate and manage. GlassFish provide effective, easy to access and easy to simple to navigate in administration channels which cover all day to day tasks that administrators need to perform. But when it comes to administration, administrators usually write their own shell scripts to automate some tasks; they use CRON or other schedulers to schedule automatic tasks, and so on to achieve their own customized administration flow. By using GlassFish console, it is simply possible to use shell scripts, or CRON to further...

Cay Horstmann talks about Mercurial on OpenSolaris and GlassFish:

I am working on rewriting a set of labs for our intermediate students at SJSU. Version control is something that everyone with a CS degree is pretty much expected to know these days, so I thought of digging up an old Subversion lab from my open source programming class. But distributed version control systems such as Mercurial and Git are getting all the love these days. Some people said that it is actually easier to teach Mercurial than Subversion. This seemed unintuitive--wouldn't it be harder to deal with a bunch of repositories instead of having just one centralized one? Actually, I now see the point...

In the Forums,gopalkrishnams finds jaxws StateFul webservice not working in distributed environment: HI, i have deployed stateful webservice in cluster environmnet pointing to 2 servers. I get following exception when i try to call a method uisng endpoint class...

ranjithjavanet has a question regarding Glassfish v2 alternatedocroot - will DAS sync it?: Using Sun Glassfish Enterprise server v2.1.1 I am using "alternatedocroot" via sun-web.xml for my web application to abstract out static content from actual deploy-able code (EAR/WAR) What I have is a cluster of two server instances...

In the Java 3D forum, andimb asks about putting aCoordinate System or Object in a Canvas corner: Hi, is there a possibility to add an coordinate system or object at a corner of the canvas, e.g. lower left corner? The object should rotate but not zoom or move like all other objects visible on the Canvas. The transformation...


Our Spotlightthis week is Window / dock icon for ribbon frame in Flamingo 5.0:

The application menu buttonin the ribbon component from Flamingo component suite is a big round button in the top left corner of the ribbon. It is not a direct replacement for the usual application menu bar, but rather a place to hold actions that (as a general rule) do not affect the visual content of the document

Episodes 45 through 55 on the GlassFish Podcast Blogpresent content from December's Java EE 6 and GlassFish v3 Virtual Conference. Last week, I listened to and wrote about Linda DeMichiel's presentation on Java Persistence 2.0 (Episode 51 in the GF Podcast Blog). Clearly, there's still a lot more listening and writing for me to do!

When you download the GlassFish Virtual Conference slides (Sun Online Account registration required), you get a zip file that includes 16 PDFs of presentations that were part of the virtual conference. Alexis Moussine-Pouchkine is packaging each presentation with the MP3 audio from the conference, and wrapping it with a nice audio (and musical) introduction and closing, to form the entry on the GlassFish Podcast blog. Each episode includes a link to the supporting slides download, and links to additional reference materials related to the topic of that particular episode. It's really a very nice re-presentation of the content from the virtual conference.

Here's a brief rundown of what's in the presentation download and the corresponding GlassFish Podcast episode:

                                                                                                       
Virtual Conference TitleAuthorsGF Podcast Episode
Welcome to Java Enterprise Edition 6 The Foundation of Your EnterpriseTom Kincaid, Anil Gaur, Bill Shannon, Kevin Schmidt, Eduardo Pelegri Llopart#045
Java EE 6 OverviewRoberto Chinnici#046
GlassFish Enterprise Server v3 - Java EE 6 and BeyondAnil Gaur, Abhijit Kumar, Jerome Dochez#050
Enterprise JavaBeans EJB 3.1 TechnologyKenneth Saks#047
JAX-RS and JerseyPaul Sandoz#048
Java Servlet 3.0Rajiv Mordani#049
Java Persistence 2.0Linda DeMichiel#051
JavaServer Faces 2.0 OverviewRoger Kitain#052
Metro 2.0 - the advanced SOAP web services stack in GlassFishHarold Carr#053
Context and Dependency Injection for Java EE (CDI)Roberto Chinnici#054
OSGi in GlassFish v3Jerome Dochez#055
Dynamic Languages with GlassFish v3Vivek Pandey 
Java EE 6 ToolingLudovic Champenois 
Grizzly, CometOleksiy Stashok 
Management and Monitoring in GlassFish v3Anissa Lam, Sreenivas Munnangi, Prashanth Abbagani 
Java EE Connector Architecture 1.6 JSR 322Sivakumar Thyagarajan 

Not that I want to put pressure on Alexis -- but, at the rate he's been posting new virtual conference episodes, we'll probably see all of the remaining virtual conferences transformed into GlassFish Podcastepisodes by the end of next week.


In Java Today, Geertjan Wielenga has discovered Melody and Harmony in JFugue Music NotePad:

Thanks to the injection of the domain object into actions (an approach discussed in this blog yesterday), it is now possible to play multiple scores simultaneously in the JFugue Music NotePad (see the menu items 'Melody' and 'Harmony' on the root node in the brand new viewer component below)...

The title may sound a bit retro to some of us, but the Open Source Love Day March 2010 was actually a pretty serious technology event:

Yesterday, we held our first Open Source Love Day (OSLD) for this year. The last OSLD was at December 2009. Then, we reassigned a day in January and February each to perform our relocation to the new (and much bigger) office. But now we are back to regular duty and had the time to donate some worhttp://blogs.sun.com/alexismp/k back to the Open Source ecosystem...

Peligri has checked out More GlassFish Books - From JSF 2.0 to OSGi:

Time to do an updated list of GlassFish books. I've added 16 new entries since the March Review; some are dedicated to the operation of GlassFish, some use GlassFish in all their examples, some only in most. I'm sure there are other worthy entries; add a comment if you want to submit names to the collage; I've left out books that only use GlassFish as one of the "common containers" (GlassFish, Apache Tomcat and JBoss)...

In the Weblogs, Frans Thamura reports on Integrated Curriculums to Transform Indonesia, from Highschool to Undergraduate program of Software Engineering:

In 2001, i create a small prototype of application platfrom called cimande, and now in 2010, the project become one of the case study of a lot of people, and the movement getting strong. A lot of companies try to use and also create a smiliar project like we did here. Strange, need 9 years to make people in this country understand the power of this. But none of us here, create a model like we did, Open Sourcing the code to the public, our first release around April 2001, and we keep contributing, and we have more than 30 projects using cimande, which cimande is part of the BlueOxygen project umbrella...

Malcolm Davis provides a way to answer What version of Java are you running?:

There can be issues promoting Java applications over the Internet. There are various versions of Windows and Windows Server that run pre-6 Java, or even Microsoft Java Virtual Machine. Verifying the version of Java on someone machine is a good way of eliminating a potential problem. Michael Horowitz sponsors the embedded applet approach at http://www.javatester.org/version.htmlHowever, there are several issues with the embedded applet approach...

Jan Haderka says Let's keep those cache entries for little bit longer for GlassFish:

Have you got magnolia-4.3? Setup multiple sites? All right, you are all done. The only thing left is to observe the load on the server and how many requests you can serve. You might have noticed that after activating the content, load on the public is bit higher even though there is no increase in traffic. Why? Simply because after activating the piece of content, cache on the public instance have been flushed. Well, so far this is actually nothing else but what you want...

In the Forums,garfeildpb asks Why is fscontext.jar used in Java Web Start?: Dear Tim and Everybody, There is a question about Java Web Start(JWS below) in GlassFish V2.1. When reading the GlassFish's source (*) ,I found that C:\glassfish\imq\lib\fscontext.jar is used in JWS module.As I...

d039113 has questions regarding Dynamic keystore in Metro 2.0: I was following the posts [1],[2] to enable dynamic keystores for signing keys. In theMETA-INF/<config xml=""> file I now have an entry: <config> ...

In the Java WS & XML Community forum, nanil21asks how to maintain session information in swings: Hi, I am using swings as front end. I am using HttpURLConnection class to get connected to a url which has login page. Once I send the request using POST method with login credentials, I am able to see the response and it workds fine. Now if I send...


Our Spotlightthis week is Window / dock icon for ribbon frame in Flamingo 5.0:

The application menu buttonin the ribbon component from Flamingo component suite is a big round button in the top left corner of the ribbon. It is not a direct replacement for the usual application menu bar, but rather a place to hold actions that (as a general rule) do not affect the visual content of the document – such as saving, printing, sharing etc. Prior to version 5.0, the ribbon frame...

This week's java.net Poll asks What do you like most about the new GlassFish Roadmap?. The poll will run until Friday.


Our latest Feature Article is Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis; in this article, you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort. We're also still featuring Getting Started with Java and SQLite on Blackberry OS 5.0 by Java Champion Bruce Hopkins -- learn how to create applications that utilize SQLite on Blackberry OS 5.0; and Dibyendu Roy's Rethinking Multi-Threaded Design Principles.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

 

This past week's java.net poll presented a list of statements related to Java EE, and asked people to select which statement they agree with most. The results suggest that many developers consider Java EE complicated, but Java EE 6 is considered a major improvement in terms of ease of use. A total of 379 votes were cast. The exact question and results were:

Which Java EE statement do you agree with most?

  • 21% (79 votes) - Java EE is too complicated
  • 10% (37 votes) - Java EE's complexity reflects the problems it solves
  • 15% (55 votes) - Java EE's modularity makes it as simple or complex as your app requires
  • 39% (146 votes) - Java EE 6 is much easier to use than previous versions
  • 3% (10 votes) - I disagree with all of those statements!
  • 11% (43 votes) - I don't know
  • 2% (9 votes) - Other

The results of the non-scientific survey suggest that the view of Java EE as being overly complex remains for many people. However, even more people consider Java EE a significant improvement compared with earlier versions of Java EE with respect to ease of use. For a technology as mature as Java EE, to make additions and enhancements to the platform, while also making the technology easier to use, is a remarkable success story!

While 21% consider Java EE too complicated, a total of 25% agree that Java EE is complex, but appropriately so: 10% consider the complexity to reflect the fact that Java EE addresses difficult problems; 15% believe Java EE can be simple or complex, as required for the task at hand.

There was one comment posted, cowwoc's "Think outside the box":

While it is true that Java EE 6 is a lot nicer than previous versions, I am still left with the feeling that something is fundamentally wrong about the problems we are trying to solve. It is no coincidence that many of the "core" APIs feel right and things tend to get more complex as you drift away from the center. The ORM section of Java EE reminds me of trying to fit a square through a round hole...

New poll: GlassFish Roadmap

The new poll is related to the recent publication of the new GlassFish Roadmap. Alexis Moussine-Pouchkine summarizes the roadmap in his latest blog post, and also provides a link to the slides.

The new java.net poll specifically asks What do you like most about the new GlassFish Roadmap?. The poll will run for the next week.


In Java Today, Jeff Friesen has posted a new JavaFX article, Portable Painter's Canvas:

JavaFX's node-based infrastructure is problematic for complex scenes such as fireworks or fractals. These scenes require the creation of many nodes and (possibly)javafx.scene.shape.Path objects (such asjavafx.scene.shape.LineTo), which can occupy a lot of memory. Last June, I posted my Painter's Canvas article to present an alternative that reduces storage overhead. That article introduced the concepts of painter and canvas to create...

James Weaver pointed me to the Share with your fellow Geeks about your current JavaFX activities thread on Oracle Mix in the JavaFX geeks and newbiesgroup (Oracle Mix user account required). Thus far, 20 people have responded to Jim's suggestion:

I think that it will be helpful for the JavaFX community to understand what JavaFX-related activities each other is working on, including successes that we're having and challenges that we're facing. Doing this will help us discover ways that we can help each other, collaborate, learn from each other's mistakes, etc...

Alexis Moussine-Pouchkine announces GlassFish Roadmap slides posted:

There's been some FUD around GlassFish since the Oracle acquisition closed in January (and in fact even before) and it was hard for the team to dispel it until now. The GlassFish Roadmap Community Update slides used during today's live presentation are now available. In a nutshell, the v3.1 release will offer centralized admin, clustering and Coherencesupport...

In the Weblogs, Kumar Jayanti writes about Custom Authentication of Client Certificate in Mutual SSL Scenarios on GlassFish:

The GlassFish Certificate Realm in V2.X and V3.0 releases is somewhat limiting. Many users expressed the need to able to do some custom authentication based on the client-certificate (or extensions within) in a Mutual-SSL scenario. And subsequently do custom group assignment's which ultimately affect the authorization results. With V2.X/V3.0 the only two things that were possible are...

Previously, Kumar posted GlassFish V3 Embedded Mode : How to run applications that use Security:

Embedded GlassFish v3 is a delivery vehicle of GFv3 so that applications and tools can use GFv3 just as a library, inside their JVM.  More details on this can be found  on the separate project page that has been created for  Embedded GlassFish. One would thus expect that even secure applications which use security annotations on an EJB or security-constraints in a web application to work on the Embedded Server...

Scott Oaks takes A first look at V3 Performance for GlassFish:

For most of the year, I've been working on session replication code for Sailfin. When I came back to work with the Glassfish performance team, I found that we had some pretty aggressive goals around performance, particularly considering that Glassfish V3 had a completely new architecture, was a major rewrite of major sections of code, and implements the new Java EE 6 specification. Glassfish V3 in those terms is essentially a .0 release, and I was convinced we'd see major performance regressions from the excellent performance we achieved with Glassfish V2. Color me surprised; in the end, we met or exceeded all of our goals for V3 performance...

In the Forums, Wei Xiong has a question in the Metro and JAXB forum on usage about HandlerTubeFactory: hi, all experts who know how to use HandlerTubeFactory? I think there must be a config file somewhere to HandlerTubeFactory to load handler. is it right? any sample code? ...

mmckenna asks about the Best Way to Generate RI Compatible MPEG-2 Transport Streams: Hello, Does anyone have advice or suggestions on the best way to create compliant MPEG-2 transport streams for use in the OCAP RI? I haven't had much success using either FFMPEG or tsmuxer. Thanks! Matt

sveinni is getting an InstantiationException in WS client for abstract complexType with jax-ws 2: Short version: I need to emulate the effect of the @XmlSeeAlso annotation in a jax-ws 2.0 client application. What are my options? Long version: I'm developing a standalone web service client, using JDK 1.6.0_18 in the...


Our Spotlightthis week is GlassFish Podcast Episode #051 - Java Persistence 2.0 (JPA) by Linda DeMichiel:

This GlassFish Podcast episode includes Supporting slides along with a downloadable MP3. Suggested additional reference materials areJava Persistence 2.0 (JSR 317), the Java EE 6 Tutorial, and the GlassFish v3documentation.

This week's java.net Poll asks What do you like most about the new GlassFish Roadmap?. The poll will run for the next week.


Our latest Feature Article is Getting Started with Java and SQLite on Blackberry OS 5.0 by Java Champion Bruce Hopkins -- learn how to create applications that utilize SQLite on Blackberry OS 5.0. We're also featuring Dibyendu Roy's Rethinking Multi-Threaded Design Principles; in the emerging multicore/multiprocessor world, multi-threaded programming is critical, in my view. And in Has JDBC Kept up with Enterprise Requirements?, Jesse Davis invites us to look beyond Type 4 architecture to address the latest requirements of the enterprise Java ecosystem.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

In my 30+ years in the software engineering industry, I've made most of my money developing software that is used by scientists, and also engineers who build instruments that have some sort of utility for scientific research. So, I was quite interested when the owner of the UAMathproject contacted me, filling me in on some of the capabilities of this interesting java.net open source project.

The full title of the UAMath project is "Universally Applicable Mathematics Calculator Suite"; a broader description is:

UAMath is a Set of Calculators for the New Force Material Equivalency and The Compression Decompression Model of the Universe. Java developments imply an active role in information restructuring. UAMath's new physical model suggests that matter can be created.

Now, even though I graduated with a Bachelor's Degree in Physics (and in English) from a pretty good New England liberal arts college (Colby College), and even though my interest in Physics has led me to keep somewhat abreast of theoretical adventures like String theory, and has led me to often think (in my limited free time) about the significance of Stephen Hawking's argument that black holes do not destroy everything that falls into them(quite the reverse, in fact, if Hawking is right!) -- despite all of this, I actually don't consider myself an expert in modern physics (umm, does that surprise you?) -- so I cannot have an enlightened opinion on the UAMath project's model that suggests that matter can be created. I'm sure, though, that like me the project owner has found Hawking's black hole thinking quite relevant.

But getting back to the basics of the project, the Universally Applicable Mathematics Calculator Suite includes a "Circumference Diameter Calculator and AMU GEV conversion, UAMath is a Set of Calculators for the New Force Material Equivalency and Compression Decompression Model of the Universe." The project provides a binary executable that runs on all operating systems (that support Java, of course); or, you can download the NetBeans source code.

The UAMath project features include:

  • AMU GEV Conversion Calc
  • Circumference Diameter Calc
  • Compression Decompression Ratio Calc
  • Force Constituency List Asc.
  • Force Constituency List Desc.
  • Force Material Equivalency Calc
  • Material Force Equivalency Calc
  • Shape Degree Calc
  • Subatomic Particles Calc
  • Sub-SubAtomic Particles Calc
  • NotePad ClipBoard Memory Application
  • Relativity Calculator
  • Physics Math Help Applet

UAMath is something I'd like to play with at some point. Maybe this weekend?


In other Java Today stories, Arun Gupta shows and tells what happened onDay 1 - Tech Days 2010, Hyderabad:

Ravichandra Kulur and band kick started the Tech Days, Hyderabad 2010 with flute, guitar, keyboard and drums playingCarnatic music. Ravi, a bachelor in Electrical Engineering, while nurturing his classical flute playing skills decided to take up music professionally from 1999...

Kirill Grouchnikov continues his presentation and analysis of user interface techniques in Design, uninterrupted #5:

Today's post highlights the vibrant design of 84 Colors, the personal showcase of Cristiana Bardeanu. It has a strong nature theme that starts with desaturated earthen browns with slight background textures, continues with contained areas of desaturated season colors (red, orange, yellow, green) and is further reinforced by well-placed decorational elements of leaves and animals. An unintrusive flash animation of leaves and squirrel completes the picture and adds final polishing touches...

In the Weblogs, I wrote a small notification stating that No Formal Arrangement/Agreement Exists between java.net and Sonatype:

You may have heard about an announcement about a formal arrangement between java.net and Sonatype. Unfortunately, this announcement is premature at best. While Oracle has talked with Sonatype in the past few weeks, there is no contract in place at the moment. We are committed to providing better support for Maven in the future, but we are exploring several options. As soon as we have made a final decision, we will make a formal announcement on Java.net.

Manfred Riem is seeking help with Using JSF 2.x on Jonas 5.x:

I have been trying to get JSF 2.0 to work on Jonas 5.x, but I haven't succeeded so far. If any of you know how to get it to work I would like to know so I can update this short article.

John Ferguson Smart is Announcing a new open source book in the making: "Continuous Integration with Hudson":

Continuous Integration is a cornerstone of modern software development best practices. Hudson, an Open Source Continuous Integration tool, is by far the most popular Continuous Integration tool on the market, and for good reason! It's intuitive user interface and powerful features make setting up a Continuous Integration service a real breeze. I am pleased to announce that a new book on Hudson is currently in the making...

In the Forums,mmc2 follows up on his question Re: font.substringWidth() to find the length of a string in pixels: Thank you very much for your help. I feel that I have some competence in JME but I know that there are some gaps. Could you please point me to some documentation that would explain the issues here...

In the GlassFish forum, mfortin finds slf4j not working: I'm using slf4j w/ log4j but I can't get it log to my log file. In one setup we have it logs to standard out (server.log) but in another config, it doesn't log at all. I

I wasn't able to attend the March 19 Oracle Technology Network TechCast (Java EE 6 Roundup with Roberto Chinnici) when it happened -- but it's now online, so I watched it this morning. The brief summary for the TechCast is:

One of the key engineers in the Java EE 6 effort explains the latest developments about profiles, annotations, APIs, extensibility, and pruning - as well as how the JEE 6 focus on flexibility, extensibility, and ease of use manifests in GlassFish v3.

Profiles were the first topic of discussion. The advantage of profiles is that the developer can select a specific set of packages that are suitable for the application that's being developed. In the past, there was simply Java EE, in its entirety, and if you needed anything extra you had to bring in those packages, creating what could become ultimately a dependency nightmare for larger applications that are worked on by multiple developers.

Roberto talked specifically about the Java EE 6 Web Profile. This includes rules that define how different components should work together, for example, servlets and transactions.

Roberto also noted that the profiles capability is a general capability, that facilitates the configuration of new profiles by developers. Each profile will have its own set of rules and its own configuration with respect to the tools and components that are included in the profile.

The discussion moved onto annotations, which are extended in Java EE 6 to web containers. Annotations also aid in removing the need for creating web.xml descriptors. Additional topics of discussion include dependency injection; extensibility; the pruning process and proposed technologies that may be declared optional in the future; GlassFish.

Go to Java EE 6 Roundup with Roberto Chinnici to view the TechCast.


In other Java Today news, Peligri asks Which Way From Here? GlassFish RoadMap:

Do as Aliceand ask one of our Cheshire cats about the roadmap for the open source GlassFish Server under the new Oracle ownership. The first opportunity is Tuesday morning, at 9am PT, when Steve Harris will provide a short overview during his EclipseCon keynote. EclipseCon also has other opportunities...

Toni Epple discovers More (powerful) Code Templates in 6.9:

In NetBeans there are some useful Code Templates, like "sout" which, when you type it in the editor and hit "Tab" will be expanded to "System.out.println();". But you

Early in my software engineering career, I had several consulting positions working for fairly large companies where much of the work involved writing code to generate structured reports, or modifying existing software to customize reports that came with software the company had purchased or developed on their own. For large companies especially, back then (in the early 1980s), reports were a critical means for gaining insight into what was happening in the company with respect to orders, production, etc. Both overview looks and detailed views were needed.

While I did less of that kind of work as time went on (switching to more purely scientific development), I did enough of it to see the evolution that brought more formal report generation tools into the market. These permitted generation of customized reports with much less effort from a software engineering team, sometimes enabling business analysts develop their own reports without intervention from developers.

Still, data changes. And, the amount of data available to companies has enormously expanded. In a sense, this means that reporting tools are always playing catch up, since the more and varied types of data that is available to business managers, the more the reporting tools from the past become inadequate to the task.

In our latest java.net article, author Malcolm Davisaddresses the problem of reporting from Swing. Malcolm's article,Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, demonstrates a highly effective Swing report generation technique that "provides 90% of the solution with 10% of the effort." As Malcolm says, the reporting problems I was aware of from my own past experience still exist today, in Swing:

Most classical report writers don't fit well in Swing. Reporting solutions can be adapted to Swing, but the adaptation is time consuming to implement, and often provides a less than desirable solution.

Whereas the report generation work I did typically involved going deep into large code bases, today software components are available that do a lot of the "heavy lifting" of interfacing with data stores and exposing the data in a format suitable for report generation. JIDE's Aggregate and Pivot tables are an example. In Malcolm's article, he shows how these components can be applied to generate a reporting solution where the data views are highly customizable by the end user.

http://download.java.net/general/jn_images/011/revised_swing_report.png

Malcolm provides the design for his reporting tool and walks through the construction and capabilities of a demo app that illustrates the views that are available using the Aggregate and Pivot table components, including the ability to:

  • display or hide columns
  • group data
  • generate subtotals and grand totals
  • add formulas
  • export to Excel
  • save and restore user layout changes
  • switch between detail and summary views

http://download.java.net/general/jn_images/011/swing-demo-grouped.png

While a lot of power is provided, Malcolm notes that "JIDE is no panacea for reporting." Malcolm's method provides a quick way to get a flexible grid view of a data set. But if your users need more complex, two-pass, aggregated information (for example, running totals, or balances), then your needs are beyond what the simple solution can provide. Hence, Malcolm's statement that his JTable reporting alternative "provides 90% of the solution." The key is that it does this "with 10% of the effort" in those cases where a single-pass, highly-flexible grid view is sufficient.

Read Flexible Swing Reporting Using JIDE Aggregate and Pivot Tablesfor all the details.


In Java Today, Adam Bien writes that the Future of Enterprise Java ... Is Clear (Java EE with/without Spring and Vice Versa):

Java EE 6 and Spring 3 became very similar - at least the resulting architecture and even design will differ only in details(see also Juergen Hoeller comment). I don't expect differences in development lifecycle either - e.g. Glassfish deployment (changing a JPA entity or a Session Bean) takes only a few hundred milliseconds - but you could achieve the same easily with Spring as well (there is no reason, why not)...

The Hudson team announced Hudson 1.352 Released:

After an exciting week that saw the rushed release ofHudson 1.351 on Monday following a fairly serious regression, Hudson 1.352 was released mid-Friday with a good mix bug fixes and enhancements. Bundled with this release was another localizations drop including translations for ca, es, fi, fr, hi_IN, it, nl, ru, and sv_SE locales. In addition to the nice fancy new community contributed translations, which you can help with by installing theTranslation Assistance plugin, the 1.352 release includes the subtle enhancement of hyperlinking URLs in the console output...

At EclipseCon 2010, Sonatype announced Maven Studio for Eclipse:

Sonatype, caretaker of the Maven project and leading provider of enterprise software development infrastructure, today announced Sonatype Maven Studio for Eclipse. The Studio is the only Eclipse Integrated Development Environment specifically optimized for Maven, the de facto standard for Java project and build management used by more than 3 million Java developers worldwide. The Studio accelerates developer productivity through a range of innovations including one-click onboarding...

In the Weblogs, Fabrizio Giudici notes that Oracle officially asked Sonatype to back Java.Net:

About one month ago I was reviewing the Sonatype Free Maven Repository Hosting for FLOSS projects. I was pretty positive about that, being my conclusion: So, if I were Oracle, I wouldn't spend time and efforts to create specific Maven support at Kenai (that will be the new Java.Net) - using Sonatype's facilities seems to me the best way to rationalize resources across the Java Community. A few days later, Sonatype announced a plan to provide explicitly hosting for Java.Net projects - and now Mitchell Pronschinske just reported that Oracle is officially backing the plan...

Sahoo talks about GlassFish at enterprise OSGi face2face event - Meeting with OSGi Experts:

Although I had interacted with a number of active members of OSGi [1] expert group, last week I had the opportunity to meet some of these experts at an OSGi Enterprise Expert Group face2face event held at LinkedIn's Mountain View office. This is also the first time I met Richard S. Hall, the Felix guy (don't confuse with a very active Felix [2] committer by name Felix Meschberger). Richard has been involved in modularisation efforts for last decade or so. GlassFish team owes him and the Felix community a lot. Although Richard later on became part of Sun GlassFish team, we continue to engage with Felix community in the open forum...

Jan Haderka asks Do you execute ops in bulks or one by one?:

Last bunch of the entries have been all about the code. Today let's try something different. Partly because at the time of writing I'm just 34 thousand feet above Atlantic and really don't feel like coding anything, but partly also because i have been thinking about the problem I'm going to describe for while already. I'm sure most of you have seen similar issue in the past as well or are fighting one such right now. So please don't be put out by the fact I describe it using Magnolia as an example because it exists in multiple other apps too...

In the Forums,daggerredline has questions regarding Metro 1.5 client side inheritance: It appears that subtyping is not being recognized by my Metro 1.5 client, which was working fine with the JAX-WS 2.1 RI. Here's the situation: I have a super class ClassA, and subclasses ClassB and ClassC. I have a web service...

In the LWUIT forum, skalabic asks Anybody else has problems with smooth scrolling on the BlackBerry Storm?: Hello, During vertical scroll of the form (that is using BoxLayout on Y-axis) on BlackBerry Storm (touch screen device), it seem to work very strange and jump from one position to another randomly, definitely not looking 'smooth'...

In the SwingLabs forum, stefanopilla needs to Draw Nodes and Links on JxMapViewer: Hi everybody, last year I've been a Google Summer of Code Student and I've partecipated for the realization of a mapping software that have the goal to map all nodes of a wireless mesh network. I've read all tutorial written by Joshua on...


Our Spotlightthis week is GlassFish Podcast Episode #051 - Java Persistence 2.0 (JPA) by Linda DeMichiel:

This GlassFish Podcast episode includes Supporting slides along with a downloadable MP3. Suggested additional reference materials areJava Persistence 2.0 (JSR 317), the Java EE 6 Tutorial, and the GlassFish v3documentation.

This week's java.net Poll lists several Java EE related statements, and asks Which Java EE statement do you agree with most? The poll will close on Friday.


Our latest Feature Article is Getting Started with Java and SQLite on Blackberry OS 5.0 by Java Champion Bruce Hopkins -- learn how to create applications that utilize SQLite on Blackberry OS 5.0. We're also featuring Dibyendu Roy's Rethinking Multi-Threaded Design Principles; in the emerging multicore/multiprocessor world, multi-threaded programming is critical, in my view. And in Has JDBC Kept up with Enterprise Requirements?, Jesse Davis invites us to look beyond Type 4 architecture to address the latest requirements of the enterprise Java ecosystem.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

This week's java.net Spotlight is GlassFish Podcast Episode #051 - Java Persistence 2.0 (JPA) by Linda DeMichiel. You'll probably want to download the GlassFish Virtual Conference Slides (Sun Online Account registration is required) and open up Session7Java_Persistence_2_0.pdf -- these are the slides Linda DeMichiel presented in the GlassFish Virtual Conference, which took place on December 15, 2009. The GlassFish Podcast Episode 51 audio follows this set of slides. My guess is that Linda's part in the podcast was actually recorded at the GlassFish Virtual Conference.

Linda begins with an historical presentation of the evolution of Java persistence, starting with its origins within EJB 3.0, the emergence of JPA 1.0, and now Java Persistence 2.0 (JSR 317). Something I didn't know previously: the reference implementation for JPA 2.0 isEclipseLink, the Eclipse Persistence Services Project. EclipseLink is integrated into GlassFish v3.

Linda presents and briefly discusses several examples, includingCollections, Embeddables,Maps, and automatic orphan deletion; then covers enhancements to the Java Persistence Query Language (with examples). Linda says the Criteria API is probably the largest single enhancement in JPA 2.0, and she spends time going over some of the key features of the API, for exampleCriteriaBuilder and CriteriaQuery. After covering pessimistic locking, locking APIs, and validation, Linda wraps up with a summary of new features in JPA 2.0, and a list of resources.

The 34-slide presentation and 26-minute podcast go into JPA 2.0, the reasoning behind its design, and specific changes and enhancements that are in JPA 2.0, in quite a lot of detail. So, if you've been wondering about JPA 2.0, GlassFish Podcast Episode #051 - Java Persistence 2.0 (JPA) by Linda DeMichieland the associated GlassFish Virtual Conference Slides(Session7Java_Persistence_2_0.pdf) provide a great introduction.


In Java Today, the sip-communicatorproject has been accepted for Google Summer of Code 2010:

Google have just published the list of organizations accepted for participation in Summer of Code 2010 and … SIP Communicator is among the lucky ones! :) Looks like we’ll once again be having a very exciting summer! If you’d like to join us and work on a SIP Communicator project (rather than working in the local gas station ;) ), have a look at our project ideas. Among the many projects there are also a couple that we will be running in collaboration with the Kamailio (OpenSER) and SEMS open source projects...

Arun Gupta presents his Spark IT 2010 Trip Report:

Spark IT 2010 - the inaugural conference by CIOL and PCQuest (@pcquest) wrapped up earlier today. With 1000+ attendees, 3 session tracks, and 1 hands-on lab running simultaneously, there was a lot for the attendees to consume....

Geertjan Wielenga introduces NetBeans Platform Development in JavaFX!:

The NetBeans team is busy enabling NetBeans Platform developers to integrate JavaFX components into their applications. Since there is no official way of accessing JavaFX from Swing, the NetBeans team will provide open-sourced API equivalents of JavaFX components. Developers will be able to include the Open API JavaFX library in their NetBeans Platform applications. Currently, this is what the API looks like...

In the Weblogs, Kohsuke Kawaguchi shows us scenes from Hudson Hackathon Day 1:

Hudson Hackathon Day 1 is over, and I'm just back to the office. Total of 9 people came and we had a great time talking about infrastructure issues, possible enhancements, design dicussions, exchanging tips and plugins that they've developed, and otherwise building personal relationships. It was a beautiful day outside, and fortunately the meeting room had a lot of Sun lights to create a warm atmosphere....

Ed Burns outlines the New process for subscribing/unsubscribing to jsr-314-open@jcp.org:

My last blog entry about JSR-314-OPEN@JCP.ORG was over a year ago. This list is the official Expert Group (EG) mailing list on which the development of the JSR-314 specification (JSF 2.0) is discussed. The information on how to subscribe/unsubscribe to this list changed in June 2010, but I haven't updated any existing information or blogged any new information about it. This is the overdue blog entry! The new way to subscribe/unsubscribe to JSR-314-OPEN@JCP.ORG is to send mail to <list-request@jcp.org>. To subscribe to the list in read-only mode make the subject of the email be "subscribe jsr-314-open"...

Mark Hadley describes Declarative HTTP Link Headers:

I've extended the declarative hyperlinking module to support the HTTP Link header. It works similarly to the @Link annotation I described earlier except you annotate the response entity class with @LinkHeader (or @LinkHeaders if you need more than one Link header) instead of annotating response entity fields with @Link. Here's a complete example that shows both annotations in action...

In the Forums,tcolakov asks How to make squawk + spolibs work together: Hi, I've this: -I have x86-64 wiht x86 libs, java 1.5 -I have working squawk-native environment -I have SunSpot SDK installed and working And I want: -I want to take spotlibs and transducer libs and put them...

In the GlassFish forum, healeyb finds that JSF 2.02-10 @SessionScoped annotation doesn't work: I'm using JSF from the Glassfish v3 distribution and found that I had a session scoped bean that was acting like a request scoped bean. When I replaced the @ManagedBean @SessionScoped annotations with a<managed> entry in the faces-config file...</managed>

In the LWUIT forum, scutbird asks how to get the content(strings) of the selected item in the tree?: how to get the content(strings) of the selected item in the tree? the predefined member function getSeclectedItem can not do the required work!


Our Spotlightthis week is GlassFish Podcast Episode #051 - Java Persistence 2.0 (JPA) by Linda DeMichiel:

This GlassFish Podcast episode includes Supporting slides along with a downloadable MP3. Suggested additional reference materials areJava Persistence 2.0 (JSR 317), the Java EE 6 Tutorial, and the GlassFish v3documentation.

This week's java.net Poll lists several Java EE related statements, and asks Which Java EE statement do you agree with most? The poll will close on Friday.


Our latest Feature Article is Getting Started with Java and SQLite on Blackberry OS 5.0 by Java Champion Bruce Hopkins -- learn how to create applications that utilize SQLite on Blackberry OS 5.0. We're also featuring Dibyendu Roy's Rethinking Multi-Threaded Design Principles; in the emerging multicore/multiprocessor world, multi-threaded programming is critical, in my view. And in Has JDBC Kept up with Enterprise Requirements?, Jesse Davis invites us to look beyond Type 4 architecture to address the latest requirements of the enterprise Java ecosystem.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

The results of this past week's java.net poll suggest that the global economic recovery has a long way to go before most software engineers will feel like the job market has returned to normal -- but, maybe we're past the bottom, or at least at the bottom (things won't get any worse?). A total of 295 votes were cast in the poll. Here's the exact question and the results:

Is the software engineering job market improving?

  • 19% (56 votes) - Yes, there's plenty of work available now
  • 27% (79 votes) - It's not too bad now, I'll get by
  • 21% (62 votes) - I'm still waiting for the promised "recovery"
  • 6% (18 votes) - The situation continues to worsen
  • 25% (75 votes) - I don't know
  • 2% (5 votes) - Other

For about a fifth of developers, the global economic crisis never really had much effect on their employment opportunities -- work has remained plentiful. This was also reflected in our 2010 outlook poll, where 22% of the voters selected "2009 was great for me; 2010 will be great too"; and in our mid-2009 Java technologies employment market poll, where 20% of voters said the employment market was "excellent, plenty of opportunities."

Somewhere, in the past few months, I read that in the Great Depression of the 1930s, for those who had a job, times were actually pretty good. This article was talking specifically about the United States. However, at several points in the 1930s only 75% of U.S. people who wanted to work had a job.

Right now, a year and a half after the global economic near-meltdown, a lot of people aren't in a comfortable situation with respect to jobs. In our current poll, 21% are still waiting for the "recovery" and 6% find the situation continuing to worsen.

Another not too encouraging set of data points: in last June's poll, 47% said the Java technologies employment market was "stable, I have enough work"; but in the current poll, only 27% said the software engineering market is "not too bad now, I'll get by."

Of course, these are not scientific polls, and the questions and response options were not identical. Still, my assessment is that these results offer a pretty gloomy view.

How about the 25% who selected "I don't know" in this week's poll? We've had the worst global economic downturn since the 1930s, and 25% of people don't know if the software engineering market is improving? Doesn't that suggest that these people think we may well be right at the bottom? They didn't select "the situation continues to worsen" but they don't know if the job market is improving. That means, I think, that times are still bad for many of these people. Possibly, of course, some people who have plenty of work selected "I don't know" -- but my guess is that the majority who selected this do not see bright horizons at present.

Are economic times really bad now? I've made most of my lifetime income developing software that analyzes data, so I tend to rely on plots to make many of my judgments on what's happening and how things are changing over time. Right now, there are a lot ofscary graphs out there! See, for example, Mike Shedlock's I'm Sure Glad The Recession Ended.

If you want to get even more scared, visit sites like ZeroHedge and Reggie Middleton's BoomBustBlog.

Mind you, people have been predicting the collapse of civilization for as long as I can remember. What's scary now, though, is that such talk is backed up by graphs and tables produced and interpreted by very intelligent people.

So, we must all be as productive as we possibly can be! How else can we help lift the global economy out of its slump?

New poll: Java EE

Which leads me to the new java.net poll, which is about Java EE, something that seems to be facilitating quite high levels of productivity today. Many who attended James Gosling's keynote at TheServerSide Java Symposium this week were very enthusiastic watching the Java EE 6 demos -- see my collation of tweets from James's keynote to see what I mean.

Then there's Lincoln Baxter's Why doesn

We've just published a new article by Java Champion Bruce Hopkins, Getting Started with Java and SQLite on Blackberry OS 5.0. I've long thought about how "computers" are "disappearing" into devices -- just as 100 years ago, that great new technology, the motor, also began to "disappear" into devices that were powered by motors. The general public doesn't consider a smart phone (or even a "dumb" one) a computer, but of course all mobile phones are computers. We developers know that. And where there's a computer, why not a database?

In his article, Bruce demonstrates how to create and manage anSQLite database on a Blackberry phone running Blackberry OS 5.0. Now, in considering why I call mobile phones computers, you have to remember that I once paid $3500 for a Tandy 1000 HD desktop that came with a whopping 256 Kbytes of memory and a 10 Mbyte hard drive(hence, the "HD"), plus two (yes, you heard that right) 5 1/4 inch floppy drives, a Centronics printer port, and also an RS-232 serial port (or maybe two). That was a great machine, especially after I purchased the 384 KByte memory card that brought the total memory up to the MS-DOS 640 KByte limit!

http://techrepublic.com.com/i/tr/tpg/tandy_1000.jpg

No, seriously, that was a great machine! It lasted usefully for many, many years! My son played his first computer games on that machine. I developed some pretty intense mathematical modeling software (using Hewlett-Packard's Rocky Mountain BASIC) on that machine. It was a cool machine, incredibly durable! Thank you, Radio Shack.

Ummm... but... today? Yeah (getting back to present-moment reality), today, give me a Blackberry phone running Blackberry OS 5.0. Know what? Blackberrys that can run OS 5.0 don't cost anywhere near $3500! Does anyone want to suggest to me that we haven't made unforethinkable progress with computing and devices and their pricing in the past few decades?

Still... if you're accustomed to working in a data center running an Oracle (my situation), or MySQL, or SQL Server, or PostgreSQL, or whatever database, on its own server, accessible from all attached clients via a wide variety of means... don't expect to find that when you run SQLite on a Blackberry OS 5.0 phone. You are in a different world, with respect to hardware resources.

For example, want to use JDBC? Sorry. Still, as Bruce says:

If you

The last week of winter in the northern hemisphere features three significant Java-related conferences: the Scandinavian Developer Conference(SDC) takes place on Tuesday and Wednesday in Goteborg, Sweden; theJava Posse Roundup runs all week, in Crested Butte, Colorado; and TheServerSide Java Symposium (TSSJS), in Las Vegas, Nevada, starts today and runs through Friday.

James Gosling is be giving the conference opening keynote address at TheServerSide Java Symposium at 8:15 AM Pacific (U.S.) Daylight Time -- about half an hour from now, as I write this. The title of James's address is Java Today and Tomorrow:

This is the first opportunity you

Sometimes there's just too much interesting news for me to be able to select just one story to write about. Too many items seem worthy of at least some attention, worthy of pointing out, before they slip away beneath the next day's headlines. Monday was that kind of day. In addition to the stories we're featuring in Tuesday's Java Today, there was a lot of other stuff that attracted my attention as the day flew past.

For example, mid-afternoon my time (Eastern U.S.), the announcement that the JavaOne Call for Papers deadline has been extended arrived in my inbox, with a request that I help spread the word. The suggested message:

Folks,

Just in case daylight savings time got the best of you this weekend, we have extended the JavaOne Call for Papers by 48 hours. If you have not yet submitted a topic or have additional ideas, you have until 11:59pm Pacific Time on Tuesday, March 16th to get your abstracts in. Keep the submissions coming—this is looking to be the best JavaOne ever!

Click hereto submit.

OK, well... I don't know if any countries other than the United States switched to Daylight Savings Time over this weekend -- but I guess that's as good a reason as any to give for extending the CfP deadline by two days!

A while later, on Twitter, @jfarcand retweeted @alexismp's tweet:

Enjoyed REST & JAX-RS 1.0? You'll love JAX-RS 1.1 & Jersey (Paul Sandoz in new GlassFish Podcast episode) http://bit.ly/a2SOSp

which brought me to a "blog" I didn't know about before now: The GlassFish Podcast, which features "Interviews, Presentations, and news for and from the GlassFish community." The entry Alexis points to is Episode 48. So, there's a lot there for me to catch up on!

When I fired up Blogbridge, my preferred feed reader, I saw a bunch of interesting new stuff. There was:

I actually could continue that list. But, I think you get the point. It was that kind of day. I'm hoping to be able to give some of these items a closer look in the coming days...


In Java Today, Stephen Colebourne discusses Java language design by use case:

In a blog in 2006 Neal Gafter wrote about how language design was fundamentally different to API design and how use cases were a bad approach to language design. This blog questions some of those conclusions in the context of the Java language...

The Continuous Blog announced the release of Hudson 1.350, followed by rush delivery Hudson 1.351:

Finishing off the second week in March, the Hudson team rolled Hudson 1.350 off the assembly line last Friday, bringing aslew of fixes. Of particular interest to users of Hudson's various native packages for Red Hat, openSuSE, Ubuntu/Debian and Solaris, was a change that suppress the "self-upgrade" functionality in the "Manage Hudson" page. On the enhancements side of the fence...

Kirill Grouchnikov announces It

From the JavaOne team:

Folks,

Just in case daylight savings time got the best of you this weekend, we have extended the JavaOne Call for Papers by 48 hours. If you have not yet submitted a topic or have additional ideas, you have until 11:59pm Pacific Time on Tuesday, March 16th to get your abstracts in. Keep the submissions coming

This week's java.net Spotlight is on the GlassFish Jersey project. Jersey 1.1.5.1 was released last week, as reported by Paul Sandoz:

We have just released version 1.1.5.1 of Jersey, the open source, production quality, reference implementation of JAX-RS. The JAX-RS 1.1 specificationis available at the JCP web site and also available in non-normative HTML here.

The key features in the new version are Weblogic support and patches for regressions to class and package scanning algorithms. Jersey 1.1.5.1 implements JAX-RS 1.1.

In response to a question from Iqbal Yusuf as to whether a tutorial for Weblogic with Jersey was available, Paul pointed to Gerard Davison's blog post Running JAX-RS/Jersey/JSR311 on weblogic. Gerard uses JDeveloper and Weblogic to develop a simple "Hello, World" service that applies a JAX-RS servlet as part of the RESTful service. Gerard's entry, written in October, 2008, notes that some of what he does in his example won't be needed once Java EE 6 is released.

Paul closes his entry with a look ahead:

As soon as the OSGi work is finalized (and considered suitably battle tested) we will release 1.2. Nearly there :-)

For more information on Jersey, visit the Jersey project on java.net. There, you'll find the Jersey 1.1.5.1 User Guide, the Project Jersey wiki, a software version change log, and lots more.


In Java Today, Joe Darcy discusses Annotation Processor SourceVersion:

In annotation processing there are three distinct roles, http://blogs.sun.com/darcy/resource/J1_2005-TS-7425.pdf

Two years ago, a java.net poll asked Have you tried Scala? At that time, 38% of respondants had no idea what Scala was. This past week's java.net poll suggests that recognition of Scala has grown considerably in the past two years.

A total of 416 votes were cast in the poll. The exact question and results were:

What's your view of Scala's future?

  • 17% (72 votes) - Scala will become a widely used mainstream language
  • 27% (112 votes) - Scala will have a devoted user community long into the future
  • 19% (79 votes) - Scala will never see widespread use
  • 12% (50 votes) - I won't know until I try out Scala (which I plan to do)
  • 11% (46 votes) - I don't know
  • 14% (57 votes) - What's Scala?

In one sense, you could say that these numbers (remembering, though, that this is not a scientific poll) indicate that Scala has succeeded as a language: about half of the people who know what Scala is believe it's going to be around for a long time into the future, either as a language with a devoted core of users or as a widely-used mainstream language. If these results reflect the views of the broader developer community, Scala will likely end up having been much more than a mere blip when the history of programming languages is told decades from now.

And why not? Scala translates to Java bytecodes and it also compiles to .NET. That's a pretty powerful, flexible feature. Furthermore: "Code sizes are typically reduced by a factor of two to three when compared to an equivalent Java application." As for training developers to learn a new language: "Existing Java code and programmer skills are fully re-usable." All of this is from theScala site, but it matches what I've heard people saying in blogs, tweets, etc. I haven't had time to actually try out Scala on my own yet (unfortunately)...

Looking purely at the "recognition" numbers: in the February 2008 poll, 38% did not know what Scala is, compared with just 14% of voters in this past week's poll. This means that the fraction of people in the Java community who don't know anything about Scala has shrunk dramatically in the past two years, by about 63%.

The size of the group expressing a somewhat negative view of Scala has also declined. Two years ago, among the people who knew what Scala is, about 34% either had tried it and didn't like it, or had no desire to try out Scala. In our current poll, 22% of people who know what Scala is believe it will never see widespread use.

Admittedly, the two polls asked different questions, so comparing the results involves interpretation that could be viewed as a bit sketchy -- comparing apples with, maybe not quite oranges, but certainly not with the exact same variety of apples. I think the difference in the polling questions reflects the growth that Scala clearly has enjoyed in the past two years. Asking "Have you tried Scala?" again wouldn't have been nearly as interesting a poll as asking what people think about Scala's future...

New poll: job market

Our new java.net poll is another of our periodical queries on the state of the economy: Is the software engineering job market improving? The poll will be open for the next week.


In Java Today, Adam Bien writes about Modules, Cycles, Unwanted Friends - the Modularity Challenges in Enterprise Projects:

Building modules and components is not that hard. You "only" have to encapsulate the internal component implementation and expose a clean and easy to use interface. ...at least on paper. In practice you will be confronted with the following challenges in the early iterations: 1. The external interface is too coarse and far less interesting for internal reuse, than you had thought ...

Geertjan Wielenga posted Bioinformatikzentrum Weihenstephan on the NetBeans Platform:

Anton Epple, Aljoscha Rittner, and myself gave a NetBeans Platform Certified Training during the past 1 1/2 days at theFachhochschule Weihenstephan, in Freising, Germany. More specifically, we were at the Bioinformatikzentrum, where the students are exploring the NetBeans Platform as the basis of bioinformatics applications...

Arun Gupta presents his DevNexus 2010 Trip Report:

As mentioned earlier, I presented on Java E 6 & GlassFish v3 at DevNexus earlier this week. This is an annual conference by Atlanta Java Users Group and had three parallel tracks. The conference was a sold out and the attendees...

In the Weblogs, Thomas Landgraf provides information on the XML to ODT Converter:

We use the Java programming language. If you want to do a similar task, have a closer look at our work. Since ODT is part of the ODF  standard, which is well defined, XML-based and easy, this task should not be that complex - an so it is. The work was done by Tim Schäfer, he used the ODFDOM API  as an abstraction layer for ODF...

Jan Haderka posted Cached! ... again:

I wrote about Magnolia cache few times already since it have been re-implemented for Magnolia 3.6. And it seems like with Sprint 4 of Magnolia 4.3 it came back to bite me. There was a bunch of tickets related to various aspects of the cache. Most of it was related to the fact that the default cache key (only URI) was not enough for many installations which were using multiple domains...

Christian Bryant covers Java in Bioinformatics:

In 2009 I attended the UCLA Clinical and Translational Science Institute (CTSI) Enterprise-Level Research Informatics in the Health Sciences Symposium at the California NanoSystems Institute(CNSI). There were many speakers there from institutions like Johns Hopkins University, Stanford University School of Medicine, as well as Harvard University School of Medicine. However, the presentation that caught my ear the most was that of Isaac S. (Zak) Kohane, MD - co-Director of the i2b2(Informatics for Integrating Biology and the Bedside) project based at Partners HealthCare System in Boston, Massachusetts. The websites states...

In the Forums,maciejmadajczyk posted GlassFish 3 client jar lib in other client container: Hi I am working on modular desktop application. This application is start on my "plug-in platform". I need that on of plug-in provide to other plugins GlassFish 3 client jar lib. You can look at plug-ins in my platform as wars in web...

In the LWUIT forum, Klemens is seeing a NullPointerException in Form.updateFocus(): Hi, I have a form with TextFields, Comboboxes, Checkboxes and RadioButtons on it. When I update the text in the TextFields while the user is moving the focus between the TextFields I sometimes get this exception...

In the Wonderland forum, kdabko has questions regarding Voice range, sight angle: I'm building a tool to visualize data collected in WL. This data consists of position, performed gestures and so on. In order to visualize correctly I need answers for the following questions: 1. From what maximal distance can a person hear...


Our Spotlightthis week is the work of our friend Felipe Ga

Prognostication is always fun, whether you're thinking up your own predictions, or reading someone else's. As apparently a great many people have noted, "prediction is very difficult, especially about the future." (Was that Yogi Berra? Niels Bohr? Einstein? Mark Twain? Is it an ancient Chinese proverb?) This reality does not faze Bruce Eckel, who just posted Programming in the Mid-Future. What's the "mid-future"? About 25 years from now. Bruce starts out with:

In 25 years or so, we'll look at the current morass as only a small step above assembly-language programming.

An interesting way to look at this is to think back to the state of programming 25 years ago, in 1985. If you take that state, compare it to today's state, then "project" linearly into the future, maybe you can guess what programming witll be like in 2035. Well, certainly you can guess, but is it likely that you'd be right?

A thought experiment: pretend it's 1985, and think about what programming was like in 1960 (impossible even for me to accomplish except by referencing historical documents). What would someone in 1985 have thought programming would be like in 2010, by thinking back to the state of programming in 1960? Or, go back even further, with the aid of something like the Wikipedia's History of programming languages, and see if any longer term trends seem to remain approximately constant.

Let's try this, just for fun!

http://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Maquina.png/220px-Maquina.png
Figure 1. An artistic representation of a Turning machine (from the Wikipedia)

  • 1935 - predates electronic computers; Alan Turing was thinking about the Turing Machine: "an infinite memory capacity obtained in the form of an infinite tape marked out into squares on each of which a symbol could be printed. At any moment there is one symbol in the machine; it is called the scanned symbol. The machine can alter the scanned symbol and its behavior is in part determined by that symbol, but the symbols on the tape elsewhere do not affect the behavior of the machine. However, the tape can be moved back and forth through the machine, this being one of the elementary operations of the machine. Any symbol on the tape may therefore eventually have an innings" (see Figure 1)
  • 1960 - FORTRAN, LISP, and COBOL in use
  • 1985 - C, C++, SQL
  • 2010 - Java, .NET, Web Scripting, RIA

What is the trend? Clearly, as time progresses we work "farther away" from the hardware. Also the relation between code and memory becomes further abstracted over time. And, changes in hardware are related to changes in programming languages: the languages adapt to the available resources that new hardware provides, such as electronic memory, graphics, the Web, etc.

So, what does this point to for 2035? Thinking about hardware, many core processors should be the norm. Another clear hardware trend: hardware that can perform the same functionality (or much greater functionality) gets smaller over time. And, computers "disappear" into devices, which are no longer considered to be computers, even though they are actually computers that perform a single, specific task (mobile phones, for example). Will there still be desktop PCs in 2035? Perhaps only programmers will have them.

I'm not much for prognosticating myself. I once spent quite a lot of time coming up with some decent stock market models, but I was never able to successfully predict the longer-term future.

What are some of Bruce Eckel's predictions for Programming in the Mid-Future? He predicts that 25 years from now, the programming environment will include these features:

  • Extremely dynamic
  • Stupidly parallel objects
  • Persistent diskless environment
  • Transparency between local and cloud
  • Swarm testing
  • Security via suspicious systems
  • Effortless data stores
  • Query-based data
  • Reusability on a vast scale
  • Effortless system integration
  • Reusable UIs
  • Effortlessly scalable
  • Built-in evolvability
  • Big talk

See the full article for details, and to post your own predictions and/or hopes for programming in 2035.


In Java Today, Shai Almog reports on LWUIT On Nexus One (Android) Device:

A lot of people experiment GlassFish for the first time via an IDE (most A colleague of ours just got a new Nexus One device and I just had to try LWUIT on it... I used Thorsten's port to get started and made some minor UI tweaks using the resource editor. In the process I also added a new LWUIT feature (pure touch) to make the UI behave closer to the way it does on Android/iPhone devices (show focus only when using the keypad and hide it when not using the touch screen). The result is...

Tyler Ballance reports on One month of Continuous Blog:

It's been a little over a month since I pinged Kohsuke about an "official Hudson blog"; my role has been nothing more than writer and editor of a community resource, while I have invested a lot of time in Continuous Blog it is not "mine" so much as it is "ours." I feel I have a responsibility as the current maintainer of this resource to be as open as possible about what's going on with CB. When I sat down to write the inaugural post...

Bruce Eckel looks into his magic crystal ball in Programming in the Mid-Future:

In 25 years or so, we'll look at the current morass as only a small step above assembly-language programming. Here's what I think programming will be like then...

In the Weblogs, Christian Bryant describes How the UCLA JUG was Born:

After a long hiatus from UCLA, Duke returned in the form of the UCLA Java User Group. I'm not sure how long it has really been since a Java User Group haunted the halls of UCLA. Some say it's been between five and ten years which, in Java terms, is quite some time. I found a great archived news item here at UCLA about the UCLA Java Campus from 2000. I like that idea. Maybe we can see it come around again...

Marc Hadley talks about Declarative Hyperlinking in Jersey:

One of the areas I'm keen to improve in the next version of JAX-RS is link creation. JAX-RS already offersUriBuilder but I think an annotation driven approach could save a lot of repetitive coding. I've been experimenting with a couple of annotations that I think would be useful and I just checked in an experimental extension that partially implements what I have in mind. Suppose you have a resource like this...

Jean-Francois Bonbhel presents a JUG-AFRICA Cooperation plan and agenda:

There is my proposal for JUG-AFRICA agenda. Everyone is free to comment and add interesting ideas. I will detail each point in my blog later. * Continue to affiliate JUGs and share our experience with new JUGs; * Elect a president and a vice president (last week of april 2010); * Increase our visibility by both ways internal and external (very important)...

In the Forums,sgnl19 is working on Testing JAX-WS based SOAP Services with SOUP UI: We're trying to test our webservices with the SoapUi Testingtool. The tool normally sends the requests formatted with whitespaces. The effect occurs, that if we send the request without using the strip whitespace function only the first parameter...

sargue has a problem with GlassFish v3 valve not found (cnfe): I have a problem trying to configure a custom valve on glassfish v3. I've coded the class (attached) and generated the jar file (attached). I put the jar file inside the lib directory (where I put for example jdbc drivers). That's...

In the JavaFX forum, lordoffriends says Help !! please: I m new to javafx..and i want to integrate my java project with javafx.and i m using Eclipse with JAVA FX SDK 1.2.1. Here is the code of Java file : public class JavaTest { public static void main (String[] args) { ...


Our Spotlightthis week is the work of our friend Felipe Ga

James Gosling sent out a reminder asking people to Submit your JavaOne abstracts! Yes, JavaOne is indeed happening, and if you want to participate via presenting a session, you only have until Sunday night (US Pacific time) to submit your proposal.

http://java.sun.com/javaone/2009/articles/images/tshirtslingshot.jpg

In James's words:

[In] case you hadn't noticed :-) despite the recent transition, JavaOne is indeed happening. The call for papers went out a while ago, and it's it's about to close, so submit your proposal today!. It promises to be a giant year with JavaOne being just a few blocks from Oracle OpenWorld. That few blocks should provide a gap of sanity (opportunity?) between the Geeks and the BizTypes. San Francisco will be bursting at the seams.

I expect this year's JavaOne to have more of a developer-centric feel than has been the case in recent years. The call for papers page says:

We expect JavaOne 2010 to surpass its well-established reputation as one of the most valuable and informative weeks of technical education, debate, and exchange of the year. This year, the conference curriculum is going back to its roots -- 100% Java technology and the related ecosystems. So share your knowledge and expertise as a JavaOne speaker.

And here's the description of "what attendees want" -- that is, who the target audience is for JavaOne presenters, the audience Oracle is trying to get to attend this year's JavaOne:

Attendees typically have intermediate-to-advanced Java programming skills. Our attendee surveys have indicated most of them want talks that deepen their practical knowledge, including best practices and solutions. The most popular talks are rich in technical detail, and usually include best practices, proven solutions, code samples, and/or demos that show how to apply Java technology to real-world projects. This year, we are particularly looking for interesting end-to-end application and integration use cases.

To me, this says that JavaOne (which will also be the site for Oracle Develop) will indeed be the place where the geeks hang out, while Oracle OpenWorld will draw more of the management and business folk -- as James indicates. Of course, a lot of people will visit both venues, and probably an even greater number will at least venture into the street walkway (which may have a tent?) between the conference venues, where they'll be able to mix with both their associates and counterparts.

If you'd like to present at JavaOne, see the criteria for submissions and also the 2010 topic areas. And be sure to get your proposal submittedby 11:59 Pacific (US) time, Sunday night, March 14.


In other Java Today news, Alexis Moussine-Pouchkine presents GlassFish without the IDE (quick survival guide):

A lot of people experiment GlassFish for the first time via an IDE (most likely NetBeans, but maybe also with Eclipse) andfeel a bit lost when it comes to use GlassFish without the tool driving it for them. So here are a few (mostly basic) CLIasadmin hints for GlassFish v3...

Janice Heiss pointed me to Ed Ort's new article Deploying RIAs in Mixed Environments:

Rich Internet Applications (RIAs)

In his latest post at Pushing Pixels, Kirill Grouchnikov talks about what's New in Trident 1.2. TheTrident animation library has as its objective providing "a powerful and extensible animation library for Java applications." The library is available under the BSD license. Java 6+ is required for using the library, both at compile time and at runtime.

Here is Kirill's introduction to Trident 1.2:

The Trident animation library was born in February 2009 out of the internal animation layer used in Substance look-and-feel over the last three years. A year after, it is nearing its third official release which focuses mainly on stabilizing the API and ironing out the existing bugs.

The major milestone for this release is moving Substance 6.0 to use Trident – along with validating the library performance and flexibility to support a wide variety of UI animations. Trident 1.2 has also added a few new APIs to address a few common application requirements.

In his post, Kirill covers the new Trident 1.2 custom property accessors in detail, including demonstrating the features with several example code snippets related to timelines. The new custom accessors include getWith(PropertyGetter) andaccessWith(PropertyAccessor).

You can use the same getter / setter / accessor implementation to access multiple fields

By now, probably many people in the java.net community are aware that we have -- completely unexpectedly, and out of the blue -- lost one of the most enthusiastic, bright, and kind members of the java.net community: Felipe Gaúcho. Clearly, there are many people in our community who knew Felipe better than I did; and clearly there are many who never had any personal contact with him, but who read his blogs and articles; and there are undoubtedly many people who are reading this who have no idea who Felipe was.

http://www.cejug.org/wp-content/uploads/2010/03/FelipeGaucho.png

I will tell you a little story. Because, indeed, my contact with Felipe was minimal. Yet, those brief contacts made an enduring impression on me. Such that, when I came home late Saturday night, turned on my computer, brought up my email client, and saw 9 messages on the java.net Community Leaders list, titled "Sad news", and clicked on the first message from Fabiane Bizinella Nardon, and read:

Felipe Gaucho, our colleague, JUG leader, Java evangelist and long time java.net collaborator passed away yesterday. Sad day for the Java community and all his friends.

I ... time stopped for a moment. I had to reread the message to see if what I thought I had just read was actually stated there. Maybe it was just late and I was tired, and I hadn't read the words right?

You see... if you never met Felipe... Felipe Gaúcho was that kind of person, who makes an impression immediately, as someone you know you are happy you know, someone you know you can trust as a friend, someone who wants to be your friend, someone who has good objectives, who is forward looking, who wants to make the world a better place, and help the next generation see what's been prepared for them, so they can continue the work of making the world better and better.

To accomplish these objectives, Felipe applied his creativity. He was immensely interested in encouraging interaction between university students, who knew how to study coursework and pass their tests, and professionals in the software engineering, who knew how those basic skills had to be applied in a real-world business situation.

At JavaOne 2009, Felipe was interviewed by Jim Wright in a java.net Community Corner podcast, PUJ, a Jug Contest. In that session, he talked about the Premio Universitario Java Competition he invented. I wrote about PUJ a while after JavaOne. What was PUJ?

an academic competition to promote the synergy between the academy goals and the market needs. The prize stimulates the students to submit their homework projects to analysis by IT experts - senior professionals who will evaluate the quality and the market adequateness of what the students are coding (the homeworks) in the local universities.

While my entrance into my position as java.net editor last April was well-supported by Sun and O'Reilly, Felipe was one of the first people in the broader java.net community to really engage with me. He helped me get started, by proposing and writing an article, Exposing Domain Models through the RESTful Service Interface, Part 1. This was supposed to be a two-part article, with both parts completed prior to JavaOne. The completion of Part 2 was OBE (overcome by events), something we laughed about as we stood face to face for the first time at JavaOne 2009. We laughed because we shared an understanding that there are many good and worthy things we'd like to accomplish in life, but time sets limits. And, we mere humans cannot determine which specific objectives will be accomplished, and which ones (like Part 2 of that article series) will never come to be.

You see... even though I only spoke briefly with Felipe, at JavaOne, but also through many emails... and I also knew him through his java.net blog posts... it is very easy for me to understand what people who knew him much longer than I knew him are saying. Because he made the same impression on me, in our very brief friendship. I so vividly remember him walking up to me at JavaOne, smiling, his hand extended, welcoming me, expressing happiness at meeting me in person, in counting me among his friends. He is that kind of person! You don't forget him once you know him, even if you know him only briefly.

Felipe Gaúcho made everyone feel like they are important, like their contribution was really significant. And you had to believe him as he said it. How can someone do that?

I'll close with some links. Felipe was passionate about his work:

It's inconceivable. Late Thursday night, I saw that blog post, thought "cool.. wow, Felipe is really getting into GlassFish these days. As always, he wants to teach us as he proceeds -- with his customary enthusiasm!" Very early Friday AM Felipe's time, I featured that post on the front page of java.net. All was normal.

But Friday, March 5, 2010, was not a normal day. I found that out Saturday night when I read Fabiane's message to the java.net Community Leaders.

I apologize if some of you find this blog post annoying. But for those who knew Felipe Gaúcho even slightly -- we all know the world has lost an incredibly kind, creative, enthusiastic, energetic, welcomingly friendly human being. Who could not be Felipe's friend, having met him?

When he wasn't coding, Felipe preferred to listen to reggae music and "travel around with his lovely wife Alena and his son Rodrigo" (from Felipe's java.net bio). If anyone knows of a fund that is being set up to assist Alena and Rodrigo, please post it here. I want to contribute, myself...


In Java Today, Hildeberto memorializes his friend in Felipe Gaúcho, You Will Be Missed:

How can I write about such a delicate subject? How can I find strength and inspiration in a hard moment like this one? I would summarize this post in only one word: speechless, but the absence of words may let my thoughts and emotions incomplete. So, I decided to write as the words come to my mind, and they are not easy. I've lost a very dear friend last Friday (March 5th, 2010). His name is Felipe Gaúcho...

In The Aquarium, alexismp presents a summary of GlassFish in February:

The breadth and depth of the community is nicely illustrated by the variety of recent GlassFish-related blog posts. First, long time GlassFish supporter Masoud has a very detailed (it's actually a chapter of a book) OpenMQ from A to Z entry. On the operations side, Byron has a set of two posts on How to Run GlassFish V3 as a Service on Linux Ubuntu/Debian and a follow-up on using a non-root Service (see also thisGentoo variation by Jason), while Felipe's on provisioning GlassFish v3 resources with asadmin...

Jim Weaver points out A couple of new tutorials by JavaFX Geeks Nancy Hildebrandt, Vaibhav Choudhary and Scott Hommel:

If you have a few minutes for some fun and learning, check out these new tutorials from JavaFX Geeks Nancy Hildebrandt, Vaibhav Choudhary and Scott Hommel...

In the Weblogs, Claudio Miranda posted Felipe Gaucho, we will miss you:

I heard from a friend that prolific blogger and friend Felipe Gaucho had passed away last March, 05. Felipe was very active at Java community, helping people at mailing lists, writing blogs. He was a JUG Leader (Ceara at Brazil), Glassfish active user and speaker. See more information at the CEJUG blog...

Fabrizio Giudici says I got an Android phone, but...:

I've just bought a Motorola Droid (named Milestone in Italy). This is part of my plan to have about 4/5 mobile phones with some decent operating systems supporting Java or Java-like development. I've already got a Sony-Ericsson W595, a HTC with Windows Mobile, now the Droid and the next will be a Nokia (I originally planned for a Symbian phone, but now I could be more interested in a Meego). I've just played with the Droid for a couple of hours, to get the initial feedback. While Google is vastly fairer than Apple, it still disturbs me a lot for the multiple attempts to enter my privacy...

Jeorg Plewe analyzes the concept, fully concentrate on business logic...:

How often have I read about cool new technologies where, after all, the programmer can now 'fully concentrate on the business logic'. This meanwhile happens since at least 20 years so I wonder why still anybody does something else than concentrating on the 'business logic'? One reason might be that it always has been a lie. Using any web framework still ends with tracking and analyzing HTTP requests or reading server logs, using persistence layers ends with monitoring the database, network traffic and such and so on. The promised abstraction just doesn't hold...

In the Forums,szykam has an LWUIT question regarding Components drawing weights (priorities): Hello! I want to create my custom view/form. It shall not be scrollable and shall contain image, and 2 text fields (title, text). I want text to be drawn at the bottom of a screen, then title above it, and image shall fill the rest of a screen.

In the Glassfish forum, cadii asks Why isn't the login popup not triggered for secured page: I'm very new to EJB security and GlassFish authentication, authorization mechanism. I'm working on a jsf visual web application with Netbeans 6.5.1 and Glassfish v2. I have a jdbc realm and configured sun-web.xml and web.xml to map the roles and restrict...

In the Java SE forum, karmabhoomi notes that SimpleDateFormat does not recognize invalid YEAR: Hi, I have noticed a few thing about the way SimpleDateFormat tries to validate YEAR . Below is the sample example that i have used. if I repalace the year with values such as 0001, 9999 the output is true. I assume 0001, 9999 etc may be...


Our Spotlightthis week is the work of our friend Felipe Gaúcho, who suddenly passed away on Friday, March 5. Felipe was a CEJUG founder and leader, a Java evangelist, and a long-time java.net collaborator. The self-description he wrote for java.net: "Felipe Gaúcho works as senior software engineer at Netcetera AG in Switzerland. He is a well known Brazilian JUG leader and open-source evangelist. Felipe works with Java since its early versions and has plans to keep that Java tradition as it is. When he is not coding, he prefers to listen reggae and travel around with his lovely wife Alena and his son Rodrigo."


Our current java.net Poll asks What's your view of Scala's future? Voting will be open until Friday.


http://www.gca.net/java-ee6-road-show-atlanta-dallas-2010

We just published a new java.net Feature Article, Dibyendu Roy's Rethinking Multi-Threaded Design Principles; in the emerging multicore/multiprocessor world, multi-threaded programming is critical, in my view. We're also featuring Has JDBC Kept up with Enterprise Requirements? by Jesse Davis; in the article, Jesse invites us to look beyond Type 4 architecture to address the latest requirements of the enterprise Java ecosystem. And, Adhir Mehta's Java Tech article, Web Service Simulatino Using Servlets also remains in the Featured Articles section of the java.net home page.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

 

While a diverse range of views was expressed in comments posted to this past week's java.net poll, almost half of the voters considered five years to be the best duration for maintaining backward compatibility. This poll was submitted by java.net community member cowwoc (Gili Tzabari), and it was indeed a very successful poll: 562 votes were cast, and people took the time to post 11 comments.

Here's the exact question and results:

How far back should Java retain backwards-compatibility?

  • 19% (108 votes) - Across minor releases (Java 1.6)
  • 48% (271 votes) - 5 years back (Java 1.5)
  • 16% (89 votes) - 10 years back (Java 1.3)
  • 12% (69 votes) - As far back as possible (Java 1.1)
  • 4% (20 votes) - I don't know
  • 1% (5 votes) - Other

Backward compatibility is a very interesting problem when it comes to widely used languages that have an enormous installed base -- languages like Java, C/C++, COBOL, Fortran. In some cases, the languages have become "legacy languages" -- they have a big installed base, but very few people are actually developing new code in the languages any more. Fortran and COBOL are in this category, I think. There, you have lots of solid, completely tested, operational code that still needs to be used. It makes no sense to redevelop the applications, so typically the legacy code is just wrapped inside modern technology. The legacy code becomes an engine that is interfaced with, accessed, using modern technology. With such languages, you really would want any new editions of compilers (consider, for example, Fortran 95) to be completely backward compatible, so you don't break the working legacy applications.

Java is in a very different category. And herein lies the problem. You do have an enormous installed application base, and that code was built using many different versions of Java. In many cases, the original developers of this code are no longer working for the companies. Meanwhile, Java is also very actively used for developing new software applications today.

So, with Java, there is a tension when it comes to backward compatibility. On the one hand, you have a legacy-like installed base of old code, which argues for compete backward compatibility; but, for new development, the language needs to keep pace with the modern world, which means new language features are needed. To give just one example: how does Java respond to "the multicore challenge"?

The comments posted to the poll reflect this tension.weberjn advocates "Infinite compatibility":

I think compatibility should never break. Enterprises are conservative, one of Java's advantages is that Visibroker 3 from 1998 is still running on Java 1.6. Organisations are buying IBM mainframes because they still run software from the 1970ies. But the JRE could decide corresponding to the class version what compatibility is needed.

cowwoc responded with "Yes, but...":

I think it is worth noting that when (and if) IBM supports software dating back to 1970s they don't release new versions for it on a regular basis. You're running an "appliance" whose hardware and software are frozen in time. You're asking Sun to go above and beyond what anyone else (IBM included) has done. There are two solutions, as pointed out by "badapple": 1. Keep running Java 1.4 forever (equivalent to IBM's approach) 2. Use a "compatibility module" containing removed code. Though, to a certain degree, this is similar to option 1 because it can't be supported forever.

badapple said "Backwards compatibility is innovations biggest enemy!"

Backwards compatibility, while important to some degree, needs a cutoff at some point. If you try to remain compatible for ever you will inevitably be working around bugs or bad design decisions from the past. Its time to let go people! Pre Java 5 should not be supported any more, they have had 5+ years to upgrade, what more do you want? Trying to remain compatible for ever, is like trying to support Windows 3 today, just let it go, its time to move on.

philistine takes the middle approach, noting that "A process for breaking compatibility is important":

I live, for better or worse, deep in Enterprise-land, and backwards compatibility is a huge priority. A hypothetical example: If Java5 had broken compatibility, I would not have been able to upgrade--my investment in existing apps and would have been nullified to some extent and I would probably have stuck with 1.4 to finish then current projects.

However, time marches on, and hopefully the Java platform does too. We should not have to suffer under the poor design decisions of the past--it is time to deprecate certain APIs. I think it is reasonable to set a timeline for deprecating certain areas. But just as important as what to deprecate, and when, is the question of how.

Thanks, Gili (cowwoc), for a great poll idea!

If you've got an idea for a poll, please send it to me -- one way you can do this is with the java.net Submit Content page. Or you can direct message me @kevin_farnham on Twitter. Or you can post a comment below. Etc., Etc... (there are lots of ways to contact me)...

New poll: Scala's future

Our new poll asks What's your view of Scala's future? Voting will be open for the next week.


In Java Today, Stephen Chin writes about Launching Hyperlinks from JavaFX (including Mobile):

Creating hyperlinks in JavaFX should be in the category of things that are trivially easy, but is complicated by various factors, such as deployment mode and Java version. First I will go into detail on all the different permutations of how you can launch links in a browser and under what circumstances each will work. Next I will give you a nice packaged solution that you can use as a library...

On the JFXStudio site, kaikfx posted JFXcube

We've just published a new article, Dibyendu Roy's "Rethinking Multi-Threaded Design Principles". Multi-threaded software engineering continues to gain attention from new audiences as the developer and management communities come to recognize the significance of the Multicore Challenge.

The history of software and hardware has been one of ever increasing speed, memory, and software capability. The speed aspect is where we now face a problem. Increases in speed were historically tied to new technologies that enabled successful utilization of ever thinner chips. The problem today is that we're down to a rather small number of atoms. Since we can't shrink atoms themselves, it's a considerable technological challenge to make an individual chip faster. What can be done, however, is to put more cores on an individual chip, thus multipling the amount of work a single chip can perform, even though the processing speed of an individual core remains unchanged.

While this strategy is a challenge for chip manufacturers, ultimately (when the typical home or small office machine starts having 8 or 16 cores) it will be an even bigger challenge to software firms: in order to make their applications run faster, they'll have to write the software in a threadsafe manner that also utilizes multiple threads for the major processing-intensive operations.

Multithreaded programming has been around for a long time in Java. The addition of closures to Java 7 may indeed facilitate new forms of multithreading development in the future. But, the capability to develop multithreaded software exists today. The ways developers can take advantage of today's multithreading capability is what Dibyendu covers in his article. While Dibyendu's example is on the server side, the principles he discusses can be applied to server-side development or for developing applications that will efficiently utilize multiple cores on client machines:

For many years, we have been using Java Threads for developing numerous Client-Server based applications. While it's always desirable to have a highly responsive Client application, handling a high volume of client requests has always been a prime goal of any Server application. However, designing a highly-scalable server requires lots of analysis. Without careful design and adherence to a well thought out underlying policy, a thread based system can fail to produce the desired outcome.

In this article, we'll discuss certain design principles that should be followed when the objective is to build an efficient, thread-safe application.

Dibyendu walks us through an example application, talking about the problems that come with multithreaded development, such as thread delegation, single thread confinement, and synchronized locking. He concludes:

Designing and improvising a thread based application is a challenge. But by following certain design principles and guidance, this can be easily overcome. At the same time, clear understanding of thread safety policy is also essential as it helps you simplify the design. There are many other techniques available that we couldn't cover here. However, the principles presented here will always assist you in overcoming some of the thread safety related hurdles you might be facing as you develop thread-safe applications intended for operation on modern multicore and multiprocessor computers.

In Java Today, the latest Oracle TechCast Live broadcast is JavaFX -- Just Getting Started. The just under 26 minute video features Oracle Technology Network leader Justin Kestelyn interviewing Nandini Ramani. An audio-only rendition is also available. Terrence Barr blogged about the TechCast:

This just out: Nandini Ramani, Director, Java Development Group, Oracle talks with Justin Kestelyn, Senior Director, Oracle Technology Network, about JavaFX innovation, evangelism, and adoption...

Java Champion Antonio Goncalves writes about Bean Validation with JPA 1.0:

For those of you who still don’t knowBean Validation, you should check the JSR 303 and the documentation of the reference implementation Hibernate Validator. In fact, like many other JSRs, Hibernate Validator existed on its own for quite a long time as an open source project (until version 3.1.x) and then got specified under the JSR 303 and became the reference implementation from its version 4.x. Bean Validation 1.0 was born and is now part of Java EE 6. But keep in mind that Bean Validation doesn’t need Java EE 6 to run (like other specs such as JPA 2.0, JSF 2.0, CDI 1.0…) and can be used outside any container...

Max Weijun Wang reports on allow_weak_crypto for Kerberos in OpenJDK:

I just addedallow_weak_crypto support in OpenJDK. With this property set to false, des-cbc-md5 and des-cbc-crc etypes are not supported, even if you include them i permitted_enctypes or default_{tkt|tgs}_enctypes settings...

In the Weblogs, Ed Burns talks about The perils of "There's more than one way to do it":

At the very beginning of my full time programmer career, when I worked at Silicon Graphics, Larry Wall and Randal Schwartz gave a brown bag session about their now legendary camel book. Naturally, I had them sign my copy, the front page of which I proudly display at left. Notice the “There’s More Than One Way To Do It!” stamp at the top. For better or worse, Perl is famous for this property. Less famous (or perhaps even infamous) for having more than one way to do it is JSF...

Masoud Kalili talks about OpenMQ, the Open source Message Queuing, for beginners and professionals (OpenMQ from A to Z):

Talking about messaging imply two basic functionalities which all other provided features are built around them; these two capabilities include support for topics and queues which basically lets a message to be consumed by as many interested consumer as subscribed or at just one of the interested consumer(s). Messaging middleware was present in the industry before Java come along and every one of them had its own interfaces for providing the messaging services. There were no standard interfaces which vendors try to comply with it in order to increase the compatibility, interoperability, ease of use, and portability. The art of Java community was defining Java Messaging System (JMS) as a standard set of interfaces to interact with this type of middleware from Java based applications...

Juliano Viana talks about Java Enterprise Development - 2010 style:

I woke up the other day and realized its 2010. When I was a kid, year 2000 was far, far away (well not quite, but hey when you are 7 years old 13 years is a long time). In 2001 we were supposed to be colonyzing the moon.  In 2010, Jupiter would be within our reach.  And there are reliable reports indicating that  9 years from now flying cars and aritificial life forms should be common place. I must admit: the kid within me feels kind of disappointed. On the other hand...

In the Forums,noelkoffi has a GlassFish question, EAR application deployment: Message Driven Beans can't be Managed Beans: Hi All, We are currently facing a severe bug or deploymrnt issue with Glassfish v3 when trying to deploy an EAR Application that deals with Netbeans 6.8 and EJB 3.0. The error that comes out is the following : GRAVE: Exception while...

In the Java SE forum, ranjithjavanet asks if HttpURLConnection setReadTimeout is broken?: Using: jdk1.6.0_17. I am trying to develop something that can track an HTTP URL for availability. I was almost ready to use Apache's http client library then I suddenly noticed that since 1.4 Java net API has setReadTimeout on...

In the LWUIT forum, alejandro_sanchez has a question regarding horizontally and vertically scrolling a vertical list: Hi, is it possible to horizontally and vertically scrolling a vertical list? many thanks...


Our current Spotlightis the LWUIT Featured App Gallery: Shai Almog's recent blog post, "Latest & Greatest In The LWUIT Featured Apps Gallery", highlights 13 new applications from the LWUIT Featured App Gallery. Multiple views of each application are presented. Currently 80 different LWUIT apps are featured in the gallery.


Our current java.net Poll asks How far back should Java retain backwards-compatibility? Voting will be open until Friday.


We just published a new java.net Feature Article, Dibyendu Roy's Rethinking Multi-Threaded Design Principles; in the emerging multicore/multiprocessor world, multi-threaded programming is critical, in my view. We're also featuring Has JDBC Kept up with Enterprise Requirements? by Jesse Davis; in the article, Jesse invites us to look beyond Type 4 architecture to address the latest requirements of the enterprise Java ecosystem. And, Adhir Mehta's Java Tech article, Web Service Simulatino Using Servlets also remains in the Featured Articles section of the java.net home page.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

I found Joseph Darcy's recent post "Notions of Floating-Point Equality" interesting, informative, and even entertaining. If you've done scientific programming, you're probably familiar with the problems of floating point uncertainties, significant digits, divisions by zero that really wouldn't happen if you were doing the calculation with pencil and paper, tests of whether the values stored in two memory locations are equal, etc. It's a pain in the neck, really, dealing with these issues in a program.

So, what does the == operator really mean?

I'm kind of reminded of a famous quote from a former United States president. When asked a particular question, his response was: "It depends on what the meaning of the word 'is' is."

So what is the meaning of is? Or of==?

Joe gets right to the point, in saying:

the "==" operator defined by IEEE 754 and used by Java for comparing floating-point values (JLSv3 §15.21.1) is not an equivalence relation. Equivalence relations satisfy three properties, reflexivity (something is equivalent to itself), symmetry (ifa is equivalent to b, b is equivalent toa), and transitivity (if a is equivalent to band b is equivalent to c, then a is equivalent to c).

One of the simplest tests in scientific programming for detecting numeric anomalies is to check if a value is equal to itself. Why is this useful? Because NaN (Not a Number) is not equal to itself. If variable X is NaN, then a test in Java (and other languages that implement the IEEE 754 standard) that compares X to itself returns a false conditional result:

x = [complicated equation involving divisions by the difference
     between large numbers that are close to one another and 
     trigonometric operations involving of angles that are very 
     close to one another, etc.]

if (x == x) {
   // keep processing
} else {
   System.out.println("Cancelling processing: looks like we have a NaN");
}

So, why is Joe Darcy writing about floating point equality? It's related to a BigDecimal discussion that took place on the Project Coin mailing list:

These subtleties of floating-point comparison were also germane on the Project Coin mailing list last year; the definition of floating-point equality was discussed in relation to adding support for relational operations based on a type implementing the Comparable interface. That thread also broached the complexities involved in comparing BigDecimalvalues.

Joe concludes his post with:

While subtle, the different notions of numerical equality each serve a useful purpose and knowing which notion is appropriate for a given task is an important factor in writing correct programs.

Quite true!


In Java Today, Kirill Grouchnikov presents Drinking From The Firehose – Design Inspiration February 2010:

Every month this series is tracking the latest design trends and collecting the best examples of modern web designs. Here is the list for February 2010 with almost 1400 links from 44 aggregator posts: * 40 Beautiful Corporate Websites from Vandelay Website Design ...

Geertjan Wielenga has discovered a Radio Propagation Simulator on the NetBeans Platform:

RaPSor is a simulator of radio propagation channels, based on more than 10 years of research. It is used both in research and for educational purpose at the University of Poitiers in France. Go to the RaPSor site on SourceForge and you will learn that one of RaPSor's main advantages is "its extensibility, allowing anyone to add new geometric primitives, new simulation algorithms, new usage of simulation results, or new kinds of antennas". Here are some screenshots I took after installing this cool application...

TheServerSide.com reports IBM releases OSGi and JPA beta frameworks for WebSphere:

IBM announced the open beta of WebSphere Application Server feature packs for OSGi and JPA. The feature packs are product extensions that provide lightweight application frameworks for WebSphere V7. The company said they will allow organizations to realize many of the benefits found in open-source frameworks in a standardized, WebSphere-integrated fashion...

In the Weblogs, Masoud Kalili talks about OpenMQ, the Open source Message Queuing, for beginners and professionals (OpenMQ from A to Z):

Talking about messaging imply two basic functionalities which all other provided features are built around them; these two capabilities include support for topics and queues which basically lets a message to be consumed by as many interested consumer as subscribed or at just one of the interested consumer(s). Messaging middleware was present in the industry before Java come along and every one of them had its own interfaces for providing the messaging services. There were no standard interfaces which vendors try to comply with it in order to increase the compatibility, interoperability, ease of use, and portability. The art of Java community was defining Java Messaging System (JMS) as a standard set of interfaces to interact with this type of middleware from Java based applications...

Juliano Viana talks about Java Enterprise Development - 2010 style:

I woke up the other day and realized its 2010. When I was a kid, year 2000 was far, far away (well not quite, but hey when you are 7 years old 13 years is a long time). In 2001 we were supposed to be colonyzing the moon.  In 2010, Jupiter would be within our reach.  And there are reliable reports indicating that  9 years from now flying cars and aritificial life forms should be common place. I must admit: the kid within me feels kind of disappointed. On the other hand...

Jean-Francois Bonbhel asks Did you say JUG ? Java User ... What ?:

Is it still possible to ask this question in 2010? Isn’t the answer obvious ?Well no ! It was the question I was asking myself three years ago, even though I had been working as a consultant and Java trainer for seven years. In 2007, my ex-colleague Éric Marcoux (Oracle ACE Director) suggested I join JUG Québec (Canada). I said JUG ? Java User…What ?...

In the Forums, Oliver Gottwald has glassfish: JWSDP questions: I'm having issues getting JWSDP up and running. Iwas able to get a install for jwsdp-2_0-unix.sh installed but had to doa couple jumps threw flaming hoops from the following link...

In the LWUIT forum, digitalsol has a question regarding Log class under Eclipse: Hello, I'm using Eclipse here for LWUIT development. I'm thinking of using this class https://lwuit.dev.java.net/nonav/javadocs/index.htmlfor logging purposes. But in...

In the Wonderland forum, pradeep_d has a question regarding Group Permission for custom authentication module: Hi, I want to know how user's are associated with group, We have a plan of creating a module for authentication using DB which is used by other application. We want all the application user's to access wonderland. So i created the module but...


Our current Spotlightis the LWUIT Featured App Gallery: Shai Almog's recent blog post, "Latest & Greatest In The LWUIT Featured Apps Gallery", highlights 13 new applications from the LWUIT Featured App Gallery. Multiple views of each application are presented. Currently 80 different LWUIT apps are featured in the gallery.


Our current java.net Poll asks How far back should Java retain backwards-compatibility? Voting will be open until Friday.


Our latest java.net Feature Article is Has JDBC Kept up with Enterprise Requirements? by Jesse Davis; in the article, Jesse invites us to look beyond Type 4 architecture to address the latest requirements of the enterprise Java ecosystem. We're also featuring Adhir Mehta's Java Tech article, Web Service Simulatino Using Servlets; and Maven Repository Managers for the Enterprise, by John Smart.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

 

Yesterday and today, I've featured the first two blog posts byJean-Francois Bonbhelon the java.net home page. Jean-Francois is the founder of JUG-AFRICA, an umbrella for Java User Groups located in Africa. The objective behind JUG-AFRICA is to help African JUGs "collaborate globally in ways that will ultimately benefit Java developer communities locally."

As he says in his latest post, "Did you say JUG ? Java User ... What ?", Jean-Francois is a relative newcomer to Java User Groups:

Is it still possible to ask this question in 2010? Isn’t the answer obvious? Well no! It was the question I was asking myself three years ago, even though I had been working as a consultant and Java trainer for seven years. In 2007, my ex-colleague Éric Marcoux (Oracle ACE Director) suggested I join JUG Québec (Canada). I said JUG ? Java User…What?

But, after attending JavaOne in 2008, he quickly recognized the benefits of the type of interaction and collaboration that Java user groups facilitate:

Several months later, I went to JavaOne 2008 and when I saw so many developers, architects, engineers from so many countries and so many amazing projects... and heard Matt Thompson (ex-SUN) and nearly 40 JUG Leaders talk about importance of the Java community at «Think Globally and Act Locally» session and met Micheal Levin the co-founder of the impressive West African JUGin Senegal, the question wasn’t «What’s a JUG?» anymore but rather «How can a sense of community and belonging be fostered among Java developper in Africa ?». For me the need of JUG-AFRICA became evident.

All African JUGs are invited to participate in JUG-AFRICA. To stay in touch with JUG-AFRICA happenings, all that's necessary is to subscribe to one or both of the JUG-AFRICA mailing lists.

JUG-AFRICA is off to an impressive start. Already, 12 African JUGs are affiliated with JUG-AFRICA:

                                                                                     
CountryJUGJUG-AFRICA Contact
CountryJUGJUG-AFRICA Contact
 Nigeria AbujaJug Bulama Yusuf
 Congo (Kinshasa) RDC-JUG
 Popol Kayembe
 Togo TogoJUG Bertin Abiassi
 Egypt MUFIX Hamada Zahera
 Congo (Brazzaville)   CongoJUG  Jean-François Bonbhel  
 Cameroun CamerJUG
 Georges Youmbi
 Tunisia TnJUG Fadj Zayen
 Egypt EGJUG Ahmed Hashim
 Malia MaliJUG Issa Douroure
 Senegal(West Africa) The West African Java User's Group Lamine Ba and Michael Levin
 Angola Guj-Ang Josemar Magalhàes
 Marocco MaroccanJUG Moncef Fadal

Jean-Francois concludes his Did you say JUG? post with:

After talking with Java developpers across Africa, I think JUG-AFRICA could help address

  • How to take part in international and regional events ?
  • How to increase the visibility of the communities accross the word ?
  • How to create link with Java communities across the word ?

As lukman_jaji says in his comment to the post, JUG-AFRICA is a "wonderful idea."


In Java Today, James Gosling reports that Life@Oracle is starting busy...:

The "on the Java road" part of my job@Oracle is starting with a busy time: * I'll be starting off at TheServerSide Java Symposium in Las Vegas. I'll be doing a keynote and a panel. EE 6 will be front and center. With luck, the Demo Gods will smile ;~) * Then I'll be at Tech Days in Hyderabad, India. Tasty food, sunshine, and enthusiastic developers are a great combination. * After a week back home, I'll be at the Tech Days event in St Petersburg, Russia (not Florida: no dolphins swimming by the hotel's beach)...

Terrence Barr provides a reminder: JavaOne 2010 – Call for Papers (closes March 14):

Just wanted to make sure you’ve seen this: As reported before, JavaOne will be co-located with Oracle OpenWorld the week of September 19, 2010. The Call for Papers (CFP) went out a couple of days ago. This year’s topics related to the mobile, media, and embedded space are: * Java ME and Mobile; * Java for Devices, Card, and TV; * The Java Frontier (aka “Cool Stuff”)...

On the Continuous Blog, Tyler Ballance invites us to Learn about CI with Hudson (SF Java User Group):

A few weeks ago our fearless leader Kohsuke Kawaguchi joined theSan Francisco Java Users Group to talk about continuous integration with Hudson. Thanks to Marakana for organizing the meetup, andAleksandar Gargenta for posting the video and slides, embedded below...

In other java.net Weblogs, Juliano Viana talks about Java Enterprise Development - 2010 style:

I woke up the other day and realized its 2010. When I was a kid, year 2000 was far, far away (well not quite, but hey when you are 7 years old 13 years is a long time). In 2001 we were supposed to be colonyzing the moon.  In 2010, Jupiter would be within our reach.  And there are reliable reports indicating that  9 years from now flying cars and aritificial life forms should be common place. I must admit: the kid within me feels kind of disappointed. On the other hand...

Masoud Kalili tells us How to prepare for, and install GoDaddy SSL certificate into GlassFish v3:

Here are steps showing you how to prepare and install a SSL certificate purchased from Godaddy into GlassFish v3 server. To learn more about Godaddy certificates and step to buy a certificate you need to take a look at http://www.godaddy.com/ssl/ssl-certificates.aspx?app_hdr=. After you understand what Godaddy offer and whether it suites your requirement you can use the following steps to get and install the certificate into GlassFish. Generate a keypair for your server using the following command...

In the Forums,galato is seeing issues with JXME to JXME: Hi all, I have two JXME peers residing behind a firewall/NAT both discovering a RDV/RLY peer that is in the public domain. Once each peer discovers the PipeID of the server pipe that each one of them advertizes they both get into a loop...

In the GlassFish forum, s1024 has a question regarding v2ur2 log settings: How do I set the logging so that the file size is the default 2 MB but have no more than say 10 log files. I think we can set the time, but that is not sufficient in my situation. If there is no such setting, then does anyone have a fix for the problem?

Idanjose has a question about the LWUIT Calender: Hi , Do anybody know, how to set the focus to the current date on the calender?? When I opened the calender, the date is getting set to the date I want , but the focus is not the set on the same date, the focus is on a random date depends on te...


Our current Spotlightis the LWUIT Featured App Gallery: Shai Almog's recent blog post, "Latest & Greatest In The LWUIT Featured Apps Gallery", highlights 13 new applications from the LWUIT Featured App Gallery. Multiple views of each application are presented. Currently 80 different LWUIT apps are featured in the gallery.


Our current java.net Poll asks How far back should Java retain backwards-compatibility? Voting will be open until Friday.


Our latest java.net Feature Article is Has JDBC Kept up with Enterprise Requirements? by Jesse Davis; in the article, Jesse invites us to look beyond Type 4 architecture to address the latest requirements of the enterprise Java ecosystem. We're also featuring Adhir Mehta's Java Tech article, Web Service Simulatino Using Servlets; and Maven Repository Managers for the Enterprise, by John Smart.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

 

This week's java.net Spotlight is the LWUIT Featured App Gallery, and along with it, Shai Almog's related post, "Latest & Greatest In The LWUIT Featured Apps Gallery". If you haven't visited the featured app gallery before, it provides multiple screenshots of about 80 different LWUIT applications. LWUIT, in case you're not familiar with it, is the Lightweight UI Toolkit. It's a project hosted on java.net. Here's the project preface:

Writing appealing cross device applications today in Java ME is challenging. Due to implementation differences in fonts, layout, menus, etc. the same application may look and behave very differently on different devices. In addition much of the advanced UI functionality is not accessible in LCDUI and requires the developer to write very low level "paint" type code. The Lightweight UI Toolkit was developed to address these issues. The Lightweight UI Toolkit makes it very easy to create compelling UI's that will look and behave the same on all devices using a programming paradigm similar to Swing. This Toolkit is able to run on CLDC1.1 MIDP2.0/CDC PBP/SE.

LWUIT Version 1.3 was released on December 15, 2009. There is an LWUIT blog, and a fairly active LWUIT forum. There are video demos of LWUITavailable on YouTube. A tutorial is available: slides (PDF) and accompanying audio(Jonathan Knudsen) and sample code (a NetBeans project). And, there is a hands-on exercise that includes a design document (PDF) and skeleton project (a NetBeans project).

https://lwuit.dev.java.net/nonav/images/DrumBox1.png

Shai's post highlights 13 recent additions to the gallery, including Drum Box(pictured above). Drum Box is:

a pattern based drum sequencer with over 40 drum instruments to choose from. Works on most recent Nokia and Sony Ericson handsets. Edit patterns, string them together into a song, and export it as a MIDI file to play as a ringtone, or to import into a desktop music package.

https://lwuit.dev.java.net/nonav/images/itinerdemo7.png

The Itiner application:

[provides] users with traveller's information on mobile phones.Thanks to the effective data compression, the application displays public transportation timetables without the need for Internet connection (off-line).Cooperating with the bus or tram tracking system in a city, it can provide information about real waiting times for a given line (on-line).

See Shai's post for more recent additions to the gallery, or visit the LWUIT Featured App Gallery itself to view screenshots of 80 or more LWUIT applications.


In Java Today, Joe Darcy talks about Notions of Floating-Point Equality:

Moving on from identity and equality of objects, different notions of equality are also surprisingly subtle in some numerical realms. As comes up from time to time and is often surprising, the "==" operator defined by IEEE 754 and used by Java for comparing floating-point values (JLSv3 §15.21.1) is not an equivalence relation. Equivalence relations satisfy three properties, reflexivity (something is equivalent to itself), symmetry (ifa is equivalent to b, b is equivalent toa), and transitivity (if a is equivalent to band b is equivalent to c, then a is equivalent to c)....

The java.net JavaTools Communityannounced JavaTools Community Newsletter - Issue 210:

A new edition of the newsletter is available, with news, new projects and tips! If you want to receive the newsletter by email, please subscribe the announcements mailing list - or read the current issue here.

Adam Bien notes that Jigsaw / JDK 1.7 Will Be the Solution for 80% of the Modularization Challenges:

Jigsaw will come with JDK 1.7 and is now part of the openjdk project and so opensource. Other JDK implementations could simply reuse it.It will become interesting, because: 1. It will be shipped with every Oracle / Sun JDK 1.7 (at least it was the plan). 2. Jigsaw will partition JDK 1.7 and will be loaded before most of the rt.jar code. So is already there - no reason to introduce another framework. 3. Its pragmatic: you can split packages across modules...

In the Weblogs, Markus Karg presents Database Schema Viewer: What do you like to see added?:

For meanwhile more than 25 years I am writing computer programs. More than a decade I spent with programs accessing databases, virtually always relational ones. I soon learned that this is rather hard work. Not only that you need to know about the theory behind RDBMS iself, but also you need to know the technical APIs (like ODBC, ADO, RDO, JDBC, JDO, JPA, CMP, ...), the structure of the database itself ("Schema": table names, keys, data types, etc.) and it's management system (like Oracle, Microsoft, Sybase, etc.). And certainly there are lots of tools. I've seen come-and-go so much different tools, all of them blown with lots of never used features. Each different to use and to install...

Jean-Francois Bonbhel has written his first java.net blog post,Welcome in my page at Java.net:

Hi, Welcome in my page at Java.net, thanks for Sun, Oreilly and Java.net  community. I'm already blogging here http://www.bonbhel.com, but in this blog,  there will be another things related to Java technologies, JUGs in Africa, the  sense of community and belonging among Java developper in Africa and some time  the point de vue of Java community in Africa etc...

Bhavani Shankar documents Running SailFin CAFE applications on Oracle Communications Converged Application Server -- preliminary notes:

Installing OCCAS: Install OCCAS 4.0 under directory /opt/oracle (here in after referred to as OCCAS_HOME), and configure a domain by running OCCAS_HOME/wlserver_10.3/common/bin/config.sh (with all default options). With that, you will have a domain created at OCCAS_HOME/user_projects/domains/base_domain...

In the Forums,okaner is working on a LWUIT screen UPDATING problem: hi .. I have an interesting problem with LWUIT.. LWUIT does not refresh or does not paint screen, after spend some time in program... I think, it could be related with free memory... If i put program to background and then if i bring it to...

ltouve has questions regarding Running Glassfish in an existing Felix Installation: I'm trying to run glassfish (the latest V3 release) within our existing Felix installation (Version 2.0.1). I've tried using Sahoo's embeddedgf deployer, but I'm having problems. I'm also using Felix's web admin console. When I start the embeddedgf...

In the Java SE forum, neighbor demonstrates a Memory leak of java.lang.ref.WeakReference objects inside JDK classes: The following simple code reproduces the growth of java.lang.ref.WeakReference objects in the heap: public static void main(String[] args) throws Exception { while (true) { ...


Our current Spotlightis the LWUIT Featured App Gallery: Shai Almog's recent blog post, "Latest & Greatest In The LWUIT Featured Apps Gallery", highlights 13 new applications from the LWUIT Featured App Gallery. Multiple views of each application are presented. Currently 80 different LWUIT apps are featured in the gallery.


Our current java.net Poll asks How far back should Java retain backwards-compatibility? Voting will be open until Friday.


Our latest java.net Feature Article is Has JDBC Kept up with Enterprise Requirements? by Jesse Davis; in the article, Jesse invites us to look beyond Type 4 architecture to address the latest requirements of the enterprise Java ecosystem. We're also featuring Adhir Mehta's Java Tech article, Web Service Simulatino Using Servlets; and Maven Repository Managers for the Enterprise, by John Smart.


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.

-- Kevin Farnham
O'Reilly Media
Twitter: @kevin_farnham

 

Filter Blog

By date: