Skip navigation

The voting in last week's java.net poll about the new JavaFX 1.3 release suggests developers find the new user interface enhancements and performance improvements to be the most important enhancements in the new release. A total of 279 votes were cast, with the following results:

What is the most important enhancement in JavaFX 1.3?

  • 35% (97 votes) - New User Interface controls and layout enhancements
  • 3% (7 votes) - Enhanced CSS support
  • 9% (26 votes) - 3D support
  • 3% (9 votes) - TV application support
  • 23% (64 votes) - Performance improvements
  • 2% (6 votes) - Mobile app enhancements
  • 24% (66 votes) - I don't know
  • 1% (4 votes) - Other

No comments were posted to the poll, though four people voted "Other".

I'd guess that the high number of "I don't know" votes more reflects the fact that a lot of developers have never worked with JavaFX, than that they know JavaFX but don't have a view on the new 1.3 release.

It's interesting that "TV application support" received so few votes. This topic has received a lot of publicity in the past. But, TV applications in general seem to be being talked about a lot less today than was the case a few years ago.

I wonder if the reason "Mobile app enhancements" received so few votes is that developers are using JavaFX mostly for developing desktop applications? Or is it perhaps that it's more or less taken for granted that JavaFX is suitable for developing mobile apps? Or, that the changes in 1.3 related to mobile apps just aren't considered that important?

New Poll: NetBeans IDE 6.9 Beta

The new java.net poll asks Do you plan to download the new NetBeans IDE 6.9 Beta release?The poll will run for the next week.


In Java Today, Arun Gupta presents TOTD #131: Dynamic OSGi services in GlassFish - Using ServiceTracker:

OSGi is the dynamic module system for Java. Each module, or bundle as called in OSGi terminology, is packaged as a JAR file and the inbound and outbound dependencies are explicitly defined using the META-INF/MANIFEST.MF in the JAR file. A complex software system may be broken into multiple modules where each module may be exposing a set of services. These services are then consumed by some other "client" OSGi bundles. The beauty of dynamic nature of OSGi is that each bundle can be easily updated without restarting the framework...

Tor Norbye presents an IDE tip: Go To Implementation:

One of the best parts of using an IDE instead of an editor is "Go To Declaration". When you hold the Control key (or the Command key on Macs), identifiers under the mouse turn into hyperlinks and when you click on the hyperlink you jump to the declaration point of say the method call. You can also just hover over the hyperlink, and a tooltip will pop up and show you the signature of the identifier - the fully qualified type name, method arguments, and so on. But what if the thing you are pointing at is an interface? Or an abstract class? ...

Geertjan Wielenga discovered the Keyboard Shortcut Card for NetBeans Macophiles!:

Good news for Mac users of NetBeans IDE. In 6.9, when you're using the Mac and go to Help | Keyboard Shortcuts Card, you will get a Mac-specific keyboard shortcut card...

Derek White says "It's Not About the Robots":

Dean Kamen, serial inventor and founder of FIRST (For Inspiration and Recognition of Science and Technology), often says this phrase at regional and championshipFIRST Robotics Competitions. What is it about? This is my first year with skin in the game

We've just published a new article, Rapid Web Services Development with Moose XML, by Michael Quigley. Moose XML is a framework Michael began working on after having "experienced some of the rough edges in existing XML marshalling solutions when used in web services environments." Michael says:

This article will give you a quick tour of Moose XML. I'll start by showing you the basics of creating a mapping. I'll finish by showing you how this can be plugged into Spring Web Services, creating a rapid web services development stack. We'll create a simple "purchase order" web service, allowing for storage and retrieval of simplified purchase order data.

The article has code snippets that illustrate how to utilize the Moose XML framework to both speed up and simplify the task of developing "contract last" web services (support of "contract first" development approaches is planned for future Moose XML releases). Michael illustrates:

  • Creating the Mapping (between object data and its XML representation)
  • Marshalling and Unmarshalling
  • Spring Web Services Integration with Moose XML
  • Building the Example from the Source Distribution

Early in the article, Michael notes that:

Moose XML's schema generator is what distinguishes it from the other frameworks. The schema generator can generate an XML schema directly from your annotated Java beans.

In his conclusion, Michael states:

There are many tools and frameworks for getting XML data into and out of Java applications. Moose XML tries to smooth some of the rough edges that are typically encountered when prototyping and rapidly developing XML web services. In these scenarios, generating the schema and contract information from code ("contract last") seems to be the least cumbersome methodology.

Take a look at Rapid Web Services Development with Moose XML if you're engaged in developing contract last web services, and you need a framework that will enable you to be more productive. And if your platform includes Spring, Moose XMLis ready to assist there as well.


In Java Today, Shai Almog presents Musix On The BlackBerry Device:

I got a demo device from TriPlay to show off Musixrunning on the blackberry device using the blackberry native LWUIT port. The UI worked pretty smoothly and was relatively easy to port, most of the work in porting was related to networking on the RIM devices which is really complicated. While the menus/UI is in Hebrew the application shows off background downloading with decryption on the fly...

Alexis Moussine-Pouchkine discusses WEB-INF/lib/{*.jar}/META-INF/resources:

Modularity is one of the themes for Java EE 6 and servlet 3.0 fragments one often mentioned as one examples of this (see details here). This blog entry is about a small yet very useful new feature of the servlet 3.0 specification to deal with static content such as images, CSS or JavaScript. Before servlet 3.0, images could be made accessible from the root of the web applications but that meant copying the files to the WAR archive and keeping them up-to-date. This certainly meant a solution tightly coupled with the web application development and packaging. The other option was to place this static content in the docroot of the application server...

Pelegri posted CLI, Roller, Jersey, JavaOne... and More GlassFish News - April 27th, 2010:

Install and Run Apache Roller 4.01 on GlassFish and OpenSolaris: Dave Koelmeyer has posted Detailed Instructions on how to install Apache Roller 4.01 on GlassFish v2.1 using MySQL 5.1 for storage.  He uses OpenSolaris snv_134, the subject of a tea-leaf-reading thread. Slides and Code Samples on Jersey and JAX-RS: The Slides and code from Paul Sandoz's presentation at Presentation at AlpesJug on Jersey, JAX-RS and Atmosphere are now now available.  The actual presentation was in French, but the slides are in English, and the code is... code. Invoke OSGi Service from JAX-WS Endpoint ...

Mitchell Pronschinske presents A Guide to Maven 3 Beta:

In just over six years, Apache Maven has become one of the most coveted tools for project build and reporting management. It's been five years since the release of Maven 2 and now the Maven committers have released the next landmark version of the software. The first beta release of Maven 3, which is now feature complete after 7 public alphas, was released this week. Maven founder and Sonatype CTO Jason van Zyl answered some questions for DZone about Maven 3 earlier this month. Below are the main new feature categories of Maven 3...

In the Weblogs, Calvin Austin talks about the Easiest way to ship buggy applications:

Do you remember the email you got to tell you that your jre had a vulnerability? No? What about the fact that Java 5 is in an end of life phase. Given the time it has taken for Java 7 to appear its has somewhat slowed the normal EOL pace of the Java platforms. You may not know that Java 1.4.2 for business will be supported commercially until April 2018, which is kind of mind-boggling. Thats like offering support for Windows 95 even now. At some point you should move and I would recommend most developers to be at least on Java 6 as its going to be around for a while...

Michael Van Geertruy has posted his first two blogs on java.net. His second post presents The Three Phases of FESI research:

FESI is the Free and open source software EnterpriseSolutions Institute. We are a research program designed to study tomorrow's internet technologies as a means to teach folks in the local workforce how to use technologies our customers will likely want to implement.  We also perform this research to prepare local engineers with the knowledge and skills to help introduce newer technologies into existing enterprises.  Finally, the integration code we create will be uploaded to java.net and available to everyone under the GPL. To achieve these goals, we will roll out our initial research in three phases: phase one we will complete setting up the research program and introduce members to some of the core technologies we work with, phase two we will construct a web-application using well established technologies, and phase three we will begin replacing the well-established technologies with cutting edge (but proven) technologies...

In the Forums,hyan85 has a question about Metro 2 Support for SpnegoContextToken?: Hello: I am working on web services project, which uses WCF-generated wsdl to create Java clients to call web service provided by our vendor. Unfortunately, the Java client fails. I use metro 2 wsimport utility to create a Java client code and...

In the LWUIT forum, njafelle asks if Font and setDefaultFont doesn't work?: Hi all, I'm Nicolas and I trying to put in the Midlet this line of code:Font.setDefaultFont(Font.createSystemFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN, Font.SIZE_SMALL)); but the main problem is that doesn't work and...

In the GlassFish WebTier forum, jweight notes ui:composition with template behaving strangely: I am seeing some strange behavior when trying to convert a JSF 1.2 app in GF2 to JSF 2 in GF3. It worked fine previously. Here is the problem. I have a simple page as follows...


Our Spotlightthis week is the NetBeans IDE 6.9 Beta Release:

NetBeans 6.9 Beta introduces the JavaFX Composer, a visual layout tool for visually building JavaFX GUI applications, similar to the Swing GUI builder for Java SE applications. Additional highlights include OSGi interoperability for NetBeans Platform applications; support for JavaFX SDK 1.3, PHP Zend framework, and Ruby on Rails 3.0; as well as improvements to the Java Editor, Java Debugger, and issue tracking, and more. NetBeans 6.9 Beta is available in English, Brazilian Portuguese, Japanese and Simplified Chinese, as well as in several community-translated languages. Learn more: http://netbeans.org

This week's java.net Poll asks What is the most important enhancement in JavaFX 1.3? The poll will be open through Friday.


Our latest Feature Article is Michael Quigley's Rapid Web Services Development with Moose XML, which shows you how Moose XML can simplify the task of prototyping and rapidly developing XML web services. We're also featuring The Match Maker Design Pattern - a New Place for the Actions, by Michael Bar-Sinai, which describes how to add actions to a system without modifying business objects, add objects without changing actions, and still keep things reusable; and HTML5 Server-Push Technologies, Part 2 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5.


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

JavaOne 2010 is just around the corner! Well, sort of. While JavaOne 2010 doesn't actually happen until almost five months from now (September 19-23), the call for papers has already closed. That means, for people like Sharat Chander, the JavaOne Content Selection Chairperson, JavaOne 2010 really is just around the corner.

Tori Wieldt recently interviewed Sharat, and has published JavaOne 2010: Interview with the Sharat Chander, Content Selection Chairperson:

 
There's lots of buzz about the content for JavaOne 2010. I took a moment to talk with Sharat Chander, Principal Product Director in Oracle's Application Grid Product Marketing Team, about the content selection process for JavaOne.

Tori asked Sharat "what's your role in relation to JavaOne?"

Sharat: For the past four years, I've served as the one of Track Leads assigned to review and grade abstracts received during the Call for Papers(CFP). This year, I'm serving as the overall Chairperson for content selection for JavaOne 2010. Individuals can learn more about this year's Conference at: http://www.oracle.com/us/javaonedevelop/062264.html.

With regard to the number of submissions received, Sharat says "the community has definitely given us a challenging job in determining what submissions to approve for the event (a nice problem to have!)" The paper/session selection process is similar to what has existed in recent years. Starting in mid-May, emails will be sent out to people whose submissions have been accepted. Some time in June, the final sessions list will be posted to the JavaOne site.

Sharat cites three ways you can keep abreast of JavaOne 2010 news:

Read the full interview for more details.


In other Java Today news, Arun Gupta presents TOTD #130: Invoking a OSGi service from a JAX-WS Endpoint - OSGi and Enterprise Java:

Sahoo blogged about JAX-WS Web service in an OSGi bundle. This TipOf The Day (TOTD) provides complete steps to create such an application from scratch. We will create an OSGi service, a JAX-WS compliant Web service as hybrid application, and a JAX-WS Web service client. Lets create an OSGi service first. 1. Create a simple OSGi service as explained in TOTD #36. Generate the maven project as...

Dustin Marx compares and contrasts Turn Signals and Coding Conventions:

In How Turn Signals Work, Karim Nicewrites "Turn signals may be the most underutilized device on a car." I sometimes feel that when I witness drivers who cannot be bothered with indicating their intentions through use of a turn signal. Besides being simple common sense, the importance of using a turn signal to convey intentions to others is documented by multiple groups and individuals including driver safety informational sites, automobile insurance sites, law firms and legal information sites... Coding conventions are much like turn signals in that they are often a preferred and expected form of communication between developers who might not have an easier way to communicate the same information. Unfortunately...

David Geary continues his JSF 2.0 article series with JSF 2 fu: Ajax components:

Among JSF 2's many new features, two of the most compelling are arguably composite components and Ajax support. But their strength is most apparent when the two are combined, making it easy to implement Ajax-enabled custom components with a minimum of fuss. In this article, I'll show you how to implement an autocomplete component that uses Ajax to manage its list of completion items. In doing so, you'll see how you can integrate Ajax into your own composite components...

In the Weblogs, Bruno Ghisi introduces DIME - Dependency Injection for Java ME:

My masters colleague, Guilherme Hobold, and his friend, Elinton Machado, have created a very interesting project for helping Java ME applications with dependency injection. Actually, it is not only for Java ME (CLDC), but because of there is no reflection, they have done some magic to make it work in a nice way. The project is called DIME, which means Dependency Injection for Java ME. Basically it has a XML to configure the beans (it depends on kXML lib for parsing), a container to get the beans and the classes have to implemented a Bean interface that provides access to the hash table that is used to set the correct values...

Masoud Kalili presents Learning GlassFish v3 Command Line Administration Interface (CLI):

Terminals and consoles was one of the earliest types of communication interfaces between a system administrator and the system administration layer. Due to this long time presence, command line administration consoles become one the most utilized administration channel for configuring different software ranging from database engines to router

We've just published Michael Bar-Sinai's new article, The Match Maker Design Pattern - a New Place for the Actions. In this article, Michael tackles some of the problems associated with object-oriented design within the context of the changing requirements that the real-life business world imposes on software applications over time. To see what I mean, here's Michael's opening paragraph:

Software systems often deal with similar concepts, whose behavior differs only slightly. Classic Object-Oriented design deals with such cases using inheritance; overriding thecalculateSalary() method in differentEmployee subclasses allows the rest of the application to remain oblivious to the subtle differences between the salary algorithms of Manager, Engineer, andAnnoyingCeoNephew.

