Simplicity Professional

By Christopher B. Wright

Before we talk about Simplicity Professional, I want to talk a bit about Visual Basic.

Visual Basic has become one of the more popular programming languages in business today not, as some might suspect, because a lot of people know the language, but because many more people don't have to. One of the selling points behind Microsoft's Visual Basic is that "any idiot can use it" (and, according to its detractors, any idiot does.)

I have heard horror stories about the bloated monstrosities that Visual Basic can produce in terms of applications - things that would be only a fourth of their size if a "real programmer" had been told to create a similar tool - but the other side of the coin is that non-programmers suddenly had a way to create little useful applications for their own purposes without having to go to a programmer to get it done.

It's not that clear-cut, of course. Visual Basic did have a learning curve, and in truth if you actually knew the language you'd be able to do a lot more with it. But Visual Basic's strength, and it is a strength regardless of what its detractors say, is that it makes programming applications a lot more accessible. A very useful tool when you need an application that does something specific and simply, and you don't want to pay a programmer $80 an hour to get it when you can do it yourself just as easily.

I mention Visual Basic because, in my opinion, Simplicity and Simplicity Professional have the potential to do for Java what Visual Basic did for Microsoft. Data Representations claims that you don't have to know how to program Java in order to create useful Java applications and applets, and they're absolutely right... once again, any idiot can use this program.

Of course, someone who knows how to program in the Java language will be able to do more with it than people who don't... however, Simplicity and Simplicity Professional allow you to essentially point-and-click your way through building an application without writing a single line of code.

Background
I was first introduced to Simplicity two Warpstock's ago, in Chicago. Carl Sayers, the man behind Simplicity, was giving a demonstration of the product, which I politely listened to, excused myself from, and ultimately forgot about.

Next year, in Atlanta, I saw the same presentation - but this time, I actually paid attention. Carl used Simplicity to create a Java-based text editor, without writing a single line of code. It had undo/redo features, copy, cut and paste features, the ability to open and save files, and the ability to print. He did this by using his mouse - no typing in lines of code that Simplicity didn't know how to handle. I was so impressed with this, I bought a copy so I could show it to my boss. I played with it a little bit, but got too distracted with other projects to really try and use it properly.

Now, Data Representations has released Simplicity Professional, which does everything Simplicity did and then some (it can also, among other things, interact with databases.) Simplicity was already a flexible Java development environment for people who need to create end-user applets and applications, and now it looks as though Data Representations plans on providing the same level of utility for server-side Java application development.

Installation
Simplicity and Simplicity Professional not only create Java programs, they are Java programs. This write-once, program anywhere philosophy means that any platform that supports Java can run it. This also means that this tool will not suddenly "go away" for specific platforms, as certain other tools that shall remain nameless may or may not have done recently. And, Simplicity's license is extremely flexible - one license covers every operating system you use. So if you run NT, OS/2, Linux, and Solaris, you can use the same Simplicity license to develop your java applications instead of buying one per platform.

Installing Simplicity requires that you have a supported version of Java on your machine -- for OS/2 users, it's a good idea to have at least Java 1.1.8 and all of its extras (RMI support, the Swing classes support) in order to use all of its features. Data Representations provides customized downloads for many of its platforms: for example, the OS/2 version has an install script that creates a WPS object that will launch Simplicity, the Windows version has something similar. The biggest problem for some platforms will be how to properly configure Java on your system (I still haven't figured out how to do properly configure IBM's JDK on my Linux partition.)

Use
Simplicity's UI is very complete, and a good example of exactly how far the Java environment has progressed since the days of Java 1.02. It has everything you'd expect it to have, and all of the windows behave the way application windows are supposed to behave.

When you start up Simplicity, you are greeted by a mini-wizard that allows you to open up an existing project, start a new project, or run the tutorial. I strongly suggest that people new to java run the tutorial before using Simplicity outright... it's very useful and will enable you to get a feel for all the options you have when using it to create an application.



If you decide to start a new project, you are asked to name it and point to its directory (you may specify a directory that doesn't exist and Simplicity will create it for you.) Then Simplicity will create a very basic program component, and open up all of the tools you'll use when working on your Java program or applet.



Right off the bat, I noticed something you'll need to keep in mind. I use Henk Kelders Fat32 IFS drivers so that I can access my windows 98 files. DO NOT try to save your java applets on a Fat32 formatted drive, Simplicity doesn't seem to handle it very well when you're in OS/2 (I suppose that running it from Windows 98 would produce more useful results. Hopefully.) Creating a project on an HPFS formatted partition worked flawlessly.

The two main areas you'll usually work from are the Object Palette, a tabbed toolbox containing all the various java parts you can include in your application, and the Simplicity Composer, a window that allows you to fine-tune the properties of an individual java part. Along with the Object Palette and the Simplicity Composer is the application itself, which will actually work as you build it -- buttons will do what they're supposed to do (after you've created them properly), you can open and close windows (once you've assigned those functions), so you can sort of test it while you're designing it. Initially, it starts out as an empty square pane, but as you develop your product it will turn into the user interface for your application.



Creating an application is as close as you can get to drag-and-drop without being a drag-and-drop environment. Adding a function to your program consists of three basic steps:

1. Choose the java object on the Object Palette that you want to add to your application.

2. Click on the area of the application where you want to add it.

3. Customize the settings on the Simplicity Composer window so that the object behaves the way you want it to.

Depending on what the object does, the settings will be different. For example, if you've chosen an object that defines how large an area is, you will be able to define the height and width of the area (in pixels). If you've chosen an object that is a button, you'll be able to place text on the button (and images in some situations), define the font size, typeface and format of that text, and assign actions to the button -- what happens when the mouse passes over it? What happens the mouse clicks on it?

All objects can be given a unique name, to make them more recognizable. "SaveButton" is usually easier to recognize than "Button1", and if you're dealing with more than one button in your project, naming them will make it easier for you to keep track of what they do. And if you need to go back to an object you've already worked on, you can choose it in the Simplicity Composer's drop-down list -- just select the object name and that object's settings will appear in the window.

It's relatively easy to use this to create a simple front-end for whatever application your building. It's only slightly more difficult to make that front end do something.

For example, let's say you've created a button and want it to do something. In most programs, you'd have to connect the button to an action by writing your own code for it. You don't have to do that in Simplicity - you can use the tools it provides you to define what you want it to do, and Simplicity will write the code for you.

None of the Java components in the Object Palette default to responding to mouse clicks (not even the buttons), but almost every object can be made to respond to its environment by clicking on the Listeners tab in the Simplicity Composer window and specifying what the component needs to react to. If something were going to happen as the mouse passed over the object (for example, the color of text would change from blue to green) then you could choose the "Listen for Mouse events" box, which would tell the object "when something related to the mouse pointer happens in your area, you're going to do something." You'd then click on the "Mouse" tab and choose the type of mouse motion from the drop down list. If you choose "mouseEntered" from the list, you're now telling the object "when the mouse enters your area (i.e., when the mouse moves on top of the text) you will do something."



With buttons, it's a little easier, because buttons are already created with a purpose in mind. You click on a button in order to make something happen, so in the case of our little example above you'd choose the "Listen for Action Events" box and then click on the newly created "Action" tab. When you choose the action events option with buttons, Simplicity assumes you're talking about clicking on it, you can skip over the extra step of defining what that action is.

At this point, however, all the object knows is that it's supposed to wait for a mouse click - it doesn't have any information on what to do when that happens. The next step is to give it something to do, which you can do by either coding the action you want it to take in the field in the Action tab (if you're familiar with the Java language) or you can allow the Code Sourcerer to generate the code for you.

The Code Sourcerer is quite probably the single most important and powerful feature in Simplicity that separates it from other Java development applications. Essentially, it allows you to specify exactly what you want something to do, getting more and more specific through a series of screens, and eventually Simplicity will generate that code for you.

The Code Sourcerer essentially asks you what you want to do by giving you a list of 13 categories of very general actions to choose from, then takes you to screens that make those general actions more and more specific, until finally it writes the code and inserts it in the proper place. If you want to change a property of an object from something to something else, you would choose that category on the initial screen, then you would choose what object you want to work with, then what property you want to change, then what you want to change it to, and so on. I will show you exactly how this works next month when I create a Java program from scratch with Simplicity Professional.

Once you've done all you want to do for the day, you can save your project to return to it later. Once you're finished with your project you can compile it and start using it.

Analysis
Because I am not a Java Developer, I can only give you a novice's analysis of this product -- that is, the opinion of someone who has very little programming experience (and no Java programming experience at all). All I can say is... wow. With Simplicity and Simplicity Professional it's possible for me to write a Java application, or an applet to place on a web site, with very little fuss and bother. I don't know that I'd try to create a large, complicated application with it, but it can certainly be used to create small-to-mid sized programs, and that's a lot more than I'd be able to create without it.

As a non-programmer, I enthusiastically endorse Simplicity. It's a liberating program to use... I feel that, on the one hand, the things I can do with it now, as a non-programmer, will allow me to be able to start using Java in some of my documentation projects, and java applets in some of my web design projects. I also feel that this will be a good tool to help me learn the language itself, since I can actually see the code I specify through the Code Sourcerer.

I suspect this will also be a fine program for programmes who don't want to have to go through the chore of recreating a programs user interface every time they start a new project. Those of you who are upset with IBM's decision to discontinue Visual Age Java for OS/2, take a look at Simplicity. An evaluation version is available on their site for download, and it can be run from any platform that supports java. One license, many platforms. It may in fact be the tool you're looking for.

Simon Gronlund has volunteered to look at the application from a Guru's perspective, and that report will probably be available in November if all goes well.

Next month I'll actually create an application with Simplicity, and show you in more detail how the Code Sourcerer works.

Simplicity for Java, $149 (US Dollars)

Simplicity Professional, $895 (US Dollars)

Demos of both can be downloaded from the Data Representations website. You can purchase the product from their online store, as well.