FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Java
ERIC BRUNO'S BLOG

Java: The Daily Grind.

by Eric Bruno

August 2007


August 27, 2007

Project Sailfin


Sun and Ericsson have been working together to provide a version of Glassfish with SIP and advanced clustering support. The result is Project Sailfin (https://sailfin.dev.java.net/).

Session Initiation Protocol (SIP)--see http://en.wikipedia.org/wiki/Session_Initiation_Protocol--is a control protocol that allows software systems to create and terminate multiparty, or multicast, sessions. Examples of usage include multi-person Internet phone calls, group chats, and group conferencing over the Web. Three nice features of SIP are that it's transport independant (allowing it to work with various networking protocols), it's text-based (making it human readable), and it can be tunnelled through firewalls.

Sun and Ericsson have created a SIP-enabled Servlet engine (also known as JSR 116) that works with Glassfish (https://glassfish.dev.java.net/), Sun's open-source Java EE 6 application server. The goal is to work towards JSR 289 compatibility, adding high-availability and clustering features to the mix.

Although the obvious application of Sailfin is in the telecommunications sector, you can use Sailfin to add multi-media and other group communication services to your existing Java EE applications. Sailfin is still in development, but works reasonably well to try for yourself. Included is a link to Sailfin example applications (http://wiki.glassfish.java.net/Wiki.jsp?page=SipExamples).

Happy coding!

-EJB

Posted by Eric Bruno at 10:20 AM  Permalink |


August 21, 2007

Java and Potato Chips


Will proposed new Java language additions increase Java's popularity, or will it be the same old bag of potato chips? Look in the kitchen sink and help decide on Java's future recipe.

As the author of this article on new Java features describes, potato chips have a certain value to people. However, a simple change, like a curled edge that holds dip, can increase its value and renew people's interest.

Are closures Java's equivalent to the curled potato chips? How about enhanced properties? Operator overloading? Clearly, the most important item on this list is that which is important to you; someone who is currently a Java developer.

As the author points out, Java is a language that many people have grown up on, as opposed to one that people have moved to. I moved to Java full-time from C++ back in 1999, so I have a different view of what I’d like the language to become (or to remain). For instance, soon after I made the switch from C++, I'd wished that Java allowed operator overloading (i.e. custom implementations of operators such as '+', or the array brackets). However, some argue that this feature adds to the complexity of C++ with little advantage, and that there is no need to pass this complexity on to the Java language. Someone who never coded in C++ would more than likely agree with that.

The Kitchen Sink

There is a way for you to help decide what should be, and not be, in Java's future; it's The Kitchen Sink Language project. It’s an experimental branch of Java's language implementation, including the compiler. Here, you have the chance to propose a new feature, and actually supply an implementation of it for others to try. Before making a decision as to whether a feature should be in or out, you get to try it. As James Gosling describes, "Throw stuff into the kitchen sink without thinking too hard about whether or not it's a good idea. Let folks kick the tires. Those experiences then inform the choice of which features go into the standard."

Happy coding,
EJB

Posted by Eric Bruno at 10:08 AM  Permalink |


August 15, 2007

BEA News and Rumors


BEA announces OS-less installation, and is rumored to be an acquisition target.

BEA announced recently (http://www.informationweek.com/showArticle.jhtml?articleID=201311330&queryText=bea) that it will offer WebLogic Server Virtual Edition (http://dev2dev.bea.com/blog/editors/archive/2007/08/announcement_we.html), a version of WebLogic that does not require an OS. Instead, it will run within a Java VM on top of VMWare's hypervisor.

A rumor throughout the industry is that BEA is quickly becoming an acquisition target, at a time that BEA's sales are slipping. Supposedly, open-source application servers such as JBoss and Glassfish are taking a bite out overall commercial application server sales. Couple this with IBM's WebSphere growth since 2004, at BEA's expense, and BEA's future may be in question. Perhaps it's time for WebLogic to jump into the open-source game itself?

Posted by Eric Bruno at 12:21 PM  Permalink |


August 09, 2007

Is Sun Tone-Deaf?


Someone who is tone-deaf cannot truly distinguish individual musical notes. Without this ability, that person cannot effectively sing in harmony with others. Sun apparently is tone-deaf, as there seems to be no harmony with Apache these days.

And that makes sense from Sun’s business point of view. As I’ve pointed out in past blogs, Sun makes money on Java by selling the rights to distribute it with embedded products. Contrary to common opinion, Java’s not free -– just read the license details and you’ll see this.

Java is free for developers and for ISVs who develop applications that get installed on most servers and general-purpose computers. If your use of Java is considered an embedded use by Sun’s definition, you must pay Sun for the rights to distribute it with your device (or computer, or phone, or appliance, or whatever your product is).

"But didn’t they open-source Java?" you ask. Yes, under a GPL v2 license. With this license, and its copyleft clause, if you use it to build a product around, you must open-source (via the GPL license) your own source code as well. It’s the "viral effect" that many speak of. Not willing to do that? That’s okay. Sun will sell you the rights to distribute commercial Java.

Apache Harmony

Enter the Apache Harmony project. The Apache license is quite different than the GPL. There are no requirements to open-source code written to use an Apache-licensed product. Therefore, you can imagine that Sun’s largest Java licensees would just love to get their hands on an Apache-licensed (a.k.a. free) Java.

There is one small complication with this, which was pointed out in Apache’s open letter to Sun a few months ago, and Sun’s announcement regarding the Java TCK today: Apache doesn’t have the rights to the Java test compatibility kits to certify Harmony as a truly compliant version of Java. Without this, most customers won’t be willing to build their businesses around it. And if they did, it would be illegal, and Sun’s lawyers would be all over that.

Therefore, unless Sun gives Apache the rights to certify Harmony as Java, Harmony is dead in the water. After all, with no hopes of being able to legally use this version of Java, who’s going to continue to fund its development?

Is Sun the bad guy in this situation? Not necessarily. Java is their product -– their property. As an analogy, if a new sneaker maker (call them Acme Sneaker) introduced a sneaker that looked like a pair of Nike Shox, had the same Nike Swish on it, and was called Acme Shox, it’s reasonable to assume that a lawsuit would ensue. It’s also reasonable to assume that most people would consider Acme wrong to do this.

The only hope for Harmony is that Sun makes some concessions for Apache to continue with the project in some way. What this will be, and whether they do it at all, is yet to be seen. What’s your opinion on this? Do you care about Harmony, or is the OpenJDK ample for your needs? Respond to this blog below and let me know.

For more information, read the updated OpenJDK FAQ or the full press release.

Sun Releases New License for Java Compatibility Tests to the OpenJDK Community

Santa Clara, CALIF. -- August 9, 2007 -- Sun Microsystems, Inc. (NASDAQ: SUNW), today announced the immediate availability of the OpenJDK(TM) Community Technology Compatibility Kit (TCK) License. With this release, Sun is placing the means for certifying "Write Once, Run Anywhere(TM)" compatibility into the hands of the community.

This license is for the Java(TM) Compatibility Kit (JCK). The JCK is the Technology Compatibility Kit, a suite of tests, tools and documentation that determines whether or not an implementation complies with the Java Platform Standard Edition 6 specification. The evolving OpenJDK community understands that the value of their efforts, as well as the resulting open source Java technology implementations, will be greatly enhanced if these implementations can be certified as compatible.

Sun is licensing the JCK under terms that will permit contributors to fully comply with the terms of the GNU General Public License version 2 (GPLv2), while giving the OpenJDK community the means to test for compatibility. The OpenJDK Community TCK License is available at: http://openjdk.java.net/legal/openjdk-tck-license.pdf.

"This announcement is another milestone in the release of Java technology as open source software. We're eager to see OpenJDK based implementations pass the JCK, so that we have compatible and free Java technology implementations available in GNU/Linux distributions everywhere,” said Rich Green, executive vice president, Software at Sun. “As a result of this new license and the efforts of the OpenJDK community, we will see the promise of open source Java technology fulfilled through accelerated innovation and broader distribution, which will benefit the entire IT industry.”

The OpenJDK Community TCK License will enable developers to test the compatibility of their contributions to the OpenJDK project. It will also allow distributors to test complete implementations that are substantially derived from OpenJDK and distributed under GPLv2. Organizations or individual developers that use the OpenJDK Community TCK License and then successfully pass compatibility testing, will also have the option of branding their implementation with Sun's "Java Compatible" trademark and logo.

See the updated OpenJDK FAQ (http://www.sun.com/software/opensource/java/faq.jsp) for more information about the new TCK license and stay tuned for a forthcoming blog from Rich Green (http://blogs.sun.com/richgreen).

About Sun Microsystems, Inc.
A singular vision -- "The Network Is The Computer"(TM) -- guides Sun in the development of technologies that power the world's most important markets. Sun's philosophy of sharing innovation and building communities is at the forefront of the next wave of computing: the Participation Age. Sun can be found in more than 100 countries and on the Web at sun.com.

Posted by Eric Bruno at 05:57 PM  Permalink |


August 07, 2007

End-to-end or end-to-edge solution?


What's the difference? One is about connectivity; the other is about connectivity, integration, and user experience.

For instance, an end-to-end solution stops at a node (i.e. a computer, a client device, and so on). When you consider the edge--not The Edge (http://en.wikipedia.org/wiki/The_Edge )--you include the application’s overall user experience. To illustrate the difference, examine and compare the Internet and the web. The edge solution in this case is the web browser. For a few decades now, you could have placed a computer as an end-node on the Internet. You still can. However, the introduction of the web browser with web protocols has brought that node to the edge. A whole new paradigm for information delivery and discovery was introduced – the edge.

For a more recent example, compare a typical cell phone to an iPhone (http://www.apple.com/iphone/). The iPhone takes an end-to-end solution and disrupts it. It doesn’t qualify as an end-node as other cell phones historically have. Suddenly the rules have changed, and a new edge has been defined. Whereas many cell phones have given you the ability to manage your schedule, tasks, addresses, and phone numbers, the iPhone creates a whole new experience that brings it to the edge.

An example of an edge enabler is JavaFX script (http://java.sun.com/javafx/), which delivers the ability to easily build rich web 2.0 client interfaces. What areas of user experience can you bring to the edge with JavaFX? Perhaps it’s on the trading floor of a financial institution, where an interactive, performant, client application is required. Until now, Java may not have been the first choice for client UI development, and web 2.0 Ajax applications have not been suited for such mission-critical, performance-first, applications. JavaFX Script aims to solve this.

JavaFX – An Integration Technology

I’m excited by the possibilities that JavaFX Script and JavaFX Mobile introduce, and the applications that will be brought to the edge with them. This is particularly important in the age of integration—a term I’ve introduced in earlier blog entries (see http://www.ddj.com/blog/javablog/archives/2006/08/the_age_of_inte.html to read about that).

In this age, a single standalone application may have limited-to-no value unless it’s plugged into a more complete solution that brings that application to the edge. For instance, an MP3 player is an end-node device. iPods have been successful in this space not just because they look cooler. An iPod is enormously successful because it’s an edge solution that’s coupled with iTunes; it’s an integrated edge component whose true value is derived from an application that easily allows you to acquire and deliver content (music, videos, podcasts, movies). It’s difficult to create an iPod-killer without recreating the content acquisition and delivery mechanism that goes along with it.

Let’s review the three edge examples I’ve given so far (the web browser, the iPhone, and the iPod):

-The browser is valuable because it connects to the Internet with web protocols
-An iPod is more valuable because of iTunes
-The iPhone is more valuable because it integrates with a cell phone network and with the Mac OS X desktop.

Future “End-to-Edge” Solutions

What applications will JavaFX help bring to the edge? Only time—and talented people like you—will tell. Hopefully this blog entry will help to get your creative juices flowing, and perhaps you’ll be willing to share them with the community. If so, feel free to respond to this blog below, and share your ideas.

Happy coding.
-EJB

Posted by Eric Bruno at 06:20 PM  Permalink |


August 02, 2007

JavaFX Compiler and NetBeans Plugin


JavaFX continues grow as an excellent graphical, web-enabled, and Java-compatible programming language.

I recently spoke with Chet Haase from Sun regarding JavaFX script, its compiler (https://openjfx-compiler.dev.java.net), and the recently released NetBeans plug-in. Chet is an architect in the Java Client Group at Sun Microsystems, and is the author of the new book, Filthy Rich Clients (part of the Sun Java Series). And as his blog title says, “he spends most of his time working on graphics and performance issues and futures.” That’s a very cool job to have in my opinion.

In short, JavaFX script has the ability to enable a different type of GUI developer; one that doesn’t have the level of sophistication, or simply the time, to master GUI programming with Java Swing or Java 2D. Instead, JavaFX provides this level of sophistication to those who either don’t want to learn the depths of Java and Swing, or those who simply want to create application mock-ups, prototypes, or quick GUI front-ends to other applications.

Sure, there are many cases where JavaFX script might supplant the use of pure Java and Swing, but the more likely scenario involves applications that include a mix of Java/Swing and JavaFX script. Like every other technology, it’s important to use the best tool for the job, and not get religious about using script vs. Java.

To help JavaFX script grow into a more serious language of its own, Sun recently announced and made available the OpenJFX Compiler. The compiler translates JavaFX script to JVM class files (also known as bytecode). The end result is something that can be executed by the JVM, and will be optimized by the HotSpot JIT just like any other Java class file. This implies Java FX script has the potential for excellent platform-level performance.

In fact, the JavaFX compiler uses and extends the javac compiler. Therefore, JavaFX is plugged into the roadmap for Java SE going forward, and will inherit all of the changes and enhancements made along the way. Best of all; it’s completely open to contribution. You can look at the source; contribute to it; read and contribute to the Wiki; and join all of the forum discussions.

JavaFX NetBeans Plugin

The NetBeans Plugin puts a visual interface on top of the command-line JavaFX tools. It’s completely integrated with NetBeans, providing feedback in terms of syntax and errors through the editor. All of the demo applications—an excellent resource to use to learn JavaFX—are available as NetBeans projects. Additionally, the JavaFX Pad demonstration application is made part of NetBeans thanks to the plugin.

Java FX Pad (read more in this online Sun article) allows you to copy and paste your own JavaFX application source code within it to provide an environment to test your code.

JavaFX is moving quickly, and it provides a lot of GUI-programming power with little overhead. Now, with the release of both the compiler and the NetBeans plugin for development, JavaFX Script has become a serious programming environment.

Happy code,
EJB

Posted by Eric Bruno at 02:40 PM  Permalink |



November 2007
Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  


BLOGROLL
 
INFO-LINK