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 Davis addresses 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.
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
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.
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)...
After an exciting week that saw the rushed release of Hudson 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 the Translation Assistance plugin, the 1.352 release includes the subtle enhancement of hyperlinking URLs in the console output...
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...
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...
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...
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...
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.