In the article, Michael presents a solution that, while not a "silver bullet", provides benefits that work in a majority of real-life cases where you're updating software applications to address changed business requirements. His section "Dealing With New Classes On The Fly" opens with:

A MatchMaker instance does hold aMap mapping classes to handlers, but with a twist. When it is given an instance of a class for which a handler was not explicitly specified, it embarks on a breadth-first search (BFS) up the class hierarchy, starting from that object's class, looking for a class for which a handler was explicitly specified. A property of BFS is that it ensures that the class found is the closest one to the original object's class. Note that there might be a few classes with the same distance.


Figure 1. Class hierarchy and handlers example.

The article contains plenty of code snippets that illustrate the match maker technique. Michael concludes the article with this summary:

We have seen the Match Maker pattern, which allows programmers to:

  • add actions on objects without modifying the objects those actions operate on;
  • add objects and have appropriate actions automatically operate on them; and
  • work on a subclass while holding only a superclass reference to it, without downcasting.

We have seen two implementations, one simple yet not statically type safe, and one effectively type safe. Creating a full statically type safe solution is left as an exercise to the reader, providing the reader is looking for a subject for a PhD thesis.

I have used this this pattern in production code for analyzing emails, drawing tables, building UI, and handling JMS messages; I hope you'll find it useful too.

As you can see, not only is The Match Maker Design Pattern - a New Place for the Actionsinteresting and informative, it's also fun to read!


In Java Today, Frank Kieviet, departing manager of the OpenESB project, presents Working with java.net: tips and tricks for project owners:

In the past two years I've managed the OpenESB open source project. This project is hosted on java.net. In this post I outline a number of tips and tricks I've learned while managing this project on java.net. This is useful information for my successor, but it also may be useful to other people who are managing projects on java.net. Web presence: An important factor in the success of an open source project is its web presence: it will be the first point of contact between a potential new user and the project. New visitors will want to see answers to these four items immediately...

Pelegri presents Fundamo, OSGi, iPad.. and More GlassFish News - April 24rd, 2010:

Financial services on the go - GlassFish for Fundamo and profit: Alexis recently published a new Adoption Story on how Fundamo uses GlassFish v2 and OpenMQ for its Enterprise Platform. Overview at stories entry, details in questionnaire, and an overview in this earlier short video interview. We are always interested in more GlassFish adoption stories, both from (non-paying) users and from (paying) customers.   Stories come from all industries and around the world, the last few entries are PSA Peugeot Citro

We've just published the second and final part of Gregor Roth's series, HTML5 Server-Push Technologies, Part 2. In this part, Gregor goes into detail about the new HTML5 WebSockets protocol, then presents conclusions regarding both WebSockets and Server-Sent Events (covered in detail in Part 1 of the series).

Gregor introduces WebSockets as a technology that:

enables establishing a bidirectional communication channel. In contrast to Server-Sent Events, the WebSocket protocol is not build on top of HTTP. However, the WebSocket protocol defines the HTTP handshake behaviour to switch an existing HTTP connection to a lower level WebSocket connection. WebSockets does not try to simulate a server push channel over HTTP. It just defines a framing protocol on top of TCP. In this way WebSockets enables two-way communication natively.

WebSockets provide a capability to transmit data within a sub-protocol over HTTP. Data is transferred in WebSocket "frames" that include either text (delimited by a starting 0x00byte and an ending 0xFF byte) or binary data (binary frames start with 0x80 and a set of bytes that define the length in bytes of the binary data that follows).

Gregor notes that:

Because JavaScript cannot operate with binary data represented as a byte array, the binary frame type is limited to be used for languages other than JavaScript. In addition the binary frame and text frame, new frames types can be introduced by future releases of the WebSocket protocol specification. WebSocket's framing is designed to support new frame types. A connection can be closed at any time. No extra end-of-connection byte or frame exists.

One of the primary advantages of both Server-Sent Events and WebSockets is that the protocols provide for transmission of data with very low overhead (unlike Comet protocols like Bayeux and BOSH). Gregor provides examples of HTTP requests and responses that embed WebSocket protocol data, and provides example Java client and server examples that show how to implement a WebSockets-based application.

In his conclusion, Gregor summarizes the differences and similarities between WebSockets, Server-Sent Events, and current Comet protocols. He then offers a prediction:

What do WebSockets and Server-Sent Events mean for popular Comet protocols such as Bayeux and BOSH? The HTML5 communication standards have the potential to substitute for the classic Comet protocols and become the dominant server-push technology, at least for new applications.

For a thorough introduction to the new HTML5 WebSockets protocol, read Gregor's HTML5 Server-Push Technologies, Part 2.


In Java Today, Terrence Berr reviews last week's significant releases in JavaFX 1.3 and NetBeans 6.9 Beta released:

A few days ago JavaFX 1.3 as well as NetBeans 6.9 Beta were released, featuring a host of significant improvements in many areas. I won’t be covering all the the changes but will highlight the most important ones and provide pointers to more information. So, let’s dive in: JavaFX 1.3 improvements...

Michael Huttermann presents Agile ALM: Additional information, discussions, source code, ..:

I have created a project on Kenai to host accompanying sources for my book Agile ALM. I added configuration and test scripts to demonstrate discussed concepts, where appropriate. Some of the scripts are contributed by the leading experts of the covered topics, others were created in close collaboration. In my book, one of the major tool backbones is Maven. As a result, most of the provided scripts are Maven scripts. Much more details will follow...

Dustin Marx posted Effective Exception Handling is Covered Effectively in Effective Java:

I recently wrote that the chapter in Effective Java devoted to exception handling has been one of the most influential software development chapters I have read. The value of this chapter was reinforced by Elliotte Rusty Harold's blog post Bruce Eckel is Wrong. Harold's main assertion is that Eckel was wrong to write that checked exceptions must be caught at time of encounter because they don't necessarily need to be caught if they are declared as part of the method's throwsclause...

Kirill Grouchnikov describes Using Flamingo 5.0 command buttons to build a breadcrumb bar:

Flamingo component suite began its life in January 2006 whenRick Jeliffe of Topologi has contacted me and proposed to open-source their own implementation of the breadcrumb bar component. In the years since i have hacked at different pieces of the breadcrumb bar implementation. As with any significant piece of code that you get to maintain and extend, it takes some time to find your way around the code, and this was no exception...

In the Weblogs, John Ferguson Smart describes Grouping tests using JUnit categories:

In a well-organized build process, you want lightning-fast unit tests to run first, and provide whatever feedback they can very quickly. A nice way to do this is to be able to class your tests into different categories. For example, this can make it easier to distinguish between faster running unit tests, and slower tests such as integration, performance, load or acceptance tests. This feature exists in TestNG, but, until recently, not in JUnit. Indeed, this has been missing from the JUnit world for a long time...

Juliano Viana talks about Cloud Appreciation:

My 3 years old MacBook Pro went suddenly dead this week. Annoying as it is, this event allowed me to experience cloud computing like never before. This notebook has been my main computer for the past 3 years. I used it for everything and carried it around wherever I went. One day this week I was using it with tons of apps open as usual (I am known to never close anything...why do we have 4GB RAM for anyway?). I closed the lid without powering off (as I always did) , put the notebook in my bag and went out of the office. A few minutes later, before even getting out of the building, I remembered I had forgotten to send an important email. I then came back to my desk and opened the lid again, but the screen remained dark. As it turns out it would remain dark forever...

In the Forums,macadams is working on a Jsf table, datasourc and glashfish display problem: I bind a mysql datasource to a netbeans visual-jsf table, it displayed fine on my system, but when i hosted the site on glashfish v2 the tables does not display. I have dumped my sql script on my cpanel and tried to configure glassfish but there seem to...

In the LWUIT forum, sachinnevase asks for help with:: TextField AutoComplete / AutoSuggestion ::: Hi Friends, I have a list of U.S States and wish to a have a feature,that will allow user to enter first few characters in textfield and show a filtered list of states starting with the characters entered something similiar to google search...

jay_b asks about JAX-WS Streaming Compatibility With Other Web Service Frameworks: I have a web service where I can potentially return a very large attachment. Ideally, I'd like to use JAX-WS MTOM streaming to send the attachment back to the client. Chances are the majority of the consumers of this web service will use .NET and Java to...


Our Spotlightthis week is the NetBeans IDE 6.9 Beta Release:

NetBeans 6.9 Beta introduces the JavaFX Composer, a visual layout tool for visually building JavaFX GUI applications, similar to the Swing GUI builder for Java SE applications. Additional highlights include OSGi interoperability for NetBeans Platform applications; support for JavaFX SDK 1.3, PHP Zend framework, and Ruby on Rails 3.0; as well as improvements to the Java Editor, Java Debugger, and issue tracking, and more. NetBeans 6.9 Beta is available in English, Brazilian Portuguese, Japanese and Simplified Chinese, as well as in several community-translated languages. Learn more: http://netbeans.org

This week's java.net Poll asks What is the most important enhancement in JavaFX 1.3? The poll will be open through Friday.


Our latest Feature Article is HTML5 Server-Push Technologies, Part 2 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. We're also featuring Biswajit Sarkar's Using Styles, Themes, and Painters with LWUIT, in which you discover how to use some of the new and enhanced features in LWUIT version 1.3; and Dibyendu Roy's Rethinking Multi-Threaded Design Principles, Part 2, which provides guidance on how to harness the processing powere of next generation multicore processors.


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

On Thursday, JavaFX 1.3 was released. We're featuring posts/articles about the new release in Java Today, and the new java.net poll features JavaFX 1.3 as well.

Pretty much everyone seems to agree that this is a major release. The What's New in JavaFX 1.3 page summarizes the most significant enhancements and changes in the new release as follows:

The JavaFX 1.3 release is a significant update featuring:

  • New and enhanced support for UI controls, CSS, and programmatic layout
  • A native JavaFX font family called Amble
  • Support for the development of TV applications, including a new TV emulator
  • Enhancements for mobile applications, with the availability of the mobile emulator on the Mac platform
  • Support and improved editing features in NetBeans IDE 6.9 Beta
  • New features and enhanced performance in JavaFX Production Suite
  • Bind performance: 2-3x faster
  • Applet start-up time: 20% faster (with Java SE 6u18+)
  • Text Animation: 5-10x faster (frames per second)
  • Highly complex animations: up to 10x faster (frames per second)
  • Memory usage: 20-33% reduction (real-world apps, with Java SE 6u18+)
  • UI Controls: 50% faster, 33%-50% less memory (typical)

In Java Today, we're featuring JavaFX 1.3 Released, Improves User Experiences from the JavaFX Blog; Stephen Chin's JavaFX 1.3 Top 10; and Your Calendar PWN3D: Leveraging the JavaFX SCENE3D ConditionalFeature by James Weaver.

Our new java.net poll asks What is the most important enhancement in JavaFX 1.3?

Last week's poll result

Last week's poll, which was suggested by Eduardo Pelegri-Llopart, asked for people's reactions to certain licensing changes recently made by Apple. A total of 275 votes were cast, with the following results:

What's your reaction to the new cross-platform compiler restrictions in the iPhone Developer Agreement?

  • 10% (28 votes)- It's a good strategic move for Apple
  • 13% (35 votes) - I used to like Apple; now I'm reconsidering
  • 46% (127 votes) - This limits developers, and will ultimately damage Apple itself
  • 20% (56 votes) - Who cares?
  • 7% (19 votes) - I don't know
  • 4% (10 votes) - Other

