The Source for Java Technology Collaboration
User: Password:



Hans Muller's Blog

J2SE Archives


Your Christmas shopping troubles are over: more than 40 Java Markup Language Editors

Posted by hansmuller on December 03, 2004 at 10:23 AM | Permalink | Comments (3)

A few weeks ago I published a quick roll-up of about 40 component libraries for Swing applications that we plan to include in the javadesktop.org Swing Depot . That blog produced a nice bunch of feedback about libraries I'd failed to note and so I published a follow up blog with a dozen more. Since then I've been pointed at another 25, so I hope to update the list again before too long. However in the interim I've fielded questions from customers and partners and colleagues about Java based tools for markup languages, notably UML, HTML, and XML. So I've put together a list of those, at least the ones I'm aware of. The list that follows strives for all the same high levels of journalistic integrity that my previous efforts have:

Warning: in many cases I've lifted or crudely paraphrased vendor product descriptions in the list below, rather than craft my own pithy summary. It's not because I'm incapable of doing a good job of that, it's because I'm lazy and life is short. It's also worth pointing out that I'm not trying promote the relative merits of these applications, just their existence.

As before, I'd appreciate pointers to products I've failed to include.


HTML Browsers and Editors

The Swing JEditorPane component provides extensible support for rendering and editing HTML4.0. Although it's quite capable, it's not intended to be sufficient for general purpose web browsing or for high fidelity HTML authoring. Even applications that apply JEditorPane to more modest tasks will still find that they need to create a composite panel that adds GUI elements like menus and toolbars for common operations. The HTML and XHTML components listed in this section are extensions, encapsulations, or replacements for JEditorPane that overcome these limitations.

Yahoo Site Builder

If you want to put your small business on the web, Yahoo! Small Business is your one stop shop for helping you get online, sell online, and market online through products and services including domain registration, hosting, ecommerce, and customer recruitment tools. SiteBuilder is a Yahoo Small Business product that enables a user to create, publish, and update a web site from within one of the most capable Swing applications we've seen in some time. It's a complete HTML authoring tool, with templates, clip art, drag-and-drop editing, and precise positioning and layout.

Yahoo Site Builder was covered in Swing Sightings #21.

Xpage Internet Studio

[I used Google to translate this site into English so I may have missed some of the finer points.] Xpage Internet Studio is a complete web site authoring system. It supports direct manipulation style editing of HTML as well as publishing a complete site to your ISP.

ICESoft Technologies

ICESoft has been building pure Java web rendering software for quite a long time. They now have three big products:

  • ICEbrowser SDK offers a compliant and configurable Web browser engine that supports JavaScript, applets, and SSL. It implements a proprietary plug-in interface to integrate third-party and custom content handlers (such as JMF, XSL/XSLT, SVG, and PDF).
  • ICEreader SDK enables developers to render static HTML/XML content in applications where secure or dynamic Web capabilities are not required.
  • ICEpdf SDK can be used as a standalone PDF document viewer application, an embeddable PDF viewer component, or combined with ICEbrowser SDK for a complete web-content rendering solution.

Javaio - WebWindow, Component Suite, JModeler

Loads of very high level parts here, beginning with the WebWindow browser component. WebWindow is a small pure Java HTML viewer that's intended to take up the slack from Swing's JEditorPane. JModeler is a generic diagram editor for building modeling applications and the Javaio Component Suite includes components like JOutlookBar (this sort of thing is sometimes called an "accordion" control), JHelpView for JavaHelp, and JSlidePanel for animating panels in and out of view.

Grand-Rapid

Grand-Rapid Browser provides an extensive rendering & browsing environment based on accepted and opened standards. Beyond the browsing experience Grand-Rapid Browser offers an extensible architecture that can embed various tools in the same application.

Sferyx Java Component Library

Sferyx JSyndrome HTMLEditor is a Java component suitable for use in any Java application or applet which needs HTML document authoring.

JSyndrome was covered in Swing Sightings #14.

SimplyHTML

With project SimplyHTML an application is built for working with text documents. Text documents are stored in HTML and CSS format, but the application is meant as a word processor rather than a code editor or web site builder.

SimplyHTML was covered in Swing Sightings #12.

JDIC Browser Component

The goal of the Browser component, org.jdesktop.jdic.browser, is to provide a simple AWT component which enables Java applications and applets to provide basic web browsing capability. The basic functionality includes creating browser windows, rendering web content, navigation, a basic history mechanism (back and forward), and progress notification. The JDIC browser component encapsulates the native browser's rendering panel (Mozilla Gecko or Internet Explorer).

WebRenderer

WebRenderer is Java component that encapsulates the native browser. It offers full multimedia support across platforms and most forms of web content including the latest HTML standards such as SSL. Most popular desktop platforms (and their browsers) are supported: Windows, Linux, OSX, Solaris and JDS.

Clue Web Browser Components

Clue Web Browser Components (WBC) is designed for desktop and server applications. Developed on top of the Java2 platform, Clue WBC takes full advantages of Java2's rich functionality and works seamlessly with the Java Foundation Class. Clue WBC also provides a rich set of APIs. The APIs have simple methods to set a web address or a HTML string for rendering. There are also sophisticated methods to control every aspect of the browser. With the nicely defined APIs, developers can design powerful applications quickly and easily.

EditLive! for Java

EditLive! for Java is an online XHTML authoring tool that empowers business users with an intuitive, easy-to-use interface for creating and publishing web content.

JWebDixx HTML editor applet

JWebEdixx is a HTML Editor Applet for developers. It enables the development of browser independent applications with advanced HTML editing capabilities. By using a XML configuration file, JWebEdixx is very customizable. Version 1.1 has many new features: table support, advanced javascript API and much more. There is also a bean version available for the integration in Swing applications.

JWebDixx was covered in Swing Sightings #21.

JXHTMLEdit

JXHTMLEDIT is a cross-platform WYSIWYG HTML/XHTML content authoring tool, a very small Java applet based on the Java 2 Platform. JXHTMLEDIT provides word processor-like user interface that allows to edit the document d irectly in the final form (as will be rendered). JXHTMLEDIT is flexible and could be used to easily integrate WYSIWYG authoring functionality into existing products or services. Applet is less than 90 KB, so it loads very quickly.

