Inferno Plugin for IE - An OS In Your Browser
anothy writes: "Vita Nuova has released a preliminary version of their Inferno plug-in for Internet Explorer (other browsers and OSs pending). this embeds Inferno, a small OS built around good security, a virtual machine, and an extention of the Unix "everything is a file" model, right into your browser. The plugin itself is 719Kb (smaller than Flash or RealPlayer) and provides most general OS services, including I/O, text manipulation, floating point functions, and graphics, including a Tk (no, it's not Tcl/Tk) implementation. These are the exact same Dis files that run on native Inferno (on raw hardware) or emulated on various other OSs. They also provide additional info on the plugin, including a little info on writing Inferno applications. Inferno's originally from the same lab at Bell Labs that gave us Unix, C, and Plan 9." See our previous article.
think it's not really an OS, just a shell. Whoever said "OS" was simply slightly misguided
Inferno is an OS which can be gleaned by checking the Overview papers on Inferno, Limbo is the scripting/programming language for the inferno OS. The plugin merely allows you to run Limbo programs in a browser which is exactly what Java plugins enable one to do with applets.
Grabel's Law
Thanks to Moore's Law, there will be room for more for some time to come. Actually, you may be on to something there... Ever asked yourself what anyone would need the laterst GHz and TB monsters for when most of them are doing the same tasks with them that the hardware of 5 years ago, a tenth as powerful, was already adequate for? Well, here's your answers: layers upon layers of abstraction, emulation and embedding that do hardly anything useful and make the system all that much more complex and difficult to debug... creating more work for programmers and technical support people. And whoosh! you got yourself a "new economy" out of nothing!
The illegal we do immediately. The unconstitutional takes a little longer.
--Henry Kissinger
1. Everytime you hit backspace, it sends you back to the last page. I don't think I really want to train my fingers to forget what backspace does in a normal shell.
2. It looks like a good flash alternative except... The traditional flash developer uses flash because it has decent development tools that a graphic arts person can understand. Are these people going to drop everything to learn Tk?
3. Number 2 might not be a problem if it ran on Linux and was under an OSI certified license. At least the geeks who like programming, graphics, and Linux might use it. But NO, they targeted IE, and the license has some issues. Aren't the X fonts free?
My recommendations: 1. come out with a Linux version. 2. work out the license issues to the point where it is MPL / LGPL compatable so that it can be plugged into Mozilla. 3. Offer secured EiC as an alternative to that other funky language.
Shoot! If they followed my recommendations, it'd be Scrubbed C (I wrote that before I knew what a VM was. If I were to write that today, I would forget about preprocessing the language and propose a sandbox instead)
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
In college, we used to spy on the other lab using this sort of audio trick on some SunOS sparcstations. Until someone got pissed and pulled all the microphones.
rsh otherlab "/bin/catThanks to the "everything is a file" philosophy, it was amazingly simple to do. But the problems start to crop up. Security is workable (set the file permissions on /dev/audio to only read/write for the console user like Solaris later did). But if I wanted to change the sample rate, I had to go use a non-file interface.
I'm inclined to believe that you're talking out your ass, unless VMware has made some amazing leap that lets you run multiple layers of emulation without instructions being caught by the wrong layer... Could you show me where they announced this feature?
--
Obfuscated e-mail addresses won't stop sadistic 12-year-old ACs.
Win dain a lotica, en vai tu ri silota
My oh my aren't we in a bad mood today.. I did read the article but I was commenting on how a "os environment hosted in a browser" sounds exactly like the idea that Java has, with a sandbox etc.. You know how Sun wants you to think of it as a PLATFORM and not a language. The basic idea is the same.
Maybe you should lighten up a little. This is just Slashdot; a web site. It's not worth getting a heart attack over.
And why does your dis file need to be signed in order for you to do communication back to the originating server? Even the Java sandbox allows you this luxury.
We've already got the wheel, folks. Haven't you worked out what color to paint it yet?
I can write a config and script for plugger to run vmware from in inside Netscape/Mozilla/..., and boot in it from downloaded image for any OS that runs on x86. With all secuity and whatnot -- will I get a slashdot story for that?
Contrary to the popular belief, there indeed is no God.
When you get the plug-in you are essentially downloading the Inferno kernel. I know it's hard to understand in the Windows age, where the definition of "OS" for some reason now includes a media player, but it's certainly an OS. (I actually think the Widow Manager (WM) is evenincluded in the plug-in as well.) And incredibly small and portable one, which is great. Run the "shell" program, and look around. Inferno's real "power point" is that it can run practically anywhere, either native or emulated- and does a very efficient and good job at both. Plus, Limbo is a REALLY cool language. Forget talking into a mic and making the sound come out of your computer's speakers- with Limbo you just need a few lines of code to talk into a mic and make the sound come out of _another_ computer's speakers. Neat stuff- in fact if they'd let Inferno out of the secure no-networking box this plug-in puts it in, you could play with stuff like that.
Maybe it's just me but that sounds like a Java virtual machine, with the exception of the small size and the "everything is a file" of course. :)
With it you can mount the file server from Inferno and read and write to ODBC databases. The file server presents a name space that looks like this:
Each open of the `new' file results in a new conversation with the server. You can send management commands to the `ctl' file, SQL commands to the `cmd' file, read the format of results from the `format' file and the actual result data from the `data' file. You can manipulate the database through the namespace, from a Limbo program, or even from the shell like so:
mount -A tcp!localhost!6700 /n/remote
{
d=/n/remote/db/`{cat}
echo 'connect cellar' >$d/ctl
echo 'select name from wine' >$d/cmd
cat $d/data
}</n/remote/db/new
Through the namespace you can control the format of the returned results, control transactions, connect to new databases, execute commands, and of course read the results.
The server runs under Windows on a remote machine and connects to its local ODBC service. In common with all Inferno servers it then exports those services over a network (not just TCP/IP) to other Inferno systems using the Styx protocol.
Its easy to write servers for other databases, and indeed other kinds of service. One of the nice things about such servers is that they can be explored using common commands like: ls, cat, awk, pwd, cp, echo, acme and even perl, i.e. without specialised interfaces in each program.
I don't really understand half of what you're saying here. Some of it seems to switch meaning in midsentance. Rephrase the core of the post for me please?
I never got past the Apple ][ emulator in Java.
I bet Inferno doesn't have any games, either.
Damn you, AT&T, and your Unix heritage. MacOS X will never have any good games. You're not going to take away my web browser too!
---
pb Reply or e-mail; don't vaguely moderate.
pb Reply or e-mail; don't vaguely moderate.
the usual moaners saying "what's the point of that" bore me
.oO0Oo.
The point really is that you get the write once use anywhere philosophy. Ok so java has been there before but surely that fact doesn'e preclude someone else trying it out.
The plan9, Inferno system of distributed computing through namespace binding is the true gift of this project. Although I did notice some of the Styx functionality has been removed for security (Styx is the network).
You implement services by mounting your service as a file system. You can then execute all of your machines capabilities through echo & cat!!
"So what!" I here the unimaginative cry well you can bind services from remote computers and use their capabilities in exactly the same way.
want to play audio on MY computer
roughly
bind MyComputer\audio \hisaudio
cat music.pcm \hisaudio
and the audio plays out on my machine
You imagination should take you from there.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
Oh dearie me.
Yu Suzuki
Yu Suzuki
Deamcast. It's thinking.
It's very simple. They created the 578th "OS specialized for embedded applications" project, like every other software company without a sound business plan seems to be doing today. They want their project to get more exposure, excuse me, "mindshare". They figured "how much more mindshare can you get than with a plugin for the single most used application on the face of the planet?". And that's why we were blessed with this wonderful piece of ones and zeroes. A market penetration piggy back ride.
The illegal we do immediately. The unconstitutional takes a little longer.
--Henry Kissinger
You know, an assumption you have here really bothers me. Who is the "we" in the "do we need this"? Lots of different people need lots of different things. Even if you are speaking just as an advocate for a software distribution model, or an OS, or whatever cause- there isn't a distinct "we" that either needs this or doesn't. Of course, Im being harsher on you that I should be, since your explanations takes the sting out of the way the "issue" is phrased. But I'm a nasty guy.
Great, we get a new programming language. At least this one is optimized for parallel programming and process syncronization.
:)
One thing I am missing is support for their target devices, like the Palm
BTW: It is not Open Soruce, it is $300 for a source license.
What many folks may not realise is that Inferno was in fact written in answer to Java. Development started more than 6 years back when the first Netscape browsers were released with Java support. Java uses a stack based VM, Inferno used a register based VM.
I remember me and my friends being pretty excited about Inferno (we were doing our post graduation). We thought Java really sucked. At that time everything was touted up as a Java alternative, including Perl (someone wrote a sandbox for Perl and was quite vociferous about it).
Now six years later, I use the web with Java completely disabled and I really don't want a client side execution environment on my browser. Maybe javascript has it's uses (which was originally Livescript and Netscape changed it's name to hook on to the Java hype), but all these "execution environments" are simply browser bloat that I can live without.
That is not to say Inferno is useless. I still think it's great stuff, just that I see no point in having it as a browser plugin.
The point is not that it adds another character to the Java, ActiveX,etc. stable. The point is that it implements a really neat OS in yet another location, in this case allowing you to run any of the applications you've written or others have written for that OS- without having to download and install the whole thing. And to boot, it's not just "another"- it's really good.
Limbo is a truly elegant and wonderfully concieved language. It would be silly to start arguing right now whether it's better or worse than your favorite language- as I'm sure many people are prone to fall into. Who knows? It's just really neat.
It's not a supported feature, and in fact there is a check in VMWare to prevent you from booting vmware in a guest OS... As always, there are people that found a way around it "because they could". The early betas didn't have the check, but you could barely get VMWare installed in the guest, much less run it. It *is* amazing what one can do given the right tools, though...
There's certainly no reason to do such a thing, but I did see it running... The person who did it has since graduated from college (a couple years ago along with myself), so he no longer has the screenshots up on his campus-connected box. I'll see what I can do about getting him to show that, or have him send me the shots and I'll host them myself...
--
"It's tough to be bilingual when you get hit in the head."
if anyone ever read _A Deepness in the Sky_ by Vernor Vinge, that is exactly what happened. it was easier to kruft on to the existing computer systems than redesign them from scratch (some people tried, they ended up being just as bloated and kludgy) so they ended up having people known as programmer-archeologists, who looked at thousand-year-old code and figured out how to integrate it into their systems.
Did you mount a military-grade, variable-focus MASER on an unlicensed artificial intelligence?
IE is just the latest addition to the current set of Inferno platforms.
at the moment, it runs on:
ok, so that's not run everywhere, but we're doing our best :-). i've probably forgotten a few.
and you could take any inferno program and run it without change on any of the above platforms.(memory requirements permitting - keeping a 1MB web image is difficult on a device with only 512K of RAM!)
ports to Netscape, MacOS X, and others should be forthcoming. happy? :-)
oh yes, i forgot:
Didn't the Lucent guys try and do an N64 port at one point? I'm serious.
I don't know enough about IE plugin design but is it possible to capture the Backspace event?
Matt Thompson - Actuality - Insert product here.
1) Operating Systems provide services to applications.
2) Inferno is an OS
3) Limbo apps run on Inferno
If, indeed, Limbo apps need services from Inferno to run, and the Browser Plug-in can do this as well, then it would follow that....
4) The web browser plug-in is an OS for the same reasons that Inferno is.
Apparently those required services are called "Dis". I catch the reference, but it's been a while since I read up on Inferno.
In any case, it's definitely blurring the line for what an OS is and isn't. It's pretty far away from the hardware, in any case.
But wasn't that what people were predicting? Wasn't that why Microsoft was afraid of Netscape, and then Java? "The browser is the OS"?
That's right, folks. It's not just emacs anymore.
---
pb Reply or e-mail; don't vaguely moderate.
pb Reply or e-mail; don't vaguely moderate.
This looks to me as though it attempts to be a solution to a problem that hasn't really been defined yet. Java, Internet C, Inferno, whatever, they are all trying to address the same problem of portable code that is quick to write that can be embedded onto a user's desktop without an installation routine.
The concept is pretty powerful, but nobody has actually turned around and asked why we would want to do this. In fact, nobody has really defined what it is we want to do. Because of that, we end up with a mish-mash of solutions, none of which quite hit the spot. At the moment Java is taking the lead because it has the largest user and developer base out of all of them. But I'm sat here, still thinking to myself whatever happened to "push" technology that was being touted 4 or 5 years ago?
I can see the "point" to Inferno, as I can see the point to many projects like it, however I just don't think it will succeed. Looking at the page, it appears to be designed to handle embedded systems programs in a distributed manner. I'm kind of curious as to why I would want to do this in a browser. Nice idea, but as many people have pointed out, wrong application of the priniciple IMHO.
The plugin allows you to run applications written in a specific language(Limbo) for the Inferno OS on your browser but isn't an OS in your browser from what I can see.
depends what you want to call an OS! of course, from the host OS point of view, it's just another user-level program (or plug-in, for IE), but...
the environment provided to programs running inside Inferno is indistinguishable from the environment that they'd see if Inferno was running as a genuine OS on bare hardware (as it does, on several architectures, in as little as 512K of RAM).
moreover, at the OS source code level, the great majority of the code is identical from platform to platform (no ifdefs - this is genuinely portable C written by gurus of the language)
so, given that programs inside it can't tell the difference, i'd say there was a very strong case for saying it's an OS inside a browser. (even if the entire OS is booted just to run one program - boot time in 0.5 seconds, not too bad...)
No offense, but why is it that this sort of obvious joke is modded up the highest, while all the serious discussion is squished downwards.
Oh I get it. You get modded +3 automatically when you write something against MS.
- I don't care if they globalize against free speech. All my best free thoughts are done in my head.
Java itself offers several levels of tradeoff between functionality and size. To me, the most logical choice for a browser plugin wouldn't be an entirely new language and runtime, something that requires a lot of retraining and retooling, it would be a version of Personal Java, something that could easily fit into a few hundred kbytes.
Imagine...
you have just implemented a really cool application for your next generation (Inferno) web phone or PDA and you want your investors, or potential customers to have a look at it.
How do you go about it? Screen shots? PAH! Put it on your web site and let them play with the real thing. No recompilation is required. The same app runs on your phone, your pda, your fridge, Windows desktop, Linux desktop, Solaris desktop, and now - Internet browser!
That's pretty damn cool if you ask me.
I've done it!
There isn't much point until the networking security model is established - the current plug-in has networking disabled until the security model is mature enough to enable it.
We could enable networking right now, but that would be irresponsible.
I have a version of the plug-in with networking enabled which Charon runs in without a hitch. Pretty strange using one web browser inside another one!
You don't need to *worry* about it. You just need to keep your head in the game and understand that you need to take such things into account or you'll run into trouble (by hard coding such stuff). For this, there are the following fields in java.io.File:
static String pathSeparator
The system-dependent path-separator character, represented as a string for convenience.
static char pathSeparatorChar
The system-dependent path-separator character.
static String separator
The system-dependent default name-separator character, represented as a string for convenience.
static char separatorChar
The system-dependent default name-separator character.
Several issues arise here:
Do we need this?
Well why not? There are hundres of programs doing the same thing around the world. Why not for the internet? Yes, it sounds like the Java virtual machine and nobody is really sure if it adds something new. But the same can be said to hundreds of programs being released around the world.
The usage.
It will probably be used for something usefull. People will create powerful applications with it that will increase our experience on the internet. I am sure of it. I just wonder when a program similar to ICQ will be released.
--- Anyway, here's Aniway!
Ok. i'm not disagreeing with you there
i'll bet you most java programs won't cope properly when the path element separator is any possible character. (i remember a system where '.' was the path separator.
But that is a problem with the program as written, not with the interpreter. Say I had a file called blue/beard.txt (note: not a file called beard.txt in the directory blue). How do I ask Infernal to open it for me? I admit this is a specious argument but it could happen.
in the inferno way, all you have to do is define a two-way mapping between file names in the host system and file names seen by programs inside inferno. as inferno uses Unicode throughout, you've got enough characters to play with.
Except as I say, if / is a valid filename character, then you have to mess around with escape characters or map some other character to it (which could be a pain if the / is meaningful
that's rubbish, i'm afraid. in C, everything is transparent. the path separator is transparent, the endianness of the machine is transparent, in fact almost everything is transparent.
Dare you assume that I don't need to know the endianness of the machine? A lot of what I do is getting systems to interoperate. Say I have a program, compiled for two different machines. It saves its data in the endianness of the host machine (just does a memory dump or such). Now I want to write a (binary) portable program to run on both machines to interpret these data files. Without knowing the endianness of the machine, I'm stuffed.
it's possible to write portable programs in ANSI C, if you try hard, but that doesn't mean that C is a particularly portable language.
For what it is, it doesn't do too bad. Besides, I wasn't saying "If you have transparentness, you have a wonderfully portable language", I was saying that it is an important factor.
it's not handy for portability, it's handy for porting. programs written under c++ on winnt won't be any more or less portable than programs written under other c++ platforms.
I meant source code portability, not binary
in inferno, all programs are portable, even if they're badly written.
Whether they'll work correctly or not is another matter. Is it not possible to make incorrect assumptions about the virtual hardware (such as whether there is a graphics interface available or not) or is the virtual hardware interface strictly defined?
Note that I'm not trying to dis Inferno overall, I'm just not sure that the Inferno method of path handling is "correct". Heck, I'd even say that assuming a traversable directory tree is suspect (What a program should really call is system.UserFileInterface and let the underlying system handle it).
Rich
An OS.
A browser in an OS.
An OS in a browser in an OS.
A browser in an OS in a browser in an OS.
An OS in a browser in an OS in a browser in an OS.
How many recursion before we run out of memory and CPU cycles?
Just wondering.
eight megs and continuously swapping.
Bill Stewart
New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
What would happen if we told it that it was running inside a web browser?
Would it go insane with the knowledge that it's just a computer simulation on a computer simulation of a computer? Would it lose all compassion and kill a bunch of processes just for the fun of it, knowing that nothing was "real?"
> How do you go about it?
With a normal, standard win32 inferno emulator (similar to appletviever). This emulator would execute '.whatever' files, which could be downloaded from the web site in a single click. For the use you describe, having a web browser plugin in is (IMHO) pretty weak.
But sure, it is cool. Strangely, it make more sense as a mozilla-plugin, as mozilla appliances will probably appear in a not so far future...
Cheers,
--fred
1 reply beneath your current threshold.
Well, I've seen VMWare run from within itself - e.g. Linux running in VMWare on NT on VMWare on Linux... as well as NT on NT on NT... theoretically, if you have enough memory and drive space, you could keep doing this.
I've yet to see anything as complicated as VMWare run on VPC...
--
"It's tough to be bilingual when you get hit in the head."
it isn't a horrible mistake. it's an extremely well informed design decision.
There's nothing "universal" about a one-dimensional stream of 8 bit characters
no? apart from the fact that all computer data can be represented as bits... that sounds fairly universal to me!
representing resources as files provides an extremely useful abstraction layer and hierarchical naming scheme. in the inferno/plan9 scheme, it also means that resources can be transparently exported through the network (a network being anything that provides a bidirectional stream of bits); no application knowledge or intervention is required.
it means that some simple tools become useful for an incredible range of tasks. compare to CORBA or Java for example, where you need a specialised piece of code for everything, giving you more bugs, less maintainability and lower productivity.
BTW, neither plan 9 or inferno have ioctl, one of unix's nastiest system calls.
hmm, Inferno...so is this telling IE users to go to hell? ;)
OK, so I could run Inferno in IE in Windows in VPC in my Mac?
But wait, what about OS X? Then I could run Inferno in IE in Windows in VPC in the Classic environment in my Mac.
I wonder if any of the PC emulators could handle VPC itself. Then you could run Inferno in IE in Windows in Mac in Windows in Mac in Windows in Mac in Windows...
After reading the information on the plugin, I fail to see how this is an OS in a browser.
The plugin allows you to run applications written in a specific language(Limbo) for the Inferno OS on your browser but isn't an OS in your browser from what I can see.
This is more akin to being able to run Java applets in your browser via the Java Virtual Machine than any OS in the browser crap.
From the Inferno plugin page
The Inferno Internet Explorer plug-in allows a Limbo program to run inside a web page when displayed by Microsoft Internet Explorer 4 or 5. The plug-in executes Dis within a sandbox in the Inferno Dis virtual machine which provides the execution environment for all programs running under the Inferno Operating System
Grabel's Law
the system dependent part of the inferno kernel (devfs.c) could map all slashes that it saw when reading the filesystem to unicode character 2215 (division slash) or 2044 (division slash) or even 2298 (circled division slash) if you wanted the distinction to be crystal clear. the translation would work the other way when filenames were presented to the kernel by inferno programs.
in this way, the whole thing works ok. of course, it's not entirely perfect if the user wants to be able to type in those pathnames, (the name isn't exactly what they would have expected) but using the standard graphical file browser, everything would work just fine.
the goal of Inferno is to have programs that genuinely run the same in any environment, not to have programs that are kind of chameleon-like, adopting some of the traits of the host environment. this decision is arguable, but it is the only way to get true write once, run anywhere software. you don't true portability? you know where to find Java.
Dare you assume that I don't need to know the endianness of the machine? A lot of what I do is getting systems to interoperate. Say I have a program, compiled for two different machines. It saves its data in the endianness of the host machine (just does a memory dump or such). Now I want to write a (binary) portable program to run on both machines to interpret these data files. Without knowing the endianness of the machine, I'm stuffed.
that's not true.
without knowing the endianness of the data file, you're stuffed. this is a distributed system, remember. filesystems, data, network interfaces, and devices can all be imported an exported completely transparently across machine boundaries. it sounds like you're still living in the old world, where the data on the file system you're accessing is guaranteed to be on the same machine. that's just not true any more (and hasn't been for at least a decade, if truth be told).
under Inferno, applications are completely unaware of where the files that they're accessing have come from. (and don't forget that device access is also through the "file" namespace). the file i'm accessing might go straight to the local hard disk, or it might have been imported from a mounted connection obtained by using an imported network interface, connected over a USB link to some machine over an ATM link running a Limbo program that's exporting the file.
the resource deployment can be as simple or as complex as you like, but the applications themselves are blissfully unaware of what might be happening behind the scenes.
any binary data file worth its salt should either keep the data in a predefined endianness, or declare the endianness in the header. that way, someone on a sparc box will still be able to interpret the data file that you email them from a linux x86 box.
Whether they'll work correctly or not is another matter. Is it not possible to make incorrect assumptions about the virtual hardware (such as whether there is a graphics interface available or not) or is the virtual hardware interface strictly defined?
all the hardware device interfaces reside in the namespace, so it's easy to probe to see whether a given device has been provided or not. an incorrect assumption will generate only a "file not found" error.
if the hardware is found, it will act according to its specifications - device control is all through the file interface. low bandwidth data is generally encoded in that universal, endian-independent format: text.
so, for instance, the interface to a tv device contains two files /dev/tv and /dev/tvctl. i can execute the shell command:
echo window 20 20 300 300 > /dev/tvctl
to set the currently displayed tv image rectangle. a captured tv image can be read in a standard image file format with:
cp /dev/tv /tmp/image.pic
it's as simple as that. this interface means that it's possible to (for instance) write a user-level program to simulate a device for which i haven't got the hardware, or to use the namespace access protocol, Styx, to import or export the device across the network securely.
Note that I'm not trying to dis Inferno overall, I'm just not sure that the Inferno method of path handling is "correct". Heck, I'd even say that assuming a traversable directory tree is suspect (What a program should really call is system.UserFileInterface and let the underlying system handle it).
if the underlying system doesn't provide a hierarchical filesystem, that's not a problem. the person porting to that system needs to make a decision how to map that filesystem into the inferno model. the "files" that are accessed under inferno aren't really "files" as most people think of them; it might be helpful to think of them as "hierarchical resources" which are accessed in exactly the same way as files.
a "file" under inferno requires no physical resources; it is merely an interface to some underlying software, whether that's a device driver, interpreting writes as commands, or a disk filesystem, storing the data in each write to disk, as you'd expect of a normal file.
you could also think of the inferno namespace as a kind of hierarchical object space, in which each file provides a common set of methods (open, read, write, etc) which can be interpreted as appropriate for the object. looked at that way, directory reading (inspecting metadata) becomes a kind of "reflection", exposing capabilities of the system to an inquisitive program, which can then use them as appropriate.
for instance i could write a little shell script:
if {ftest -f /dev/tv} { /dev/tvctl /dev/tvctl
echo channel 3 >
echo window 0 0 40 40 >
}
this enquires to see if there is a tv device available, and if so sets a particular channel and creates a small window for it at the top left of the screen. all without using any commands written specifically for the device.
that's true power.
Heck, it's just a matter of abstraction. If you want to be able to use / then subclass the File object or something. And you know, there may be a filesystem where / is a valid part of a filename, then where is your Inferno? The only safe way for platform portability is to have everything transparent.
Interestingly, using c++ on winnt, you can use either the '/' or '\' as a path separator which is quite handy for portability.
Rich
No, I said that you need to take your head out of your ass and actually think for a minute. And you don't need to go:
path = pathSeparator + "usr" + pathSeparator + "me" + pathSeparator + "myfile";
path = "/usr/me/myfile";
path = clPath(path);
You need to actually THINK. I know it can be hard, but try. You don't need to write "pathSeparator" 100 times and bang your head into the wall crying about how hard it is and how you have to worry about various platforms being a little different. You can also extend various java.io classes so that they will do the path separator conversion automatically. It would probably take about an hour to create a package like that if you really had a big problem with this.. Of course, it's idiotic to do something like: path = "/usr/me/myfile"; in the first place. A much better way is to define a base path (or several), which is read from a config file and then you just add file names to that base path. You don't even need to THINK about path's in your app.
when I can use it to connect to a database and display the results. Until then it is just eye candy.
(+1 Funny) only if I laugh out loud.