The consensus view among java.net voters was clear (remember that this isn't a scientific poll). I won't weigh in too much myself about this issue, because I consider myself biased (negatively) with regard to Apple. My views on Apple are fairly well represented by cajo's comment, "Remember -- Power to the people?":

Guess I'm getting older, but I remember my Apple ][ came with full schematics, BIOS listings, everything needed to experiment with, and extend the platform. It really got me started in Computer Science and Engineering. I also remember well the Apple 1984 commercial, railing against the "controlled" IBM platform... What happened Steve?

But, of course, the issue does have some complexity. This is illustrated by the amount of conversation the poll elicited (six comments in all). petithug said "Way to go, Steve!":

I generally dislike Apple's products (and don't get me started on Microsoft's), something about the greatest enemy of freedom been a happy slave. But I must say that I support Steve Jobs 100% on this one. Flash, Silverlight and Java applets are the cancer of the World Wild Web. Jobs is probably not doing this for the sake of the Internet but if this could help getting rid of this diseases, then I will see the iPad in a less malevolent eye.

An unusual way of looking at it, perhaps. I mean, technologies as "diseases"? But, technology does incite passion, and I've at times been part of that too, so I understand...

pelegri (Eduardo) responded topetithug's post with "It's about more than Flash":

@Petihug - 3.3.1 is more than about Flash (or Applets, or Silverlight, or ...). IANAL, but it seems to me 3.3.1 precludes using frameworks/tools like Titanium and probably even many games as most gaming platforms are organized as a scripting layer on top of a game engine. I don't know if anti-trust laws apply here: although the iPhone/iPad is not a monopoly of the mobile market in number of units, they have a large portion of the $$ of the Apps market. But even ignoring that, I don't see how this clause can stay as-is. If Apple enforces it for Adobe but not for others, there will be a lawsuit. If they enforce it everywhere, there will be a big backlash. In any case, it will be very interesting to see how the discussion evolves.

Eduardo also posted "Summary of Posts on this topic":

I wrote a note collecting and commenting on several of the most interesting pieces on this topic. Check out 3.3.1 is more than just about Flash.

Almost as soon as the poll went live, goronsaid:

I'm curious how relevant this question is on java.net; it would be interesting to see the same poll ran on an Apple dev forum.

That would be an interesting comparison, indeed. As for putting this type of poll on java.net, our poll is a fairly open forum. I certainly wouldn't run a poll asking "What is it about chihuahuas that makes them the best dog in the world?"


Topic of an upcoming java.net poll? Probably not...

But, generally, I'm open to considering a fairly wide spectrum of potential questions, especially when they are posed by someone from the java.net community. So, if you've got an idea for a java.net poll, contact me, or use the java.net Submit Content pageand select "Poll Question" in response to "Please choose where you think this item should go on the homepage."


In Java Today, the JavaFX blog announced JavaFX 1.3 Released, Improves User Experiences:

We're very excited to announce the immediate availability of the JavaFX 1.3 platform. This release represents an important upgrade to the product and delivers a range of performance and functional improvements, including: * New and enhanced support for UI controls, CSS skinning, and programmatic layout; * Performance improvements in the JavaFX Runtime * New NetBeans IDE 6.9 Beta with improved editing and an updated JavaFX Composer plug-in * New features and enhanced performance in JavaFX Production Suite...

Stephen Chin highlights the JavaFX 1.3 Top 10:

JavaFX 1.3 has just gone live on JavaFX.com. This release is deceptively small, but has an enormous number of changes under the hood. In this post I will take you through the Top 10 major features, giving you background information I learned from working with the JavaFX team, and flooding you with details on inthttp://forums.java.net/jive/thread.jspa?threadID=79223&tstart=0eresting tidbits you might otherwise miss...

James Weaver writes about Your Calendar PWN3D: Leveraging the JavaFX SCENE3D ConditionalFeature:

"The only reason for time is so that everything doesn't happen at once." - Albert Einstein. Although it is good that everything doesn't happen at once, it is also good, when planning the future, to be able to see everything at once. One of the current trends in user interfaces is the movement away from a page-based approach to a more fluent and spatial approach. The JavaFX application that I'd like to demonstrate for you today uses the latter approach to enable users to take full control of their calendars. Because this application uses JavaFX, it can utilize the Java version of the Google Calendar Data API directly in order to retrieve and update items in the calendar...

In the Weblogs, Juliano Viana talks about Cloud Appreciation:

My 3 years old MacBook Pro went suddenly dead this week. Annoying as it is, this event allowed me to experience cloud computing like never before. This notebook has been my main computer for the past 3 years. I used it for everything and carried it around wherever I went. One day this week I was using it with tons of apps open as usual (I am known to never close anything...why do we have 4GB RAM for anyway?). I closed the lid without powering off (as I always did) , put the notebook in my bag and went out of the office. A few minutes later, before even getting out of the building, I remembered I had forgotten to send an important email. I then came back to my desk and opened the lid again, but the screen remained dark. As it turns out it would remain dark forever...

Sahoo presents an OSGi/JMS/MDB Example:

Here is an example of yet another hybrid (OSGi + Java EE) application. This is a complete JMS consumer/producer example using OSGi and GlassFish. You can download the complete sample fromhere. How to use the sample ...

I posted a small blog pointing people to Kirill Grouchnikov's recently published Design, uninterrupted #16. Kirill says:

Today’s post highlights the design of Jen.gs, the personal website of Jen Germann. An interesting color scheme uses dark melanzane for background, light gray for main text, light blue for section headers and sunset orange for links; the orange color is also used in the main logo and two separators. The main section uses Cufon for precise and clean typography...

In the Forums,sachinnevase is seeking :: Help on implementing a Wizard Pattern in LWUIT::: Hi Guys, Need your help in implementing a Wizard pattern using LWUIT. Any pointers or sample code is appreciated. Thanks.

moogin has questions on JXTA on LAN: Hello All, I am interested in developing a P2P application that would run on an internal network with no visibility to the outside world. From what I gather, I can configure this application to find all the other peers on the network. All the...

strive has a question regarding Use of JAXB annotations in web services: Hi, Is it possible to use JAXB annotations on my web service methods so that, after I use the annotation and deploy the web service then the marshalling and un-marshalling of web service messages (XML) will be done by JAXB and it will invoke my...


Our Spotlightthis week is the Java Developer Center on the Oracle Technology Network:

Java is one of the computer industry's best known brands and most widely deployed technologies. Oracle Fusion Middleware is built on Java technology in support of applications and services written in the Java language. With the acquisition of Sun, Oracle will drive continued innovation and investment in Java technology for the benefit of customers and the Java community.

This week's java.net Poll asks What is the most important enhancement in JavaFX 1.3? The poll will be open for the next week.


Our latest Feature Article is Biswajit Sarkar's Using Styles, Themes, and Painters with LWUIT, in which you discover how to use some of the new and enhanced features in LWUIT version 1.3. We're also featuring Dibyendu Roy's Rethinking Multi-Threaded Design Principles, Part 2, which provides guidance on how to harness the processing powere of next generation multicore processors; and HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5.


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 NetBeans team has just released NetBeans IDE 6.9 Beta.

The release announcement highlights the new features in NetBeans 6.9 Beta:

NetBeans 6.9 Beta introduces the JavaFX Composer, a visual layout tool for visually building JavaFX GUI applications, similar to the Swing GUI builder for Java SE applications. Additional highlights include OSGi interoperability for NetBeans Platform applications; support for JavaFX SDK 1.3, PHP Zend framework, and Ruby on Rails 3.0; as well as improvements to the Java Editor, Java Debugger, and issue tracking, and more. NetBeans 6.9 Beta is available in English, Brazilian Portuguese, Japanese and Simplified Chinese, as well as in several community-translated languages. Learn more: http://netbeans.org

In Java Today, Frank Kieviet provides an update on OpenESB under Oracle:

It's been a few months since Oracle acquired Sun. At the time there were a lot of questions about what Oracle would do with OpenESB. On Feb 15, I posted a plan to the users mailing list. What was the plan? And how is the plan coming together? How is OpenESB doing a few months after the acquisition? What will the future hold for OpenESB? First, let's try to understand Oracle's perspective...

java.sun.com is featuring Mixing Heavyweight and Lightweight Components, an article originally published in September, written by Sharon Zackhour and Anthony Petrov:

Historically, in the Java language, mixing heavyweight and lightweight components in the same container has been problematic. However, as of the JDK 6 Update 12 and JDK 7 build 19 releases, mixing heavyweight and lightweight components is easy to accomplish. This article explains some details you might need to know...

Michael Huttermann writes about Agile ALM – Application Lifecycle Management, with Java and Lightweight Tools:

My new English book left its long running development stealth mode and is now visible publicity. It is about Agile ALM, and will be published by Manning. What is Agile Application Lifecycle Management? ALM is the intelligent composition of build-, configuration-, change-, test-, quality-, requirements-, integration- and release management. It is a comprehensive approach spanning development phases and project roles, taking care of all artifact types...

In the Weblogs, Sahoo presents an OSGi/JMS/MDB Example:

Here is an example of yet another hybrid (OSGi + Java EE) application. This is a complete JMS consumer/producer example using OSGi and GlassFish. You can download the complete sample fromhere. How to use the sample ...

I posted a small blog pointing people to Kirill Grouchnikov's recently published Design, uninterrupted #16. Kirill says:

Today’s post highlights the design of Jen.gs, the personal website of Jen Germann. An interesting color scheme uses dark melanzane for background, light gray for main text, light blue for section headers and sunset orange for links; the orange color is also used in the main logo and two separators. The main section uses Cufon for precise and clean typography...

Kohsuke Kawaguchi provides POTD: GitHub API for Java:

My project of the day (or "POTD") is GitHub API for Java — a library for accessing GitHub programmatically. As the Hudson community is embracing plugins developed in Git more and more, I needed to interact with GitHub as a part of the community infrastructure automation. I did a quick Google search to locate existing implementations, but unfortunately I couldn't find anything good. So I decided to just write my own. Thanks to a reasonable API design of GitHub and a good documentation, it was very easy to do so. The trick is to use the right library, which handles most of the JSON/Java databinding...

In the Forums, in the LWUIT forum, Klemens finds Characters not drawn in multiline password textfield: Hi, I updated to the latest source from SVN. I used the following code to create a password field: TextField passwordField = TextField.create(30); passwordField.setMaxSize(20); if (passwordField...

In the GlassFish forum, pmma is Loosing configuration changes after restart: Hello, I'm using Glassfish v3 on Windows x64 to run a ruby on rails application. After starting the server I set asadmin configure-jruby-container --jruby-home=c:/jruby and asadmin deploy test. All works...

In the Java 3D forum, sikriyogesh asks How to use ViewingPlatform to place objects proper in scene?: Hello Friends, I am back to java3d but this time with a new problem. I am creating a viewer and loading some objects. Here is the scenario from start.Creating a universe,adding canvas to it then setting viewingplatform and then setting...


Our Spotlightthis week is the Java Developer Center on the Oracle Technology Network:

Java is one of the computer industry's best known brands and most widely deployed technologies. Oracle Fusion Middleware is built on Java technology in support of applications and services written in the Java language. With the acquisition of Sun, Oracle will drive continued innovation and investment in Java technology for the benefit of customers and the Java community.

This week's java.net Poll asks What's your reaction to the new cross-platform compiler restrictions in the iPhone Developer Agreement? The poll will be open until Friday.


Our latest Feature Article is Biswajit Sarkar's Using Styles, Themes, and Painters with LWUIT, in which you discover how to use some of the new and enhanced features in LWUIT version 1.3. We're also featuring Dibyendu Roy's Rethinking Multi-Threaded Design Principles, Part 2, which provides guidance on how to harness the processing powere of next generation multicore processors; and HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5.


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

 
Fabrizio Giudici recently announced that he is taking his blueBill Mobileproject and moving it to the Android platform. Yesterday, he published some of his preliminary thoughts about Android in a JavaLobby article, Newbie Understanding of Android. BlueBill Mobile was originally programmed in JavaFX. Developing the Android version is Fabrizio's first experience in actually working with the Android platform. So, in the article, he shares some of his initial reactions. Here are a few of his newbie point-of-view findings (and ratings of Android):

 
  • Productivity (++). As Osvaldo Pinali recently said on the JavaPosse mailing list, from the programmer's point of view Android is Java: you don't learn a new language and you're confident with a good subset of the Java runtime. I was able to reuse some code I already had (simple for now, I'm going baby steps), but I know I'll scream out loud when I'll need BufferedImage. The missing Swing is a different story...
  • Software factory (+). Maven works pretty well (thanks to the maven-android-plugin) and since I've spent so many months to set up my standard software factory with Maven and Hudson, I don't want to depart from it, if possible. I've been able to use it, unchanged, for my Android project - this means that I've got immediately Cobertura coverage, Findbugs and other metrics and Hudson integration...
  • Runtime availability (-). The Android runtime is of course available for free, but it requires a graphical UI to install the real stuff (since it's downloaded from an update center). This is a PITA for my Hudson host, where I don't have a graphical console. I'll have to install it on a local Linux box and then upload a tarball. Since I'm a lazy guy, I've not done it yet and this is the reason for which there are red balls on Hudson. What about providing some text console alternatives to installation? Also, the required Maven stuff is not available at the Central Repo and you have to install it manually on your repo - fortunately it's a straightforward process and you find step-by-step instructions in the maven-android-plugin docs and links.
  • APIs not clean (--). This is the point that mostly stroke me. After so many year of bashing Swing for its 'old-style' and not completely congruent design, I really expected to find some super-clean-and-smart APIs in Android. This is not the case...

Read Newbie Understanding of Android for Fabrizio's full list of newbie Android findings. The extensive comments are also interesting.


In other Java Today news, Geertjan Wielenga completes his recent series with Creating Context-Sensitive Capabilities for File-Based Nodes (Part 4):

In this the final part of this ad-hoc series on context-sensitive actions for file-based nodes... we'll do something pretty radical

We've just published Biswajit Sarkar's new article, Using Styles, Themes, and Painters with LWUIT. LWUIT, the LightWeight User Interface Toolkit, is a java.net project:

LWUIT is a UI library that is bundled together with applications and helps content developers in creating compelling and consistent Java ME applications. LWUIT supports visual components and other UI goodies such as theming, transitions, animation and more.

In his article, Biswajit takes a look at several of the new and enhanced capabilities in LWUIT version 1.3, focusing on styles, themes, spinners, and tables. The article is packed with code snippets that demonstrate how to use the new capabilities, with corresponding screenshots showing what the code produces on the phone's screen.

Here's Biswajit's introduction:

Lightweight User Interface Toolkit (LWUIT) version 1.3, released in December 2009, consolidates the modifications over version 1.1 initiated in version 1.2 and incorporates some new ones too. It also introduces three new components -- Tree, Table and Spinner. The use of the Tree widget is demonstrated through the LWUIT Demo that comes with the LWUIT download bundle. In this article we examine the changes with respect to Style and go on to check out Table and Spinner.

While LWUIT provides the capability to apply styles to individual user interface components, in an actual application it's probably more appropriate to apply LWUIT themes. Biswajit covers the evolution of the tools the LWUIT project has provided for developing themes, from the early Resource Editor to theLWUIT Designer to the newer Theme Creator. While the older tools can still be used, the Theme Creator provides the most advanced capability when it comes to developing themes for LWUIT applications.

Biswajit covers several new and enhanced features in LWUIT version 1.3. But there's a lot more that the development team has produced in 1.3, as Biswajit notes in his conclusion:

We have seen how the approach to styling has been modified since LWUIT 1.1. We have also checked out the new Theme Creator and two new components that have been introduced in LWUIT 1.3. However, there are a number of interesting new features that have not been discussed here. These are listed in What's new in This Release in the LWUIT 1.3 download bundle.

If you're interested in some of the latest developments in LWUIT, Biswajit's Using Styles, Themes, and Painters with LWUIT provides a great introduction.


In Java Today, Arun Gupta presents TOTD #129: Managed Beans 1.0 in Java EE 6 - What and How ?:

Two new specifications released as part of the Java EE 6 platform are Managed Beans 1.0 and Interceptors 1.1. This Tip Of TheDay (TOTD) attempts to explain the basics of Managed Beans 1.0. A later blog will explain the what/how of Interceptors 1.1. A short definition for a managed bean - its a POJO that is treated as managed component by the Java EE container...

James Sugrue announces the publication of My Latest Refcard: Java GUI Development:

Today DZone releases my latest refcard on Java GUI Development. It's probably been my most challenging card to write to date, as it provides a reference for both Swing and SWT. Having used both technologies extensively in my time as a Java desktop developer, I thought that it would be worthwhile to have one single reference to use while developing Java rich client applications...

glyphter posted an interesting JavaFX Effect Example:

This is a JavaFX logo that has three-dimensional glowing effect. The Java logo (cofee cup and smoke) is also made in javafx with a glow and lightning effect of javafx. Glow and Lighting are subclasses of abstract base class javafx.scene.effect.Effect...

In the Weblogs, Kohsuke Kawaguchi provides POTD: GitHub API for Java:

My project of the day (or "POTD") is GitHub API for Java — a library for accessing GitHub programmatically. As the Hudson community is embracing plugins developed in Git more and more, I needed to interact with GitHub as a part of the community infrastructure automation. I did a quick Google search to locate existing implementations, but unfortunately I couldn't find anything good. So I decided to just write my own. Thanks to a reasonable API design of GitHub and a good documentation, it was very easy to do so. The trick is to use the right library, which handles most of the JSON/Java databinding...

Fabrizio Giudici posted blueBill Mobile goes Android:

blueBill Mobile has been initially developed for JavaFX and has been blogged about a bit in the past. I already anticipated that a version in JME was in the pipeline; in the meantime, since unfortunately there hasn't been any announce from Oracle about JavaFX for Android phones, I started the development of a specific Android version. It is important also for start involving some users, as I've been unlucky in finding a good number of them able to test JavaFX Mobile applications...

Alexander Schunk posted his first java.net blog since early 2008, JMath a Java API for doing math:

Hello. I would like to introduce JMath project. JMath is math API for doing serious math with Java. With JMath you can do linear algebra, set calculations, general math calculations such as arithmetics, fractions and the like. Also, with JMath you will be able to do serious statistics. Origin of JMath is the former LinAlg API. LinAlg API is part of JMath is now being developed by SysConsult IT Consulting Company...

In the Forums,rsoika asks about JAX-RS in GF 2.1 and EJB injection?: I just started to implement a JAX-RS REST service in GF 3. My implementation need to access EJBs which are deployed in the surrounding EAR of my WAR file. To use the dependency injection (@EJB) I read about the need to add a @stateless...

In the LWUIT forum, majingazetto is working a Problem with BlackBerry Touch Implementation. (Uncaught exception): Hi! I have a problem with the CLDC version (UiApplicacion) for BlackBerry Touch. I have tried two different versions of this implementation and I get the same error: Uncaught exception: java.lang.ClassCastException ...

In the Metro and JAXB forum, latharanjanis has a strange situation where JAXB instance creation takes 8 minutes: Hi All, I am working on a Java desktop application which is installed on a shared drive on the windows server. While creating a JAXB instance from a client machine, it takes around 8 mins to create instances. All the classes are present in the...


Our Spotlightthis week is the Java Developer Center on the Oracle Technology Network:

Java is one of the computer industry's best known brands and most widely deployed technologies. Oracle Fusion Middleware is built on Java technology in support of applications and services written in the Java language. With the acquisition of Sun, Oracle will drive continued innovation and investment in Java technology for the benefit of customers and the Java community.

This week's java.net Poll asks What's your reaction to the new cross-platform compiler restrictions in the iPhone Developer Agreement? The poll will be open until Friday.


Our latest Feature Article is Biswajit Sarkar's Using Styles, Themes, and Painters with LWUIT, in which you discover how to use some of the new and enhanced features in LWUIT version 1.3. We're also featuring Dibyendu Roy's Rethinking Multi-Threaded Design Principles, Part 2, which provides guidance on how to harness the processing powere of next generation multicore processors; and HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5.


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 Java Developer Center on the Oracle Technology Network (OTN). Java has long been a core technology for Oracle. But with the 2008 acquisition of BEA and this year's acquisition of Sun, Oracle becomes the most significant vendor of Java-centric products globally.

Here's the updated introduction on the OTN Java Developer Center:

Java is one of the computer industry's best known brands and most widely deployed technologies. Oracle Fusion Middleware is built on Java technology in support of applications and services written in the Java language. With the acquisition of Sun, Oracle will drive continued innovation and investment in Java technology for the benefit of customers and the Java community.

The OTN Java Developer Center includes a What's New feed; links to information on Java focus areas (for example, JavaSE, JDBC / Java in the Database, JavaFX, and Eclipse); technical articles and how-tos; Oracle's Java Bloggers; and forum discussions.

I've visited the OTN intermittently in the past, scanning for interesting Java articles, etc., that I might point people to in our java.net Java Today section. The enhanced Java Developer Center is a much richer resource for Java developers than what Oracle offered as recently as six months age. The "Oracle's Java Bloggers" list is particularly interesting to me. There I see many bloggers whose blogs I already subscribe to; but a few quick clicks on bloggers I wasn't familiar with brought me to some very interesting blogs. I'll be subscribing to these, and will spread the news in Java Today and my own blogs when I see very interesting new posts.

If you haven't looked for Java information on the Oracle Technology Network recently, you may find it worth your time to pay a visit to the OTN's Java Developer Center. It's a resource I'll certainly be utilizing going forward.


In Java Today, James Gosling poses the question Next??, and discusses a few of the possibilities he's considering:

The couple of weeks that have passed since I resigned have been amazing. All the touching comments on my blog, emails, facebook and linkedin messages have been wonderful. It was an incredible community of people that together did great things and had a lot of fun. I've spent an awful lot of time reading these messages and answering as many as I could...

Geertjan Wielenga writes about training/workship he and Toni Epple recently gave in Norwegian Wood:

Today Toni Epple and I completed the delivery of the training/workshop at the Institute of Marine Research(IMR) in Bergen, Norway. It can definitely be seen as a successful adventure. The first three days were spent doing the NetBeans Platform Certified Training, focusing on all the main themes of the NetBeans Platform (module system, window system, lookup, filesystem, nodes, explorer views, and visual library)...

Michael Huttermann talks about his upcoming book Fragile Agile:

My German book "Fragile Agile" has a face now, i.e. a cover. The book is published by Hanser. This has the effect that we may win the nobel prize with this book 2011, as Hanser did this year with another book. In contrast to this other book, our book here is more for a mass market....

In the Weblogs, Fabrizio Giudici posted blueBill Mobile goes Android:

blueBill Mobile has been initially developed for JavaFX and has been blogged about a bit in the past. I already anticipated that a version in JME was in the pipeline; in the meantime, since unfortunately there hasn't been any announce from Oracle about JavaFX for Android phones, I started the development of a specific Android version. It is important also for start involving some users, as I've been unlucky in finding a good number of them able to test JavaFX Mobile applications...

Alexander Schunk posted his first java.net blog since early 2008, JMath a Java API for doing math:

Hello. I would like to introduce JMath project. JMath is math API for doing serious math with Java. With JMath you can do linear algebra, set calculations, general math calculations such as arithmetics, fractions and the like. Also, with JMath you will be able to do serious statistics. Origin of JMath is the former LinAlg API. LinAlg API is part of JMath is now being developed by SysConsult IT Consulting Company...

Joshua Marinacci talks about Palm's webOS, the OS Built From the Web, Puts Users and Developers First:

There's been a ton of talk lately about several mobile operating systems and their problems, such as language restrictions, fragmentation, and anti-competitive practices. It's never a good idea to talk bad about your competition, so I'll take this opportunity to simply say a few things about the webOS (the OS that powers Palm's Pre and Pixi phones) that you might not know...

In the Forums, in the LWUIT forum, sanchitgupta wants to know How to set command listner for specific label: Hi, I am creating a Java ME applictaion with help of LWUIT. I have to associate each label with a particular command. Please help me. I am a beginner in mobile programming...

In the GlassFish forum, ido_ran has an issue involving Deploy Update war: Hi, I have a web application deployed on several machines. I update this web application every few days and I would like to know what possible ways exist to deploy the update to the exists machines? Currently I either do it manually...

In the Java SE forum, syrenity has a problem where theJVM hangs beyond recovery: Hi. I hit a possible deadlock in JVM, which causes my JNI application to hang. It happens usually on start-up, and the JVM just stuck, jstack and other tools are not working and the only option is to get a threads dump via GDB...


Our Spotlightthis week is the Java Developer Center on the Oracle Technology Network:

Java is one of the computer industry's best known brands and most widely deployed technologies. Oracle Fusion Middleware is built on Java technology in support of applications and services written in the Java language. With the acquisition of Sun, Oracle will drive continued innovation and investment in Java technology for the benefit of customers and the Java community.

This week's java.net Poll asks What's your reaction to the new cross-platform compiler restrictions in the iPhone Developer Agreement? The poll will be open until Friday.


Our latest Feature Article is Dibyendu Roy's Rethinking Multi-Threaded Design Principles, Part 2, which provides guidance on how to harness the processing powere of next generation multicore processors. We're also featuring HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. And we're featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort).


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 and the poll that preceded it asked people about the number of desktop computers and Internet-capable portable devices they own, respectively. The results were surprisingly similar. I plan to re-ask these questions periodically so we can observe the trends over time.

328 votes were cast in last week's poll. The exact question and results were:

How many desktop computers do you own?

  • 9% (30 votes) - 5 or more
  • 19% (61 votes) - 3 or 4
  • 24% (80 votes) - 2
  • 34% (111 votes) - 1
  • 14% (46 votes) - None

This result is remarkably similar to the results of last week's poll. Of course, neither poll is scientific -- but it's still interesting to compare the results:

                                           
Number
Owned
Portable Devices with
Internet Connectivity
Desktop
Computers
5 or more8%9%
3 or 416%19%
224%24%
128%34%
None21%14%
I don't know4%[not in poll]

Or, in a bar chart view:

The two polls suggest that, as of today, developers own slightly more desktop computers than portable devices with Internet connectivity. Perhaps we'll ask these same questions six months from now, and see if the results have changed.

New poll: Apple's new Developer Agreement restrictions

There is a lot of discussion about the recent changes in Apple's iPhone Developer Program License Agreement. For example, see:

This prompted Eduardo Pelegri-Llopart to send me a suggestion for a java.net poll:

What about asking for people's reactions to the Apple's new rule on the iPodOS SDK? I'm a long-time Apple user and I find it bad enough to make me reconsider. I'm curious about how others feel.

I also briefly spoke with Josh Marinacci about the new Apple developer rules. He tells us why he thinks Palm's webOS puts users and developers first in his latest blog post.

So, our new java.net Poll asks What's your reaction to the new cross-platform compiler restrictions in the iPhone Developer Agreement? The poll will run for the next week.


In Java Today, there's a new @Java Twitter account. Tori Wieldt of Oracle, who's managing the @java account, tells me:

@Java is the channel for cool news about and around the Java ecosystem. It's not developer-specific, but for anyone interested in Java. We'll tweet news, events, links to tech articles, and special offers. We'll tweet daily, b20100416.htmlut a lot more often during events like JavaOne. We want our tweets to be relevant to users, and we monitor the feed for questions and comments. Hope you all follow!

Java SE 6u20 has been released, providing important security updates. Changes:

A Java Network Launch Protocol (JNLP) file without acodebase parameter, such as the following, will no longer work with the Java SE 6 update 20 release: <jnlp spec="0.2 1.0" href="draw.jnlp"> This means that developers must specify the codebase parameter in a JNLP file. See the following example: <jnlp spec="0.2 1.0" codebase="http://java.sun.com/javase/technologies/desktop/javawebstart/apps/" href="draw.jnlp"> ...

Robert Eckstein has a new article on java.sun.com, JavaFX 1.2 UI Control Components: Part Two: Nodes and Buttons:

JavaFX SDK 1.2 introduces a new set of user-interface (UI) control components for JavaFX programmers. Previously, JavaFX UI Components simply "borrowed" their functionality from the underlying Swing components, which prevented their use in anything other than the desktop profile. The JavaFX SDK 1.2 components, however, take advantage of the more powerful JavaFX scene graph, which not only increases portability, but also allows JavaFX programmers to create more compelling graphical capabilities...

In the Weblogs, Joshua Marinacci talks about Palm's webOS, the OS Built From the Web, Puts Users and Developers First:

There's been a ton of talk lately about several mobile operating systems and their problems, such as language restrictions, fragmentation, and anti-competitive practices. It's never a good idea to talk bad about your competition, so I'll take this opportunity to simply say a few things about the webOS (the OS that powers Palm's Pre and Pixi phones) that you might not know...

Kohsuke Kawaguchi writes about Hudson console markups (and notes that he is now also cross-posting his blogs to his new website, www.kohsuke.org):

Despite all the report comprehension in Hudson, such as JUnit, PMD, FindBugs, etc., log files still hold a special place in terms of capturing what has really happened. Hudson does a bit of AJAX in this space to let you follow output as it comes, but the log is basically just a plain text that doesn't really have structures. But that is changing. One of the recent improvements in Hudson is the infrastructure and extension points for Hudson (and its plugins) to mark up the console output to improve interactivity and do some cool stuff...

Juliano Viana demonstrates Decoupling event producers and event consumers in JEE6 using CDI and JMS:

In this post I will share my recent findings about Container Dependency Injection in JEE 6, in particular how to decouple the processing threads of event producers and event consumers. JEE 6 introduces a very nice dependency injection framework (CDI) that has superb support for the Observer pattern in the form of event broadcasting. An Event in CDI is just a regular POJO...

In the Forums, in the GlassFish forum, urmas asks for help finding a Form Solution - Java or JavaScript: Hello, My problem at hand is that I need to make a combobox in .jsp file and I would very much like to know when someone chooses another option in the box. So, my question is, can I listen events from the combobox with...

In the Java 3D forum, mhakman is finding Transparency settings not obeyed: Hello, I have 2 PointArray shapes without color values. One of them geometrically occludes the other. I set colors using ColoringAttributes and transparency using TransparencyAttributes. If I use TransparencyMode NONE then I see only the...

In the LWUIT forum, Klemens is working on a Focus and pixel based scrolling problem: Just one thing I noticed: If the last component (in my case a TextArea) is not focusable there is a problem with scrolling. I can scroll down from the last focusable component but the last line of the TextArea is only shown half. Using...


Our Spotlightthis week is Replays for GlassFish Roadmap Now Available:

Eduardo Pelegri-Llopart announces: "The replays from our presentation on the GlassFish Roadmap are now available in different formats, including SlideCast (Slides with synchronized audio)..."

The new java.net Poll asks What's your reaction to the new cross-platform compiler restrictions in the iPhone Developer Agreement? The poll will run for the next week.


Our latest Feature Article is Dibyendu Roy's Rethinking Multi-Threaded Design Principles, Part 2, which provides guidance on how to harness the processing powere of next generation multicore processors. We're also featuring HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. And we're featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort).


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

 

Jean-Francois Arcand informs us that the new Atlassian JIRA Studio Activity Bar is powered by the Atmosphere Framework. Atmosphere is a java.net project that Jean-Francois has frequently written about in the past, as he has been a major contributor to the project. Jean-Francois tells us:

Last week Atlassian released their new JIRA Studio, which is a hosted software development suite that supports every role of a high-performing development team throughevery stage of your development process.. One of the new feature is called the Activity Bar and it is powered by Atmosphere!

http://blogs.atlassian.com/developer/recent-activity.png

Jean-Francois shows us the new JIRA Studio "Recent Issues" window (see above), and continues:

Atmosphere is hidding inside the « Recent Issues » window above :-) . You can read the official annoucement here and why Atmosphere was choosen instead of Servlet 3.0 or private implementation like Jetty and Grizzly.

If you're not familiar with Project Atmosphere it's a subproject of GlassFish. Here's the project introduction:

Atmosphere is a POJO based framework using Inversion of Control (IoC) to bring push/Comet to the masses! Finally a framework which can run on any Java based Web Server, including Google App Engine, Tomcat, Jetty, GlassFish, Weblogic,Grizzly, JBossWeb and JBoss, Resin, etc. without having to wait for Servlet 3.0 Async support or without the needs to learn how Comet or WebSocket support has been differently implemented by all those Containers.

Servlet 3.0 is supported along with framework like Cometd/Bayeux, Jersey, GWT, Wicket etc. and programming language like JRuby, Groovy and Scala. Finally, any web application can be clustered using our Cluster plugin architecture (JMS, Shoal or JGroups).

Jean-Francois notes the irony of how sometimes what you've worked on in the past suddenly finds you again:

Wow! It has been a pleisure to work with Richard Wallace and his team. Since we are using JIRA @ Ning, I should soon work with my own framework!

Take a look at Asynchronous Web application with the Atmosphere Framework(PDF), a recent presentation by Jean-Francois, for an overview of Atmosphere.


In other Java Today news, Arun Gupta presents TOTD #128: EJBContainer.createEJBContainer: Embedded EJB using GlassFish v3:

This blog has been in my Drafts folder for quite some time now, needed some final tweaks, and finally pushing it out. Chapter 22 of Enterprise JavaBeans 3.1 specification (released as part of Java EE 6) describes "Embeddable Usage" as ...

Geertjan Wielenga posted iBatis Sample and NetBeans Platform Pic from Norway:

My small iBatis based sample application is really taking shape now. Apart from the cool PropertyPanel integration in the central editor area below, the other noteworthy thing is that all three of the windows are aware of changes to the underlying model. So, when either the Properties window or the editor are used to change a property, all the other windows are notified and appropriate events take place, such as the display name of the node in the viewer on the left getting updated. Despite the fact that all three windows come from different modules, of course...

In the Weblogs, Kohsuke Kawaguchi writes about Hudson console markups (and notes that he is now also cross-posting his blogs to his new website, www.kohsuke.org):

Despite all the report comprehension in Hudson, such as JUnit, PMD, FindBugs, etc., log files still hold a special place in terms of capturing what has really happened. Hudson does a bit of AJAX in this space to let you follow output as it comes, but the log is basically just a plain text that doesn't really have structures. But that is changing. One of the recent improvements in Hudson is the infrastructure and extension points for Hudson (and its plugins) to mark up the console output to improve interactivity and do some cool stuff...

Kirill Grouchnikov announces Releases, releases:

It’s my great pleasure today to announce the availability of releases of the following projects: * Substance look-and-feel version 6.0 (code named Sonoma); * Tridentanimation library version 1.2 (code named Cookie Jar); * Laf-Widget library version 5.0 (code named Magnolia) ...

Juliano Viana demonstrates Decoupling event producers and event consumers in JEE6 using CDI and JMS:

In this post I will share my recent findings about Container Dependency Injection in JEE 6, in particular how to decouple the processing threads of event producers and event consumers. JEE 6 introduces a very nice dependency injection framework (CDI) that has superb support for the Observer pattern in the form of event broadcasting. An Event in CDI is just a regular POJO...

In the Forums,ramix is seeking the LWUIT Demo for android: Hi, is there anyway to get the LWUITDemo project that is ported to android? or to download the LWUIT ported source code somewhere?

In the GlassFish forum, bi30 posted Lookup EJB via JNDI from custom MBean: Hello, I'm trying to get information from my application, deployed on Glassfish v2.1, using custom Mbean. On my application, I have an interface :package com.polop.application; ...