EKit

Ekit is a free open source Java HTML editor applet and application. The Ekit standalone also allows for HTML to be loaded and saved, as well as serialized and saved as an RTF.


XML Tools

Some of the entries listed here were lifted from Free XML tools and software, a really helpful site maintained by Lars Marius Garshol.

TIBCO TurboXML

TIBCO TurboXML is an Integrated Development Environment (IDE) for developing and managing XML assets. With facilities for creating, validating, converting, and managing XML schemas, XML files and DTDs, TurboXML provides a best-of-class XML implementation platform that combines industry leading XML solutions (XML schema authoring, XML instance editing, and XML project management) into an simple and intuitive IDE. TurboXML, which is currently deployed in thousands of organizations around the world, is the first XML IDE to offer comprehensive support for the latest XML standard - the XML Schema Recommendation.

TurbXML was covered in Swing Sightings #6.

Exchanger XML Editor

Exchanger from Cladonia is a very capabale XML editing tool. As they say on their web site: "it features schema-based editing, tag prompting, validation against a DTD, XML Schema*, RelaxNG, tree view and outliner for tag free editing, XPath and regular expression searches, schema conversion, XSLT and XSLFO transformations, comprehensive project management, an SVG viewer and conversion, easy SOAP invocations, and more."

Exchanger was covered in Swing Sightings #20.

<oXygen/> XML Editor & XSLT Debugger

Comprehensive support for XML document editing, formatting and validation including a "content assistant", an XML outliner, and much more. <oXygen/> provides complete XSLT 2.0 support including editing, validating and debugging XSLT 2.0 stylesheets as well as transforming XML documents using XSLT 2.0 stylesheets. Additionally there'san XPath 2.0 evaluator, an XQuery Editor, WSDL Editor and SOAP Analyzer, SVG Viewer and many other features.

<oXygen/> was covered in Swing Sightings #13.

EditiX

EditiX is a Swing based XML editor designed to help web authors and application programmers take advantage of the latest XML and XML-related technologies such as XSLT / FO and XSD Schema. EditiX provides users with an extensive range of XML functionality within a refined IDE that guides you with intelligent entry helpers. EditiX has realtime XPath location and syntax error detection. Helpers are also provided with context syntax popup supporting DTD, Schema and RelaxNG. EditiX supports multiple templates and project management. User can apply XSLT or FO Transformation and show the result with a dedicated view. All the process can be managed by shortcuts. EditiX includes default templates with XML, DTD, XHTML, and many more.

EditiX was covered in Swing Sightings #21.

XMLEspresso

XMLEspresso 4.0 is a full featured XML editor for creating and maintaining XML documents. It's available as an applet or an application.

Protege-2000

Protege-2000 is a tool which allows the user to, construct a domain ontology, customize data entry forms, enter data. It's also a a platform which can be extended with graphical widgets for tables, diagrams, animation components to access other knowledge-based systems embedded applications; it's a a library which other applications can use to access and display knowledge bases.

X-Smiles

X-Smiles is an XML browser developed in Java. It has a component-based architecture that allows it to run in many different UI environments. In addition, XML vocabularies are rendered by Java components, which can be plugged into the browser. XML documents can also be displayed by using XSLT to transform them into an already supported vocabulary.

XPath Visualizer

XPath Visualizer can be used to learn XPath and also debug XPath expressions. The visualizer can show an XML document in a tree view and then allows the user to execute an XPath expression against that document, and see which nodes were matched.

Enyhdra Octopus

Octopus is a simple Java-based Extraction, Transformation, and Loading (ETL) tool. It may connect to any JDBC data sources and perform transformations defined in an XML file.

GenDoc

GenDoc is an open source XML editor for data-oriented applications which has a tree-view and a styled view. It has a plugin API that allows the editing of some elements to be customized for specific DTDs, and also allows publishing actions to be executed from the editor. GenDoc is based on the now defunct Merlot project, and was formerly known as GenDiapo.

xmloperator

Xmloperator is a tree-based XML editor, which can make use of a DTD or a RELAX-NG schema to provide schema-driven editing. xmloperator is mainly suitable for data-oriented XML rather than document-oriented XML. The editor supports undo, and redo, comparison of documents, as well as conversion using XSLT. It is based on the Xerces-J XML parser and the Xalan-J XSLT engine.

XMLWrite

XmlWrite is a powerful XML/XSL editing/transformation enviroment. It features: syntax coloring, wizards and templates for xml/xsl files, clipbook libraries for XHTML, SVG, XSLT, and much more.

Jaxe - Java XML Editor

An free open-source configurable and extensible XML editor. Among its many features: HTML preview with an XSLT stylesheet, multiple undo/redo, source code display, complete validation using Xerces, and much more.


UML Tools

A comprehensive list of UML tools, both Java and native, can be found on the Objects by Design web site.

This list of standalone tools, doesn't include the products that are only available bundled with IDEs, like TogetherSoft.

Poseidon for UML

Poseidon for UML is a popular, fully-fledged UML CASE tool. It evolved from the open-source project ArgoUML and has turned it into a world class modeling tool. Today, it has the fastest growing user community and is famous for its superior usability. Poseidon for UML is delivered in several editions to meet the needs of different users.

Poseidon for UML was covered in Swing Sightings #5.

ArgoUML

ArgoUML is the open source project behind Gentleware's Poseidon for UML product. ArgoUML is licensed under the BSD license which also allows extensions to be commercialized.

ArgoUML was covered in: Swing Sightings #5.

Visual Paradigm for UML

Visual Paradigm for UML (VP-UML) is a powerful, cross-platform and yet the most easy-to-use visual UML modeling and CASE tool. VP-UML provides software developers the cutting edge development platform to build quality applications faster, better and cheaper! It facilitates excellent interoperability with other UML CASE tools and most of the leading IDEs which excels your entire Model-Code-Deploy development process in this one-stop-shopping solution.

Many current screenshots can be found here. Visual Paradigm was covered in Swing Sightings #8.

Violet UML Editor

Violet is a free UML editor written in Java and released under the GNU Public License. The author, Cay Horstman , who's a Professor of Computer Science in the Department of Mathematics & Computer Science at San Jose State University, explained the origins of Violet like this: "I wrote Violet for my students who were overwhelmed by the functionality and/or price of Rational Rose, and it has since been popular with other students and instructors. I couldn't have done it without Swing. If you look inside the (GPL) source, you'll find a really nifty application of Swing long-term bean persistence." Kind words like that made more than one day over at Swing central. And in case you're wondering, VIOLET is the "Very Intuitive Object Layout Editing Tool".

The Violet UML Editor was covered in: Swing Sightings #17.

MagicDraw

MagicDraw is a visual UML modeling and CASE tool with teamwork support. Designed for Business Analysts, Software Analysts, Programmers, QA Engineers, and Documentation Writers, this dynamic and versatile development tool facilitates analysis and design of Object Oriented (OO) systems and databases. It provides the industry's best code engineering mechanism (with full round-trip support for J2EE, C#, C++, CORBA IDL programming languages, .NET, XML Schema, WSDL), as well as database schema modeling, DDL generation and reverse engineering facilities.

UMLet

UMLet is an open-source lightweight Java tool for drawing UML diagrams. UMLet lets sketch diagrams quickly. You can export diagrams to eps, pdf, jpg, svg, and the system clipboard. You can also create your own custom graphical elements

SILVERRUN ModelSphere

SILVERRUN ModelSphere is an exciting and unique modeling tool that combines many features, such as process modeling, data modeling and UML modeling, and provides a flexible model management environment.

CodeLogic for Java

CodeLogic for Java is designed to allow developers to take advantage of its power directly from their favorite Integrated Development Environment (IDE). With plug-ins for Eclipse, JBuilder, JDeveloper and IntelliJ IDEA users to extend these IDEs with tools that will allow them to immediately gain insight and control over existing source code

ArcStyler

ArcStyler provides a comprehensive, architecture-driven solution for end-to-end model-driven development of modern, component-based applications.

OptimalJ

OptimalJ from Compuware accelerates J2EE development by generating working applications directly from visual models. Through the power of patterns and model-driven application design, OptimalJ decreases the need for extensive coding and design skills, and delivers high productivity and consistency.

JUDE UML Modeling Tool

JUDE is a modeling tool which supports your object-oriented software designing in JavaTM and UML1.4(Unified Modeling Language).

Aris UML Designer

Aris UML Designer convers technical requirements into the standard modeling language UML, thus guaranteeing consistent, object-oriented modeling of all program functionalities.

Artiso Visual Case

Visual CaseTM is a powerful AMD Tool for software development, database design and business analysis. Visual Case combines the UML modeling language, legacy diagrams and E/R (entity relationship) design tools with a round-trip database engineering tool and a sophisticated SQL editor in one integrated CASE tool.



Desktop Java: Over Three BILLION Videos Served

Posted by hansmuller on July 20, 2004 at 03:26 PM | Permalink | Comments (0)

Just in case you haven't been paying attention, I'd like to remind you about our purpose. The reason we toil at our keyboards creating the software that is the world wide web on the internet. The reason we march countless neuron armies towards certain slaughter at the hands of ephemeral monsters like XForms and javax.swing.text and CSS 2 revision 1. It's all about advertising. Your paycheck? Advertising.

Oh no you say, I'm paid to create some highly technical XML based modeling software that's used by developers to create web services for the remote administration of rack mounted blinking lights for doubly encrypted data center illumination. That's the parochial perspective. What you do is all part of an enormous interconnected technology ecosystem that's propelled by just a few sources of cash that come from the truly outside. One of them is advertising.

Advertising is why sometime later this summer several hundred very smart engineers at Google are going to be queuing up for large BMWs and personal wealth managers. Advertising is why content is king, advertising pays for the kingdom. What you may not realize is that Java applets are playing a vital role in delivering advertisers' messages directly to your visual cortex - with video.

I have to admit that until recently if I was asked about Java applets that targeted consumers (that is, everyone else), I would have brought up games or education or banking. At JavaOne I met David Breckling from EyeWonder and heard all about video banner ads. What's amazing about video banner ads is how widely used they are. Using a compact (only 68K!) applet player EyeWonder has delivered over three billion video "impressions" for all kinds of blue chip clients, including Sun, AOL, Intel, and Volkswagen. The sample videos on EyeWonder's showcase page all run for about 30 seconds. If that's typical we're talking about well over 170,000 years worth of video. Pretty terrifying.

So the next time a fellow developer asks you about consumer facing Java, or Java in web advertising, you can tell them not to worry. Java is already a part of their paycheck.



Parading Out of the Open Source Door

Posted by hansmuller on June 28, 2004 at 09:30 PM | Permalink | Comments (0)

June has been a record breaker for new open source projects at Sun. The projects ambling out the door this month have run the gamut from new initiatives like JDIC, JDNC, to longtime J2SE stalwart Java3D. And standing in the doorway is the great hulking giant Solaris, of which our president Jonathan Schwartz has said: "Make no mistake: we will open source Solaris". At today's opening JavaOne keynote Jonathan also let it be known that Project Looking Glass was similarly poised to pass through the open source doorway, just as soon as some final (unspecified) details were ironed out.

So now perhaps you're wondering what all of this implies about Java itself passing through the same door. Of that I can tell you with absolute certainty: I have absolutely no idea. My goal is just to remind those of you who of depend exclusively on blogs for news, a little about the significance of the Looking Glass and Java 3D projects.

One way to explain Project Looking Glass is to take stock of the obvious. For some time now nearly all new PCs have included general purpose CPUs that can execute billions of instructions per second. Right next to the fire breathing CPU there's usually a separate graphics processor that can render 3D scenes of enormous complexity at frame rates well in excess of what you'll find at the local cinema. With all this power at our disposal, why are we viewing a desktop GUI that requires little more than an efficient implementation of an early 1980s BITBLT graphics library? Of the many possible answers to this question, the one that Looking Glass is intended to explore is this: we still don't know how to take all of that potential and turn it into a desktop that makes using a computer easier. It's time to start experimenting with the possibilities and Project Looking Glass is a software laboratory for doing just that.

Project Looking Glass is based on an extension to the X11 server that combines the contents of top level windows from conventional X11 clients and new Java 3D client application scene graphs into a unified scene graph that's composited and displayed on the screen. There's a new X11 window manager that demonstrates how one interact with a desktop metaphor that's more than just a stack of sheets of (opaque) paper. There are also some demo applications that give you an inkling of what it's like to deploy an application whose visual elements occupy 3-space. To begin your own exploration, watch for the project's open source announcement on javadesktop.org.

The other big open source announcement that I wanted to mention was Java 3D. Java 3D has seen much use in serious endeavors like engineering and medical science, and it's been used in loads of games and virtual reality applications. However the big question many developers gravitate towards, as they while away the moments waiting for their tiny espressos to brew, is this: would it be possible to use Java 3D to build a first-person-shooter view of the operating system and would we be allowed to remove files or kill processes by blasting at them with impossibly large weapons? Not surprisingly, the answer to that question is yes. As to the natural follow up question: will the processes and files fight back? We're still looking into that. One example of such an application, which I haven't tried, is the "Brutal File Manager". If you're aware of others, I'd like to hear about them.

You'll find the new Java 3D API open source project here: java3d.dev.java.net. It's a big software stack. The developers describe it like this:

The Java 3D API provides a set of object-oriented interfaces
that support a simple, high-level programming model you can
use to build, render, and control the behavior of 3D objects
and visual environments. With the Java 3D API, you can
incorporate high-quality, scalable, platform-independent 3D
graphics into applications and applets based on Java
technology.

Java 3D is an integral part of the Looking Glass Project. If you're planning to explore desktop 3D in depth (IOK, not all that clever, but hey - this is a blog) check it out now.



Teach the Children Well

Posted by hansmuller on November 03, 2003 at 08:23 AM | Permalink | Comments (13)

Last night my sons and some of their friends were visiting and one of the boys took me aside, said he had a question. He's 15 years old, very bright, and growing up in a world that's somewhat different then the one I remember. There are some similarities. There's a war on although fortunately there's no need for a teenager to worry about being drafted. Cars and girls seem to hold the same attraction as before however attitudes have changed. I hear this Good Charlotte (that's a band) lyric enough to be tired of it: "Girls don't like boys, girls like cars and money". So, desperately trying to channel Ward Cleaver, I braced myself for the inevitable question about the inexplicable. He said: "I have a question about Java".

Today's fifteen year old has lived with a mix of personal computers and networks since they were old enough to type ctrl-alt-delete. They've been schooled on desktop computers with mice and windows and GUIs and realistic 3D multiplayer first person shooters. Given so many rich ways to interact with computers, it's no surprise that few of them choose to learn how to write software. And yet, just like long ago, some of us do respond to that siren song, even if the most satisfying thing about the results is an obedient machine clack-clacking only-funny-to-a-child drivel on a teletype. I was faced with someone who'd had the patience to learn how to write Basic programs for a graphing calculator and who now had the desire to learn Java. He'd even bought a book on the subject that was tailor-made for teenagers, with advice about writing games and gags and lots of black and white pictures of silly programmers.

The book began with some simple instructions. Go to java.sun.com and download the latest J2SE SDK. This was no problem for our modern teenager and thanks to broadband, it didn't take very long either. According to the book, step two was to "add Java to your PATH". In your mind, imagine the sound of a car screeching to a halt and crashing into a brick wall.

First question: "what's a PATH"? I indulged in a brief description of command processing shells. This only led to obvious follow up questions which quickly forced me to confront the fact that, despite ten years of experience with computers, this teenager had never spent any time typing commands at the DOS shell. That's because he never needed to. Returning to the key question of how exactly to "add Java to your PATH" I was greatly relieved to find out that my student had already found a likely looking chat forum, asked about doing this, and within a few minutes recieved the proper incantations. Which was a good thing, since my memory of hacking the DOS PATH has me struggling to edit a long line of crytpic text through a small window in some kind of shell environment editor dialog mess. For the last N years I've been using Cygwin and bash and although that's more familiar to me, I'd hate to have to try and convince a teenager of its charms.

As fate would have it, the fun was only beginning. Our Java programming book began with the legendary "Hello World" example. Creating the text in WordPad was easy enough, but where to put the file? No, not in the C:\J2DSK Folder (what's Java doing there anyway?), and not at the top level in the "My Documents" folder. I advised creating a HelloWorld subfolder for the app. More confusion about getting the "Command Prompt" started in the correct working directory and then (finally) typing:

> javac helloworld
javac: invalid flag: helloworld

With hands waving I explain that javac isn't going to just guess that the file you're referring to is "HelloWorld.java". Software that can't be relied upon to DTRT isn't common in the teenage world of game consoles and web sites and chat clients; but we persevered. Sadly, it feels like climbing up a steep hill with a backpack. And the backpack just got heavier.

We return to the problem reinvigorated by the introduction of an actual shortcut - the arrow keys restore commands typed at the DOS prompt.

> javac helloworld.java
helloworld.java:4: package system does not exist
	system.out.println("Hello World\n");
              ^

Gack. You have to realize that our teenager is bright and resourceful and so while I'm contemplating the injustice of being forced to explain what's gone wrong, he's busily comparing the text in the book with the text he's entered. It all looks exactly the same and that's frustrating. As I launch into an explanation of case sensitivity in Java identifiers while trying to avoid divulging what "System.out" means he begins to glance furtively towards the XBox in the other room. His brother his playing a game that involves racing around a city at night in a vehicle packed with large caliber weapons. There are explosions. The backpack we're carrying is getting heavier.

Back we go to the task at hand. This time we're successful and I think I detect a hint of pride as we view the newborn .class file. The book explains the finale simply: type "java HelloWorld". He types:

> java Hellworld
java.lang.NoClassDefFoundError: Hellworld

I suppress the urge to weep. It's not clear if my explanation about the difference between filename command line arguments and command line arguments that represent Java identifiers does any good. At this point the machine gun fire from TV in the next room is sounding almost seductive and the fact that I've made a career out of software engineering has gone from a source of pride to embarrassment. Yes, we do learn navigate through this thicket of details and gotchas. The backpack is feeling like it's crammed full of plutonium.

> java HelloWorld
Hello World

In your mind, imagine the sound of a chorus of angels singing. As we stand atop the mountain, hurling adolescent variations of "Hello World" over the side, all seems well. Until I'm asked what the equivalent of the Basic command for generating a random integer between 1 and 10 is. The angels begin hacking and coughing. The singing ceases. I consider explaining what floating point numbers are, the rules for mixing types in arithmetic expressions, and what it means to cast an expression to an int. Then I consider playing games on the TV.

While we're blowing up cars people and buildings on the game console, I'm thinking about what this experience means. Growing the Java developer base is important. We can rely on classroom instruction for some of that growth, and the migration of experienced programmers for some more. When I was 14, a PDP-8, Basic, and a Teletype were enchanting despite the fact that learning how to program was strictly do-it-yourself. Today's teenage computer explorer has very different expectations about the process of learning and I don't think we're meeting them. Learning the basics of programming with Java has got to be easier.

Here are a few things I think we could do to make it easier for someone without much experience who's interested in an introduction to Java programming. I'd like to hear what other people think. The most obvious thing to do would be to provide an alternate Java download for students that came with an easy to use IDE, like BlueJ. I don't know of other IDEs or IDE plugins that are designed for the complete novice however I'm sure they're out there.

Learning by modifying small working programs seems like a good idea and it would probably help to defer trying to explain object oriented programming until the student was comfy with variables and expressions and so on - just within the main() method. Examples that incorporate some bundled classes for graphics and animation would probably be more intriguing than variations on computing Fibonacci numbers. Finally, trivializing deployment to the internet is an area that even professional developers could use a hand with. It would be great if the friendly IDE came with a button that uploaded whatever example the student was working on to a public internet site as an applet or a web started app. That way they could IM their friends and encourage them to try their creations and maybe convince them to experiment with building a little software of their own.



LinuxWorld Tradeshow Shows Desktop Java

Posted by hansmuller on September 03, 2003 at 07:45 AM | Permalink | Comments (1)

A few weeks ago I attended LinuxWorld up in San Francisco. I marched around the tradeshow and took notes about what I saw, notably the impressive collection of desktop Java applications on display. If I was a good blogger or even a disciplined one, I would have immediately collected my impressions and published them. Sadly I'm easily distracted and rarely disciplined and so my little collection of observations has been gathering dust. Just now I'm sitting on an airplane bound for San Jose and the person seated in front of me has graciously (and inexplicably) kept his seat upright, leaving enough room for my hulking laptop to open. So it's time to get this little item written.

HP has a new storage rack named HP StorageWorks NAS 8000 which comes with a Swing administration UI deployed as an applet. In addition to displaying and setting administration parameters it allows to bring up a performance monitor that graphically displays parameters like network traffic etc. The representative I talked with said the engineering team used Swing because they really wanted to do some "hardcore coding". I'm happy to report that they've produced a nice GUI however it's always troubling to hear this kind of work described as challenging. We need to find ways to make it easier.

I saw a bunch of nice looking Swing GUIs in the Veritas booth and also in Dell's booth. Dell was showing the Veritas Cluster Manager front-end. Most of the Veritas administration front-ends were Swing, some of them looked pretty slick.

Computer Associates had a nice Swing GUI for their "eTrust AntiVirus App". The CA representative on the floor showed me a similar and much older Motif GUI running on Solaris. I voted for using the new Java GUI on Solaris, I'll look for that next year.

Appro was one of the many companies showcasing a big dark intimidating rack of servers and storage. They've got a very good looking remote management GUI for their "BladeDome" (even the name sounds ominous) HPC product.

Novell was showing their Swing GUI for the "GroupWise" Personal Information Manager (PIM) front-end. Apparently they've got a native Win32 PIM and they use the Java version to reach the Mac/Linux/Solaris markets.

I talked with a very tired but very friendly and helpful representative from Arkeia about the very futuristic Java front-end they've built for their backup system. It looks more like a custom MP3 player than a backup admin console - definitely the most exotic admin console I've seen.

GenaWare is a small map visualization company. They've got Swing client called "GeoVisJ" that based on a custom vector graphics map renderer. The GUI isn't going to win any beauty contests but map data is always interesting, and they've got a lot of it.

I'm sure you'd like to see screenshots of some of these apps. We'll try and collect a nice set in an upcoming Swing Sightings column. Don't miss the current column (yes, this is a shameless plug), you'll find it here on the Swing Connection site at http://java.sun.com/products/jfc/tsc .

Selling Snakes with Huckster

Posted by hansmuller on August 04, 2003 at 08:35 AM | Permalink | Comments (2)

Disclaimer: I wrote most of this blog about a month ago. Before I finished, a combination of vacation and other distractions kept me from completing it. So finally, here it is.

At Sun Microsystems, we're all required to take vacation during the week of July 4th. I think it's more of an economic requirement than a patriotic one. Ofcourse some people take Independence Day pretty seriously, for example founding Fathers John Adams and Thomas Jefferson both managed to drop dead exactly fifty years later, right on the 4th. I'm not quite as inspired by the date however I am writing this outdoors on a beautiful Pennsylvania afternoon with four US flags fluttering within my line of sight over the top of the laptop. Pennsylvania weather is a big change from California's Bay Area, it's humid here. Sometimes it's unbearable however today it just makes the breeze more entertaining. A little bit like swimming without getting wet. Or cold.

The weather at the Castle Rock and Big Basin parks in the Santa Cruz mountains was different but just as nice. Earlier this week my older sons and I and some friends went backpacking from Castle Rock, through big Basin, and all the way out to the Ocean. The trail ends at Waddell Beach where the kite surfers zoom around above the surf like a cloud of giant butterflies. The trail itself is impressive, having been cut into the side of ridges covered with Coastal Redwoods and in other places Chaparral and rock formations that look like they were lifted from old Roger Dean album covers. The trail winds up and down, always opening up a new little vista, never boring.

In many places the trail is just a two foot wide shelf cut into a ridge. As you walk westward your right shoulder brushes up against the scalloped edge of the trail cut. Just past your left shoulder there's a good approximation of a cliff. Rattle snakes are common on the sunnier parts of the trail and on the second day we passed a baby that shook it's tiny rattle half heartedly and then slipped into the bushes. We felt very manly then, tramping past the venemous snake, even bending over for a closer look. That feeling passed later in the afternoon when we turned a corner into another sunny vista and nearly stepped on the baby's big mother. We didn't see the rattlesnake right away but we heard it angrily shaking its big maraca. The cliff on the left looked pretty dangerous at that point so the rattle snake headed to the right. Unfortunately for the snake, the trail's right shoulder was even steeper. The rattler strugged but couldn't wind it's way up, so it settled for a waist high defensive position at the base of a small tree growing out of the scalloped edge of the trail. Rattling for all it was worth the snake spring loaded its coils and pointed it's big triangular head directly at us. Left side cliff. Right side, angry rattle snake aimed directly at my shorts.

My friend Norm and I are software engineers. We were also the adult supervision for this trip, so we snapped into action and took some digital pictures of the snake. It seemed likely that someone would create a web site about us after the bodies were found and having a picture of the snake that did us in would make our epitaph more interesting. That taken care of, we tried to calcuate how far the snake could lunge and Norm decided that it was unlikely that it could hit a target perched on the far left edge of the trail. Since I wasn't carrying dinner, Norm suggested that I go first. I'd like to say that I strode fearlessly past the reptile. The truth is that if I'd had a tail, it would have been between my legs as I leapt past while the snake rattled.

If you're still reading this (and you're not Norm) then you're probably wondering where the technical content escaped to. I've been saving it and it's your reward for putting up with my travelogue.

The word "huckster" seems to have the same Dutch origins as "hawker" and both words are used to described peddlers whose pitch is mightier than their product. Like snake-oil salesmen (that's the best I can do for theme continuity). This year at JavaOne James Gosling created a simple presentation editor/player called Huckster and used it for his keynote presentation. He's also launched a Huckster open source project that you'll find on javadesktop.org in the projects section here. Huckster makes a number of simplifying assumptions that reduce the scope Huckster's design and implementation to the point where one hacker could carry off the first version without making a joke out of their day job. It probably doesn't hurt that the developer is James Gosling.

  • The only elements needed for a presentation are images and text. Users who need fancy charts and diagrams can always produce those in more specialized tools.
  • Fine control over slide layout is overrated. You can live without being able to insert a couple of pixels of padding between a slide's title and the first bullet and you certainly don't need to be able to control where all of the line breaks go.
  • A direct manipulation WYSIWYG style GUI isn't neccessary for entering the text for titles and bullet points. You're better off working with an outline editor flanked by a slide preview window.
  • Transitions are evil. I'm really sure about the thought behind this design constraint, however it's clearly stated in the docs. I'm guessing that during his formative years James was involved in some kind of bloody PowerPoint accident.

One novel Huckster feature that I haven't seen in any other presentation tool is that it dyanmically reduces the font-size for titles and bullet text. The more you type the smaller the fonts get. If you type for a long time (I tried this) the text gets really really small. I have yet to do a full one-hour presentation with Huckster however with small examples this seems like a very useful feature.

I have to admit that when I first tried Huckster on my Linux laptop I couldn't add images to the presentation - which pretty much defeated my objective of creating a slide with the picture of the great big rattlesnake. The problem was that Nautilus (the drag source) would only provide a file URL string. When I drag-and-dropped an image on Huckster it just inserted the file URL as text. So, hooray for open source, I changed Huckster so that if you drop a string that can be parsed as a URL and that produces an image, Huckster does the right thing. I also fixed some other minor problems and proudly sent them back to James to be incorporated in the next version.

Here's the snake presentation encoded as a huckster ".esl" file. It's kind of refreshing to see a simple plain text file format again.

A Big Snake
-Hans's Blog
-July/August 2003
-\I500:/export/home/hans/big-snake.jpg
Same Snake
-This time the image is used for the slide's background
-\I500b:/export/home/hans/big-snake.jpg
The End

And here's the same tiny presentation exported as HTML (just images really) so you can have a look.

Why Java is not Open Source: One Cowboy's Opinion

Posted by hansmuller on June 26, 2003 at 11:44 AM | Permalink | Comments (3)

How many pubs are there in Dublin? Parachute out of a plane over Dublin blindfolded. After you've landed, walk 10 paces in any direction without removing the blindfold. There's a 90% chance that you'll be within earshot of a publican, so order a pint. If the atmosphere doesn't suit you, just walk 10 more paces in any direction. You'll either be in another pub or the restroom. Either way, you'll know what to do.

My week at the GNOME Users and Developers Conference (GUADEC) concluded with a GNOME Advisory Board meeting. Bradley Kuhn from the Free Software Foundation (FSF) and I had the inevitable discussion about free software and Java. From my point of view, if you strip away the religious arguments and you avoid the legal swamp that surrounds the licenses that free software is bound to, what motivates the freedom fighters is a desire for control. It's a not a desire borne from megalomania, it comes from a more practical source - making software work. If you only work with free software, then when you encounter bugs or missing features you can fix them. You can change the code to suit yourself and you can redistribute it. I was lectured at some length about the counter example: if your Java application suffers from problems with the Java Runtime Environment (JRE), than you must work with Java licensee who provided the JRE to get a fix produced. You can redistribute the result. You must be patient.

It's interesting to think about what this difference means in terms of open source software (OSS). The fundamental dynamic with OSS is the tension between the community that controls the evolution of the software, and the possibility that a subset of that community might fork the code. The developer community doesn't want a fork because that would diminish or even eclipse their accomplishments as well as reducing the size of their workforce. On the other hand, evolving stable, working software requires a process that controls if and when contributions are incorporated. In small OSS projects this control might be vested in one or two hackers. In larger projects there's usually a hierarchy of reviewers and "committers" who are trusted to gatekeep the main code base. It's up to the gatekeepers to maintain the balance between the stability of the software and the stability of the community itself. If they fail to do so, the project will fade or fork.

The dynamics of OSS software are more unpredictable when many relatively autonomous OSS projects are combined into a large system, like GNOME or a complete desktop Linux distro. The tension that keeps the atomic projects together doesn't work as well at the molecular level. If OSS project B depends on OSS project A, the forces that ensure that A will continue to sustain B are social and sometimes commercial. Project A less likely to change in a way that would be incompatible with the goals of B if the projects have developers in common or community A views B's success as part of their own. Similarly, a common commercial interest can help maintain the synergy between the two projects. But what happens when the two communities aren't even aware of each other? Similarly, what happens when there's no social or commercial overlap between the two projects? Commercial projects are usually loathe to rely exclusively on synchronicity.

Like GNOME, Java is a large system created from independently developed parts. Java is not an OSS project for a variety of reasons (some historical), and one of them is the considerable importance of maintaining compatability across releases for all developers and all projects. There are three million (and growing) developers that depend on Java, and the Java platform is itself growing and evolving. It would not be possible to ensure that this growth and evolution was realized in Java implementations that were mutually compatible and backwards compatible with previous versions by relying on the bottom up guiding force of social and commerical relationships within the developer community. These forces work exceptionally well within an individual OSS project and they can be applied to systems based on integrating many such projects, however their efficacy diminishes as the size of the development community increases. Here's an example that illustrates the point.

Five cowboys are sleeping around a campfire. It's cold outside. The fire dies down and one of them wakes up and throws a few more logs on the fire. Temperature compatability is maintained and all the cowboys sleep happily. Three million cowboys live in a city served by a large hydoelectric plant. It's cold outside. One of them wakes up to find that his electric boot polisher has failed and, assuming that the power plant must be the source of his electrical problem, grabs a monkey wrench and heads for the power plant. While attempting to dismantle a high current distribution panel he's electrocuted and the short circuit knocks out power to the entire city. All of the cowboys catch cold.

I think that one of the primary reasons that Java is not an open source project is that given the size of the developer community, forks are unacceptable. In other words the millions of developers who build software on top of Java value its stability more than they value the right to get under the hood and fix it.

Sharing a Week With the GUADEC Generation

Posted by hansmuller on June 20, 2003 at 02:18 AM | Permalink | Comments (2)

I'm here at Trinity College for the 4th annual GNOME users and developers conference (GUADEC) in Dublin Ireland.

Dublin Ireland time is eight hours ahead of PST back in Silicon Valley however I've mostly overcome the jet lag. Except from 1-2 PM every day when I feel like a narcoleptic. It's 1:30 right now and it feels like my brain is draped with a big hot wet wool blanket.

That was as far as this blog got on Tuesday. After failing to find a way to make both eyes focus on the screen at the same time, I stumbled out of the computer room to find strong coffee.

The computer room was the conference's social hub. As rooms go it wasn't terribly impressive: a big windowless room filled with folding tables surrounded by chairs, plenty of outlets on the floor, and a broadband ethernet cable duct taped to the table in front of each chair. It's hard to explain how inviting your own little space at the internet trough can look after you've been offline for a few days. The computer room was a magnet for the folks attending the conference. It was jammed all day with GNOME developers who were yacking and hacking and enjoying the camaraderie. It was here that I discovered some things about the conference and the GNOME community:

  • They're friendly, they like to talk, and they really like to talk about the software. I'm shy and hopeless at making conversation however I found myself talking to all kinds of people about what they were building, what they planned to build, and (typically for me) about how Java might fit in.
  • There's no point in finishing your GUADEC presentation before arriving at the conference. That's something that can be taken care of in the hours before you're scheduled to perform. Preferably in the terminal room, where you can procrastinate further by talking to me.
  • Hacking on big systems that you're passionate about is fun, and both qualities are contagious.
  • There's a clear hierachy among the developers. There are high priests, there are groups of trusted lieutenants, and there is the rabble. As a member of the rabble, I appreciated the fact that ones relative position in the hierarchy didn't seem to have any effect on the hobnobbing. Everyone made time to talk with everyone else.

Last week I spent the entire week at JavaOne and had a great time of it. One consistent theme that JavaOne attendees have fed back to the conference committee is that they want more technical content in the sessions. They want to see source code. This week I was at the conference (GUADEC) where code was king. The technical sessions were filled with developers hacking away at their laptops while the speaker talked about code and in some cases actually wrote code while everyone watched. Raptly. In one session the speaker ran a new (JIT) compiler on a small app and everyone watched attentively for several minutes while the instructions the compiler generated scrolled by in blur on the screen.

These are my people.

One of the most memorable keynote presentations of the week was given by Alan Kay, who appeared via a video link from his home in California. The average age of the GNOME developers I met at GUADEC was probably mid 20s and I felt very old, although not as old as Alan Kay. Alan's presentation began with an inspiring review of projects he'd worked on (or witnessed) back in the 1960s, including some great video of those old apps in action.

Ivan Sutherland's early 1960s "SketchPad" drawing application, which featured the first use of multiple windows (SketchPad3), still looks great. Users draw directly on the screen with a stylus and the app recognizes crudely drawn simple shapes and redraws them as perfect rectangles or semi-circles or rectangular polygons. Alan pointed out that this was the first object oriented system - a user could create classes of graphic objects, editing the class changed existing instances.

There was also a 1966 video of Doug Engelbart using a combination mouse/keyboard system to navigate around a little information tree. Response time was excellent even though the app was running on a 1/2 MIP time sharing system with 192KBytes of memory. Engelbart's goal was (is): "augmenting the collective IQ of groups of people". Still seems like a worthwhile goal.

These projects and more like them were intended to inspire everyone to build new apps that were atleast as capable as the ones built 40 years ago. Ofcourse there was an implicit dig in the call to action - we've lost the ability to craft small responsive apps even though we're now working with hardware that has 1000 times the capacity of what our forefathers had to work with. In other words, why does it take so much more code and computer horsepower to build high performance interactive data visualization apps then it used to? There are a variety of tired responses to such questions, some cynical, others self deprecating. The one that's not trotted out very often is the punchline to an old Bill Gates joke - "that was the demo". Great demos are a combination of technology and theater that deliver a little shot of adrenaline to the viewers imagination. The 1960s era demos we saw were certainly masterpieces, however they were still only demos. The difficulty of turning the vision those demos inspired into apps suitable for everyday use by everyone should not be underestimated. Hollywood had us traveling to the moon in the movies 40 years before anyone set foot there.

Bulding practical useful systems that deliver on the implicit promises in great demos is hard and it's time consuming. The GNOME community has done as much for Linux desktop computing and I can say from personal experience that it works like a champ.

Intersperse Savage Raid

Posted by hansmuller on June 13, 2003 at 09:47 AM | Permalink | Comments (2)

I finally got a chance to wander around the JavaOne "Pavilion" trade show floor. If you trot out to the edges, you'll see that the Pavilion is flanked by huge arrays of tables covered by white table cloths and little isolated clots of laptops and sandwiches attended by glassy eyed hackers trying not to give in to jet lag. I like to start out at the edges because that's where the new companies are. In years gone by the edge was where the crazy ideas were, it was where the hackers who hadn't slept all week were, it was where the guys who wanted to get to the show floor interior started out.

This year felt a little different. The edges of the show floor seemed to fade into the sea of lunch tables a little more suddenly than in years gone by. Not to be denied the inspiring sight of some new Java desktop apps, I pulled on some mobile phone exhibit hip waders and headed back into the show floor interior. I only had an hour to check things out. I wasn't disappointed.

The Apple booth was impossible to miss with all the bright light glinting off the beautiful lexan cases and those gorgeous gigantic flat screen displays. There were big black racks of new Apple servers doing sentry duty at the booth's corners. The servers were looking very stylish with hip little rows of blue blinky lights. The lights were very very bright. In a pinch they could be used for Lasik.

Allen Denison, who's the Product Manager for OS X showed off a nice looking Swing app for adminstering RAID's called (this is pretty clever) "RAID Admin". There are some screenshots here. What's great about this Apple desktop app is that sys admins can also run it on other platforms, if they happen to be adminstering their systems from a lesser desktop.

Intersperse was showing a great looking JMX management console at their booth. A couple of months ago I ran into an engineer who claimed to be building a similar product and he told me that his JMX console was going to just target browsers. He thundered about HTML being "good enough" for building user interfaces as he scratched udpates to his todo list on a clay tablet. I would have loved to have shown him this product. Great looking Swing GUIs with lots of custom controls for displaying status and doing analysis in real time.

I also dropped by the VisiComp booth. VisiComp's "RetroVue" debugger was featured in a James Gosling JavaOne keynote a year or two ago. The debugger instruments class files so that all significant events, like method entry and exit, are timestamped and logged in a journal file. That done, you can debug backwards and forwards in time. In years gone by, the journal file for a big app might have been hopelessly large. Thanks to today's plentiful supply of big cheap disks, you can journal all you want. The RetroVue Swing GUI is looking better than ever however you'll want to get one of those really big Apple flat screen displays so that you can see everything at once.

Last stop before I had to dart out was the SavaJe booth. Last year SavaJe was showing iPAQ PDAs and other small devices running the complete J2SE stack. Web Started Swing apps like ThinkFree Office running on a device that you could toss to someone across a room! This year the SavaJe booth was inhabited by a herd of cell phones running more web started apps including email, chat, and a very impressive video player (Star Wars!). And you can make phone calls too. It's great to see how far mobile phone computing has come and the high res 16 bit color screen looked great. Inside these phones was an 300+ Mhz XScale CPU, 32-64M or RAM, and a SAN slot for a Flash card. Thanks to the market for high resolution cameras embedded in phones, we're looking at hand held devices with CPU, RAM, and even secondary storage capacity that's comparable to PCs from a few years ago. Run Anywhere.

Opening the Door to JavaDesktop.org

Posted by hansmuller on June 12, 2003 at 11:17 AM | Permalink | Comments (2)



If you've been traveling for a long time, opening the final door is an perspective changing experience that happens so fast that it's easy to miss. After driving and waiting and getting on the plane and then a bus and then renting a car and getting lost and getting directions and then finding the address (had trouble parking) and you knock and the door opens and the person on the other side says hello and welcome. Like you might have just walked over from next door.

The debut of JavaDesktop.org feels like that. It's been a long (I'm not going to insert "strange") trip between the early days of Desktop Java and finally having a focal point where we can all visit and share and complain and inspire. We've always been a big community, however sometimes it was hard to see it all at once because the work we do is very diverse and it's nicely distributed all over the world. It's great to have a place to visit and see it all. Which brings me to the point of this blog, which is bragging about all of the amazing Desktop Java applications that I've heard about.

An old friend of mine works nearby at the NASA/AMES facility in Mountain view and he's part of the crew building the software for Mars Exploration Rover (MER) mission that launched just yesterday. The scientists who'll be monitoring the Mars data will use a nice Swing application called Collaborative Information Portal (CIP) that provides access to all of the data, including stereo images, as well as project management tools for dealing with all of the schedules and tasks required for keeping the mission humming. Scientists will be able analayze the Mission data collaboratively using an amazing Swing desktop called "MERBoard". It's hosted on huge plasma touch screen displays and scientists at different locations can work together at reviewing and annotating and talking over the data. The folks at NASA told us about another desktop Java app that was developed for this mission down at JPL. It's called Science Activity Planner (SAP) and it's used to create the programs that are uploaded to the Mars Rovers each day. We haven't seen this one yet however the word "cool" came up repeatedly. As soon as I can figure out how to include pictures in this blog, I'll add a CIP screenshot or two and a few pictures of the MERBoard in action.

So it's great to finally arrive here at JavaDesktop.org. Where's the beer?



Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds