I was going through my software books and guides and ran across a blast from the past- Symantecs Visual Cafe Users Guide from 1996-7 era. This was one very well designed development tool that was clearly ahead of its time. Look at the screenshot below:
1 – Project Windows to keep track of all the files, objects, and code packages involved in a developing system;
2 – Visual drag and drop Window/Forms designer with active 2-way updates – visually change any property of a window/form component or widget and the underlying Java code changes – and also vice versa. Change the window/forms Java code in the editor and the design layout changes appropriately;
3 – Property list that actively changes when a component or object is selected in the visual designer. Again active 2-way connection, change a property and the component changes;
4 – A highly configurable 3-pane Class browser with i) Class tree pane, ii)color-coded Members pane with data sources if any, and iii)smart Source Editor (see below);
5 – A hierarchy editor which presents a basic UML Class diagram and allows simple but direct inheritance and attribute changes to classes – a precursor to tools like Together/J and other two-way UML-Java tools;
6 – A components library that allows users to add their own customized widgets and components not just for visual form design but also data integration and messaging purposes;
7 – Workspace view that allows a user to save and recall a layout of windows, panes, toolbars, designers and menus configured and customized by the user to maximize efficiency for the task at hand – be it design, coding, testing, debugging, etc. These workspaces allow a user to change working context with a single click. Workspaces are linked to general Visual Cafe working environment dialog which allows extensive customization of every aspect of a session – edit, compile, code generation, doc generation, testing and debugging, etc;
8 – Debug layout with 6 window panes:
a)Breakpoints pane allows setting and removing conditional or immediate breakpoints in any code;
b)Call Stack pane displays active methods and variables during debugging session;
c)Variables pane allows users to monitor and importantly change variables values during a debug session;
d)Watch pane allows for user defined Java expressions to be diplayed during debugging;
e)Threads pane allows users t follow, display and debug thread processes in a program;
f)Messages pane collects system and user triggered error/exception messages, logs, and reports;
The debugger is able to be used locally or remotely back to a server context/source file and while debugging browser based applets.
9 – A Source Editor pane that also is stacked with extra capabilities beyond the usual color-coded source, auto-indenting, brace and parens matching plus fancy formating/tidying source code:
a)Auto Syntax Checker which flags errors on the fly which can be turned off and on with simple keystroke combination;
b)Code Helper popup which helps user complete code references;
c)RAD setting that allows Code Helper and CodeGen Wizards to be called with single keystroke combination;
d)RAD CodeGen wizards (Bean Wizard, Insert Class Wizard, Interaction Wizard, Database Action Wizard plus Servlet Wizard) allow genning Code Connection between objects as well template-based code gneration plus database-linked code;
e)extensive user customizing of Source Editor settings including several Java, HTML, JavaDoc and other filetype specific properties for formating and checking the source as typed;
What Visual Cafe had 10 years ago, some Java IDEs are still working on delivering now. But there is no doubt the new Java IDEs have gone well beyond Visual Cafe:
– powerful set of refactoring capabilities to allow for massive class redesign
– code profiling and performance tuning built into IDE
– database and applications server resource panes for managing, configuring these critical resources
– support for mobile applications (J2ME) development with mobile emulators-on-workstation test and debug facilities
– support for J2EE enterprise development with SOA and Web Services wizards and remplates
– enhanced source code editing with immediate error flags, code folding, and faster Java hints
– complete CVS/Source Control Support integration coupled with team collaboration and messaging features
What Else is Missing from the Scripting Languages
First and foremost, none of the scripting languages have a development environ that comes close to matching the robust Java IDE development capabilities of Visual Cafe of ten years ago. Now some coding cowboys along with extreme programmers will insist that the source code is the only documentation, planning is a game, and programmers that use IDEs with collaboration tools or drag and drop visual form and report designers/code generators are wimps, amateurs, and perpetual newbies who dont know the basics of the underlying code.
I would counter given the pace of change in the software industry we are all likely to be newbies again about every 3 years + or- 1 year. Also the demand for agility and adaptiveness in programming means that specs drift, changing requirements, and perpetual code revision/refactoring based on testing telling us what we dont want – this is becoming a permanent feature of development. Otherwise development will be outsourced or SaaS-ed, Software as a Service-ed. The latter means that programmers become plumbers. They have more or less SaaS vendor-granted and strictly controlled access to the code base => be that configuration files, API-calls, and/or scripting “glue code”.
So the most we as programmers and developers can hope for is to become plumbers in the SaaS mode or “every programmer is a maintenance programmer” in the new feature incremental, adaptive, agile world. Okay a select few get the big bucks and get to be System Architects – that is like the old system analysts that “I-dont-do-programming” and “like Nature, I abhor testing because I am in a vacuum”. But actually System Architects have a thankless task. They have to fathom out solid risk assesments as new features are added or suddenly requirements change and multi-person updates are required or long duration transactions become critical to a system. It is the dreaded small change in process means big underlying system architectural change because now a subsystem has to support asynchronous operations or new concurrency control regimens. Architecting is hard because increasingly even process changes that result in massive changes to system specs are being accomodated.
The bottom line is that Visual Studio, Eclipse, NetBeans, Trolltech and other IDEs are popular because they allow developers to respond more adaptively to a broad range of shifting-development-sands requirements. They also are now able to allow a more complete development cycle to be supported – including the need to backtrack, reasses and redesign systems – then spell out the risks, costs and schedule changes to all involved in a collaborative fashion. Developers are more often producing incremental working versions while driving towards final full feature-set completion. The classic LAMP and new AJAX scripting tools are not even close to this capability:
PHP – Zend Studio, Nusphere are just stretching out in debug, and Component Bean-like/Wizard template areas;
Perl/Python – ActiveState and others provide robust editing and some debug but no 2-way visual design;
Other Missing Links
Fourth, Visual Cafe had a feature that allowed users to convert Applets to Apps or Apps to Applets (there are restrictions in converting to applets because of the security sandbox)with a few mouse clicks. Think of this as part of the Software Holy Grail – web to desktop app and back again in a few clicks. And with J2ME and mobile apps some vendors are arguing they can deliver the same portability to and between mobile phones and other embedded devices with appropriate-sized displays.
The fifth, and bottom line here is that Javas JVM has cross platform hardware and operating system reach like no other language.In fact if you match Java up with the 6As of RIA-Rich Internet Applications, Java is in the best postion to deliver these capabilities including online or offline operation. And Java does so with a VM engine that is at least 6-10 times faster than the scripting languages.