In the Metro and JAXB forum, scott wonders about Overloading methods: We have a few calls from our Axis services (I'm coverting to use Metro) that have the same method name but different parameters. Is this wrong to do? It will not be too bad if I have to give each call a unique name, but there will be a contract change...


Our Spotlightthis week is Replays for GlassFish Roadmap Now Available:

Eduardo Pelegri-Llopart announces: "The replays from our presentation on the GlassFish Roadmap are now available in different formats, including SlideCast (Slides with synchronized audio)..."

This week's java.net Poll asks How many desktop computers do you own? The poll will close on Friday.


Our latest Feature Article is Dibyendu Roy's Rethinking Multi-Threaded Design Principles, Part 2, which provides guidance on how to harness the processing powere of next generation multicore processors. We're also featuring HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. And we're featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort).


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

We've just published a new article by Dibyendu Roy, Rethinking Multi-Threaded Design Principles, Part 2. In this article, Dibyendu presents and overview of the laws and principles that relate to application speed-up due to multithreading, then he talks about locks and non-blocking operations and their impact.

If you've worked with multithreaded development, your probably familiar with Amdahl's law, which defines the theoretical speed-up of an application when part of its code is parallelized. In Dibyendu's article, he presents the speed-up using this equivalent representation:

Speed Enhancement = 1 / (Fs + ((1 - Fs) / N))

Here, Fs is the fraction of the program that is running sequentially, and N is the number of cores or processors. Here's Dibyendu's explanation:

if N is 1, we get no speedup, but asN increases (tends to infinity, (1 - Fs)/N becomes 0), the speed is totally dependent on the1/Fs part - which leads to the conclusion that, to improve execution speed of an application, we need to figure out ways or patterns to make more code execute in parallel.

This really is a very interesting equation, and it illustrates why sometimes beginning developers are stunned to find out that a performance improvement they spent days or weeks working on ultimately has little impact on the application's actual performance.

The question is: how do you "compute" Fs, the fraction of the program that is running sequentially? Do you divide the number of lines of code that run sequentiall by the total number of lines of code in the program? Of course not.Fs is really a measure of time. Fs is the amount of time that the unparallelized code occupies, divided by the amount of time the entire application takes to run when there is only one processor.

Hence, if the unparallelized code takes 10 seconds to run, and the parallelized code takes 5 seconds to run when there is a only one processor, Fs = 10/15 = 2/3; and the maximum speed-up of the application is only 1.5 (if you had infinite cores).

Practically, of course, the situation is very different. Multithreading an application actually adds more processing to the application -- all the management of the threads, potential dividing of the application's data into snippets which then have to be re-assembled after the parallel code has been executed, etc. This is why, believe it or not, a multithreaded application can actually run slower than its purely sequential, single-threaded starting point. This is increasingly possible the greaterFs is.

But wait! It gets worse. As Dibyendu notes, even when you have significant segments of code parallelized, there will almost always be points where

different parts of the code must contend for some resource that requires a lock. Whenever any thread tries to access a lock that's already being held by someone, it gets suspended first and awakened later when lock is available, thus spending some time doing nothing.

That's not good. Also, it requires a lot of care to properly implement locks. Dibyendu also talks about the non-blocking operation technique Compare-And-Swap(CAS). This is helpful in cases where there's something else a thread can work on if it finds that a locked resource is presently unavailable. But, what if there's nothing else for the thread to do?

Yes, writing multithreaded applications has been known to induce actual physical headaches for developers. Along with bruised hands, as they pound their desks while watching their apps hang forever due to a deadlock, or find that with each execution the app produces a different answer (due to threads overwriting each other's data)...

http://t0.gstatic.com/images?q=tbn:ksNwgOivpn-tkM:http://i60.photobucket.com/albums/h12/shannon3113/iStock_000000915263XSmall-758466.jpg

So, you might ask, if multithreading applications is so complicated, why even bother trying to do it?

Well, maybe to keep your job? If your product runs only on a single processor in 2015, and your competitor's product has a lowFs and can use all 16 cores on cheap $600 (US) machines that populate many corporate office desks and homes in 2015, how long do you think it will be before people switch from your doggedly slow app to your competitor's blazingly fast one?

If you've not yet worked on multithreaded development, but you think you may have to in the future, you may want to take a look at Dibyendu Roy's Rethinking Multi-Threaded Design Principles, Part 2.


In Java Today, Alexis Moussine-Pouchkine has collected A small list of reactions to James' departure:

• The inevitable (but profoundly silly) "Java is dead" (talios)
• The pragmatic (!) "it'll leave room for us youngsters" (in French)
• Somewhat cynic "Oracle is helping LOTS of companies with ex-Sun's :-)" (oemilio)...

Adam Bien announces Upcoming Java EE 6 "Kill the Bloat" Workshops:

1. Java EE 5/6 Patterns in Hamburg (26.04-30.04.2010) - some (3-5) places left. 2. 60 minutes with Java EE 6, 04.05 at JAX conference - this should be fun. I will hack a Java EE 6 application in 60 minutes on stage. Still no idea which one - but suggestions are highly appreciated. I will use Java EE 6 - and so less slides, than last year for explanation (Java EE 6 is even simpler, than Java EE 5) :-).
*After the session*, we will discuss Java EE 6 / EJB / JMS etc. features, problems and workarounds during the "open space" part at the JAX conference. Watch the table "Weightless Beans" in the Ballroom...

Andrew Glover presents Java development 2.0: Introducing Kilim:

Debugging nondeterministic defects in multithreaded applications has to be one of the most painful and frustrating activities known to software developers. So, like a lot of people, I've been caught up in the excitement about concurrent programming with functional languages like Erlang and Scala. Both Scala and Erlang employ the actor model, rather than threads, for concurrent programming. Innovations around the actor model aren't limited to just languages; the actor model is also accessible on Java-based actor frameworks like Kilim...

In the Weblogs, Erik van der Velden talks about [CAFE] using presence in CAFE:

In my last blog entry I described the generic user procedures as used in CAFE. These procedures can be used for registration and various parts of presence. In this installment I will go a bit deeper into the presence related user procedures, showing how to publish presence information on behalf of a user and subscribe to presence information...

Josh Marinacci is excited about Palm's Hot Apps Promotion, and the Zen of Servlets:

I'm excited to show you all one of the things I've been working on since I joined Palm. Today we launched a new microsite called Palm Hot Apps. This is a leader board for our Hot Apps promotion, where the top selling & downloaded apps compete to earn bonuses between $1,000 and $100,000 dollars. Since this is a competition we wanted to have a constantly updated site that shows who's winning right now and who might be winning in the future. If you are a JavaScript developer, or interested in mobile app development in general, or just a Palm enthusiast, you'll definitely want to check out the site...

Calvin Austin says So long James and thanks for all the fish:

There were a few ripples around the Java community given that James Gosling the founding father of Java has left Oracle/Sun. I'm not that surprised, I'm sure many others are not either. Google must have made inquiries on more than one occasion and Sun had a number of painful years even when I was there, plenty of layoffs that made each release more difficult and that was 5 years ago. What does this mean to the day to day Java platform...

In the Forums, in the Metro and JAXB forum frans_van_buul asks about Case normalization of HTTP header names: Hi, We're using JAX-WS RI 2.1.7 for web service clients. We've noted that JAX-WS normalizes the case of HTTP header names to an initial upper case character followed by all lower case character. Formally, the case doesn't matter...

In the LWUIT forum, bakih posted a question about screen size ,please advise: i have a question. as i understand lwuit support in all screen size, is that current? if so how can i implement this issue, for example , if i put button in the center of the screen by using padding ,mergin in the resource manager is that the...

In the GlassFish WebTier forum, gabox01 has questions regarding Pojo extends HashMap: Hi, I would like my POJO entities to have dynamic properties. This way i could easily decorate my object graph with JSF specific information. For example: public class Category extends HashMap{ ...


Our Spotlightthis week is Replays for GlassFish Roadmap Now Available:

Eduardo Pelegri-Llopart announces: "The replays from our presentation on the GlassFish Roadmap are now available in different formats, including SlideCast (Slides with synchronized audio)..."

This week's java.net Poll asks How many desktop computers do you own? The poll will close on Friday.


Our latest Feature Article is: HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. We're also featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort); and 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).


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

 

James Gosling has left Oracle, saying it's time to move on... A whole lot of people have left Sun since the acquisition by Oracle was announced. Some of those people left Sun out of fear that their jobs would be eliminated (one supposedly expert financial analyst warned that 50% of Sun employees would lose their jobs -- that type of "news" will make people want to pack up and leave a company). Some were laid off between the announcement of the acquisition and its actual occurence. Others were laid off when the acquisition actually happened (though the percent of actual layoffs at that time should get that "expert" analyst fired)...

But, post-acquisition, we are still seeing quite a lot of former Sun people leaving Oracle. I did not expect to see this. But then again, I actually work for O'Reilly, and my relationship with Sun and Oracle is from a distance (even though they provide the financial backing for java.net).

In his post, James says:

As to why I left, it's difficult to answer: Just about anything I could say that would be accurate and honest would do more harm than good.

And he ends his "Time to move on" post with:

Sun's blogging policy gave bloggers rights to their own works. The few more recent blog entries that I did at blogs.sun.com were written under somewhat more strict policies :-)

I don't understand that. To me, the Sun and Oracle blogging policy differences look more like legalese that might fascinate lawyers, but which have little meaning or impact for the typical blogs.sun.com blogger. Of course, James was not a "typical" blogs.sun.com blogger.

James' departure has made me think a lot about Sun and Oracle today, their similarities and their differences. Back in the 1990s, I debated vociferously on the SiliconInvestor site with investors who knew the prices of Sun and Oracle and EMC stocks were destined to continue to rise by 500% every few years. My argument was that it was a methematical and economic impossibility for Sun's, Oracle's, and EMC's sales to continue to rise at a 30% annual rate indefinitely -- which seemed to be what was implied by their .com boom stock price rises. Where was the exponentially increasing customer base that would buy all that stuff indefinitely into the future? Such was my argument.

You can also look at the links under Archive athttp://mathematicalanalysis.com/money/to see what I thought of the .com boom as it unfolded. Suffice to say, I was not impressed.

So, why does this matter today? Well, it does, because prior to the .com crash, Sun and Oracle were almost two peas in a pod. Sun's and Oracle's leaders were great friends in the 1990s, united in taking on the behemoth from Redmond. Both companies appeared to have a brilliant future, looking ahead into the 21st Century.

But post-dot-com boom, Oracle had a strategy that worked in the marketplace, while Sun's strategy included complications that were out of sync with what was necessary to survive long-term in the post-crash economy. Both Sun and Oracle had wonderful people who had wonderful ideas and who produced remarkable innovation -- hence the enormous run-ups in their stock prices during the .com boom. But... in terms of strategic awareness of the realities of the marketplace, Oracle was clearly far beyond Sun.

So, why are DEC,Compaq, and HP in the title of this blog? Because I believe that Sun is very lucky compared with DEC. In my view, the survival of Sun's technologies and open source projects into the second decade of the 21st Century is due entirely to the fact that their leaders and Oracle's were such close friends in the 1990s. Had that not been the case, I think Sun might have ended up more like DEC -- which disappeared in 1998 into clone-PC maker Compaq! And, do we see anything of DEC technologies in Hewlett-Packard today? No! DEC isgone!

I don't want to sound like I'm dissing Sun. It was a great company. The data center where I work part-time was using Sun multi-processor SMP-capable servers when I started there in 1993. That was advanced technology then! And Sun servers (and an Oracle database) are the backbone of our present-day processing. Sun has always produced great, robust, reliable technology.

Unfortunately, while Sun was a great company, it was destined to die in the 21st Century marketplace. Some other companies that had similar market value in the late 1990s are still major players 10 years later, they knew how to make money post .com crash. For example, consider Hewlett-Packard. Like Oracle, they knew a bit more about business reality than Sun (or DEC, apparently, given HP's longevity).

The acquisition of Sun by Oracle is turning out to mean that Sun technology is definitely not gone. In fact, what's actually happening now is that Sun's most important technologies and open source projects are not merely surviving, they're thriving, through the extra support and resources that Oracle's much better understanding of the post-dot-com boom world have made possible.

Oracle is the enabler of a future for Sun's core technologies, in my opinion. Poor DEC never found such a beneficent enabler. Lucky Sun!


In Java Today, James Gosling says Time to move on...:

Yes, indeed, the rumors are true: I resigned from Oracle a week ago (April 2nd). I apologize to everyone in St Petersburg who came to TechDays on Thursday expecting to hear from me. I really hated not being there. As to why I left, it's difficult to answer: Just about anything I could say that would be accurate and honest would do more harm than good. The hardest part is no longer being with all the great people I've had the privilege to work with over the years. I don't know what I'm going to do next, other than take some time off...

A new article by Marc Brandt, Tomas Erison, and Alain Comment,Accelerating Multimedia Application Development with JSR 309 Media Server Control API, has just been published on the Oracle Technology Network:

Over recent years, the architecture for deploying rich multimedia communications applications has evolved to allow distribution between the application logic and the media processing. This is well illustrated by the evolution of 3GPP IMS MRF deployment architecture along with the IETF SIP and Media Server Control protocol efforts that support a model of decomposition between Application Servers and Media Servers...

Arun Gupta presents TOTD #127: Embedding GlassFish in an existing OSGi runtime - Eclipse Equinox:

GlassFish has a modular architecture based upon OSGi and bundles Apache Felix as the OSGi runtime. TOTD #103 explains how to run GlassFish with two other OSGi runtimes (Equinox and Knopflerfish). However you may already have an OSGi runtime in your environment and like to run GlassFish within it. Sahoo blogged about how to embed GlassFish in Equinox...

In the Weblogs, Joshua Marinacci talks about Palm Developer Day and OSCON:

A big part of my new job at Palm is education, in the form of tutorials, blogs, and of course speaking at conferences. Two new speaking engagements have recently come up. Palm Developer Day and OSCON...

Ramesh Parthasarathy writes about SailFin CAFE - Search API for communications:

SailFin CAFE, like other converged application development frameworks has changed the converged application development paradigm. Having used CAFE APIs so far, if one thought that application development has never been so fast and so easy, things just got better with v1 b28. Communications (conversation, conference, imconversation, imconference...) that were created by applications were managed by the framework, and were presented to the Communications Bean method when an event occurred. This was perfectly fine if the application component was a Communication Bean, because it is called for action only when an event occured. Extensive application code was required...

Fabrizio Giudici wonders When a bunch of grains of sand make a heap?:

The spring is here at last, and yesterday I was walking on a beach. Often walking on sand beaches recall me the "paradox of the heap": you have a heap of sand, let's say made of a million of sand grains. Then you remove one, and get 999,999 sand grains. No doubt, it's still a heap. Now you repeat the process, and eventually you'll get with a single grain of sand in your hand. No doubt, a single grain of sand is no more a heap. This means that, somewhere in the process, what was initially a heap was no more a heap...

In the Forums, in the LWUIT forum shaneosborne has a Thornston Blackberry issue with AddCommand on 8100: Not sure if anyone else has seen this but on the Blackberry 8100 (JDE4.5.0) I cannot show the command window. For example running the code: form.setTitle("myform"); form.addComponent(new Label("content")); ...

In the GlassFish forum, federicocozzi has a problem involving Full connection pool? looks like getConnection hangs: Hello, I am using GlassFish Enterprise Server v2.1 Patch01. A few days ago we modified a few parameters in a production environment and we got this error an hour after: 2010-04-01T12:13:38.048+0200 [...] ThreadID=30 [...] Error in...

In the Metro and JAXB forum, dianlongzhang has discovered an unknown required extensibility element "wsp:UsingPolicy": Hello, I have tried to invoke wsImport (RI 2.2, JDK6) a wsdl (see attachment), and it shows following error: [wsimport] parsing WSDL... [wsimport] [ERROR] unknown required extensibility element "wsp:UsingPolicy" (in namespace...


Our Spotlightthis week is Replays for GlassFish Roadmap Now Available:

Eduardo Pelegri-Llopart announces: "The replays from our presentation on the GlassFish Roadmap are now available in different formats, including SlideCast (Slides with synchronized audio)..."

This week's java.net Poll asks How many desktop computers do you own? The poll will close on Friday.


Our latest Feature Article is: HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. We're also featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort); and 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).


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 Spotlightis Replays for GlassFish Roadmap Now Available, which was recently posted by Eduardo Pelegri-Llopart on TheAquarium blog:

The replays from our presentation on the GlassFish Roadmap are now available in different formats, including SlideCast (Slides with synchronized audio):

PDF and FAQ
Direct PDF link
• SlideCast English, French, Spanish.
• MP3 direct links English, French, Spanish

It's pretty nice when presentation replays are made available in multiple languages!

I watched and listened to the presentation on the replay announcement page Eduardo posted. The 14-slide presentation is titled "March 2010 Community Update: GlassFish Roadmap." The audio lasts just over 30 minutes.

The presentation starts with a few disclaimers, some history, and responses to recent FUD (Fear, Uncertainty, and Doubt). Then the roadmap outline is presented, including the initial 100 day releases (first level Oracle integration of acquired products) and upcoming feature releases.

If you haven't been following GlassFish news, you might be surprised to find that not much has been changed by Oracle's acquisition of Sun. In terms of strategy, GlassFish is moving forward in pretty much the same directions that were in place before the acquisition was announced. Most importantly, the uncertainty about GlassFish's future is now eliminated.

Major upcoming releases include:

  • GlassFish 3.1 (2010) - featuring centralized admin, cluster support, state replication, and coherence support
  • GlassFish 3.2 (2011) - featuring improved cluster/High-Availability (HA) admin, integration with Oracle Identity Management, and some Java EE specification updates
  • GlassFish 4 - featuring a common server platform (shared best of breed with WebLogic Server) and Java EE 7

At the end of the presentation, Eduardo says he plans to provide monthly updates to keep the GlassFish community informed on the GlassFish roadmap as it evolves. Stay tuned!


In Java Today, Kirill Grouchnikov talks about Scrollable popup menus in Flamingo 5.0:

The command button component is a central building block for the Flamingo component suite. It aims to address the deficiencies of the core Swing button components, adding features expected by the modern applications. While the main goal of Flamingo is to provide a pure Java implementation of the Office 2007 ribbon container, the command buttons can certainly be used outside the ribbon. Command buttons can be configured to have two separate areas

The results of last week's java.net poll produced a Poisson-like distribution -- which suggests that perhaps the results of the non-scientific survey have some legitimacy, since we'd expect the actual number of Internet-capable devices that developers own to follow a Poisson-like distribution (that makes sense to me, anyway). A total of 284 votes were cast. Here's the exact question and the results:

How many portable devices with Internet connectivity do you own?

  • 8% (22 votes) - 5 or more
  • 16% (45 votes) - 3 or 4
  • 24% (67 votes) - 2
  • 28% (79 votes) - 1
  • 21% (61 votes) - none
  • 4% (10 votes) - I don't know

The main point of this poll (and also the main point of the new java.net poll) is to set a baseline for future reference. It will be interesting to see how the distribution of how many portable Internet-enabled devices peole own changes over time, as new technologies (like the iPad) continue to emerge, and mobile phones become increasingly capable.

So, there's not too much to say about these results. The median number of portable devices with Internet connectivity that people own is one. 21% of the voters do not yet own an Internet-enabled portable device. I would expect this percentage to drop over time. And, I would expect the median value to increase over time, because of devices like the iPad, etc.

Now, I don't want to assume I can predict the future, but I do think that probably there is a limit to the number of portable devices with Internet connectivity people will ever want to have. I mean, will someone ever need or want 20 Internet-enabled portable devices? Wouldn't that be an awful lot of duplication?

But, it will be interesting to ask this question again a year or so from now.

New poll: how many desktop computers?

Also, it will be interesting a year from now to re-ask the question in the new java.net poll: How many desktop computers do you own?

Here's hoping this poll will also produce a nice Poisson-like results distribution.


In Java Today, Arun Gupta provides TOTD #126: Creating an OSGi bundles using Eclipse and deploying in GlassFish:

TOTD #125 showed how to create an OSGi bundle using NetBeans and deploy in GlassFish. This TipOf The Day (TOTD) shows how to do the same using Eclipse. OSGi replaced the plug-in technologies starting with Eclipse 3.0 and Equinox is used for all the modularity in Eclipse now. Anyway, lets get started! ...

Hamlet D'Arcy investigates Groovy 1.7.2 - Three Features Worth the Upgrade :

Groovy 1.7.2 was released 22 hours ago, so by now you have surely spent hours playing with the new bits and combing through the release notes looking for new nuggets of productivity. Or maybe not. For all those busier than me, here are the top 3 reasons to upgrade to the point release...

Laurent Cohen announces that JPPF, the Open Source Grid Computing Solution, Releases v2.1:

What's new in JPPF 2.1 -- Performance: The development of this release has seen a lot of emphasis on both memory usage and performance improvements. The JPPF server now executes multithreaded network I/O and reaches new levels of scalability. JPPF applications can now enjoy faster execution of larger jobs. Localization: Russian localization is now available for the graphical administration console. Load balancing: Custom load-balancers can now use information about the nodes' environment and configuration, along with metadata about the jobs...

In the Weblogs, Bruno Ghisi talks about Creating an email authentication provider in Grails with Acegi plugin:

A long time without blogging, I have been busy working with DTV applications and GRails... this post goes with the second topic... Have you already installed Spring Security (Acegi) pluginin Grails? Do you want to allow logins with the email also - like Twitter, SlideShare, etc - and not only with the default username? Here is the simple way to make it to work: 1 - Implement an AuthenticationProvider (EmailAuthenticationProvider) in src/groovy ...

Fabrizio Giudici will be Speaking on JavaFX at Jazoon '10:

A few days ago I got the confirmation that one of my talk proposals was accepted at Jazoon 2010 in Zurich. Now that the preliminary program has been made available, I can give you the details: I'll speak on Wednesday, June 2nd, in the second half of the 13:30 - 15:20 timeslot devoted to JavaFX. Being a "preliminary" program I suppose you'll have to check it again in the next weeks. My presentation will be "Designing a JavaFX mobile application"...

Sahoo talks about developing a JAX-WS Web Service in an OSGi bundle:

Recently a user in GlassFish forum asked about developing JAX-WS web service in an OSGi bundle. Here is a complete sample demonstrating a JAX-WS web service invoking an OSGi service via OSGi service registry. You can download it from here. The diagram below hopefully explains the organisation of the sample...

In the Forums,gutierrege has questions regarding Metro + Spring + Maven: Hi all, I'm doing an app that uses metro, spring and maven 2, and i was able to do a webservice, but the wsdl generated is using xsd:import which the client that is going to use my webservice doesnt support that, i saw this bug already posted but no one says how to avoid it...

qwertywin finds JAI-IMAGEIO binaries corrupt: When I download the amd64 jdk/jre binaries they are corrupt when you try to use them...

In the LWUIT forum, Mixa has an issue with fireActionEvent() on non-editable TextArea: Hi, By analogy with Button, I wanted to perform some action on TextArea on pointerReleased() event. Yes, I know that editable components handle fire actions in their own way (for TextArea a native popup will be shown). But...


Our Spotlightthis week is What does the future hold for the Java Community Process (JCP)?, in which Ed Burnette interviews former JCP Executive Committee member Tony de la Lama:

The Java Community Process, or JCP, was created by Sun as the standards setting body for the Java language, libraries, and runtime. From 1998 to 2009, Sun ruled the JCP with an iron fist, but now that Oracle is calling the shots that will inevitably be changing. Recently, I discussed the topic with Tony de la Lama, senior vice president of research and development, at Embarcadero Technologies. Tony was a JCP founding executive committee member from 2000-2003 and prior to joining Embarcadero was general manager of Borland's Java business, so he knows a thing or two about how the JCP works (or fails to work)...

This week's java.net Poll asks How many desktop computers do you own? The poll will run for the next week.


We've just published a new Feature Article: HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. We're also featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort); and 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).


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

Stephen Chin has announcedthe release of JFXtras 0.6 Final. JFXtras, the largest third party JavaFX add-ons library, is an open source project hosted at Google Code. There is also a JFXtras Community Site, a central location where people can gather to "develop, discuss, and extend the JavaFX platform."

Stephen opens his JFXtras 0.6 announcement with:

I am pleased to announce the 0.6 release of the open-source JFXtras project, the largest 3rd party library of JavaFX add-ons. This release is a very large undertaking that represents the work of several dozen contributors over the past 6 months.

JFXtras 0.6 will work with any JavaFX release in the 1.2 family. We recommend using the very latest release (currently JavaFX 1.2.3), which can be downloaded from JavaFX.com.

In the announcement blog, Stephen includes Web Start demos that illustrate some of the features provided in the JFXtras libraries, including data driven controls, advance layouts, wipe transitions, shapes, and borders. Here's the XShelfView demo:

But, JFXtras also offers "a whole lot more," including:

  • XStore Data Storage – Simple persistence of JavaFX primitives and sequences with defaults, auto-save, and save-on-exit.
  • Asynchronous JavaFX Support (for experts only) – Allows invocation of JavaFX code off the EDT either via a SwingWorker-style callback or a set of closure-driven primitives.
  • Swing Integration – Via the original SceneToJComponent wrapper or the new, easier to use, JXScene class.
  • Custom Cursors and Paints – Allows you to use custom cursors and custom paints within your JavaFX application via a special Toolkit as featured in Jeff Friesen’s articles.
  • Interpolatable and HSB Gradients – Ever wanted to animate a color? This is the perfect solution, complete with support for an HSB color palette.
  • Bindable XMap – A simplified map syntax for use with JavaFX that includes bind support on gets.
  • Image Caching – An image caching library that supports high performance, asynchronous loading and sizing of images from URLs.

Visit http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/index.htmlfor documentation of the full JFXtras API.

While the 0.6 Final edition of JFXtras is an important milestone, the project team is not about to take a rest. Stephen says:

Starting immediately, we will be focusing on developing a JavaFX 1.3 compatible JFXtras release. Our plan is to release a 1.3 compatible version of JFXtras within 1 week of the official release announcement from Oracle.

Follow Steve's blogto stay informed about the latest JFXtras release news.


In other Java Today news, Cameron McKenzie asks Is a Four Year Release Cycle The Price We Pay For An OpenJDK?:

The historic release schedule for a completely new Java Runtime Environment (JRE) has typically been eighteen months, but it's been almost four full years since the last full version release of the JDK, and one can't help wonder if the delay in the release of Java 7 doesn't have something to do with the fact that the production of this particular version is being driven by Java's open source development community. Are delayed releases simply the price we pay for an of an open source implementation of the JDK? ...

Christian Thalinger announces JSR 292 SPARC C1 and C2 support:

I just pushedthe SPARC C1 and C2 patches to support JSR 292 to the MLVM repository.  I've tested both thoroughly with JRuby's tests and benchmarks and both work pretty good.  Although I know of one bug in C1 this can be treated as the final versions and I'll start the first review round soon to get them into JDK 7 builds.

In the Weblogs, John Ferguson Smart announces that he will be Speaking at

In my situation (30+ years into a software engineering career), one thing I plan for is reduced income in the future. Because of that, I've taken up gardening in recent years. I figure that as my income drops, I can replace some of the lost dollars by purchasing seeds and working the land (we're ]]>Maersk Mc-Kinney Moller Instituteat the University of Southern Denmark. Here's a screenshot:

http://blogs.sun.com/geertjan/resource/nb-climate-monitor.png

Further description from the Climate Monitor site:

Climate Monitor is a generic platform for analyzing various plant processes, climate factors and keeping quality of greenhouse plants. The program is designed such that it allows easy integration of new analysis models and new sources of data. It has among others been used for analyzing the optimal use of supplementary lighting.

Now, if you've never grown vegetables yourself, you may not understand the impact of things like too many rainy days in early summer, too little light, too much wind as you're nursing your baby plants in early spring, etc. Last year was a partial disaster for gardeners in my region (Southern New England, U.S.) because May and June had so much rain that many root plants simply didn't grow and a blight spread across the region, killing enormous amounts of tomatoes (including about half of ours). The tomato blight also caused a huge increase in the cost of tomatoes in stores, and caused some restaurants to do things like serve BLTs (Bacon, Lettuce, and Tomato sandwiches) that had no "T" in them (my daughter found it both curious and annoying when she received one such T-less BLT as partial payment for one of her music performances).

Anyway, I do plan to have a greenhouse some day. And I'm happy to find that NetBeans and the Climate Monitor will be there to help me manage it when I get it!


Also in Java Today, Elliotte Rusty Harolde provides a Tip: When you can't throw an exception:

One problem with checked exceptions is that sometimes you simply aren't allowed to throw them. In particular, if you are overriding a method declared in a superclass or implementing a method declared in an interface, and that method does not declare any checked exceptions, your implementation can't declare one either. This forces you to handle the exception prematurely. You can convert the exception to a run-time exception, or you can suppress it without handling it. But is this what you should be doing, or is something more deeply wrong here? ...

Alexis Moussine-Pouchkine looks ahead in Tech Days St. Petersburg, here I come!:

I'm about to travel to St. Petersburg, Russia in a few hours to attend and present at the Tech Days conference. I've been there several times already and as always I'm looking forward to spending time there. It's always an intense experience both from the working and personal perspective. This time though, the work-related stuff might be a little different. First, I'm actually not going to present on GlassFish! ...

In the Weblogs, Kohsuke Kawaguchi says Good bye, Sun/Oracle:

I started working for Sun Microsystems since Janurary 2001, when I first came to the US. During these years I was able to work on many different projects, such as MSV, JAXB, JAX-WS, Metro, GlassFish v3, and Hudson, to name a few, with many great people. It was all quite an enjoyable journey. I won't list all those names one by one here, for it will be too long, but if you are one of them, I think you know that I'm talking about you. As my colleague Abhijit said once, a large part of enjoying your work is the people you work with. So with a bit of sadness and a lot of excitements, I announce that today is my last day at Oracle...

John Ferguson Smart talks about The 'Continuous Integration with Hudson' book build process:

Continuous Integration with Hudson is a new open source book project in the works. In the spirit of 'eating our own dogfood', this book is produced using Hudson. In this article, I discuss the build framework used for the 'Continuous Integration with Hudson' book. The 'Continuous Integration with Hudson' book is written in docbook, and is therefore XML source code which builds to PDF and HTML versions of the book. The source code is stored using git (in a github repository which will be eventually made public). The main branches are the following...

Masoud Kalili says Oracle is NOT taking back OpenSolaris, ZDNet Dana Blankenhorn got it wrong:

Once again the FUD around Solaris and OpenSolaris fate started to spread after Dana Blankenhorn misunderstood the licensing terms and used a eye catching and visitor increasing title, Oracle taking back OpenSolaris, for his blog entry. Well, from this article we can get that even the veteran writers can get things wrong and spread incorrect news :-) Folks, Solairs is one of the biggest Sun assets that Oracle is now own by taking over Sun . Solaris and OpenSolaris are going to be around in a much better shape than before because Oracle is betting its fight for the market share on this operating system to form a complete stack including storage, hardware, OS, middle-ware, support and so on...

In the Forums, in the GlassFish forum, geturnerlmco asks about an AMX/JMX query of sun-ejb-jar.xml attribute values: I am trying to find the correct way to use AMX or JMX to retrieve the value of max-pool-size for a MessageDrivenBean instance. I want to be able to set this value at deployment time and the code be able to retrieve the current setting. I have found the...

In the LWUIT forum, ghady_rayess has a question regarding Minimizing application: Hello, I've tried to use the function Display.getInstance().minimizeApplication(); it worked and the application minimizes. However, the function Display.getInstnace().isMinimized() always returns false. So if i have a thread...

In the Metro and JAXB forum, glassfishdiet is HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. We're also featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort); and 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).


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

Arun Gupta has reached the Number 125 milestone in his Tip Of The Day (TOTD) series. The new entry is titled TOTD #125: Creating an OSGi bundles using NetBeans and deploying in GlassFish. Arun begins his discussion by noting similarities between NetBeans modules (NBM) and OSGi (aka "the dynamic module system for Java):

NetBeans has a modular architecture where each module is created as an NBM. OSGi is another popular modular system for Java applications and used by GlassFish to provide a light-weight Java EE 6 compliant application server.

There are a lot of similarities between NBM and OSGi:

  • Runtime container manages lifecycle and dependencies of modules
  • Both are packaged as JAR, metadata stored in META-INF/MANIFEST.MF and some other information
  • Runtime starts up, read meta information and sets up dependencies
  • Every module has its own class loader loading explicitly declared dependencies only

Arun then points us to Toni Epple's presentation from this past June's OSGi DevCon 2009 Europe conference, which shows in detail the similarities and differences between NetBeans modules and OSGi. Toni's full set of slides, titled "Frankenstein's IDE: Running NetBeans on OSGi and vice versa," is available at Slideshare.

Assuming you know the background information Toni presents, Arun moves on, showing how to create an OSGi bundle using NetBeans and deploy it in GlassFish. In Arun's TOTD, he assumes you're working the latest nightly build of NetBeans 6.9, and GlassFish v3. He provides plenty of screenshots to illustrate his procedure.

While the idea of creating an OSGi bundle in NetBeans and deploying it in GlassFish may sound complicated, it's actually not all that bad. In seven steps, you can create anCreating an OSGi bundles using NetBeans and deploying in GlassFish OSGi bundle that can be started and stopped in GlassFish, and the stes only involve a relatively small number of lines of code.

Arun ends by showing how to create an OSGi "module suite" (a set of related OSGi modules) and an OSGi Bundle Repository. See TOTD #125: Creating an OSGi bundles using NetBeans and deploying in GlassFish for all the details.


Also in Java Today, pelegri discusses Leveraging Servlet 3.0 - Authentication without Forms using GlassFish v3 and Vaadin:

The new Servlet 3.0 specification in JavaEE 6 (JSR website, JavaOne Session, VC podcast) packs many new features, including Annotations, Dynamic Registration, Pluggability and Asynchronous Support. Servlet 3.0 also includes quite a number of security improvements, as described by Kumar a couple of months ago in a Summary of new Security Features in Servlet 3.0. As Ron explains...

Shai Almog presents a video of Biswajit Sarkar Talking About J2ME & LWUIT:

With the current holidays around here and quite a bit of work I didn't keep up the blog as I probably should. I'll try to get back into posting soon when everything calms down around here. While waiting for me to get my act together here is a talk that Biswajit Sarkar (author of the LWUIT 1.1 book) gave at the IndicThreads conference in India...

In the Weblogs, Kohsuke Kawaguchi says Good bye, Sun/Oracle:

I started working for Sun Microsystems since Janurary 2001, when I first came to the US. During these years I was able to work on many different projects, such as MSV, JAXB, JAX-WS, Metro, GlassFish v3, and Hudson, to name a few, with many great people. It was all quite an enjoyable journey. I won't list all those names one by one here, for it will be too long, but if you are one of them, I think you know that I'm talking about you. As my colleague Abhijit said once, a large part of enjoying your work is the people you work with. So with a bit of sadness and a lot of excitements, I announce that today is my last day at Oracle...

John Ferguson Smart talks about The 'Continuous Integration with Hudson' book build process:

Continuous Integration with Hudson is a new open source book project in the works. In the spirit of 'eating our own dogfood', this book is produced using Hudson. In this article, I discuss the build framework used for the 'Continuous Integration with Hudson' book. The 'Continuous Integration with Hudson' book is written in docbook, and is therefore XML source code which builds to PDF and HTML versions of the book. The source code is stored using git (in a github repository which will be eventually made public). The main branches are the following...

Masoud Kalili says Oracle is NOT taking back OpenSolaris, ZDNet Dana Blankenhorn got it wrong:

Once again the FUD around Solaris and OpenSolaris fate started to spread after Dana Blankenhorn misunderstood the licensing terms and used a eye catching and visitor increasing title, Oracle taking back OpenSolaris, for his blog entry. Well, from this article we can get that even the veteran writers can get things wrong and spread incorrect news :-) Folks, Solairs is one of the biggest Sun assets that Oracle is now own by taking over Sun . Solaris and OpenSolaris are going to be around in a much better shape than before because Oracle is betting its fight for the market share on this operating system to form a complete stack including storage, hardware, OS, middle-ware, support and so on...

In the Forums, in the GlassFish forum, Robert Weeks asks about using a JRuby Script Engine within OSGi?: Hello - I was wondering has been able to get the ScriptEngine (using jruby-engine.jar) to work correctly within an OSGi bundle? I am having issues getting it to work correctly wrt ruby.jar, and having the jars placed correctly so that the...

In the LWUIT forum, xxs523 has a question regardingMultiple Menu Program: Hi all, Can I set the tab title width of a tabbedpane in lwuit? If can, how?

In the Java 3D forum, washaq asks how can i load (.3DS or .obj) models with its textures in java: hi can someone plzzz tell me how i can load a 3ds or .obj model along with its texture. plzzzz here is code in which i load the model but how can i load its texture plzzz some one help mee or if some one hav his code relating to 3ds or .obj...


Our Spotlightthis week is What does the future hold for the Java Community Process (JCP)?, in which Ed Burnette interviews former JCP Executive Committee member Tony de la Lama:

The Java Community Process, or JCP, was created by Sun as the standards setting body for the Java language, libraries, and runtime. From 1998 to 2009, Sun ruled the JCP with an iron fist, but now that Oracle is calling the shots that will inevitably be changing. Recently, I discussed the topic with Tony de la Lama, senior vice president of research and development, at Embarcadero Technologies. Tony was a JCP founding executive committee member from 2000-2003 and prior to joining Embarcadero was general manager of Borland's Java business, so he knows a thing or two about how the JCP works (or fails to work)...

This week's java.net Poll asks How many portable devices with Internet connectivity do you own?. The poll will be live until Friday.


We've just published a new Feature Article: HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. We're also featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort); and 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).


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

Our java.net spotlight this week is Ed Burnette's interview with former JCP Executive Committee member Tony de la Lama. The topic of the interview is "What does the future hold for the Java Community Process (JCP)?"

Recently, I discussed the topic with Tony de la Lama, senior vice president of research and development, at Embarcadero Technologies. Tony was a JCP founding executive committee member from 2000-2003 and prior to joining Embarcadero was general manager of Borland's Java business, so he knows a thing or two about how the JCP works (or fails to work).

Back in the time frame when Tony was a member of the JCP, I was evaluating application servers for a small company that was planning to launch an online bill payment system. We were planning to use Java application servers as the backbone of a highly scalable back end. Borland had an application server at that time, and the presentation they gave to us was pretty impressive. So, I wonder if perhaps I had some contact with Tony back then.

Of course, we also considered other appserver vendors, including IBM and WebLogic. Ultimately, I worked on a partnership agreement that my company signed with WebLogic. Unfortunately, the project never actually happened, becoming yet another victim of the dot-com crash.

But back to the interview. In Tony's view, the JCP is a central aspect of what must be improved with respect to Java, due in particular to its glacial rate of progress:

If there's a major focus area to improve however, it would be the JCP's speed and agility which correlates to the Java platform's evolutionary velocity. There are many fine technologies being developed outside of the JCP process and are later brought into the platform, but why haven't those technologies incubated from within the JCP? For the JCP to stay relevant it needs to look for ways to develop a bias for speed in idea incubation, implementation and ultimately inclusion of new technologies faster than has been possible in the past.

In my view, with standards organizations, there is always a conflict between embrace of new technologies and the need to maintain stability within the progress of the standard. As we all know, often new technologies sound great, but the promise never comes to be. Also, often many different, and conflicting, new technologies spring up to address the same problem. So, how is a standards committee to react?

In the Linux world, the Debian project proceeds very slowly. Their stable edition is rock solid. However, Debian Stable also sometimes does not offer support for newer hardware. Ubuntu takes the opposite approach: it uses Debian Unstable as its basis, taking a new snapshot every six months, wraps that core with its own distribution components, and releases it to the world. The result: comparatively buggy releases, but pretty up to date with respect to hardware support. The JCP's method has often been to stand back and watch how things play out -- more Debian-like than Ubuntu-like. Surely this is sensible for a platform that is intended to provide high reliability, availability, and stability, right? Yet, the problem of JCP involvement in, and guidance of, Java innovation remains.

Tony suggests that one possibility for changing this would be for Oracle to start over, and use java.net as the incubator for new Java technologies that are potential candidates for becoming a part of the Java standard:

An alternative strategy is for Oracle to wipe the slate clean and start over by establishing itself as the official corporate sponsor of Java with decision making powers to guide a highly mobile and fast moving repository of all open source projects related to Java. New Java technologies would begin life on Java.net and with the input of an advisory body those technologies showing the most promise would be promoted to officially sponsored Java projects.

There's a lot more in the interview, including discussion of the Eclipse Foundation model, TCKs (Java Technology Compatibility Kits), Apache, and the Java 7 release. Read "What does the future hold for the Java Community Process (JCP)?" for all the details.


In Java Today, Dustin Marx created his personal list of the Ten Best Chapters of Software Development Books:

I have always had a fondness for books, both technical and non-technical. However, it seems to get increasingly difficult to read complete books. I have found that instead of reading entire books on software development, I tend to read specific chapters and portions that seem most relevant, useful, and interesting to me. In this blog post, I look at the ten chapters of software development books that I have found to be most influential or most impressive in my career so far as a software developer. These are chapters that I can enthusiastically recommend to any software developer who either wants to learn the subject of that chapter or who just wants to see what an especially well-written chapter can do...

Kirill Grouchnikov talks about the new Right-to-left support for the ribbon in Flamingo 5.0:

The latest 5.0dev drop of the Flamingo library (code-namedImogene) provides full right-to-left (RTL) support for the ribbon component and all its parts. Here are some screenshots of the ribbon running under iw-IL locale using the Office Blue 2007 skin from Substance core and Substance Flamingo plugin. The first screenshot shows the full RTL ribbon in action – click to see fullsize view ...

Geetjan posted Video: Toni Epple + Me at Belgrade University, Serbia:

During the time Toni and I were giving a NetBeans Platform Certified Training in Belgrade, Serbia, the students from the NetBeans User Group Serbiamade several small movies, amongst which was a pretty long interview with Toni and myself. And today I found they've posted the whole interview on YouTube and on their site. Here it is the whole interview, in which questions such as the following are asked and answered: "Who are you and what do you do?" "What are the main benefits of using NetBeans IDE?", "What's new in the upcoming NetBeans Platform 6.9?", "How many applications are there out there on the NetBeans Platform?", "How did Toni and Geertjan meet?" ...

In the Weblogs, Masoud Kalili says Oracle is NOT taking back OpenSolaris, ZDNet Dana Blankenhorn got it wrong:

Once again the FUD around Solaris and OpenSolaris fate started to spread after Dana Blankenhorn misunderstood the licensing terms and used a eye catching and visitor increasing title, Oracle taking back OpenSolaris, for his blog entry. Well, from this article we can get that even the veteran writers can get things wrong and spread incorrect news :-) Folks, Solairs is one of the biggest Sun assets that Oracle is now own by taking over Sun . Solaris and OpenSolaris are going to be around in a much better shape than before because Oracle is betting its fight for the market share on this operating system to form a complete stack including storage, hardware, OS, middle-ware, support and so on...

I posted Geertjan Discovers Raytheon Applying NetBeans in Mission Critical U.S. Department of Defense Software:

Geertjan Wielenga pointed out the Raytheon Virtual Control enterprise management and control system, "yet another NetBeans Platform application in the defense sector." I'm sure I must have sent out an application for employment to Raytheon multiple times during my career as a software engineer, since they have offices in my region and the work is in the sector where I've done most of my development. So, I find the fact that Raytheon would choose NetBeans as the platform for developing an application whose "robust capabilities are being applied across the LVC domains to support some of the most critical development programs in the Department of Defense (DoD)" to be yet another indicator of the stability and reliability that NetBeans provides...

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...

In the Forums, in the LWUIT forum, mahdi_hijaze posted a Form.getComponentAt() related suggestion: Hi LWUIT team, Form.getComponentIndex( int index ) is mapped to the internal content pane, so I expected that the Form.getComponentAt( int index ) is also mapped to the content pane which it is not. I may be wrong but I feel it is better to be...

In the Java SE forum, pisaia asks for help with aMultiple Menu Program: Hi, I want to create a program in Java, and I am using JFrames for my GUI. What the program does is that it has some buttons on a JFrame and each button does an event. One of this buttons has to lead in a new menu. I have decided that the...

In the GlassFish forum, cogido is getting an Exception while loading the app : java.lang.RuntimeException: EJB Container: Hello, I have some code that should be able to run using JDK 1.5 and JDK 1.6 I am using SwingWorker. I would like to know if when the end user is using JDK 1.6, the code will use the SwingWorker from "javax.swing.SwingWorker" and...


Our Spotlightthis week is What does the future hold for the Java Community Process (JCP)?, in which Ed Burnette interviews former JCP Executive Committee member Tony de la Lama:

The Java Community Process, or JCP, was created by Sun as the standards setting body for the Java language, libraries, and runtime. From 1998 to 2009, Sun ruled the JCP with an iron fist, but now that Oracle is calling the shots that will inevitably be changing. Recently, I discussed the topic with Tony de la Lama, senior vice president of research and development, at Embarcadero Technologies. Tony was a JCP founding executive committee member from 2000-2003 and prior to joining Embarcadero was general manager of Borland's Java business, so he knows a thing or two about how the JCP works (or fails to work)...

This week's java.net Poll asks How many portable devices with Internet connectivity do you own?. The poll will be live until Friday.


We've just published a new Feature Article: HTML5 Server-Push Technologies, Part 1 by Gregor Roth; this two-part series explains the new Server-Sent Events and WebSockets API in HTML5. We're also featuring Flexible Swing Reporting Using JIDE Aggregate and Pivot Tables, by Malcolm Davis (in which you learn about a Swing report alternative that provides 90% of the solution with 10% of the effort); and 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).


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 majority of people who voted in this past week's java.net poll are pleased that Oracle's acquisition of Sun has not significantly changed GlassFish's mode of operation as an open source project or its future development focus. A total of 200 votes were cast, with these results:

What do you like most about the new GlassFish Roadmap

  • 31% (62 votes) - GlassFish remains transparent and participatory
  • 4% (7 votes) - The addition of an Oracle-supported distribution
  • 31% (61 votes) - Clustering in GF v3.1
  • 4% (8 votes) - Interoperation with Oracle Middleware
  • 10% (20 votes) - I don't like anything about it
  • 17% (33 votes) - I don't know
  • 5% (9 votes) - Other

About 3/4 of the voters in the (non-scientific) survey indicated that there is something that they like most about the new GlassFish Roadmap. Within this group, about 42% were most pleased about the lack of change in how the project is being run going forward (GF remains transparent and participatory); another 42% were most pleased by the plan to add clustering in GF v3.1; about 10% were most pleased about either the addition of an Oracle-supported distribution or interoperation with Oracle Middleware; and 6% were most pleased by something in the roadmap that wasn't listed in the poll (other).

To me, this suggests quite broad approval within the community for the direction the GlassFish project is taking, post-Oracle acquisition. There's still definitely some confusion regarding licensing. For example, see the comments to Alexis Moussine-Pouchkine's GlassFish Roadmap slides posted.

ljnelson posted a comment to the poll titled "Licensing is clear as mud to me" in which he quotes portions of the new license and asks:

What does this mean? Can I bundle Glassfish open source edition--like I could previously--to host my commercial software? Or is that now prohibited? And if it is prohibited, how can this be the case if the source is governed by the GPL and the CDDL?

pelegri provided clarification in his response:

There will be two distributions: the oracle distribution and the OSS distribution. This is an arrangement similar to how it was under Sun. The details of the licenses used and the names of the releases vary a bit, but the general structure remains...

While overall the voters approve of GlassFish's direction, there was a some displeasure expressed: 10% of the voters said they don't like anything about the new GlassFish roadmap. Another 17% didn't know what they like most about the new roadmap.

cajo, who posted the third comment to the poll ("Missing option: Who cares?"), may be among the 10%:

There is vastly more to Java, and its infrastructure, than simply generating web pages. It is high time we started thinking about this.

New poll: Internet-connected portable devices

Our new java.net poll is about as basic as you can get: How many portable devices with Internet connectivity do you own? I'm asking this to lay down a baseline. Because this is the type of question that I think will be interesting to ask periodically, so we can observe the trends over time.

Though the poll is simple, I did spend some time trying to get the phrasing right. The device has to be "portable" -- i.e., you can carry it around with you with relative ease -- and it has to have Internet connectivity (i.e., an old cell phone that can only be used for phone calls doesn't count). Admittedly, there are still some gray areas. Just use your own judgment, and feel free to post comments that identify the gray areas you perceive, and the decision you made on whether those devices qualify as being portable and having Internet connectivity.


In Java Today,rtyler presents considerations Regarding the start of April and Hudson:

I had briefly contemplating what sort of silly posts I could write to celebrate April Fool's Day, when I sat down to write out some of them, I got a few sentences in and decided that they just weren't funny enough. Either I have very high standards, or I'm terribly unfunny. The web is awash with April Fool's articles, comics, headlines and everything else, so instead I'm going to just give you a few useful links...

alexismp writes about GlassFish and OSGi (and Sahoo) at EclipseCon:

As most of our frequent readers will know, GlassFish 3 is both modular and extensible. It ships as 200+ OSGi bundles running on Felix but also runs unmodified on Equinox. But how does this all benefit the GlassFish user (as opposed to the team developing the product)? This is what Sahoo presented at EclipseCon last week in the "OSGi & Java EE in GlassFish" session...

Adam Bien asks Is JavaFX Ready for the Enterprise? Or Why Should You Care (11 Questions and Answers):

1. Easy start: Starting with Java FX is surprisingly easy. You can build your first application in minutes. There are many "hello world" tutorials out there. That is important for the first impression and so adoption. The tutorials, however, are more focussed on visual effects and less on clean application structure, patterns and code organization. Good IDE support. 2. The plain IDE support (e.g. editing experience) is still not as good as Java. You get basic refactorings like e.g. renaming methods, classes and packages, moving artifacts etc. More sophisticated refactorings like e.g. extract method, extract attribute, quick fix etc. are still not available. The tool support right now is, however, orders of magnitude better than it was at the beginning of Java...

In the Weblogs, Masoud Kalili says Oracle is NOT taking back OpenSolaris, ZDNet Dana Blankenhorn got it wrong:

Once again the FUD around Solaris and OpenSolaris fate started to spread after Dana Blankenhorn misunderstood the licensing terms and used a eye catching and visitor increasing title, Oracle taking back OpenSolaris, for his blog entry. Well, from this article we can get that even the veteran writers can get things wrong and spread incorrect news :-) Folks, Solairs is one of the biggest Sun assets that Oracle is now own by taking over Sun . Solaris and OpenSolaris are going to be around in a much better shape than before because Oracle is betting its fight for the market share on this operating system to form a complete stack including storage, hardware, OS, middle-ware, support and so on...

I posted Geertjan Discovers Raytheon Applying NetBeans in Mission Critical U.S. Department of Defense Software:

Geertjan Wielenga pointed out the Raytheon Virtual Control enterprise management and control system, "yet another NetBeans Platform application in the defense sector." I'm sure I must have sent out an application for employment to Raytheon multiple times during my career as a software engineer, since they have offices in my region and the work is in the sector where I've done most of my development. So, I find the fact that Raytheon would choose NetBeans as the platform for developing an application whose "robust capabilities are being applied across the LVC domains to support some of the most critical development programs in the Department of Defense (DoD)" to be yet another indicator of the stability and reliability that NetBeans provides...

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...

In the Forums,xiangyingbing asks Why jboss5.1 is so slow on solaris 10?: Why jboss5.1 is so slow on solaris 10? I read many related articles, but none of them give a solution. Those artices are ...

In the LWUIT forum, shankar_vn describes Problems with CoordinateLayout: On ContentPane i added one container of type CoordinateLayout in center and a Label in South. My screen is 240*320, after deducting label's height from ContentPane's height, there is 285 points available for my CoordinateLayout container...

In the Java SE forum, odoremieux has questions about Code compatible 1.5 and 1.6: Hello, I have some code that should be able to run using JDK 1.5 and JDK 1.6 I am using SwingWorker. I would like to know if when the end user is using JDK 1.6, the code will use the SwingWorker from "javax.swing.SwingWorker" and...


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

Filter Blog

By date: