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

Change the Locks Blog

Posted by kfarnham Sep 30, 2008

The case against checkPermission()

A few years back, Denis Pilipchuk wrote a four-part series on Java versus .NET Security from a number of angles, including code containment, crypto, code protection, authorization and authentication, and more. The series was later assembled into a "Short Cut" PDF. Editing these articles, I have to say I was a little overwhelmed by the depth with which he delved into the topic. For the layman, the application developer who wants to be security-aware without having to become a security expert, you often just want to know if Java security is "good enough".

And that raises the question "good enough... how?" Secure enough? Configurable enough? Flexible enough? Practical enough? Performant enough? All of these factors often tend to work against each other: offer too much flexibility and you might unwittingly open a security hole. But be too stringent and application developers can't do anything interesting.

Denis re-frames the discussion in today's Feature Article,Pitfalls of the Java Permissions Model, taking a historical look at how the call-stack based concept of permissions emerged:

The Java SE Access Control model, built around various permission classes and code-based security, has not been able to grow up with the Java platform and cannot satisfy the requirements of today's enterprise systems. This article analyzes the root causes of the problem, and suggests alternative approaches.


In Java Today,Caciocavallo project co-founder Roman Kennke has apparently made the first OpenJDK commit by someone with no Sun ties. As he explainsin his blog, "Ok, I'm not the first one, but most (or all?) non-Sunnies I've seen committing have been ex-Sun-employees. That was good timing. Not that I care much if I do the commit or some guy inside Sun, as long as I can get a good patch in, but it is a big nice step in the right direction."

Noted in Kirill Grouchnikov's Swing Links of the Week, Maxim Zakharenkov has posted the slides (PDF) for his JavaZone presentation on debugging with SwingExplorer. The slides show a simple but buggy Swing application, and how SwingExplorer can be used to track down problems with layout, painting, event-listening, and misuse of the event-dispatch thread

Don't forget that the 2009 Mobile, Media, and eMbedded Developer Days Call for Papers closes today, September 30, for technical sessions, panel sessions, hands on talks, and lightning talks. If you want to submit any of these for consideration, visit the Call for Papers page and follow the instructions there.


Today's Weblogsbegin with Eamonn McManus' announcement JMX Namespaces now available in JDK 7. "The JMX Namespace feature has now been integrated into the JDK 7 platform. You can read about it in detail in the online documentation for javax.management.namespace. Here's my quick summary."

Kohsuke Kawaguchi follows up yesterday's announcement of an easier-to-install Hudson for Windows with winsw: Windows service wrapper in less restrictive license. "I wrote a little program that can host any executable (Java included) as a Windows service, and made it available in the BSD license."

Finally, in GlassFish Migration: WebLogic's Split Directory to Ear, Sekhar Vajjhala writes, "in my one my previous blogs, I wrote about how GlassFish verifier can be used to verify an archive when migrating J2EE/Java EE applications to GlassFish. Here I will show how to generate an Java EE ear file starting from WebLogic's Split Directory Development. "


In today's Forums, Fabian Ritzmann explains where JAX-WS keeps its Maven POMs in the follow-up Re: Using WSIT with maven. "JAX-WS has a number of POMs that you might be able to use. WSIT doesn't really add that many dependencies. XWSS and FastInfoset are the ones I can think of from the top of my head. You can find the POMs in CVS:
CVSROOT = :pserver:javanetuserid@cvs.dev.java.net:/cvs
Repository = jax-ws-sources/repo"

whartung explains the purpose and application of SOAP in Re: Publishing a web API using glassfish, is there an easy way?"Believe it or not, SOAP is the big winner here for you. It pretty much does what you want to do Is it complicated? Yes, it CAN be. But if you're looking to do simple things, then SOAP is simple (well, simple enough), particularly in Glassfish. SOAP suffers from several things. It's biggest problem is simply that it has been moving SO fast in the past several years. By the time folks implement and agree on one aspect, they're adding more to it."

Finally, Shai Almog offer a tip for LWUIT customization in Re: How to change the "background selection color" of the command list. "The menu is a list hence the component within the list is the default cell renderer. The default cell renderer doesn't have its on UIID and so it uses the Label UIID which it derives. To replace that you can replace the menu renderer with any renderer you want that carries any UIID style you desire."


Current and upcoming Java Events :

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


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



The case against checkPermission()  
kfarnham

Can't Let Go Blog

Posted by kfarnham Sep 29, 2008

Taking the M&E Community with you

Perhaps it's natural: Twitter tweets are tiny by design, and optimized for the small device. So it's highly appropriate for theMobile & Embedded Community to adopt Twitter as a means of keeping its members and friends in the loop.

As Roger Brinkley explains, the Mobile & Embedded Community has joined twitter, with the account name mobile_embedded. "Community Leaders will post snippets on our travels and other events that are happening in the community. We will also post highlights from the community front page and other sources. Community members or other interested Mobile, Media, & Embedded developers could allow us to follow their happening with their twitter accounts. Keep us up on the professional happenings of others. Let us know about a JUG meeting or what you are working on. If we get enough information flowing I will see if we can get the RSS feed published on the M&E; community main page."


Also in Java Today, The Aquarium notes GlassFish's support for HTTP compression, and a good explanation about how to set it up: "GlassFish supports HTTP Compression and Shing Wai describes in detail how to configure compression, compressionMinSize, compressableMimeType and noCompressionUserAgents. This feature will be enabled in next month's GlassFish v3 Prelude release."

John Ferguson Smart has announced the free release of his book JSF Jumpstarter. "The JSF Jumpstarter book is a short (67 pages), tutorial introduction to JSF, suitable for new JSF developers. If you need to get up to speed quickly with JSF, this book may be able to help you. The good news is, this book has now been released into the public domain - in other words, you can now download it for free! In a short 65 pages, this book teaches you how to build dynamic web sites in Java using JavaServer Faces, using a hands-on, practical approach. Little or no prior experience in web development is necessary (though a bit of Java knowledge would help)."


Jean-Francois Arcand previews the next version of Grizzly in today's Weblogs, writing Onedoteightdotsix is out: A speedy Grizzly is out again! "This week we have released our latest monster version, which is 1.8.6. 1.8.6 is the foundation for GlassFish v3 and Sailfin...and many many new application! And we tested that one like a crazy Grizzly!"

Christian Frei announces Jazoon Rookies - Europe's first Young JAVA Developer Speaker's Competition Jazoon Rookies is Europe's first ever young Java developer speaker's competition which will be held during Jazoon'09 in Zurich, Switzerland from 22 25. June 2009. Get more information on jazoon.com.

Finally, Kohsuke Kawaguchi says that Installing Hudson on Windows just got even easier. "Windows make it very hard to run an ordinary program as a service, so Erik had to write a rather long description of how to achieve this. In Hudson 1.254, I implemented a new feature so that Hudson can install itself as a Windows service with a few mouse clicks, complete with a restart of Hudson."


This week's Spotlightis on the SDN's latest Ask The Experts session, focusing on OpenSSO. "The OpenSSO project is designed to provide an open and extensible identity services infrastructure that simplifies the deployment of transparent single sign-on (SSO) as a security component in a network environment. The project is the open source counterpart of OpenSSO Enterprise 8.0 (formerly Sun Access Manager), Sun's premier access management, identity federation, and web services solution. Got a question about OpenSSO? Post it during this session and get answers from four key members of Sun's identity and access management team: Rajeev Angal, Aravindan Ranganathan, Dilli Dorai, and Qingwen Cheng."


In today's Forums,romanz explains ME file access in Re: how to use file:// protocol to access directory. "To access anything in the device file system via file:// protocol, JSR-75 FileConnection is used. The JSR is able to restrict file system access, i.e. not show the entire directory structure to Java applications. Typically, the first thing a MIDlet should do before attempting to access any directory (after verifying that JSR-75 is present), is a call to javax.microedition.io.file.FileSystemRegistry.listRoots(), which tells what virtual file system roots are accessible to the application. For an example of FileConnection usage, you can check the FileBrowser MIDlet in PDAPDemo suite from Sun Java Wireless Toolkit (version 2.5.2 is available at http://java.sun.com/products/sjwtoolkit/download.html). For more details on the FileConnection API, please see the specification at http://www.jcp.org/en/jsr/detail?id=75"

kawaiimomo warns against willy-nilly use ofSystem.gc() in ME apps, as explained in Re: Does system.gc() really help your app to get more efficient? "Any j2me experienced programmer/guru will tell you not to use gc() as the kvm is wise enough to know when it needs to call gc. In many MIDlets I've done I used System.gc() a lot, just in places such as after loading a big amount of images, data, or after performing any operation that would leave _a lot_ of objects that were ready to being collected. It will probably make the app slower, but you can avoid OutOfMemoryExceptions (for a larger period of time at least)."

denizoguz wants opinions on whether or not to useJMC on a real project. "We think to use JMC in a several million dolar project. In this project mpeg4 and telemetry data are contained in a transport stream. Java application will display elementary data on video and allow some operations like zoom, chaning contrast etc. on the video file. Target operating system is Windows. I know JMC is preview stage now but we have more than 6 months to complete the project and 1.0 release is very close. Do you think that it is risky?"


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.



Taking the M&E Community with you  
kfarnham

Miles Away Blog

Posted by kfarnham Sep 26, 2008

The editor's desk moves north

So, I've been moving for the last month (you might remember mydeparture from Atlanta a few weeks back), holed up for September in an apartment while waiting for the house to finish and somehow arranging a home loan despite not being able to sell the old house... all of which has hopefully been more or less invisible to the average java.net reader, except perhaps for the three days when I was so totally offline that O'Reilly's Kevin Farnham filled in for me (this would be about the time I was calling the JavaPosse at 10 at night while driving through a tropical downpour from somewhere between Knoxville and Lexington).

Anyways, I'm looking forward to being genuinely settled in as of tomorrow, which will complete this move. Of course, it's probably atypical: I'm going from Atlanta, which seemingly has gobs of Java jobs (I got three unsolicited e-mails from recruiters this week before realizing my resume still says I'm in Georgia), up to Grand Rapids, a metro area that's 80% smaller by population. The trick is that in some cases -- like writing, editing, contract programming, consulting, documentation, design, and probably a bunch more tasks I'm forgetting -- it's possible to move and take your job with you. Of course, this is true of anyone who works for him- or herself, but it seems like it should be increasingly true throughout our highly-distributed industry. Any job that can be offshored to Bangalore can also be outsourced to home offices in any town, large or small: what should really matter is the quality of the people doing the work, how well they know what they're doing, how reachable they are, and of course, how much they charge.

Instead of insisting all the developers live in decreasingly viable mega-cities -- sorry, Silicon Valley, I can't imagine paying those rents or driving 101 in anger on a daily basis -- wouldn't it be better if we could farm out the work all over the place? There are lots of places outside the cities with low cost of living, little to no traffic, and lots of space. All you need is high speed internet.

Mine's apparently getting hooked up Tuesday.


Apropos of this, the latest java.net Poll asks "Have you ever relocated for a programming job?" Cast your vote on the front page, then visit the results page for current tallies and discussion.


The latest Java Mobility Podcast is Java Mobility Podcast 58: Diamond Powder - data collectors for MIDP. The first in a series of podcasts from the Brazilian Month of Java, Renato Belia discusses his recently promoted project Diamond Powder and it's data collector facilities.


In Java Today, Dalibor Topic has posted an update from this week's JVM Languages Summit. "he JVM Languages Summit takes place this week on Sun campus in Santa Clara. The agendahas links to individual talks, with slides appearing after sessions. So if you want to know more about Hotspot optimizations, JRuby internals, PHP on the JVM, ASM, Da Vinci VM, etc. and like me are only reading about the summit on twitter streams, this should provide some background to the tweets."

JBoss' Bill Burke has posted an article on Javalobby about Putting Java to REST. "Last month I gave you an Introduction to REST. It was 100% theory, so now its time to see a little bit of REST in action. Since I am primarily a Java programmer, Part II of this series will focus on writing RESTFul Web services using the Java language. REST does not require a specific client or server-side framework in order to write your Web services. All you need is a client or server that supports the HTTP protocol. In Java land, servlets are a fine instrument for building your distributed apps, but can be a bit cumbersome and require a bunch of glue-code and XML configuration to get things going. So, about a year and a half ago,JSR-311, JAX-RS, was started at the JCP to provide an annotation-based framework to help you be more productive in writing RESTFul Web services. In this article, we'll implement various simple Web services using the JAX-RS specification. "

Josh Bloch gets concise in Bumper-Sticker API Design: "My conference session How to Design a Good API and Why it Matters has always drawn large crowds; on InfoQ was the third most viewed content last year. When I presented this session as an invited talk at OOPSLA 2006, I was given the opportunity to write an abstract for the proceedings. In place of an ordinary abstract I decided to try something a bit unusual: I distilled the essence of the talk down to a modest collection of pithy maxims."


In today's Weblogs, Terrence Barr passes along a deadline reminder in Mobile, Media & eMbedded Developer Days: Call for Papers closing soon. "As announced previously the Java Mobile, Media & eMbedded Developer Days have been moved to January 2009 and along with that we've also kept the Call for Papers open a little longer - it will close in a few days."

Rich Unger explains the reasoning behind creating a Domain Specific Language for Cloud Computing. "The honest truth is that Apex was developed for purely technical reasons. Salesforce.com could have implemented a Java layer to be its platform, or (*shudder*) as an XML schema. (For the record, that was never even seriously contemplated). Certainly both approaches would have resulted in being perceived as more "open". But, lots of things that Apex takes care of for you at a language level would have to be done in libraries, and with a lot less type checking."

Finally, Kohsuke Kawaguchi announces the Hudson 1.253 release. "Since I only had limited connectivity while I was on the road, I refrained from making a release for the past 2 weeks. The end result is that this 1.253 release contains two weeks worth of changes, making it a biggest Hudson release in recent years."


In today's Forums,sm157516 explains the specifics of a now-fixed GlassFish bug in Re: jdbc-connection-pool settings. "This is a bug with the AssocWithThreadResourcePool. Whenever a connection is got, the numConnUsed variable need to be incremented which is not done. Since a decrement is done for every connection closed without an increment, negative values are observed for this variable consistently. Sometimes, the numConnUsed's negative value could be equal to the number of times the same connection is reused by the thread before it is destroyed, since the connection is associated with the thread. This has been fixed as part of the issue 5129 : https://glassfish.dev.java.net/issues/show_bug.cgi?id=5129."

Harald Kuhr replies to yesterday's graphics-performance question in Re: [JAVA2D] Long-running rendering ...was Re: Drawing to an off screen buffer. "You might want to take a look at the Task class from Swing Application Framework. It is a great abstraction for long-running operations in general. It's basically a fancy SwingWorker, with support for a nice publish/process-protocol, which I think you could use for your "drip-feed" mechanism. Not really sure it fits your needs, but I think it's worth looking into."

Finally, lordcenzin would like some guidance on doing drag-n-drop panel to panel. "I'm quite new to java gui implementations. I'd ike to receive some suggestion on how to perform the drag-n-drop feature from one JPanel to another. The proble is that i need to drag an image (like an icon that represent some entity for my application) and show that image (eventually different). Just like a workflow. I read all tutorials, but I can't get many efforts. Do I have to consider the java.awt.dnd package?"


Current and upcoming Java Events :

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


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



The editor's desk moves north  
kfarnham

Colorful Blog

Posted by kfarnham Sep 25, 2008

Spiffing up your LWUIT application

Last month, author Biswajit Sarkar offered An Introduction to the Lightweight User Interface Toolkit, offering a bird's eye view of the major concepts of LWUIT, its goals, design, and features. Of course, a high-level overview can only do so much, so given the interest in LWUIT, we decided to start digging further into the toolkit with a followup article.

You may recall from the first article that LWUIT shares a lot of concepts with Swing, particularly in the concept of using lightweight rendering to achieve a consistent look-and-feel across devices (which, given that the devices' native L&Fs aren't as well-known or beloved as the Mac or Windows interfaces, might make LWUIT's value-proposition even more appealing than Swing's). What's even more remarkable is that LWUIT borrows some ideas that have been kicking around the Swing realm for years, like SwingX'spainters, that haven't yet made it into Swing itself.

Biswajit focuses on some of these widget-customization features in today's Feature Article,Using Styles, Themes, and Painters with LWUIT.

The concept of style is the foundation on whichtheming is built. The idea behind style is to centrally define the visual attributes for each component. In addition to its physical design, such as its shape, the appearance of a widget can be defined in terms of a number of common features.

In the article, you'll learn about those features, how you assemble combinations of colors, fonts, images and opacity into styles and themes, and have GUI elements use those settings. And if you need not just consistent graphic attributes but also need to use the same custom painting code across multiple components, that's where LWUIT's painters come in to play.


In Java Today, Roman Kennke is reporting further progress on OpenJDK's Caciocavallo project, which seeks to improve the portability of AWT/Java2D backends. In Caciocavallo for the masses, he discusses two new widgets for AWT peers, theTextFieldPeer and a prototype of aTextAreaPeer. "I also continued with The Big Font Refactoring in Caciocavallo. The plan is to enable replacing of the font implementation, which is currently not at all possible."

Apple has announcedupdates for its Java runtime on Leopard and Tiger. Java for Mac OS X 10.5 Update 2 updates Java SE 6 (64-bit Intel only), J2SE 5.0, and J2SE 1.4.2 with security, performance and compatibility for Leopard users. Similarly, Java for Mac OS X 10.4, Release 7 "delivers improved reliability and compatibility" for J2SE 5.0 and J2SE 1.4.2 on Tiger. Both runtimes are also available via Software Update.

Jim Weaver's latest JavaFX tutorial in JavaLobby introduces the clever technique of Using the Java Deployment Toolkit with JavaFX Applets. "In a nutshell, the Java Deployment Toolkit is a JavaScript library maintained by Sun and always available at runtime by your HTML code. This library has several methods that perform tasks such as sensing Java-related infrastructure and installing the JRE on client machines. We'll use one of these methods, namely runApplet, to run a JavaFX applet with a specified minimum JRE version."


Today's Weblogsfeature two blogs about GlassFish's adventures in Brazil, starting with Arun Gupta description of GlassFish @ DF JUG in Brasilia. "Daniel deOliveira, a Java Champion and DF JUG(oldest & biggest with 33,000 member Java User Group) founder and leader picked me up at the airport. He demonstrated true welcoming spirit by taking me around the city and showing the key places. And again he volunteered to take me to the venue of JUG."

Kohsuke Kawaguchi also blogs about the Brazil tour. "I've been to Brazil to talk about Hudson and GlassFish v3 for the past two weeks, and this is my brief trip report."

Elsewhere, Rich Unger takes a crack at Defining Cloud Computing. "Okay, so what is "cloud computing"? Much like "rich internet application" or "service-oriented application", the terminology has been co-opted by so many companies as to almost completely lose its meaning. But, since this is my blog, I'll define cloud computing as it pleases me."


In today's Forums,cbare asks about strategies for Drawing to an off screen buffer. "I'm trying to build a little program that draws complicated time-consuming plots. I'd like to avoid having my UI freeze up while I'm rendering, so I don't want to do the rendering on the event dispatch thread. So, what's the modern (well, Java 5 level of modern) way of doing this? First, should I be drawing on a Canvas or a JPanel? I'm using Swing components in the rest of my app and I've read that you're not supposed to mix Swing and AWT, but I can switch if there's good reason. Next, do I want to use VolatileImage, BufferStrategy, or something else? Can you even get a BufferStrategy for a JPanel? I'd like to get hardware double buffering, if possible."

tarbo reminds us of the implementations details of Generics in the reply Re: Generics and getting the actual type programmatically. "Information on generics or, more specifically, instances of types is not available at runtime. You may try to work one way or the other, but the information is simply not there at runtime; generics are purely a tool for the compiler to help you limit the number of casts and possible programming errors. This leads to some curiosities. Collection<String> and Collection<Object> represent the exact same class. And a Collection<K> is clueless as to what this K is, exactly; the compiler did static analysis of the code and enforced that only Ks could be supplied, and automagically added casts when you iterate over the collection's contents."

Finally, robjd notices that Javascript Number is converted to a java String with trailing ".0". "I have a Javascript variable containing an integer value e,g. x = Number("3") which is passed to an applet method expecting a String parameter. In version 1.6.0_07 and prior versions the String would be converted to "3", but in 1.6.0_10-rc2-b32 it is converted to "3.0". We can workaround this issue by applying the String() function before calling the applet or overloading our applet methods to receive an int and then explicitly converting to a String, but this will involve coding and re-testing. Does anyone know if this new behaviour is what we should expect by a JavaScript Number to java String conversion? Should this be raised as a bug or do we need to make the necessary application code changes? "


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.



Spiffing up your LWUIT application  
kfarnham

Ominous Man Blog

Posted by kfarnham Sep 23, 2008

Brian Goetz says your webapp may be broken

Concurrency expert Brian Goetz has a serious warning to webapp developers: put mutable objects in your HttpSessionand you're probably a concurrency accident waiting to happen.

That's the problem lurking behind his recent article, provocatively entitled, Are all stateful Web applications broken?

While thread-safety is a term we typically use to describe code, in actuality it is about data. Specifically, thread safety is about properly coordinating access to mutable data that is accessed by multiple threads. Servlet applications are frequently thread-safe by virtue of the fact that they do not share any mutable data and therefore require no additional synchronization. But there are lots of ways that shared state can be introduced into Web applications — not only scoped containers like HttpSessionand ServletContext, but also static fields and instance fields of HttpServlet objects. Once a Web application wants to share data across requests, the application developer must pay attention to where that shared data is and ensure that there is sufficient coordination (synchronization) between threads when accessing the shared data to avoid threading hazards.

Once you put mutable data into the HttpSession, you're exposed to the possibility of various failures caused by multiple threads accessing the data simultaneously, such as one thread putting the data into an inconsistent state while another reads it.

Fortunately, Brian considers a number of solutions, some more complete than others, so if you have a webapp that puts mutable data in your session object, you might want to take a look.


Also in Java Today, the JCP SE/EE Executive Committee has voted 15-0-1 to approve JSR 311, the Java API for RESTful Web Services. The API specifies the javax.ws.rest package, and provides an API for working with websites that adhere to the REST web service architecture. java.net's Jersey project, part of GlassFish, provides the reference implementation for the JSR.

Next week's Ask The Experts topic on SDN will be OpenSSO, which simplifies the deployment of transparent single sign-on (SSO) as a security component in a network environment. "Got a question about OpenSSO? Post it during this session and get answers from four key members of Sun's identity and access management team: Rajeev Angal, Aravindan Ranganathan, Dilli Dorai, and Qingwen Cheng. You can post questions about OpenSSO on starting September 29."


Today's Weblogsstart with Ed Burns considering a JSFOne idea: infer to-view-id. "At JSFOne, someone suggested modifying the navigation rule system such that if the to-view-id is absent from a navigation-case, the to-view-id value be inferred from the outcome."

Long-absent blogger Rich Unger remarks I can't turn my back on you people for a second! "...much less an entire year!"

Finally, Sekhar Vajjhala looks at Verification Tools for Migration to GlassFish. "When migrating a Java EE/J2EE application to GlassFish, verification is for Java EE/J2EE compliance is a useful step. Verification can be done using different tools. Here is a summary of verification support in different tools."


In today's Forums,km explains a perception issue in Re: Precompile JSP problems. "Again, I am sorry that this is all not obvious. The most important point about asadmin is that it is a remotable admin client. You can have asadmin running on your laptop and all your domains on other (big) machines and still, you can manage all of them from your laptop. That brings in a fine point about asadmin that ~95% of its commands are "remote", working on a particular "domain" and work based on that domain's admin server's 5-tuple -- host name, admin port-number, admin user name, password and security status. The default values for 3 of them make it indistinguishable what asadmin really does. Since default values are "localhost", "4848" and false for host, port and security status respectively, it's not immediately clear that asadmin running on "localhost" would actually send an HTTP request to the domain that's listening on 4848 on "localhost". Hope this makes it clear(er)."

Ryan de Laplante asks about the status of modularization in GlassFish V3: OSGi, HK2 and JSR 277. "This blog entry gave me the impression that HK2 was going to be the reference implementation for JSR 277, and that is why GlassFish V3 was using it: http://www.xlml.com/aehso/2007/05/15/glassfish-v3-hk2-modules/. But later GlassFish V3 chose OSGi. I know it uses a hybrid approach of HK2 + OSGi: http://weblogs.java.net/blog/ss141213/archive/2008/04/glassfish_v3_on.html. I'm wondering if HK2 is not going to be an implementation of JSR 277, and of OSGi is going to become the foundation of JSR 277?"

Finally abhikiki needs help eliminating deprecated APIs in Jaxb upgradation to 2.0. "In Jaxb 2.0,some interfaces like javax.xml.bind.validator are deprecated. What are the replacement for that in jaxb 2.0? I have code written with these interfaces(Jaxb1.x). How do I replace them with jaxb2.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.



Brian Goetz says your webapp may be broken  
kfarnham

The Freshmen Blog

Posted by kfarnham Sep 23, 2008

Students (and indie developers) vie for Darkstar dominance

It's been a little while since we've heard a lot from Project Darkstar, the Java-based MMO gaming back-end engine, but it looks like they're back in a pretty big way, with Sun sponsoring a contest for projects by students and independent developers that use Project Darkstar.

And the prizes are pretty sweet.

The Project Darkstar Developer Challenge is looking for the best applications and utilities (libraries, tools, plug-in services and managers, etc.) for Project Darkstar. Grand prize winners in the student and non-student categories get a 2009 Game Developer Conference (GDC) pass and an opportunity to show their work in a GDC presentation, plus cash for travel and a feature on the Project Darkstar site. Runners-up get a GDC pass, cash for travel and the feature. And all entrants get a Project Darkstar t-shirt. Entrants must be members of the Project Darkstar community, and must submit their entries between November 17, 2008 and January 19, 2009.

It's a big enough announcement that we've made it this week's Spotlight, so it'll stick around on the front page for the rest of the week.

So if MMOs are your thing, get cracking... it could literally be your ticket to GDC.


Also in Java Today, Kirill Grouchnikov is inviting interested developers to participate of two prominent java.net Swing projects he founded, the Substance look-and-feel and the Flamingo component suite. "Are you interested in contributing to one of my open-source projects, but don't know where to start? It is actually my fault, and this blog post will try to serve as an entry point to the interested developers who want to contribute to the success, diversity and adoption of Swing for high performing, modern and customizable user interfaces." Entry points include bug reporting, documentation, and code contributions, with some specific and straightforward suggested tasks on the latter.

The latest edition, issue 181 of the JavaTools Community Newsletter is out, with news from projects and tool-related items of interest from around the web, new tools in the community and a graduation from the incubator (WebLEAFTest), and a ToolTip on Minimizing JavaScript files.


In today's Weblogs, Sonya Barry hopes to help answer the question How do I get started? "I'm trying to fix a problem here. I think new developers are underserved at java.net - we're so focused on new projects that we haven't addressed new developers looking for projects to gain experience with. Here's where I try to create a starting point."

Arun Gupta's writes further about JSF with his latest tip, TOTD #46: Facelets with Java Server Faces 1.2. "This blog updates TOTD #45 to use Facelets as the view technology. Powerful templating system, re-use and ease-of-development, designer-friendly are the key benefits of Facelets."

Manfred Riem is still Gathering further requirements for Manor 'n Rock JSF Canvas components. "Feel free to file comments and we will include them in our considerations."


In today's Forums, Qunhuan Mei asks fellow LWUIT developers Is there a convenient way to handle a list of buttons...?"Suppose I have a list of names and want that to appear in a form to be selected individually, I could first initialise a

kfarnham

Wanna Be Blog

Posted by kfarnham Sep 22, 2008

Mac and Solaris ME development getting more practical?

It's long been a thorn in the side of some ME developers that the Wireless Toolkit (WTK) originally shipped with Windows-only native bits, only adding Linux over the last few years. Other operating systems -- most obviously Mac, but also Solaris, BSD, Linux for non-x86 architectures, etc. -- were left on the outside looking in. A lot of people thought this was an absurd limitation, as Java SE should surely be powerful enough to provide any needed tooling for ME and even emulation of ME devices.

While the WTK itself doesn't show any intention of eliminating its native code dependencies, the "just do it with Java SE" crowd has worked out all-Java alternatives, unblocking ME development on other platforms. Terrence Barr points out this development in his blog, Developing mobility apps on Mac OS X and Solaris:

Increasingly, people are also going the route of using Java ME emulators written in Java SE to provide mobility functionality on platforms that otherwise lack WTK support, such as OS X and Solaris. Some examples are mpowerplayer and microemulator. While this approach is not perfect (in particular, Java SE-based emulators tend to lack tight platform integration, some advanced tools such as monitoring, and some of the latest JSRs features) it does allow the Mac OS user to run and develop Java ME applications directly on OS X.

That would seem to solve only part of the problem, as the alternative-OS user is still cut out of the WTK toolchain, but Terrence says there are developments on that front too.

Karol Harezlak from the NetBeans team has built a plug-in for microemulator that allows Java ME application development within NetBeans 6 in a fashion similar to the original Mobility plug-in under Windows and Linux. Currently there are still a couple of limitations with this in respect to the microemulator functionality (MIDP CustomItem is not completely implemented and there are a couple of issues with some JSR implementations). But it's a great start and since microemulator is an open source project I expect the community to continue to address the remaining issues over time.


Also in today's Weblogs, Rémi Forax reminds of this week's mini-conference for the dynamic-languages-on-the-JVM crowd, in Meet me at JVM Language Summit. He notes, "I will be at JVM Language Summit as a speaker to talk about JSR 292 backport."

Finally, Binod offers the tutorial MD5 Authentication example for converged applications. "This entry explains how to configure JDBC Realm for converged applications. "


In Java Today,The Aquarium has posted details about upcoming GlassFish Webinars. "Online-based Webinars are working pretty well. We will continue to fine-tune and improve the mechanics, but we are already lining up a full schedule. The next two presentations are: • Sep 25th, 2008 - Grizzly and Grizzly 2.0, JFA and Aleksei, Tentative • Oct 2nd, 2008 - EJB 3.1 Overview, Ken Saks, Confirmed. Full schedule details are at GlassFish TV Schedule. Non-Sun presenters are very welcome. PS. Stay tuned for other online chats around our GlassFish v3 Prelude launch next month."

In a new SDN article, Enrique Ortiz takes a look at Using JavaScript Object Notation (JSON) in Java ME for Data Interchange. "In mobile applications, developers typically rely on home-grown data-interchange formats or on the Extensible Markup Language (XML). [...] These two approaches also have disadvantages, one being proprietary in nature, non-standard, and potentially non-interoperable, while the other one could be considered too heavy and verbose for data representation, again this is especially true for mobile and embedded applications. An alternative to consider is the JavaScript Object Notation or JSON, a lightweight data-interchange format. In this article I introduce JSON for data interchange in the Java Platform, Micro Edition (Java ME)"

InfoQ has posted a presentation from Brian Goetz called Concurrency: Past and Present. "In this presentation from QCon London 2008, Brian Goetzdiscusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, Software Transactional Memory, the history of concurrency, alternatives to threads, Erlang, Scala, and recommendations for concurrency in Java. Watch Concurrency: Past and Present (60 minutes)."


In today's Forums, Qunhuan Mei suggests that the LWUIT compatibility matrix for mobile devices should include all results, not just successes, making this point in the follow-up DeviceDB - to include failed phones etc? "The DeviceDB is very helpful to see what devices have been successfully tested for LWUIT app. It might also be useful to have a second list to show what devices (excluding MIDP 1.0 and CLDC 1.0) have failed to run LWUIT app, and may be a third list to show pending problem phones (e.g. Nokia N95-8G)."

When is an applet not an applet anymore? Maybe when it's dragged out of the browser. kazssym wonders if Java Web Start does not call stop() for dragged applets? "I am writing a plugin that saves applet data on stop() with JNLP PersistenceService and restores it on next run. When I run it in a browser, it saves applet data successfully. But when I run it from the desktop after I drag it from the browser window and make a desktop shortcut, it does not save at all. I managed to run it with a debugger and found that stop() was not called when I close its window. I may be wrong but at least a break point at the beginning of stop() was not hit."

Does <applet> go away in HTML5? In Re: Embeddeding applets in HTML5, kbr writes, "thanks for pointing this out and trying to work around the problem. I hadn't been aware that the applet tag had actually been obsoleted in HTML 5. We need to fix the IE port of the Java Plug-In to support the specification of the application/x-java-applet MIME type in the object tag. Currently there are assumptions that the IE-specific CLSID mechanism is always being used. I've filed 6750726 to track this issue and marked it with the highest priority. FWIW, I've also filed a bug with the W3C asking them to please not break the applet tag, but instead to leave it deprecated.


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.



Mac and Solaris ME development getting more practical?  
kfarnham

Snakecharming the Masses Blog

Posted by kfarnham Sep 19, 2008

The performance arms race over in JavaScript-land

JavaScript takes a lot of abuse for being a hacky, standardization-resistant language that we all have to live with because it's built into all the browsers, making it the lynchpin of Ajax. Not that it doesn't have its defenders; it has closures and duck typing and lots of the other frequently-touted advantages of more prominent agile languages like Ruby and Python.

Let's face it, part of the problem a lot of us have with it is the clumsy naming where they tried to tie it to Java even though there's little relation between the two past a few syntactical similarities (they both use curly braces... woo hoo). Surely many (most?) of us have had to deal with a recruiter who didn't know there's a difference between Java and JavaScript?

One thing that's interesting is a new JavaScript performance arms race that seems to have started between the two major open-source browser engines, Gecko and WebKit. Last month, Ars Technica reported that Gecko's JavaScript engine, SpiderMonkey, had gotten a 20- to 40-times speed up in some cases. This put it ahead of the recently-improved SquirrelFish, WebKit's rendering engine. Now we get word that SqurirrelFish has gone "extreme", and that SquirrelFish Extreme is posting some remarkable benchmarks, claiming to havesurpassed Gecko's TraceMonkey to retake the speed crown. Yeah, like that'll last.

Why do you care? If you're writing an Ajax app, it's self-evident that faster JavaScript engines will improve the client-side user-experience of your application. It's also worth remembering that JavaFX is using WebKit for its web support. So anything that helps WebKit indirectly helps JavaFX as well.

While we're on the topic of JavaScript, the latest java.net Poll asks "What's your opinion of JavaScript?" Cast your vote on the front page, then visit the results page for current tallies and discussion.


In Java Today, JavaWorld has posted an introduction to the JOGL project in Open source Java projects: Java Binding for OpenGL (JOGL). Author Jeff Friesen writes, "If you're planning to develop a game engine or other Java software that needs 3D graphics, consider using Java Binding for OpenGL (JOGL). This low-level Java API acts as a bridge to the underlying platform's OpenGL technology. In this installment of the Open source Java projects series, Jeff Friesen introduces JOGL. Learn how to use JOGL to bring OpenGL's high performance and powerful features (such as shaders) to your Java-based games."

Databases aren't just for enterprise apps running on servers. In a new SDN article, Patrick Keegan shows off A Personal Data Storage Application With Embedded Java DB. "In this application, we will use NetBeans to create a simple desktop application to store info on your personal music collection. We will use Java DB, which has an embedded mode so that it can be packaged within the application. The application will also make use of the Beans Binding library and the Java Persistence API."

WidgetFX is an open-source desktop widget platform written from the ground up in the JavaFX Script language. It can run widgets written in JavaFX Script and Java and takes advantage of the latest features in the Java Consumer JRE (Java SE 6 Update 10). Its first release, 0.1, is targeted at developers who want to develop widgets.


In today's Weblogs, Eamonn McManus discusses Dropping proposed features from the new JMX API. "Yesterday I cleaned up the "umbrella bug" that lists the various things we are planning for version 2.0 of the JMX API, which is the version that should be included in Java SE 7. Here's a list of the things we were thinking of doing but are not now planning to."

Ramesh Parthasarathy points out the release of Generic JMS RA 2.0. "Generic JMS RA 2.0 is available as an alpha version download today, we are working towards promoting it to a release."

Do we need Data Models that Mom can use? John Reynolds writes, "back when I was working on Tandy's DeskMate we were trying to build a personal computer "that Mom could use". I think we came pretty close to that goal... Mom could use it. Unfortunately Mom didn't want to use it :-( Is there any chance at all of coming up with Data Modeling notation that Mom could use?"


In today's Forums,kordzik argues that community feedback is working as desired in the Java community, in Re: Has Java lost its way?. "Well, isn't it what's actually happening in Java, at least to some significant extent? As I understand, you have the closures idea on your mind in the first place, when you're speaking of the 'me2' attitude. Well, you don't see everybody in the community being overly enthusiastic about the BGGA proposal. In fact, there is a vivid discussion among 'the gods' themselves (like Gafter vs. Bloch), and chances are, we're not gonna see closures before Java 8 (if we're ever gonna see Java8 in the first place - hopefully we will:). As I look at what is to come in Java7 (e.g. http://www.infoq.com/interviews/gafter-closures-language-features-optional-typing), I don't see anything controversial or 'me-too-isch' besides closures, which, as already said, are discussed over and over again and might not hit 7 at all. I think this is a good example that Java's direction is actually very much dependent on the community, especially if you compare it to other languages and platforms."

Jim Graham has the likely explanation for a performance problem, in Re: [JAVA2D] Scaling using java.awt.Image is vay faster than bufferedImage. But Why?. "As I suspected - this is boiling down to the fact that we don't have specific loops to handle the type of image you are working with so our "generalized backup loops" are being called on to do the work, albeit at a slower pace. The image you got from ImageIO appears to be a 1-bit binary image - I assume your input data was just a bi-level, possibly black/white, image? We don't have a lot of loops to handle those images so internally they need to be converted to other formats for handling. Also, the code appears to go through our other image scaling path which uses an AffineTransformOp to scale it rather than the more direct TransformHelper route that the other images are using."


Current and upcoming Java Events :

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


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



The performance arms race over in JavaScript-land  

Will JSR 310 finally bring sense to Java dates and times?

Time-keeping is one of those problem domains that's nice and easy until it isn't. I think I got my first taste of this when I was working the overnight shift at CNN during a change from daylight savings time to standard time. Because you set your clocks back at 2AM, we had two 2AM shows that night: one for 2AM Eastern Daylight Time, followed immediately by one for 2AM Eastern Standard Time. This also made scheduling nice and tricky for all involved, and everyone on the overnight shift picked up an hour of overtime, because we had to work 9 hours instead of 8 to get from 11PM to 7AM the next day.

Would your scheduling application have handled the change correctly? Or would you have just added 8 hours to 11PM and thereby miss the extra "fall back" hour?

Date and time management in Java has been a mixed bag from the beginning. The handling of absolute times is simple enough: since Java 1.0, System.currentTimeMillis() has returned the number of milliseconds elapsed since January 1, 1970, at midnight GMT. It's in translating concept that to dates and times and intervals thereof that things fall apart.java.util.Date tried to represent these instants as human-readable dates and times in Java 1.0... and most of its methods got deprecated in Java 1.1. For a decade, we've muddled through with Calendar, its weird API for calculating intervals for concepts like "two days from now", and other hassles.

Maybe the third time will be the charm. In our Feature Article, Jesse Farnham takes a look at JSR 310: A New Java Date/Time API.

JSR 310 is an API for time- and calendar-related calculations that has been proposed for Java SE 7. The API aims to replace the two existing classes that form Java's current date and time API,java.util.Date and java.util.Calendar, while still providing backwards-compatible access to these older APIs. The JSR is currently in development, and a tentative Javadoc is available for the API.

The JSR 310 date/time API attempts to improve upon Java's current date/time API by providing increased performance and ease of use. For example, the Java Calendar class stores a date simultaneously as a millisecond offset from a standard epoch, and as a set of calendar fields (e.g., day of week, day of month, and month of year). This double representation causes the calendar fields to be recomputed at unexpected times, resulting in unpredictable performance characteristics. In contrast, JSR 310 classes store date/time representations only as a nanosecond offset from the same standard epoch used by Date andCalendar; calendar fields such as day of month are only computed when needed and are not used for internal representation of dates.

This is another JSR that's on track for inclusion for Java 7, so jump in if you want an advanced look at what you'll hopefully be using this time next year.


In Java Today, the SDN continues a tutorial in its Core Java Technologies Tech Tips series with Exchanging Data With XML and JAXB, Part 2. "In this tip, you'll learn how JAXB's binding customization features can facilitate XML processing for the recipient of data as well as for the sender. Binding customization offers a level of control over the characteristics of the Java classes generated by the JAXB schema compiler. This allows you to work with an object model that makes sense for your business domain even when processing XML instance documents based on a schema that is not of your own design."

Making use of MarkMail's tools for searching java.net mailing lists, The Aquarium notes Growth in OpenESB mail traffic and wonders if it might be a leading indicator of interest in the project. "The OpenESB mailing lists are showing a significant growth in traffic this month. It is just the 17th and the Combined Traffic so far is 1384 (up from 765 for all of August), while the USERS Traffic is 419 (up from 190 for all of August)."

No one writing Java applications should be without an understanding of how to fix things when they go wrong. Diagnosing performance problems can be difficult; sometimes even knowing where to start is hard. In a podcast from TheServerSide, Java Performance Tooling, Dr. Holly Cummins will introduce a number of tools for identifying and fixing common Java performance problems.


Today's Weblogsbegins with John Vieten showing off a technique for Full-duplex communication with the Grizzly Framework. "I recently joined the Grizzly Project as a committer. One of the first things I did is write a Tutorial on How-to write a custom protocol with the help of Grizzly. [...] So I thought it should be very easy to come up with a Grizzly Demo version of Rex Young's Port Implementation. And here it is."

Felipe Gaucho brings up a security concern in Compiling your own byte array Trojan with JAXB 2.0. "Do you mind about the quality of the code generated by automatic tools? I do care, specially when a warning of Findbugs makes sense against code generated by JAXB 2.0."

Finally, Cay Horstmann reports that he's been Teaching Software Engineering with BlackBerry. "One of the best aspects of my job as computer science professor is that I keep learning new stuff. This semester, I am teaching a software engineering class. Cinequest, the organization that puts on the annual San Jose film festival, approached the CS department, asking for help with their mobile initiative. We jumped at the chance, and now my students are hard at work designing and prototyping a BlackBerry application for festival attendees."


In today's Forums,pauldb finds it unacceptable that Web Start applications cannot be launched offline. "In an earlier post I reported that web start applications could not be launched offline from the command line. I reported this bug here:http://bugs.sun.com/view_bug.do?bug_id=6744967. However, the situation is even worse than that. Without a network connection, in my experience at least, they cannot be launched offline from the Java Cache Viewer either. (I hadn't realised this earlier because I still had the network connection). If you are developing web start applications, please vote for this bug. For me, this is a showstopper. I have customers who need to be able to launch the application offline."

chihiro_saito discusses Blu-Ray Java development and testing in Re: An Havi Component Like JList. "bdj.jar that's been discussed in this forum is meant for your xlet compilation, and not for runtime. You can't just take the jar file out of a pc player (nero, powerdvd etc), stick it into a java runtime environment in some IDE like eclipse or netbeans, and expect it to work. You essentially need some sort of an emulator or a bd-j runtime environment to test HAVi APIs on a PC. We've been recommending commercial BD PC players as an alternative to a bd-j emulator. Another popular choice seems to be XletView, which is an MHP runtime emulator. MHP impl won't have org.bluray APIs, obviously, but HAVi will be there (at least as a partial impl, as described in this thread)."

Finally, Clive Brettingham-Moore explains WSDL port management in Re: How to override endpoint address of service from client code. "You don't need to dynamically add ports if you have specified WSDL, either using Service.create(URL,QName) or a generated Service class (instances of gererated service are just like the two arg create; the default constructor simply uses a default WSDL URL & QName). As you have noticed Service.create(QName) is really only useful for Dispatch, but the two argument method (and subclasses) will work out the ports from the WSDL (WSDL is also needed for the getPort methods to work)."


Current and upcoming Java Events :

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


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



Will JSR 310 finally bring sense to Java dates and times?  
kfarnham

The House We Live In Blog

Posted by kfarnham Sep 16, 2008

JXTA Community asked to set the roadmap

The JXTA Community is being asked to help set the agenda and time table for the next version of JXTA for Java SE (JXSE). In the forum post JXTA Community - we need your help and feedback for next JXSE releases, Fabrice Di Meglio writes:

You should probably be aware that Sun is looking for increasing the JXTA Community participation since the last Board of Director elections.

In the past weeks, I had some phone talks with Bernard Traversa (JXTA Technical Lead), Mike "Bondolo" Duigou (previous JXSE release lead), Vanessa Williams and Mark Petrovic (newly elected JXTA Board members) about this subject and Sun confirmed that they want to help the JXTA Community decide what to put into a JXTA JXSE release and define its release date.

As you may remember, the current JXTA J2SE version 2.5, named "Turduken" was released in November 2007 which is nearly already one year ago. Moreover, there is currently no real plan defined for the next release.

Fabrice puts forward two main options:

1) Release the current trunk (seed for the 2.5+ release named "Cassoulet") as it is before end of November 2008. This current trunk contains nice improvements compared to 2.5.

2) Wait a bit more (January / February 2009) to get more bug fixes and new features. In that case we will need to define which bugs must be fixed and the features which will be implemented. Completing these tasks will depend upon contributions from the JXTA Community.

This is an inspiring and encouraging bit of outreach, and hopefully the JXTA community will respond to this remarkable opportunity to help set their own schedule and agenda for the next few months.


Also in today's Forums,kirillcool notices some possibly-related rendering problems, as described in Re: [JAVA2D] Native text rasterizer and translucent graphics. "Allow me to reopen this discussion. It looks like there are a lot of bug reports being marked as fixed and those reports sound very similar to the question that i had on Windows native rasterizer and translucent composites. Specifically, i saw 6749069, 6728834 and 6749060. Has this limitation been revisited? Does b32 (or the final planned 6u10) use native rasterizer for translucent target destination?"

jezzbel would like to create a LWUIT SubMenu. "Hello, is it possible to create a sub menu like the one when one picks a "qwerty" option from the Menu and the original doesn't disappear and another one is being showed. I would like to do the same: add a command which opens a sub menu. I don't want to do this on Forms (like the example from blog) but with the built in menu form Textbox."


Speaking of LWUIT, in Java Today, Shai Almog is beginning a new LWUIT series by taking inspiration from Kirill Grouchnikov's From Photoshop to Code series and emulating its presentation on Java ME. In Cooking With LWUIT Preview, he writes, "unlike Kirill's series which deals with replicating 1 to 1 the photoshop design, this series is geared towards adapting an existing design used in applications or websites in order to move it to the cellular environment. I will write more about this in the next post and explain some of what I did but for now enjoy the teasers, a screenshot of the cookbook UI in LWUIT and the original cookbook image."

The Aquariumpoints out that the JSR 314 expert group has released the second early draft for JavaServer Faces 2.0 (Download). "This version includes Section 13.3 on JavaScript API(thanks for the tip, Roger), as well as Section 3.6 on Composite UI Components (see the Enterprise Tips on this feature: Part I and Part II)."

The SDN kicks off a short series of Blu-Ray Disc Java tutorials in Blu-ray Disc Application Development with Java ME, Part 1: Creating Your First Application. "Java technology is a critical part of the new high-definition video standard, the Blu-ray Disc standard. In this two-part series, we're going to cover several aspects of using the Java language to create applications for your Blu-ray disc player, which includes the very popular PlayStation 3 gaming console."


The latest Java Mobility Podcast is Java Mobility Podcast 57: Shawn Fitzgerald and Microbus project. Shawn Fitzgerald, a regular participant in the Mobile & Embedded forums, talks about mobile development and the Microbus project. by Daniel H. Steinberg


In today's Weblogs, Cay Horstmann announces a new study aid / "cheat sheet" that he's contributed to, in JSF Refcard available. "This refcard describes the JSF development process, standard JSF tags, the JSF expression language, and the faces-config.xml configuration file."

Ed Burns notices Apple Using JSF for online rebate system. "I share a tip from Matthias Wessendorf that Apple is using JSF for its online rebate system."

Finally, M. Jeff Wilson continues his GWT series in Exploring GWT 2: Properties and Binding. "In this post, I talk about some of the other solutions to the lack of property binding in GWT."


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.



JXTA Community asked to set the roadmap  
kfarnham

Ready For It Blog

Posted by kfarnham Sep 16, 2008
kfarnham

Talk To Me Blog

Posted by kfarnham Sep 15, 2008

New thoughts on last week's topics

OK, kind of weird to see two of my editor's blogs from last week cited in new blogs over the weekend, but it's a good thing... the idea is to get the ball rolling on topics of community interest and discussion.

Let's start with John Reynolds, who writes about knowing Just Enough to Not Be Dangerous

My blog entry on User Manual Driven Development prompted Chris Adamson to share some thoughts of his own as For Reasons Unknown. My blog entry relates my early experience of developing an application from a pre-written user's guide. Since then I came across a very similar approach that's used by Daniel Brolund that he calls User Guide Driven Development... obviously great minds think alike ;-) Chris's thoughts helped me boil down my premise to a single statement:

Programmers should understand the applications that they are writing.

John continues that this seems self-evident, but cites a followup comment which argues that truly understanding the app would practically require a degree in accountancy. Now personally, I would argue that's not a bad idea: if you could code andhave passed the CPA exam, you would have a truly unique and ridiculously valuable combination of skills. I would bet that the developers of QuickBooks are highly serious about accounting, just the same way I suspect Final Cut Pro's developers are probably excellent video editors in their own right, and the Guitar Hero and Rock Band developers are all in bands (actually, that's a known fact about the Harmonix gang). But this level of subject-matter expertise seems impractical for most developers, as John admits:

Most programmers will never understandeverything about how a particular application will be used... But surely they should understandsomething about how the software is used. If not, then programmers really are interchangeable cogs and we all deserve to have our jobs outsourced.S

So what's the minimum? When do you know "just enough (about the business) to not be dangerous"? The same is true for Business people. It's very important for the Business Analysts (that specify software) to know "just enough (about software) tonot be dangerous".

John's answer is to employ a common language to communicate between the two sides, using Business Natural Languages and Business Process Modeling Notation. Read on for details.


In another Weblogfollowing up on a topic from last week Tom Ball explains the value of Mercurial and Git in Distributed SCM: You Don't Get It Until You Got It. " There has been a lot of debate about the merits of distributed source control management systems, but until you've seriously worked with one you just won't understand how appealing they are. Just ask any developer who has had to go back to a single-repository system."

BTW, if the topic of distributed SCM interests you, check out our current front page poll, "What's your favorite Source Control Management system?", and the current results.

Finally, Daniel Wildt offers a web version of his recent conference presentation, Java Meets Agile - A survival guide to adopt Agile inside Java teams. "More about the presentation at Just Java 2008, related to Agile and Java. Principles, Values, Practices and valuable tools that your team can use to become more effective." Co-presenter Giovani Salvador has more details in his companion blog, Java Meets Agile.


In Java Today, Jan Haderka has announced the release of SwingX 0.9.4. "The main changes in this version were previously announced cleanup of the API, added switch to completely disable caps lock detection in LoginPane and about 45 bug fixes. Read the release notes to see complete list of resolved issues before downloading the release from the SwingLabs website."

Nick Maiorano's Javalobby article Ghost in the Java Virtual Machine explains JVM compaction and its consequences: "Compaction is a lesser known facet of garbage collection. In this article, I'll discuss how important it is for Java performance. Left untamed, compaction can come back to haunt you. Find out how it works, where the problems lurk and how to make them go away."

The GNUCITIZEN blog is providing Details of the QuickTime Vulnerability, which actually uses JAR files as part of a security exploit on Windows. The exploit begins by using QuickTime's SMIL support to load the URL of a NETBIOS share. "I needed to find a file format which is executable but Windows does not know about it just yet. It seems that .jar fits perfectly my requirements. .jar is the file extension of the JAR archive, a ZIP archive with a manifest file which instructs the Java interpreter what class should be executed as the main one. .jar files are executable as long as you have Java on your system." The blog notes that the vulnerability has been fixed for months and should now be safe to talk about.


This week's Spotlightis on the java.net Education Community, which has has re-launched at https://edu-gelc.dev.java.net/. The site is aimed at "students, educators, developers, parents, and anyone else interested in tools or curriculum for teaching Information and Communication Technology," with separate starting points for students, educators, and developers.


In today's Forums,digfish asks How do I Instantiate a schema Object from a WSDL file using JAXP? "I'm new to JAXP and I want to validate a SOAP message payload. To do that I need to instantiate a Schema Object and invoke the validate method in it. The problem is that schema is embedded inside a WSDL (element ) and I'm trying to read it into a DOMsource and then I use it to create new Schema object like this..."

Anton V. Tarasov explains AWT lifecycles for apps that use the Windows system tray in Re: SystemTray prevents Swing from shutting down? "This is to support applications that live only in system tray and doesn't permanently keep windows on the screen. AWT doesn't provide any option to prevent this behavior... In order to let the app shutdown you should remove all <TrayIcon>s."

jpedwardsdotcom wonders about a deployment problem in JARs in lib/applibs not available to JSP compiler? "When deploying an EAR, jars specified in the --libraries parameter are visible to servlet classes, but not to the JSP compiler, causing NoClassDefFound exceptions and breaking the JSPs in the application. The only workaround I have found is to add a classloader extra-class-path attribute to the sun-web.xml before building the EAR. This couples the binding information inside the WAR, rather than keeping it as a 'pure' deployment fact. Am I missing something?"


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.



New thoughts on last week's topics  
kfarnham

Somebody Told Me Blog

Posted by kfarnham Sep 12, 2008

Should we take SCM advocacy with a grain of salt?

During my move, I realized I wouldn't be able to host my personal web pages on my own server for a couple months until I got settled in and the DSL set up, so I needed to move to a hosting provider. While the hosting was easy for static pages and WordPress, one thing I never resolved was source control. I figured it would be easy enough to find a provider that ran Subversion, but the friend who was setting me up said that Subversion was old news and that I should really be using Git.

Git? Really? My scenario is a one-developer shop, where I want to just be able to move code and writing between computers while I'm mobile, and make it available in a somewhat secure and professional way to clients. So, Linus envy notwithstanding, I don't exactly see the point of using a distributed SCM system when there's only one developer to distribute to. In researching, I also found a blog entry, What a Git, which while being in part an ad for WANdisco, also makes the point that working in a massively distributed project is highly atypical. Git may be great for the Linux developers, and Mercurial for OpenJDK, but it still seems like overkill for smaller, organized groups.

But then again, this isn't a topic I'm an expert on, so I'd be interested to know: what are the advantages of distributed SCM, beyond the globe-spanning mega-projects?

And since it seems like a good discussion topic, the latest java.net Poll asks "What's your favorite Source Control Management system?" Cast your vote on the front page, then visit the results page for current tallies and discussion.


Mercurial users will probably be interested in a new site launched by Sun and spotlighted in today's Weblogs. In Kenai - High Throughput and Scalable Rails on GlassFish, Arun Gupta writes, "Project Kenai was announced last week. It's a developer hub with SCM, issue tracking, forums and similar stuff you need for hosting your open source projects. And it is a Rails application deployed on GlassFish v2. "

Working hard on archiving dormant projects, Sonya Barry asks Which community could use some clean up? "It's been a few months since I started clearing inactive and shell projects out of the active communities, and so far it looks good."

Rex Young makes the most of his network connection in Turn a HTTP connection into a full-duplex communication (part one). "This trick is for a specific situation where two applications (both in your hands) want efficient and convenient communication, and HTTP connection is the only method available between them."


The latest Java Mobility Podcast is Java Mobility Podcast 56: PhoneME port to PlayStation Portable. Max Mu shows off his PlayStation Portable that is running a port of PhoneME. They are currently working on a port to Nintendo DS.


In today's Forums,nordenberg fights through some fragmentation in GameCanvas not working properly in pMEA dual stack on Win Mobile 6. "We've got an application that uses GameCanvas and our own thread that pushes graphics to the display. This doesn't work very well in pMEA dual stack on my Winodws Mobile 6 device. The graphics we push to the screen is almost immediately overwritten with other graphics. (Old menus and other previous frame buffer graphics it looks like.) [...] We are now in the process to rewrite the application to use an ordinary Canvas, and it seems to work much better, but if it is possible we would rather use GameCanvas, as it works better on some SonyEricsson and Nokia devices."

In the announcement, Mobicents Sip Servlets 0.5.1 released!!, deruelle_jean writes, "we are happy to announce the public availability of Mobicents Sip Servlets v0.5.1! As usual, Mobicents Sip Servlets is working on top of both Tomcat 6.0.14 and JBoss AS 4.2.2.GA. This version is an intermediate version (in waiting for a 0.6 JSR 289 certified version) providing more stability and fixing some Issues (http://code.google.com/p/mobicents/issues/list?q=label%3ASip-Servlets-Version-0.5&can=1) that have been raised against the 0.5 version. The JBoss version has also been updated with the latest Mobicents Media Server release (1.0.0.BETA4) The shopping demo has also been updated to be compliant with the APIs of the newly released Mobicents Media Server 1.0.0.BETA4."

Alex asks about z-ordering in LWUIT. "When the LWUIT source was released it was announced that z-ordering was supported. I was wondering how this was achieved and if some basic sample was available. In what kind of Layout Manager is this supported ? (can I use it in a BorderLAyout for example ? )"


In Java Today, the GlassFish Quality Community is hard at working getting ready for next month's release of GlassFish v3 Prelude. Their meetings are all public - check the Meeting Minutes - and so are the meetings of the FishCat Team. Overall, the activity in the Quality mailing list is growing very fast - check out the MarkMail Archive.

DevX has posted a chapter of a new JavaFX book by Simon Morris. In Book Excerpt: JavaFX in Action, they write "JavaFX in Action is a hands-on tutorial that introduces and explores JavaFX through numerous bite-sized projects. The book provides a solid grounding in the JavaFX syntax and related APIs by showing you how to apply the key features of the JavaFX platform. [...] Author Simon Morris helps you transform variables and operators into bouncing raindrops, brilliant colors, and dancing interface components. Below the chrome, you'll master techniques to make your applications more responsive and user friendly. You'll also learn how to interact with your existing Java code so you can give your old apps some new JavaFX sparkle."

The SDN Channel has posted a video Deep Dive on the Lightweight UI Toolkit. In it, Ed Ort talks with Yoav Barel, Group Manager for Sun's Engineering Services Group, about the ideas behind LWUIT and the problems it tries to solve, the design and principles of LWUIT and the inspiration it takes from Swing, and walks through a demo of LWUIT's features.


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.



Should we take SCM advocacy with a grain of salt?  
kfarnham

Read My Mind Blog

Posted by kfarnham Sep 10, 2008

New annotations to make your code more toolable

One funny thing about annotations is that after they were added to Java SE 5, they were just sort of left there to be used as third parties saw fit, without a lot of significant use within Java itself. You could mark that a method was an @Override, to get the compiler to check that your class hierarchy was really set up like you thought, and @Deprecated, to move responsibility for marking deprecation out of realm of Javadoc. But that was about it.

Other tools adopted annotations quickly, notably Hibernate and JUnit, but Java itself continued to not really do much with them, even in Java 6.

However, in Java 7, things are gonna change. This is the topic of today's Feature Article,The Open Road: javax.annotation. This latest installment of Elliotte Rusty Harold's ongoing column about upcoming Java 7 features, takes a comprehensive look at all the standard annotations that may be coming in Java 7, and how they'll help your development process:

The JSR 305effort being led by Bill Pugh of the University of Maryland plans to change this in Java 7, and dramatically increase the number of annotations used in standard Java code. By adding annotations to classes, methods, fields, and variables, you'll be able to tell static and dynamic analysis tools how you think the code is supposed to behave. Then the tools can warn you when they suspect the code will behave in some other fashion. This improves on the current situation, where static analysis tools need to guess not only what the code does, but what it's supposed to do. Such tools will still generate many false positives; but they'll find many more true positives -- that is, genuine errors -- in annotated code than in non-annotated code.


In Java Today, the java.net Education Community has re-launched at https://edu-gelc.dev.java.net/. The site is aimed at "students, educators, developers, parents, and anyone else interested in tools or curriculum for teaching Information and Communication Technology," with separate starting points for students, educators, and developers.

The latest edition, issue 180, of the JavaTools Community Newsletter is out, with tool-related news from around the web, including new releases from JT Harness and AppTale, new tool projects in the community, and a Tool Tip on using JavaNCSS to measure code complexity.

Robert J. Miller compares Java to Ruby on Rails from the point of view of technology entrepreneurs and, tallying up their respective features, declares it a dead heat. "In a nutshell, Java is not good for entrepreneurs because it is too complex and too slow to develop, configure, and deploy your web application. Ruby on Rails will get you off to fast start because it excels at time to market and low costs but leaves you hanging when it comes to scalability. Here is my entrepreneurial web technologies report card." By coincidence, Java and RoR get the exact same score, 3.07, when Robert tallies up the grades.


Terrence Barr passes along evidence that phoneME performance rocks! in today's Weblogs. "The folks over atBugLabs have been one of the earliest and most serious adopters of phoneME - they are using phoneME as the basis for their core product. Lately, they have done a series of performance tests to compare phoneME with other open source VMs such as Cacao andjamVM. They just published their second round of results after some tuning and turning on the phoneME JIT compiler."

In GlassFish V3 Prelude Update Tool, Ludovic Champenois notes a nice surprise when he rebooted his computer. "Yesterday, I was happily surprised by the ease of use of the GlassFish Update Center... For some reasons (installing iTunes 8.0 and QuickTime), I had to reboot my MacBookPro, and on reboot, I noticed a nice "Update Tool Notifier" on my desktop."

Fabrizio Giudici is disappointed that one of the best Java conferences has been forced to change its name again, as he explains in JavaPolis -> Javoxx -> Devoxx. "This morning I've been really surprised when I read the newsletter from Javoxx (former JavaPolis) and learnt that the belgian guys had to change again their name, because even Javoxx was a trademark problem for Sun lawyers. Boys, this is unbelievable."

Come to think of it, Fabrizio, isn't that the same reason thatSlashdot rips on Java so much?


In today's Forums,whartung considers the strange status of Timers in EJB, in Re: How to stop EJB timers being deleted upon app undeployment. "Yea, the timers do kind of exist in a "no mans" land. On the one hand being applications state (and not just application state, but persistent applications state), but on the other being a container artifact that the container is somewhat responsible for (thus dumping them on undeploy). I think it would be a fair RFE to make Timers persistent across redeploys as a deployment (or, perhaps, undeployment) option."

hansr complains about Losing hardware accelleration depending on configuration. "I'm currently writing a little test application using swing + scenegraph effects. I'm using the Decora-D3D.jar and Decora-HW.jars from the JFX preview release, and get HW accellerated effects when Decora-D3D.dll is also present. However, when I make the app's JFrame transparent using AWTUtilities.setWindowOpacity(), the HW accelleration no longer works. Is that intended behaviour, a bug or do I need to set something else too?"

Continuing a discussion we featured yesterday,jwenting bemoans bloat in Re: Has Java lost its way? "Java has in part lost its way. That's however not because of all the frameworks (it's after all not Sun putting out a new web framework every day for example...) but because Sun's become convinced that the "Me2!!!!!" approach to platform design is the best one. By which I mean that they're trying to make Java do everything any other language or platform does, and have every language construct ever imagined for any other language. Function pointers are just the latest, 1.6 saw a full http server and web service stack as part of the core language."


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.



New annotations to make your code more toolable  
kfarnham

Mr. Brightside Blog

Posted by kfarnham Sep 9, 2008

Wait, now Java does too much?

The forum section of the front page gets four items today: one more than usual, but two less than I had been considering. There are a bunch of really good discussions going on. Well, there's also a new spam trick -- spammer posts a "hey, does anyone have bulk e-mailing software" message from one account, and then the SEO-targeted link-tacular followup from another -- but I caught those and deleted the messages (the users will be deleted in a few hours once the U.S. West Coast wakes up).

Anyways, back to the legitimate discussions,alexj33 posted a provocative message in the JavaTools forum -- probably should have been in JDK feedback, but again I digress -- to ask Has Java lost its way?

I used to be a Java developer back in the late 90s. Java has always been a frustrating enigma for me. Allow me to explain.

Several times I've browsed in and out of the latest Java books and forums, and I cannot believe how *complex* it has all become. Quite simply, does there have to be a new API and a new 3rd party framework for every little thing a developer wants to do?

My understanding is that Java was meant to take the complexity out of previous development platforms, yet in my eyes it has become exactly what it was meant to replace, albeit in different ways.

Who can keep up with this dizzying array of acronyms and libraries? Who has the time to? Is it even worth it to do so? Who has time to research the frameworks to find out even what is worthwhile to invest more time in?

Is this a valid criticism? We've heard a lot over recent years about Java "using up its complexity budget", but some of that is aimed at language features like generics (and possibly closures). This complaint has to do with the breadth and depth of the libraries available to the Java developer. On the one hand, thereare a lot. A quick word-count of the JDK 6 Javadocs shows that Java SE has over 3700 public classes, and that's before you bring in libraries like Java EE.

But on the other hand, does anyone really try to keep up with it all? Java is large enough to have specialization, and it's likely the server-side programmer never looks at anything in Swing, just as the desktop developer neither knows nor cares how servlets work. By this argument, Java's no different than any other large platform: do you suppose there are a lot of MSDN developers who excel both at Direct X graphics and .NET web services?

alexj33 finishes up with some interesting questions that are worth keeping in mind as we approach Java 7 and, no doubt, a new set of APIs:

OK, rant over. Now onto the real question. My question to you all is threefold:

1. What do you think the original purpose of Java was?

2. Is Java on the right path today? Can it continue in its current direction?

3. Is Java itself embracing or alienating the developer community?


Also in today's Forums,terrencebarr posts a reminder of Java ME's value in Re: Why not get rid of the JVM and JIT for mobile device?"Sure, Java ME fragmentation is a source of extra effort and frustration but one of the key reasons is because the underlying native platforms are so radically different (not really Java's fault). Deploying native apps not only requires developers to deal with the native differences but adds a new layer of complexity with different processors, executable formats, operating systems, libraries, security mechanisms, etc, etc. It grows the problem space by two or three dimensions."

Over in the Project Wonderland forum, nicoley posts a New Proposal for Voice Calling in 0.5. "I have just added to the wiki the first draft of a proposal for Voice Calls in Wonderland version 0.5: http://wiki.java.net/bin/view/Javadesktop/WonderlandInWorldPhone. The general concept of this design is to unify "voice chat" and telephone integration. The proposal suggests a single user interface for making VoIP calls and PBX calls. It also includes the design of an in-world personal virtual phone. This phone can be used by each Wonderland user to both place and receive voice calls."

Finally, ingridy clarifies a timeline question in the followup Re: "Next Generation" Plug-In Support for AMD64?, saying "64bit plug-in will not be ready for 6u10 final release."


In Java Today, the ME Framework 1.2.1 release is now available on the project's download page. "This release went through an extensive QA cycle and is ready to be used for test suite development. If you downloaded the ME Framework 1.2.1 development releases, please switch to this final milestone release." The ME Framework is a set of JT harness plugins that supports the Java ME platform. TCK architects use the JT harness and the ME Framework to construct TCK test suites for Java ME technologies.

Kirill Grouchnikov has started a new series of blogs in which he talks about the specific tasks involved in taking a UI definition from your designer and turning it into a working application. Step 1 is analyzing the original design or more specifically, identifying the application's decoration areas and functional areas. Step 2 is mapping design to UI toolkit, which means "map[ping] the application functional areas to Swing container hierarchy and the application decoration areas to Substancedecoration areas."

Sathish K. Palaniappan and Pramod B. Nagaraja's article Efficient data transfer through zero copy explains how you can improve the performance of I/O-intensive Java applications running on Linux and UNIX platforms through a technique called zero copy. "Zero copy lets you avoid redundant data copies between intermediate buffers and reduces the number of context switches between user space and kernel space."


In today's Weblogs, Fabrizio Giudici begins with a story about Remote profiling with NetBeans. "Varun Nischal, one of the fresh new members of the NetBeans Dream Team, is hosting some friends on his blog. I've just published a small story about the NetBeans Profiler used in remote mode."

In Add resetValue() to EditableValueHolder?, Ed Burns "polls the community about whether to break backwards compatibility in one small interface in JSF 2.0."

Finally, Marina Sum promotes a Join OpenSSO and Single Sign-On Presentation in Second Life. "Registration is now open for the September 30 session."


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.



Wait, now Java does too much?  
kfarnham

Move Away Blog

Posted by kfarnham Sep 9, 2008

NetBeans World Tour and Sun Tech Days hit the road

In all the hype about JavaOne, it's easy to overlook that the annual San Francisco-based conference is not easy or practical for many Java developers to attend. That's why Sun Tech Days are such an interesting counterpart. Whereas JavaOne has a hefty registration fee and requires attendees to come to it, Sun Tech Days have been largely free (except for some special training programs) and go out into the world to bring Java to developers where they live.

The next set of Sun Tech Days has been announced, and as in the past, the focus is on getting out to where the developers are. In particular, this year's schedule provides particularly good coverage of Asia, with two stops in China, and one each in Taiwan, Japan, Singapore, India, and Israel.

So what's in Sun Tech Days? Well, for one thing, NetBeans.org is announcing a new NetBeans World Tour as part of the next round of Sun Tech Days. They say, "join us again when we come to you with demos of upcoming features, IDE tips & tricks, and special guests such as James Gosling. After the wildly popular series of NetBeans events between NetBeans Software Day San Francisco in 2005, 2006, 2007, and 2008, the NetBeans team will once again hit the road for a World Tour in 2008/2009."


Also in Java Today, James Falkner and Prashant Dinghe will give an Overview of WebSynergy Thursday morning - 11am PT, Sept 11th, 2008. You can join us via a concall (free if in the US, caller-paid overseas) or online via TheAquarium @ uStream.TV. For more details check out the OverviewOfWebSynergypage at the The Aquarium wiki.

"Choosing the right data interchange format is an important design decision when building any network-aware software. This is especially true when designing mobile and embedded applications, where attributes such as lightweight and efficient are important characteristics to consider." In a new SDN article, Using JavaScript Object Notation (JSON) in Java ME for Data Interchange, C. Enrique Ortiz addresses these concerns, arguing that JSON's lightweight characteristics make it very attractive for mobile and embedded applications in general.


Kito D. Mann wraps up last week's JSFOne in today's Weblogs. In JSFOne 2008 -- great fun, deep content, he writes, "JSFOne 2008 ended on Saturday, and I have to say it was a great show, even if it the whole thing seemed entirely too surreal."

Meanwhile, Terrence Barr looks ahead to two Berlin conferences: Berlin.jar and OSiM World. "It's been nice and quiet for a couple of weeks - no travel. Now the conference circuit is starting up again and so in a week I will head up to Berlin, Germany for two conferences."


terrencebarr also tops today's Forums, explaining that ahead-of-time static compilation is no panacea, in fact, it has major downsides. In Re: Why not get rid of the JVM and JIT for mobile device?, he writes, "you have some good questions but consider that Java already runs on billions of mobile devices today so obviously the cornerstones of the Java VM runtime can't be all that wrong. First, a JVM isn't "too big" for mobile devices ... as witnessed by the fact that Java runs quite well even on lower-end phones today - modern VM technology is very smart about memory usage, dynamic compilation, and runtime optimizations. Also, what's "big" is typically not the VM but the libraries - and you have those in any language or runtime (including native)."

abhayani announces the latest release from the Mobicents project in Mobicents Media Server 1.0.0.BETA4 released. "We are happy to announce release of Mobicents Media Server All (MMS) v1.0.0.BETA4. This mobicents-media-server-all-1.0.0.BETA4 binary [contains] * Mobicents Media Server * Examples for Mobicents Media Server * Controllers which includes MGCP controller and Media Server Controller which is local (in JVM) controller for MMS * Resource Adaptors required by examples. This is a complete Media Server which includes the JBoss AS 4.2.2.GA and Mobicents Core Server 1.2.CR1 (JAIN SLEE). http://www.mobicents.org/products_media_server.html."

Finally, Clive Brettingham-Moore discusses schema hackery in Re: customizing with JAXB to return string value. "There are ways to customise complex content mapping, but they are very involved (eg http://forums.java.net/jive/thread.jspa?messageID=296931), and pointless unless there is any chance the elements will actually have complex content (ie child elements; the names given don't make that look likely). Unless it is likely that the elements will have complex content in future (in which case a mapping to a string would be weird), you can just use you own local doctored version of the schema that sets the types of the elements."


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.



NetBeans World Tour and Sun Tech Days hit the road  
kfarnham

For Reasons Unknown Blog

Posted by kfarnham Sep 8, 2008

Should you have to understand the application you're writing?

Extreme Programminghas a concept of user stories, which express the customers' needs for the application you're writing. In XP, they're used only for estimating development times, yet have a very different feel than traditional requirements documents. It's very different to program to someone's narrative of how a system should work, as opposed to the traditional process of checking off items on a requirements list in your cubicle.

Now let's take this a step further and completely invert the process... instead of checking off your requirements, delivering the app, and documenting it for your users, what if youstarted by writing the manual, and used that as your requirements / design docs / user stories?

This approach is described by John Reynolds in his blog User Manual Driven Development.

Our development methodology was simple but effective... the marketing group wrote the deskmate user manual and we built the applications to match the manual. To be more precise, the marketing group would write a proposed manual, we'd negotiate with them over what could and what couldn't be done, and then we'd build to the manual.

I guess you could call this User Manual Driven Development, and I think that it still can be a very valid approach. In most respects User Manual Driven Development is very close in spirit toTest Driven Development - The function of the software is clearly defined, so it's very clear if the software doesn't do what it is supposed to.

In the spirit of TDD? I imagine the agile types are having a heart attack at the very thought of this, as it's clearly a case ofBig Design Up Front, if not Waterfall. But still, if you think about it, you can see some appeal to this approach. One thing you might get out of this approach is a better understanding among your developers of what the app is really supposed to do -- beyond the clinical requirements list check-off -- since it's written from the point of view of how the user will use the the application, and implicit in that, what value they'll get out of it. As John points out:

It always stuns me when I encounter an engineering manager who believes that his staff doesn't need to know how to use the product that they are developing. I've heard people say "Just give us the requirements an we'll build it". I simply cannot agree with this philosophy... Requirements are never enough. Ever.

To write great software, you have to put yourself in the shoes of the user and walk a few miles. Perhaps it's a bit like method acting... Unless you "become" the user you're just going through the motions.

John points out that some of the best software is that which is made for developers, because developers know what other developers want and need. It's a lot easier for a typical developer to know if their IDE is useful than if they're building an accounting package, a non-linear video editor, a medical imaging system, etc. But if you have to build something like that, maybe a good first step is to start with a user manual for the finished project, so you can understand what the user will get out of the finished app. To steal a chapter from the famous Seven Habits of Highly Effective People, this is literally beginning with the end in mind.

But would it work for most people? What do you think?


Also in today's Weblogs, Cay Horstmann sharesLessons from My Summer Vacation. "In this blog I reflect on what I learned during my summer vacation, about standards, folding travel beds, and snatching defeat from the jaws of victory."

Arun Gupta wraps up a series of conference report blogs in Rails Conf Europe 2008 - Day 3. "Last day of Rails Conf Europe 2008 (Day 1 & Day 2), and it's finally over!"


In Java Today, NetBeans.org has released a new patch, which is an update to the NetBeans IDE 6.1. "The patch includes bug fixes in modules for BPEL, C/C++, Composite Application, Database, Editing Files, GUI Builder, GlassFish, IDE Platform, Java, Java EE, Java Persistence, NetBeans Plugin Development, Platform, RESTful Web Services, SOA, TAX Library, WSDL, Web Services, XML Productivity Tools, XML Schema Support, XML Tools Java Ext, XML and Schema and XSL Support." To obtain the fixes, the NetBeans IDE must be installed and running. You can download the fixes through the IDE's Plugins Manager.

Ever wonder what JSRs and Java technologies are supported by what devices? "The Java ME technology Device Matrix is a compilation of publicly available information from third-party sources, from Alcatel to Nokia to TTPcom. Go to the Authorized Licensees page to see the java ME licensees who claim compatibility with Java ME specifications and TCKs."

Danny Coward says he likes to get in some Java news even when he's away from the keyboard, and has compiled a list of top Java podcasts in Java Podcastapalooza! "For those of you who are interested and are looking for something new to tune into in the area of Java and client technologies, I put together a little survey of the ones I subscribe to. And if you feel like it, let me know if you have a top podcast in a comment below."


We're repeating last week's Spotlightto remind you of a major schedule change. The second Java Mobile, Media & Embedded Developer Days will be held January 20-21, 2009 (note the new date) at Sun's Santa Clara Campus Auditorium. "This conference is devoted solely to the technologies of mobile and embedded Java platforms and will be a unique opportunity for application developers of intermediate and advanced skill levels, platform developers, and technical experts at tool vendors, OEMs and carriers to get introduced to the community, to join in and collaborate." The Call for Papers, announced in Roger Brinkley's blog, is underway now and will end September 30.


In today's Forums, Kristian Rink explains practical advantages of the Java Persistence API in the follow-up Re: What's advanteges of JPA? Basic question about this technology. "JPA doesn't require to run inside an application server, actually you can pretty well use it for standalone applications. So overally this migration would be alot easier than, in example, following your managements decision to use DB2 rather than Oracle in the next release while having built all your application logic directly to the database."

cowwoc appeals for resolution to a long-standing shutdown hook bug on Windows in Re: What would it take to fix bug #4486580? "I posted a workaround near the end of the bug report (using a JFrame) that turns out to be unreliable. Seeing how this bug is 7 years old, the fix is well-understood and that there isn't a workaround for it I would really love to see it fixed in the near future. It is even more relevant in light of the recent "Java on the Desktop" efforts."

skyslee2005 wants to know how can i port phoneme feature to another platform(no win32, no linux). "my platform use mips process and a sample realtime OS,so i don't know how to port phoneme feature on it. as far as my understanding of phoneme feature,the javacall api layer only run on win32 platform, and i don't konw how can i build prerefiler and other tools for my platform; the makefile may have to change much place;for cross complier,there may be many work have to done,but i have no idea."


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.



Should you have to understand the application you're writing?  
kfarnham

Get In Line Blog

Posted by kfarnham Sep 5, 2008

Wrapping up another year of mini-talks

JavaOne was back in May, and as we have for the past few years, we recorded all our Community Corner mini-talks on a digital recorder, feeding them out twice a week as the JavaOne Community Corner Podcast.

We've now reached the end of this year's talks with j1-2k8-mtH10: Using Kepler's Orrery for teaching Planetary Science by Mae Linh Blake. Kepler's Orrery is an interactive gravity simulator that composes and plays generative music while visually demonstrating the physics of gravitational attraction. Not only is Kepler's Orrery a pleasing simulation for the eye and the ear, but it can be used as a powerful tool to teach gravity and how delicate of a balance our solar system is in.

We've done the mini-talks the same way for a couple years, and it's worth taking stock of whether they're valuable to the community. We have a real problem when mini-talks are scheduled against technical sessions, as it leaves the speakers addressing a nearly empty audience section in the booth. Next year we might opt for some kind of change and only have mini-talks during the open parts of the schedule, perhaps doing something else with the tech session times, like recording one-on-one interviews with project owners for the podcast. But that would make the race for the few mini-talk slots even fiercer, so we're not sure that's the right thing to do. Anyways, next year's a long way off, and we haven't decided.

Still, it's worth asking if the mini-talk podcast is something the community values and appreciates. So the latest java.net Poll asks "How many of this year's java.net JavaOne mini-talk podcasts did you listen to?" Cast your vote on the front page, then go to the results page for current tallies and discussion.


In Java Today, Roman Kennke reports on an experiment to implement Cacio Swing AWT peers for OpenJDK's portable GUI backends project. "The last couple of days, I was [...] writing some new interesting stuff for Caciocavallo. Inspired by the old Swing based AWT peers of GNU Classpath, and the X11 peers of OpenJDK, here comes the shiny new Swing based AWT peers of Caciocavallo and OpenJDK. The idea is this: implement a set of AWT widget peers, which are not backed up by Motif, Win32, GTK or Qt (the traditional implementations of (Open)JDK and GNU Classpath), but, as the names says, by Swing!"

The NetBeans/BlueJ team has uploaded a new multilingual version of the first full release of a BlueJ plugin for NetBeans IDE 6.1 onto the stable NetBeans Update Center. Therefore, there is now no longer a NetBeans BlueJ edition, but instead a plugin on the update center that installs into NetBeans IDE 6.1. For all the details, see Getting Started with the NetBeans BlueJ Plugin.

TheServerSide's Joseph Ottinger hopes to clarify discussions of enterprise Java by going back to a fundamental question: What is an App Server? "Chances are good that the average reader thinks a Java application server basically provides an implementation of the servlet specification, probably an implementation of JavaServer Pages, and perhaps some more services like database connection pooling.1 An application server is more and less, at the same time: an application server provides an environment where applications can run, no matter what the applications are or what they do."


In today's Weblogs, Terrence Barr takes stock of M&E Community Growth: 180 projects, almost 20,000 activities per month! "I've been wanting to post data on the growth of the M&E Community for some time now ... but somehow I always got distracted trying to pull together the stats. Turns out that compiling meaningful statistics is harder than you think and the web technology sometimes gets in the way, too. But here, finally, are some numbers - and they're loooooking goood."

Jean-Francois Arcand checks out Google's much-discussed new browser and asks Google Chrome and Grizzly Comet: does it works? "The buzz around Google Chrome attacked me...just to make sure Chrome supports Comet, I did try using the monster implementation to see if sockets in Chrome works with Grizzly Comet (and Java). Guess what?"

Finally, Fabrizio Giudici reports he's Resuming work on jrawio. "jrawio is an ImageI/O plugin for "camera raw" image formats. I've started writing it a few years ago for my Nikon D100, and later extended it for working with a larger number of formats. As far as I know, it is currently the only 100% pure Java code able to read all the parts of a "camera raw" file, including the raster."


In today's Forums,mthornton explains Java design choices in Re: Copy-on-write optimization for StringBuilder and StringBuffer. "If the StringBuffer's array is significantly bigger than the current length, then copy on write wastes a lot of memory (because that unused space becomes 'locked' by the String). A variety of strategies have been tried in the past but all created performance penalties for some types of code. The current approach is simple and has easily understood performance characteristics, albeit slower in some cases."

muzaffercoruh reports a Java NIO on windows performance problem for high traffic. "I use java NIO and I m very happy for its performance in small time range. My usage is that, I have one server machine work on 64bit java (Windows 2003). 20 client applications(32bit) in the same and very huge machine (8CPU-16GB RAM-Windows 2008) and totally all clients have 500 request/recieve per second. Every client has its threaded structure and I make pooling these threads with thread's nio connection so for every client almost 40-60 connections alive. My server application works very well. But after my clients start, almost one hour later my client's CPU goes 90% and most of this is kernel process. After I stop my clients, 1-2 minutes overhead continues. I think there is some problem with NIO and Windows. Is it necessary to do some configuration on windows? Or something else?"

Paul Taylor says that Java SE 6 improvement won't help him with SwingX performance problems, as explained in Re: Bug or feature: JXTable repaint on cell update. "Slow vertical scrolling in my application is one of my biggest headaches, and this is exacerberated by having two synchronized tables (recno and main table) . Ive spent alot of time optimizing my cell renderers but it didnt make much difference, and I think the problem is the one you describe. So please provide a fix , it could be optional and disabled by default to preserve backwards compatibility. The majority of my customers are Mac users , and since Java 1.6 is only available on Mac OSX 10.5 AND on Intel machines only I'm not going to be able to drop Java 1.5 support anytime soon."


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.



Wrapping up another year of mini-talks  
kfarnham

Tomorrow Never Comes Blog

Posted by kfarnham Sep 4, 2008

Remember November and the M3DDs? Think January, actually.

On Monday, we talked up the Mobile, Media & Embedded Developer Days, the second iteration of the Mobile & Embedded Community's highly-focused conference for ME developers. At that point, we wanted to get the news out because the CFP and registration dates were coming up quickly.

Maybe too quickly, as the decision has been made to push the conference back to January, about the same time of the year that the first conference was held. Roger Brinkley explains the reasoning for the change in Date Changes for the Mobile, Media, and eMbedded Developer Days:

There were a variety of reasons for making this change. Chief among them was an extra cost of running the conference in November and the loss of key personal during the original dates. Additionally, we know that the extra time would allow those of you traveling from outside of the United States enough time to acquire the appropriate visas. The fact that we're getting an extra 2 months of planning time put the decision into a no brainer category.

So we're back to our date of last year, the Wednesday and Thursday after Martin Luther King's birthday. It's too early to tell if this a habit but it certainly appears that way. We do know that this is a time period that a number of attendees can make.

We've also updated this week's Spotlightto reflect the new dates.


Also in Java Today, the JT Harness 4.1.4 milestone release fixes various bugs in the harness. The JT Harness is a general purpose, fully-featured, flexible, and configurable test harness very well suited for most types of unit testing. This release specifically addresses issues with the display of results and screen refresh functionality. JT Harness 4.1.4 provides complete backwards compatibility with JT Harness 4.1.3. For more information, visit the JT Harness project page.

In a new NetBeans.tv interview, Ted Neward interviews Tim Boudreau and Geertjan Wielenga about the NetBeans Platform. In part 1, they talk about plugin development which, it turns out, is "ridiculously easy". Then, in part 2, they talk about creating your own Swing applications on top of the NetBeans Platform, and the book they co-authored with Jaroslav Tulach, called Rich Client Programming: Plugging into the NetBeans Platform.


The latest Java Mobility Podcast is Java Mobility Podcast 55: Back to School Special. "Diane Wolff and Melanie Crouch of Virgina Western Community College are starting a new degree program of mobile programming at their community college that is geared to meet the needs of the Roanoke, VA business community."


In today's Weblogs, James Gosling takes a look at the Current State of Java for HPC. "At the last JavaOne I did a walk-on talk during the AMD keynote where I talked about how incredible HotSpot's performance had become - beating the best C compilers. I ended my talk with a joking comment that "the next target is Fortran". "

Felipe Gaucho posts a Question: how to bind SOAP <-> ORM JPA ? "Few days thinking about the best way to copy values between the objects representation of SOAP message elements and JPA entities. I couldn't find a good answer, so I am sharing the question."

Fabrizio Giudici points out A better way for UML management. "While aiming at blueMarine 1.0 for the end of the year, the effort is being put not only to stability and performance, but also on cleaning up the APIs in order to have a polished and stable version that others might use. One of the problems is with the UML diagrams - so far I've used the UML editor in NetBeans, but keeping them up-to-date is really time expensive, especially after some heavy refactoring."


In today's Forums,terrencebarr explains the constraints of the ME market in Re: MIDP3 status? "The mobile/wireless space is subject to competing interests and technologies - arguably more so than most other more established technology areas. Any attempt to standardize on features, APIs, or functionality occurs in this tension field. But standards are necessary to create economies of scale that allows content creation and deployment to occur efficiently and increase the value of the ecosystem for everyone involved. Java ME standardization is a difficult industry-wide effort and the process depends on the willingness of the participants to work efficiently for the benefit of the ecosystem. This is not necessarily a failure of the JCP but more a reflection of the difficult environment is must operate in."

miwur wants A list of all loaded webstart ressources/jars. "I need a list of all loaded jars in my project which are defined in my jnlp file. An example is the tool "javaws -viewer". There you can list all ressources from javaws. The list should include the full path to the ressource on hdd, because I want to open all jar files with "JarFile" class to extract some information from it. Could you help me?"

Kristian Rink points out a GlassFish advantage in Re: glassfish and logging. "Point being: Talking about the glassfish administration console, you get a lot more feature than tomcat possibly offers (online log browser, the ability to set log levels for packages and classes without messing with configuration files, log rotation, syslog integration and all that stuff) so while using glassfish logging, you can leave most of the logging configuration out of your application."

nordenberg questions the appopriateness of a workaround in Re: System.currentTimeMillis() resolution problem. "I absolutely agree that the registry tweak is not a general purpose solution. There must be a reason for not using the software clock in the first place, so manually forcing to use the software clock probably mean a sub-optimal configuration of the device. I don't agree that the workarounds try to cover up a deficiency in the windows platform though. They are there to make Java applications more portable. The sole purpose of them is actually to try to make the runtime behave closer to the _expected_ behaviour."


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.



Remember November and the M3DDs? Think January, actually.  

Kirill Grouchnikov has announced a Release candidate for Substance 5.0 on his Pushing Pixels site. Hosted on the Java.net Projects site, Substance Java Look & Feel is a library that provides configurable and customizable look and feel for Swing applications. In its recent development, Substance "has undergone significant internal and external changes to address major performance issues and to ensure the long-term code health of the project."

The Roadmap for Substance 5 that was published this past April outlined the major changes that were in the first Substance 5 code drop. The new release candidate builds on these enhancements and improvements.

Here are the most important changes in Substance 5.0:

  • Moving to Java 6 as the minimum runtime requirement.
  • Addressing the performance issues. While the first announced drop was 20% faster than release 4.3, the release candidate is 3.5 times faster on static scenarios and 2.7 times faster on dynamic scenarios as measured by the LightBeam testbed.
  • New client property to allow using per-window skins.
  • Enhanced theming layer.
  • Removed 16 VM flags and left only 2.
  • Removed 15 client properties, consolidated 3 others into 2 and added 1 new.
  • Removed 54 API methods on the main class, pushing some functionality into the theming layer.
  • Consolidated theme pack, watermark pack and button shaper pack into the Extras pack that also provides additional skins.

See the release notes for details of what's new in Substance 5.0.

Version 5.0 includes a lot of important "under-the-hood" changes, that don't fit into the category of new or improved features. As happens with any ongoing development project, splicing in new features and enhancing existing features, while also trying to meet the community's needs in a timely manner, ultimately compromises good design principles as successive releases are put out. In developing Substance 5.0, the project team took the time to address this: the new version includes substantial refactoring of the code base, eliminating complications that had built up during the development of the past several releases, thus bringing the code back into a "clean and manageable state." The refactoring undoubtedly contributed in some measure to the enormous performance improvements in Substance 5.0 compared with Substance 4.3.

Kirill's announcement postincludes images of Substance in action and a launch button that lets you run a WebStart application presenting Substance's features.

The final release of Substance 5.0 is scheduled for September 15. Support of Substance Version 4.3 (the last version that can run on Java 5) continues, but that version has now entered long-term support mode: "At the present moment this version has thirteen bug fixes backported to it from the main development trunk."

Developers are encouraged to download Substance 5.0RC, give it a ride, and support the project by reporting any problems you may note.


In other Java Today news, in the Server Side, Reginal Stadlbauer reports on the integration of the Java, Web and Qt GUI Testing Tool Squish with Maven: "Maven ... is a software project management and comprehension tool to manage a project's build, reporting and documentation from a central piece of information. Squish is an automated GUI testing tool for applications based on GUI technologies such as Java Swing/AWT, Java SWT/Eclipse RCP, Web/HTML/Ajax and Qt. To allow also integrating the automated Squish test runs into Maven, froglogic now released a Squish Maven plugin..."

Jennie Hall recently wrote a tutorial on Exchanging Data with XML and JAXB. The article demonstrates how to apply the Java Architecture for XML Binding (JAXB) in Java SE 6 to exchange XML data between systems, without having to delve into the specific XML processing details. "Among other key improvements, JAXB 2.0 offers support for binding Java objects to XML via the use of annotations. This feature allows you to generate XML data from your application simply by annotating your existing object model."


In today's Weblogs, Santiago Pericas-Geertsen talks about the Glassfish presentation he gave recently in Buenos Aires, Argentina at the free software conference Jornadas Regionales de Software Libre (JRSL): "I decided to divide my presentation into two parts: the first part talked about Glassfish as an application server and a community; the second part talked about support for JAX-RS and Jersey. There are too many cool technologies in Glassfish to present in one hour! I ended up selecting JAX-RS and Jersey because I found them incredibly useful and incredibly simple to use." Santiago has made his presentation slides available (as a PDF).

John Ferguson Smart writes about the new Hudson security features in his post "Hudson project-based matrix security is out!": "One feature that I've been waiting for a long time to see in Hudson is project-level security. To be able to say that certain projects can only be built by certain users. This comes in very handy if certain builds jobs should only be executed by certain people, for security or auditing purposes, for example." John tells us that this feature is now available in the latest Hudson build.

While Arun Gupta misses the incredible variety of mangoes he had in India, he's got Project mango to at least partially compensate. In his post Mango* - King of FOSS Offerings Arun introduces Project mango, "an initiative to promote the use of Sun's (Free Open Source Software) FOSS stack in the enterprise middleware market." Mango stands for MySQL AndNetbeans, Glassfish,Open.


In today's Forums,jannewmarch continues the ongoing discussion about anMIDP HTTP proxy issue: "Setting the property com.sun.midp.io.http.proxy only works with certain proxies configured in certain ways. The usual way of talking to proxy is to open a TCP connection and then issue commands such as "GET url HTTP/1.1" where the url is the resource you really want to access. The proxy is expected to forward the request to the desired host and relay the response. MIDP uses proxy tunneling instead..."

Dmitri responds to kiamur's question about the Best/Fastest way to free accelerated memory: "for a VolatileImage flush() will release the associated vram immediately, so null-ing the reference would only help the GC to pick up the object. However, for BufferedImage flush() will release only the vram-cached copies of the image, and not the java heap-based data buffer, so in this case setting the reference to null will definitely help to release the data quicker..."

Meanwhile, morrisford initiated a WorldBuilder-related thread about how to resolve poor client performance: "Apparently, the WL client performs more and more poorly as the world cell count increases and the increase does not appear to be linear."morrisford presents several options and says "I am looking for whatever information and opinions are available from whatever source." Join the conversation if you've got some ideas that might help.


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.

kfarnham

I Want To Want You Blog

Posted by kfarnham Sep 2, 2008

Is MIDP evolving too slowly?

There's been a pretty interesting thread about the progress and future of MIDP going on in the forums. It started withcaptainfreedom asking:

Just curious. What's the current status of midp3 (aka jsr 271).
It's been 4 years in the running. Why is it taking so long? When will it be finished?

Some of the replies pointed out that MIDP 2.1 phones have barely hit the market, and that the MIDP 3 spec is due in the first half of 2009, with compatible devices out in Q1 2010. If that seems too long... maybe it is. On yesterday's front page, we featuredterrencebarr's reply:

Yeah, MIDP 3 has been in the works too long. I think part of the problem is that it grew in requirements substantially over time and there were quite a few technical challenges. It defines much improved application management and concurrency, shared libraries, new security model aligned with CDC, the basics of a service framework, inter-midlet communication, and a bunch of other things. Still, it took too long IMO (release early, release often ...).

Daniel Rocha, who has been particularly active in this conversation sees this as a problem with the entire JCP process:

Having to accommodate multiple interests from multiple stakeholders who are donating their time to the expert groups while holding real world jobs seems to be slowing down the process for defining more complex specifications.

My basic argument is that proprietary technologies are progressing much faster than Java ME, which makes them suitable for innovative applications. Java ME these days looks mostly a platform for simple games and enterprise (forms) applications. One of the main reasons for this IMO is the overall slowness in releasing new specs.

Evidence: even Nokia, known for having a pretty standard implementation of Java ME, is starting to adopt proprietary extensions and APIs as a way to ensure requirements from developers and operators are met without having to wait for new JSRs.

I think we know who he's talking about in terms of proprietary technologies in the mobile space (no, not Android, that's largely open-source). But is that an appropriate comparison? The smartphone APIs are running on more desktop-like stacks -- the iPhone's roots trace back to Mac OS X on the desktop, not to other small devices. And not every phone can or should be a smartphone. Maybe MIDP's role is to be the API for the everyday device, not the luxury device. Or maybe not... doesn't the luxury usually become commonplace in our industry? After all, that was James Gosling's much-misunderstood point that "over time, it's pretty clear that JavaME and JavaSE will converge and become largely indistinguishable." But, then again, if Java SE and ME are converging, then why do we need MIDP at all?

Or maybe the problem is that we've got so many levels of capability that the reality is hard to make out. After all, embedded Java might mean CLDC, CDC, or even JavaFX Mobile. Maybe it makes sense for each to follow its own evolutionary course and find appropriate markets... so long as we're clear on which is which.

We're in an era where "ME" doesn't automatically mean CLDC/MIDP. If MIDP is indeed small, limited, and evolving slowly, that may be ideal for its target class of products, while other stacks provide more capability to pricier devices.


Also in today's Forums, Jagadish Prasath Ramu provides a concise answer in the thread Re: how to look up a resource adapter. "You (RAR developer) will provide implementations of ManagedConnectionFacotry, ConnectionFactory, Connection etc., App. developer/administrator will create a connector-resource (and connector-connection-pool). This resource will be bound to jndi, application will do a lookup and get the connection-factory (provided by your RAR) to create connections (provided by your RAR) to the EIS."

Felipe Ga

kfarnham

Remember November Blog

Posted by kfarnham Sep 1, 2008

M3DDs coming up sooner than you might think

You know it's September from all the Mailman-powered mailing lists that sent you a reminder today about what lists you're subscribed to and how you can get off of them. Combined with the Labor Day holiday in the US, it's the unofficial End Of Summer (as always, your climate may vary), and time to focus on the last third of the year.

One of the highlights will surely be the second conference assembled by the Mobile & Embedded Community, which has added a topic to become the Java Mobile, Media & Embedded Developer Days, or M3DDs, being held in November. The first conference was a remarkable get-together from across the mobile spectrum, from indie developers to carrier representatives, which opened up a lot of opportunities for discussion. One thing that came out of it was the seeming need for a mobile developers alliance, a bit of unfinished business that may be attended to at this second installment.

Oh, and if you're planning on speaking at the event, you now have two weeks to set your session proposal in.

Given the importance and timeliness of the event, this week's Spotlightis on the second Java Mobile, Media & Embedded Developer Days, being held November 12-13 at Sun's Santa Clara Campus Auditorium. "This conference is devoted solely to the technologies of mobile and embedded Java platforms and will be a unique opportunity for application developers of intermediate and advanced skill levels, platform developers, and technical experts at tool vendors, OEMs and carriers to get introduced to the community, to join in and collaborate." The Call for Papers, announced in Roger Brinkley's blog, is underway now and will end September 15, with conference registration expected to open on October 1.


In Java Today, te latest episode of The Java Posse podcast is an Interview with Kito Mann on JSF and JSFOne. In it, Kito and chats with Dick Wall and Carl Quinn discuss Kito's book JavaServer Faces in Action, and the rapidly-approaching JSFOne conference. They go on to discuss the JSF marketplace, JSF tooling and attempts to standardize it via JSRs, the status of JSF 2.0 as specified by JSR 314, and the various implementations of JSF in projects like Facelets.

A new edition, issue 179 of the JavaTools Community Newsletter is out, with tool-related news from around the web, announcements of new projects in the community and two graduations from its incubator (Exeine and Mockinject), and a Tool Tip on Groovying in Netbeans.

In a recent SDN article, Carol McDonald and Rick Palkovic show how to combine RESTful Web Services and Comet. In the article, you'll learn how to build a Comet web application with Dojo, Java EE technologies, and GlassFish.


Today's Weblogsbegin with a tip from John Ferguson Smart about Using the Maven Release Plugin It is an excellent and widely used best practice to tag each of your stable releases in your version control system for future reference. However, this sort of bookkeeping is tedious and error-prone at the best of times. Fortunately, Maven can help.

Patrick Keegan takes the database focus off the server in A Personal Data Storage Application With Embedded Java DB. "Sometimes you might want to create a more portable application that carries its own data with it, such as an application in which a user manages personal data."

Finally, Jitendra Kotamraju explores Control Over JAXBContext in JAX-WS RI/Metro. "An application can configure its own JAXBRIContext for an endpoint or a proxy and JAX-WS RI runtime uses that context for (un)marshalling, WSDL generation etc."


In today's Forums,lowecg changes the subject a little bit in the threadRe: Start quicker by tuning JVM and javac. "General question - I'm seeing quite a few posts around discussing Java start up times. Does anyone know if there is an official benchmark that can be used to measure start up times for desktop applications, web start apps and applets?"

terrencebarr acks the MIDP 3 delays in Re: MIDP3 status?. "Yeah, MIDP 3 has been in the works too long. I think part of the problem is that it grew in requirements substantially over time and there were quite a few technical challenges. It defines much improved application management and concurrency, shared libraries, new security model aligned with CDC, the basics of a service framework, inter-midlet communication, and a bunch of other things. Still, it took too long IMO (release early, release often ...)."

Finally, oliverdb posts a feature request for the Scene Graph project in (Wish) Timeline query. "In our recent project we had some advanced animation requiring that we constructed ad-hoc timelines. The timelines consisted of 2 to 5 Clips and our main problem was that these Clips was delivered from different parts of the game, and put together in a central class. What we need was some way to query the animations or rather query the schedule to find the latest animation and add new animations from where is left off."


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.



M3DDs coming up sooner than you might think  

Filter Blog

By date: