If you've heard anything at all about hot, emerging technologies shaping the future of the Internet, you've heard about Java, a platform-independent programming language developed by Sun Microsystems. Java has been licensed by everyone from Netscape to Microsoft for use in their Internet products, and offers the possibility of smart, distributed "applets" that can be run on virtually any platform.
One reason Java is such a hot commodity is that it is independent of platforms and operating systems. In theory, the same Java applet will run unchanged on a Macintosh, a Windows machine, a Unix box, or almost any other platform. Java accomplishes this trick by being written and compiled to a rather sophisticated Virtual Machine - essentially a description of a single, generic computer. Anyone wanting to run Java applets must provide an environment that behaves like that Virtual Machine. In a sense, computers running Java applets are providing an emulation layer in much the same way SoftWindows lets a Macintosh run Windows applications, with the crucial difference that Java was actually designed with this in mind.
The second problem is that Java is a sophisticated, object-oriented programming language with roots in Unix and C++. Java is not friendly to the average user. Although Natural Intelligence has just released a Java development environment for the Macintosh (and both Metrowerks and Symantec have announced plans to produce Java tools for the Mac), there's no way for the average Mac user to take advantage of this technology. In a sense, an Internet user getting excited about Java is like a dancer getting exciting about a communications satellite. Sure, the satellite might let the dancer receive an important phone call, or watch a concert halfway around the world. But the dancer isn't interested in the satellite; the dancer's interested in things the satellite makes possible. Similarly, Internet users aren't going to be any more interested in Java than they are in C++, but they might be interested in things Java can make possible.
The third problem is that Java is not a Macintosh technology. Mac users like their computers because of the things that distinguish them from other systems. Java supports only its Virtual Machine, which means that distinctive Macintosh technologies like PlainTalk, Speech Recognition, QuickDraw GX, and countless others will not be supported by Java directly. If we want to use these Macintosh technologies over the Internet, we'll have to look elsewhere.
Fortunately, there are places to look. Macintosh developers haven't been sitting on their hands watching Java go by - they're producing solutions that both take advantage of distinctive Macintosh technologies and help make the possibilities of the Internet more accessible to Macintosh users.
MacBird -- In May of 1995, Dave Winer made UserLand Frontier a free product, focussing on the Internet and the Web community. (See TidBITS-279 and TidBITS-301.) Frontier is a sophisticated and robust OSA-compliant Macintosh scripting system; since its public release, Frontier has become a standard for scripting CGI applications on Mac Web servers.
One common criticism of Frontier has been its lack of integrated interface tools. Unlike HyperCard, in which users create and manipulate fields and buttons onscreen, Frontier provides almost no interface tools save the ability to create and share menus with some Frontier-savvy applications. Frontier let you do powerful things, but it was mostly faceless.
Around the beginning of the year, however, Dave Winer made available the first test release of MacBird, a script-based interface designer targeted at the Web community. At this time, MacBird relies on Frontier and requires a working knowledge of UserTalk scripting to be useful. (There's also virtually no documentation; remember this is a test release.) However, MacBird is interesting as a proof-of-concept and very likely points down one road of Macintosh scripting on the Internet.
MacBird itself serves two functions. It is used to create and design "cards," which are onscreen windows holding buttons, fields, graphics, and other objects. These objects can have scripts associated with them, so pushing a button can trigger anything that could be carried out by a script. Cards are saved as individual documents, and basic cards are quite small, usually less than 10K.
MacBird also serves as a helper application that works with a Web browser. When you click on a MacBird card on a Web site somewhere, it's downloaded and opened by MacBird, giving you access to the controls and interface in the card. The possibilities are wide-ranging: two of Dave's example cards are a four-function calculator (the obligatory scripting demo on the Internet, it seems), and a card that takes your order for Chinese food and sends it off via Eudora. A more humorous example that quickly appeared after MacBird's release is a random Zen koan generator from Brent Simmons <email@example.com>, but Finger clients and Web page tools are quickly beginning to appear as well. Brent has kindly set up a temporary server to store MacBird cards as well as a brief guide to authoring for MacBird; if you're at all interested, this is a mandatory site.
Right now MacBird is only valuable to experienced Frontier scripters, and most discussion is taking place on the Frontier-Talk mailing list. But MacBird is literally a brand new tool with the potential to bring Macintosh-specific scripting technologies to life on the Internet in a compelling way. As of this writing, I don't think anyone knows whether MacBird will be a freeware or shareware product, a commercial endeavor, or something else entirely.
Marionet -- If Java is for hard-core developers and MacBird is only for Frontier aficionados, what's out there for the rest of us? One answer is Marionet, a new Internet protocol tool from Allegiant Technologies, the same folks that make SuperCard. A public beta of Marionet that expires on 31-Jan-96 is available from Allegiant's Web site; the package includes the Marionet application and materials, plus preliminary documentation.
Marionet is a faceless background application that works as an intermediary between the Internet and dedicated applications on the client machine, such as a SuperCard project, a HyperCard stack, or a Director presentation. Via Marionet, these applications can gain access to Internet services, integrating them directly into the application in whatever manner seems appropriate. Using Marionet, it should be possible to write a Web browser or newsreader in HyperCard, a custom email client, a mailing list manager, a set of Web authoring tools, or something else entirely. Marionet allows authors to combine direct Internet services with the interface and multimedia capabilities of authoring environments, without having to learn C or Toolbox-level Macintosh programming.
Marionet supports a number of protocols, including HTTP, FTP, SMTP, NNTP, DNS, and Gopher searches, in addition to its own custom "chat" protocol which lets authors to create real-time collaborative applications via the Internet. Marionet can handle asynchronous connections (so an application could upload files and get new mail at the same time), and also allows synchronous connections for finicky or specialized operations. Marionet can serve a number of applications at the same time, so a HyperCard stack could get news postings while an AppleScript resolved a list of IP numbers into real site names. One of Marionet's strengths is the comparative ease of setting up sessions, handling data returned, and using that information directly within the client application. There's not much obfuscating syntax to deal with, and Marionet allows scripts to be simple yet surprisingly flexible.
Marionet's potential is undeniable, but there are potential rough spots. Marionet's AppleScript support is still in development and shouldn't be considered final. Applications such as FileMaker Pro or Excel that would have to rely on AppleScript to communicate with Marionet could be in for some surprises when the final version becomes available. Also, though Allegiant supplies an XCMD for applications like HyperCard and Director to interface with Marionet, Marionet is clearly designed with SuperCard in mind. The Marionet XCMD takes advantage of specific aspects of the SuperTalk scripting language that aren't available in other applications, forcing them to rely on global variables and receive responses via an Apple event. Though these mechanisms are certainly workable, they are rather awkward and make users of other authoring applications feel as if they're being treated like second class citizens. (Admittedly, this is Marionet's first public beta - it's entirely possible this will change in future releases.)
Also, Allegiant doesn't have a strong background in the Internet world. (At last year's Macworld Expo in San Francisco, Allegiant reps were consistently baffled at the concept of an online publication like TidBITS.) To their credit, they have set up a mailing list to discuss Marionet and now have a substantial online presence, but one wonders how responsive they will be to the Macintosh Internet community. It seems likely Allegiant will position Marionet as a developers' tool: introductory pricing of the final release is expected to be around $100, but the final list price for Marionet will probably be significantly higher, putting it out of reach of many online enthusiasts. I hope Allegiant instead chooses to make Marionet an inexpensive, accessible product, with a functional demonstration version available freely online. Even with some drawbacks, a tool like Marionet could earn a significant following among the Macintosh community if it were inexpensive and widely available.
Something's Brewing -- Even if the much-touted Java isn't accessible to typical Macintosh users (or typical Internet users, for that matter), products are beginning to appear that have lower entry thresholds and that allow users to exploit specific Mac technologies. Admittedly, setting up custom Internet applications is still more complicated than printingt labels from a word processor, but enough new ideas and products are appearing that I might not miss Java... if I had it.