XWT: The Universal Client 88
adam_megacz writes "XWT is a GPLed 'universal client' --
an end run around the current state of client side OS lock-in. It
lets you write applications that run on a server yet display their
user interface on any client machine. Unlike VNC and X11, all UI operations are performed on the client, so
it doesn't suffer from lag or freeze-ups when you lose your network
connection. It also doesn't require a you to
download/install/configure anything since the client is delivered as a
Java Applet or ActiveX control (Linux native client also
available). There are some cool demos on the site, including
an email
client and a widget
sampler."
Problems (Score:3, Interesting)
Their maximize button under the "Windowing" tab in the widget demo doesn't work right under IceWM, or any X wm for that matter because X doesn't have a notion of maximize.
Furthermore I found two places on the fonts tab where widgets overrun: the "font name" over runs the frame and the textbox, and "Sample" over runs bold.
Re:Problems (Score:2, Insightful)
Re:Problems (Score:1)
Because the project is being discussed here and people should know the ins and outs before having to invest time and effort into the project to find out these things on their own.
Ins: XML, open source, Cross-platform
Outs: UI not tight yet, is https supported(?), small project at the core...
Worth a look? You bet. Are there problems? Sure. Is it evil to discuss the problems in public? Uh...
Re:Problems (Score:1)
UI not tight yet
Hrm, I'm not aware of any major issues with the UI; if you find any, could you please log bugs for them so that I can fix them? Thanks!
is https supported
Yes, HTTPS is fully supported, including certificate validation, etc.
Hey James, I get the impression from your vague and occasionally inaccurate criticisms that you have an axe to grind or don't like me or something. I'm sorry for whatever I might have done to piss you off.
Re:Problems (Score:1)
Funny you'd make it personal, because I didn't. It's funny because one of my concerns with the project is how closely tied to you personally it is! Not because of you -- this isn't personal -- but just that it needs to grow a bit beyond a critical man.
The vitrol in my post was directed at the a-hole who asked "why discuss problems here instead of submitting bug reports". As if no one is allowed to voice experiences with tools in public...
Re:Problems (Score:1)
Research into Open Source development patterns has revealed most projects have a very small number of "critical" contributors. This doesn't bother me in the least. If a project is worthwhile, it will survive the loss of any individual. If it isn't, it won't. Stuff survives on it's own merits. That's healthy.
Re:Problems (Score:1)
Do I use other Open Source software? Sure, but not in critical roles. Will I keep an eye on XWT--you bet. XWT is what I want to use. When it's ready.
Re:Problems (Score:1)
Re:Problems (Score:2)
Look dear, you are a very intelligent and bright individual (I looked at your resume when
the story was first post) so there is no need to get emotional and ingage in flame wars. That
is for kids, OK?
I also think you are cute, and no, I am not gay, I am just telling you that just incase you
are a nerd and you think chicks wont like you, etc, etc.
Posting anonymously to presserve karma
Re:Problems (Score:1)
Althought I don't like the license, Sash is a mature platform for application development today-->as long as that platform is Windows, granted.
I really wanted to use XWT. But real-world end users would not be able to handle the UI glitches. Examples...from memory...the tree elements: when selecting a sub element, the parent element is also highlit (highlightened? highligthted?) and the highlight does not easily go away...painful. If I showed this to a client they'd freak.
I'll keep looking at it every once in a while, but it needs more than one developer working on its core. Oh, and the outages I experienced on the site during the end of May, beginning of June were in NO WAY an encouragement. When the front page links all led no where I thought perhaps the project was done. Of course, it's a small project and that may need to change before it will be truly useable.
Re:Problems (Score:1)
Many problems with the UI elements -- and these are fundamental problems that preclude me from considering the platform, currently, for development work.
Care to email [mailto] or submit [xwt.org] a bug report? Thanks!
Examples...from memory...the tree elements: when selecting a sub element, the parent element is also highlit (highlightened? highligthted?) and the highlight does not easily go away...painful.
This has been fixed.
I experienced on the site during the end of May, beginning of June were in NO WAY an encouragement.
Hrm, nobody else has reported such outages. Perhaps something is wrong with your upstream. Xwt.org is now hosted on a three-node failover cluster with machines on both coasts (US).
Grid and Tree Widgets (Score:2)
IBM's proposed competitor to swing (I forgot the name) decided to use navite OS wigdets if available (such as Window's tree browser DLL), or emulate them of not.
This may reduce such problems. Besides, 90% of all users use Windows anyhow. Java Swing's goofy behavior on Windows is a top complaint of Java. The IBM-backed version should be smoother, at least on Windows.
BTW, does Windows offer a native Grid DLL? All the Java grids I try suck eggs.
Re:Grid and Tree Widgets (Score:1)
Well, there's MSFlexGrid, but.... heh.... you don't want to use it :-)
Actually, it could well be an Office widget, not a Windows widget, but I'm not digging around on microsoft.com to find out. Last time I did that I came out in a rash and lay twitching in bed for two weeks.
Re:Grid and Tree Widgets (Score:1)
- Jalil
Re:Grid and Tree Widgets (Score:1)
You can find out more here. [eclipse.org] It's about halfway down the page.
-SS
I propose a contest (Score:2)
Let's see who can write the simplest GUI browser using languages like Python, Tcl, Perl, etc.
If it is simple enough, then we can fix bugs on our own, or at least let OSS friends help.
To acheive such, one may have to keep the (server) protocol fairly close to the native API's used in those languages.
Re:Problems (Score:2)
However they should write the program to detect if this is supported, and if not they can set the window size to the screen dimensions, which will work on older window managers.
Re:Problems (Score:1)
Security warnings? (Score:3, Interesting)
Does this mean the applet isn't running in its own sandbox, since I have to confirm starting it? A friend of mine recieved a security zone rejection for the ActiveX when trying to load the demo in MS IE.
Sounds scary. Course, the major web browsers fashion the simple SSL warning dialog to scare the bejezus out of any vistor to a page that isn't signed by verisign, so this is probably nothing as well. Can someone with knowledge on this part of Java confirm?
Re:Security warnings? (Score:2, Informative)
Re:Security warnings? (Score:1)
Crap! You mean Java plugin has builtin companies it will run any code from with full user level access? Can I disable this "helpful feature"?
The dialog has no mention of the applet running with more privledges then other Java apples, and no link or button for 'help' or 'more info'. Awful.
Re:Security warnings? (Score:1)
Re:Security warnings? (Score:1)
The dialog has no mention of the applet running with more privledges then other Java apples, and no link or button for 'help' or 'more info'. Awful.
Mmmmmm.... tasty java apples, keeps you awake and good for you to boot ;)
Re:Security warnings? (Score:1)
Screen Redraw issues etc. (Score:2, Interesting)
I mean this does not seem like a bad idea. I hope it or something catches on because anything is better then long endless forms that are mangled to do things they were never intended to do.
The mail client is wonderful though. That alone makes it worth a bookmark.
Re:Screen Redraw issues etc. (Score:1)
If it's an applet, you also have the advantage that you have a 0.5mb ActiveX control on windows for the user instead of a 10mb Java Runtime.
I also find that XWT graphics runs much faster than Java Swing, even when XWT is running on top of Java! I would suggest is has something to do with the general heavyweight design of Swing, and the fact that it was layered on top of an older graphics library, AWT.
Screen Redraw (Score:1)
It doesn't (Score:1)
Re:It doesn't (Score:1)
1.7 Why should I use XWT instead of writing a Swing Java Applet that uses SOAP/XML-RPC?
Interesting... (Score:1)
Either way, there are a lot of XP machines out there that will never get the service pack. But thanks for letting me know about this -- I'll revise the language in the FAQ.
Re:It doesn't (Score:1)
Thanks.
Re:It doesn't (Score:1)
Absolutely correct. MS is attempting to play off the courts lack of technical savvy by substituting abysmal support for 5 year old Java (Hell, I hate 1 hour old java myself--cold or burnt in the carafe; sorry) for the Sun-requested current support for Java on modern MS systems.
What I'd like to see is the court to rule that MS can meet the requirements by supporting 5 year old Java only if it restricts itself to releasing 5 year old Windows...
Re:?repalce VNC..how (Score:2)
It's closer to X Windows, although again the domains don't completely overlap. Some things would work better with XWT, some with X.
Re:?repalce VNC..how (Score:2)
VNC depends on fairly fast turn-around to act "normal". It is a pixel-mover. However, if one assumes protocols like HTTP, which you want to do if you want it fire-wall friendly, then you need widgets that handle basic cursor and keyboard movement on their own.
A more thorough conceptual comparison can be found at:
http://www.geocities.com/tablizer/scghist.htm
Re:Universal *GUI* Browser (Score:3, Informative)
Not web, but *GUI*. Web browsers and HTML + DOM + JS are optimized for e-brochures (presentation), and not business forms. Intranets and B-to-B keep trying to make web browsers act like VB/Delphi/PB GUIs, and it is a royal pain in the ess.
BTW, I propose a competitor to XWT, called SCGUI (Server-Controlled GUI) at:
http://geocities.com/tablizer/scgui.htm
The demo is admittedly far less mature than XWT, but it is the concept which counts. It has a thinner-client philosophy than XWT. Downloading Turing-complete scripts and applets is too big of a security risk and increases versioning headaches IMO. Thus, no Turing is where it is at.
Re:Universal *GUI* Browser (Score:2)
Why? Java applets are Turing complete, but there's not much of a security risk in running one, because it runs in a sandbox.
Re:Universal *GUI* Browser (Score:3, Interesting)
I *have* read about applet holes. Even sandboxes can have leaks. Anybody have some specifics on this?
But, a bigger problem with Java is the versioning issues. It is so complex that you have to be careful about what version you are targeting.
Plus, complex applets take FOREVER to download. I once used an HR applet that took 25 minutes to download (via modem). Sick. You don't have that problem with browsers.
And, it exposes biz logic since applets are relatively easy to disect.
Without a local script/applet engine, I would say that a GUI browser is roughly about 1/3 as fragile versioning-wise.
The thing is, you *don't need* local scripts/applets to get decent GUI power. I agree that local execution will speed up some things, but not enough to justify the complexity and problems that go with it. It is like hiring a Gorilla to sweep the floors. It might do some jobs faster, but requires more babysitting and risk.
Re:Universal *GUI* Browser (Score:2)
Plus, some widgets are different sizes on different platforms (assuming they will use some native widgets). Does that mean the server not only has to query the client for the window size, but also for the size of each widget, only to then tell the client where all the widgets should go?
This is a poor design decision. The client should handle widget positioning.
Re:Universal *GUI* Browser (Score:2)
In most VB/Delphi/PB-style GUI apps, you usually don't resize windows. Most biz apps are coordinate-based anyhow in my observation, and work better that way. The boss points to exactly where he/she wants something, and you put it there, or are fired. Doing that with flow-based approaches gets us back to HTML-hell. IOW, coordinates are more PHB-friendly IMO.
(* Plus, some widgets are different sizes on different platforms (assuming they will use some native widgets). *)
Perhaps they shouldn't be. This is a sticky topic that can fill many pages. But in general, if you target multiple platforms, then you should leave extra space. I have been thinking about "aspect scaling" to make sure something fits within a given space, at least for text labels. (I talked about this in my 1997 version of the SCGUI draft, but did not in later versions.)
(* This is a poor design decision. The client should handle widget positioning. *)
I am sorry, but I have to disagree. I based my design decisions on my observations, experience, and pondering over a long period of time. There are going to be trade-offs no matter which approach is chosen. I picked the combo I thought would work best without making things too complicated.
Plus, what is wrong with burdening the server? You have more control that way and less things to go wrong on the browser side.
My approach allows both: coordinates by default, but flow-based using the server for the rarer times that one goes that route. You have to optimize a design for the common stuff and find back-up approaches for the rarer stuff. Otherwise, you will end up with a huge, complicated packrat protocol and browser.
I decided that flow-based and resize were too rare to build directly into the client.
Re:Universal *GUI* Browser (Score:1)
Interesting (Score:2)
Since I am stuck in a no java environment, and
However one question remains, though -- how is this really different from essentially a very light java applet (no slow AWT/Swing) that just makes all calls across xmlrpc. I am not too certain that one is easier to develop than the other.
And damn it -- how the hell did you make the ActiveX load, everytime I try to do that it gives me security issues -- I think the difference is your is signed. (And my company does not like paying money for signing controls)
Anyway -- this could be very useful, so, many thanks go to the author. Keep up the good work!
SOAP/.NET (Score:1)
As for XWT vs Applets, please see this [xwt.org] question in the faq.
Re:Interesting (Score:3, Informative)
That's both a good and bad thing; it's good it you write your interfaces by hand, or want to generate them on the fly from some external data source, but it's bad if you like to use a RAD tool to prototype your UI by dragging and moving UI elements on the screen graphically.
RAD tool (Score:1)
The www? (Score:1)
Try the demos (Score:1)
What is the host-side model like? (Score:1)
The differences between XWT and my thought experiments seem to be:
(1) The renderer is monolithic: I imagined a widget-by widget system in Java: sort of an outgrowth of how NeWS was supposed to work. Can XWT be extended in this way?
(2) The comms protocol is XML:euch. I'd imagined something compact and binary, perhaps Java's RMI. Oh, well, comms bandwidth is cheap as are parser cycles, they say.
(3) I'd imagined being able to wrap the host side inside something that pretended to be one of the popular widget sets, like GDK. Then my favourite X applications would have a chance to go where X hasn't. I haven't dug into the XWT doco enough to know _how_ the host side looks. Does it match one of the existing windowing models?
Re:What is the host-side model like? (Score:1)
sort of an outgrowth of how NeWS was supposed to work.
Funny that you mention NeWS -- my encounter with that windowing system was what started me on the journey of building XWT! It really frustrates me that the X11 dumb-display-server model won out. You should definately join discuss@xwt.org [xwt.org] -- sounds like we're thinking along the same lines.
Anyways, yes, the UI is divided into widgets, each of which is composed of boxes (which are atomic). Each widget appears opaque to the outside world -- it looks like a single box that happens to behave in interesting ways. As an example, you set the width of a widget the same way you set the width of a box.
To get a better idea of how this works, try downloading demo.xwar [xwt.org], unzip it (it's a zip archive) and poke around in org/xwt/themes/monopoly/ -- each file describes a single widget; each XML node corresponds to a single box.
The comms protocol is XML:euch.
Yeah, I hear ya. Unfortunately almost everybody wants XML-over-HTTP these days. I'm looking into some more efficient transports for large data sets. I'm also going to add gzip encoding to the HTTP layer -- this should nullify the bandwidth bloat, although all the compression/uncompression and parsing will still cost CPU cycles.
I'd imagined being able to wrap the host side inside something that pretended to be one of the popular widget sets, like GDK.
Well, XWT is completely skinnable -- you can remap the widget definitions on the fly. For example, you can instruct the XWT Engine "change all instances of org.xwt.themes.monopoly.scrollbar to org.xwt.themes.gtk.scrollbar". In doing so, XWT will preserve key properties of the widgets being reconstructed (like the position and orientation of the scrollbar).
I used to have a GTK theme, but it sort of fell by the wayside. I probably should resurrect it just to demonstrate to people how skinnable this stuff is.
Re:What is the host-side model like? (Score:2)
Don't most transport mechanisms *compress* ASCII, XML, etc? Ascii compresses between about 1:3 to 1:7, depending on the algorithm and CPU devotion. I don't see binary beating it by that by much.
Question (Score:3, Insightful)
Re:Question (Score:1)
/Janne
RAWT is very cool; thanks for letting me know! (Score:1)
Unfortunately RAWT still operates at a lower level than XWT -- it pushes pixels, lines, and mouse clicks over the network, not widget descriptions. The result is that RAWT will perform poorly over the public backbone or a slow link just like X11 and VNC -- simply scrolling a scrollbar requires a response from the server.
The other big difference is that XWT is much easier to code in -- you don't have to be a programmer. It's closer to the level of HTML+JS.
Finally, XWT runs as super-fast native code on Linux and Win32. RAWT is still encumbered by the slowness of AWT and JIT JVMs.
RAWT seems really cool though if you already have a Java app that you want to make remote and don't want to use an X Server
What's the point? (Score:2)
Re:What's the point? (Score:2)
That does *not* have to be the case IMO. I propose a competitor to XWT, called SCGUI (link given in another message), and it has no Turing-complete script/applet downloads (per application). It is essentially a GUI browser.
Unlike X-windows and Citrix, its "primatives" are widgets (or widget-level commands) instead of pixels. This makes it more HTTP-friendly because every cursor and keyboard movement does not have to be transfered back and forth.
Anything other than HTTP will hang up fire-walls. I have seen it happen.
I have pondered the idea extensively of how simple the client can be, and still have effective GUI's. SCGUI is based on the best balance, as I see it. The XWT author came to a slightly different conclusion, and has client-side scripting.
But I still applaud the XWT attempt. We need something like it. If XWT wins over SCGUI, so be it, as long as I don't have to deal with fricken HTML+DOM+JavaScript anymore. I like *real* GUI's. (Well, I should say that I like developing real GUI's, for I am still kind of a command-line guy in some ways.)
Oh please (Score:2)
Okay fine (Score:1)
Re:Okay fine (Score:2)
Limits of HTML (was: Okay fine) (Score:2)
I don't think it is a matter of HTML being limited. HTML is a presentation technology, IOW, for "e-brochures". It does this well, especially for dealing with different screen sizes, if you know how.
But, it is kludgey for business forms and complex GUI interactions. DOM + JavaScript are not the direction needed to fix this limit.
We need a better HTTP- and web-friendly GUI protocol and (hopefully) GUI browser.
HTML is just the wrong tool for the job in many cases. We need to take it's easy deployability, and apply it to better GUI protocols.
HTML is not bad, but taking it where it does not belong is.
um... (Score:1)
The point is... (Score:3, Interesting)
DHTML/Forms do not provide enough UI "fidelity" without radical workarounds. Java Applets/Swing are too heavy, have immature and non-native UI controls (I think "lightweight" controls were a mistake, because they look weird, which seems to matter a lot, and frankly Swing doesn't approach native fidelity) and require non-standard (yes, they are "standardized", but not ubiquitous) protocols. "Convergence" technologies (Citrix, VNC, etc.) do not scale to large enough numbers, and are doomed to whatever platform they expose to the client. XWT fills the gap in between neatly.
Business applications need something as stateless and lightweight as HTML (I know, "sessions" are state, but it scales easily and that's the point,) but with the same fidelity as native, local clients. XWT may be a good approximation of this.
Previous posts mentioned the following deficiencies of XWT:
o Various control problems; overrunning widgets with text, maximize button doesn't, redraw issues, etc.
If you go to the site and read the FAQ, you'll know that the release was not intended to provide perfect widgets. It's known they still need work. The release provides a working server and client "engine". Release early, release often.
o How is this any different than Java applets?
The client sides deals ONLY with controls/widgets. No JDBC or other elaborate protocols. It's technically possible to do this with applets, but that's not the model applets provide. Most applets try to behave like client/server apps. No language/platform support is provided "out of the box" to achieve truly thin (HTML-like) clients. You have to roll your own.
o Isn't this the World Wide Web (meaning HTML/Forms/CSS/DOM etc.)
Sorta.
o The renderer is monolithic
So are browsers. XWT at least give you the means to implement custom widgets. Java Swing or Applets are no better.
o Interactive Apps should be local
Tell that to the WWW.
o It doesn't replace VNC
Nope. Doesn't have to. VNC is a completely different problem domain. This is about cross-platform server apps, scalability and ASP distribution. VNC/Citrix/whatever do this poorly because; the application running on the server is platform specific, it requires more resources than a (near) stateless client and is unresponsive with poor bandwidth. However, if you need to crank a knob on a server in the middle of the night, VNC gets you there, as it should.
The one major problem I see:
There doesn't seem to be a "sandbox" notion. I read the material closely. Perhaps it's presumed. I didn't see any explicit warning about client side exposer, but I also saw nothing explicitly stating that the Turning complete UI is isolated. However, this may a feature that, if it doesn't already exist, can be added. Further, I know there are MANY applications where this is irrelevant.
I've had in mind a browser based "universal" UI platform that would allow a large class of business applications to go pure "thin" client. CRM/ERP/Collaboration software mainly. These apps require only slightly more UI fidelity than you can achieve using the most advanced DHTML/DOM techniques. Yet every vendor has their own in-house UI solution. Bah. XWT, with a bit more maturity, but no further fundamental changes, could implement these UI's neatly.
J.D. Edwards has a DHTML client to replace their "Fat" client. Their UI was already quite generic and the port is obvious. Siebel is about to release a DHTML UI for the CRM. Oracle went whole-hog early with a java port of their existing Forms platform. It's a bit of a mess.
Problem is I wouldn't trust any of the DHTML apps further than I could throw the building the programmers work in. I know there will be delicate dependencies on browser versions, coupled with lag between state-of-the-art browsers and the app vendors releases. Who want's more of that crap? Say you have two apps; one needs IE 5.5084321 and the other wants IE 6.0000123. You're screwed.
Custom, in-house apps could benefit also. Sometimes you need more UI than you can do in a browser without being a master javascript geek. So, you turn to some platform specific "development tool" mess. The runtime has to be distributed to the clients, better keep up with the tool vendor, etc, etc. XWT may have real potential because it gives you enough UI, without deviating from a near-stateless HTML-like model.
Re:The point is... (Score:1)
There doesn't seem to be a "sandbox" notion
Appendix B: Security Architecture and Considerations [xwt.org]
Re:The point is... (Score:1)
actually you can do this with html now. i've been writing applications like this using DHTML/Javascript for over a year now, and they work just fine on both ie5.5+ and mozilla. (they dont work on opera 5 because it doesnt support document.createElement(). havent tried opera 6 yet) yes, dealing directly with the DOM sucks, but if you tried to write the gimp using only xlib functions, that would suck pretty bad too. once you have a decent framework, you can write real applications dealing only with javascript. (still a horrid language, but the only one you can use in a browser without plugins)
hopefully, i'll have an open sourced toolkit for writing js apps done by fall and then you can all take a look at it and compare it to this.
neat looking mail client, tho.....
Re:The point is... (Score:1)
actually you can do this with html now.
I've been toying with the idea of an XWT->HTML compiler... both environments use the same langauge (ECMA compliant JavaScript). There would probably have to be a rather large 'standard library' that translates XWT library calls to browser.* calls, but I think it's possible.
Is there anything you see in the XWT Mail demo or the widget sampler that couldn't be done in DHTML?
Re:The point is... (Score:1)
the short answer is no[1], the longer answer is that it depends on how patient you are.
the problem is that any widget more complicated than the basic html primitives needs to be hand rolled. relisitically, in the near future you may have to hand-roll your pulldowns too, since option elements in msie dont obey z-index attributes, making them impossible to cover up, which you may want to do in an mdi application for example. while this isn't too tough from a look standpoint, even using just <DIV> tags, getting the feel right is a lot more difficult. the event handling and event bubbling mechanisms supplied in javascript make getting the desired behavior from your custom widgets rather difficult at times. in the new version i am working on, i'm planning on using a few global event handlers that will overide all of the built in event handling and event bubbling. i just hope it doesn't slow the thing down too much to be useful.
another tricky point is that there is no IO in javascript. the only way i can do server interaction (loading files, etc.) is to load a page (it has to be from the same server as the application, due to javascript security policy) in a hidden iframe, and then grab the contents of that frame and delete it.
the biggest hurdle i've had in all this time, though, is just the fact that prior to this i've had little experience writing gui applications, and no experience designing toolkits, so it's taking me a few iterations to get to an api that is consistent and usable.
assuming i can get my event handling issues dealt with, there's only two serious shortcomings i see in writing low to mid complexity apps to run in a bowser. the first is the fact that you can only ever do load and save operations on the server where the application resides. (javascript security policy prevents exchanging data between frames whose content comes from different domains) this doesn't entirely rule out load and store of local data, but it does make it tricky. the second is the lack of any rich text editing facilities. the textarea widget is horribly deficient for most text editing needs. the first application i wrote was a gui ide for voiceXML, and dealing with the shortcomings of the textarea was awful. (especially in mozilla. but that was around 0.9.4. hopefully it's improved since then)
1) having taken a second look at the widget demo, i guess i have to take this back. i haven't tried, but i doubt you would be able to do the image tranparency thing correctly with current browsers. it may be possible with netscape, but i am almost positive that ie doesnt have any real support for alpha blending. you could easily have a bunch of draggable images, but you'd be stuck with gif on/off transparency. no cool blending effects.
Re:The point is... (Score:2)
Z-indexes (overlap control) usually only make sense in coordinate-based positioning (X, Y), and not for flow-based positioning (such as HTML). A decent GUI browser or protocol should at least give the option of coordinate-based positioning (X, Y). It is easier to cram more stuff on a given screen with coordinates in my experience. (PHB's like to cram for some reason.)
Binary vs source (Score:2, Insightful)
Businesses are always nervous about distributing their code in source format. The creators of Java had to invent a binary format (.class files) just to assuage these fears -- despite the fact that
Hehe
Re:Binary vs source (Score:2)
One thing nice about XWT is that it allows you to have most of the business logic on the server *if* you want. I personally would rather have no app-specific code move-to and run on the client (for reasons described in other messages around her). However, enough people seem to prefer the fatter client model, or at least that option, so I guess I am out-voted.
No matter what, I think client-side application code is going to eventually be hacked, so one should give up the idea of encrypting it somehow, other than maybe scrambling (substituting) the variable names.
If a good browser and multi-lang IDE for XWT would just catch on now....
Okay.. (Score:1, Troll)
Gotcha.
How innovative.
Love the idea, but... (Score:1)
But unfortunately, the implementation doesn't appear to work at all with Netscape 4.7.
I'd be willing to run a client program as a plug-in to get this feature. Unfortunately, I can't find any plug-in for this.
-- Terry
I prefer the rebol way... (Score:1)
Re:I prefer the rebol way... (Score:1)
Where are the demos on their site?
I tried out rebol about 6-9 months ago and they had a pretty easy-to-access demo on their site. Now when I go to www.rebol.com, I can't seem to find it -- only some "evaluation request" form I submit for a sales rep to contact me. I'd like to see what they've been up to lately....
vs. Curl (Score:2, Informative)
"1.8 What other technologies are similar to XWT?
CURL Surge is a similar framework, although it requires per-use licensing fees and is a bit baroque."
Actually, Curl offers a variety of licensing arrangements, including per user, per site, etc.
I think XWT and Surge both aim to combine the benefits of native applications:
responsiveness, interactivity, and so forth
with those of server based software:
administration: install, update, secure data storage
"Browser as user environment"
security for user machine and for site
However, XWT focuses on what I might call a UI server approach. It can do more, but it is optimized for working only with an application's user interface while the application computations take place on the server. This specialization is consistent with the the separation of UI vs other design concerns, and has a lot of good characteristics, such as in the size of the initial platform download, potentially the size of the initial applet download, and the scope of learning required from developers.
Surge can be used in exactly the same way, but it is designed to handle more complicated application logic right on the client. You can make any separation you want (between client & server; between data, logic, and presentation; between different modules or levels of any of these), but you can also combine them within the same environment when appropriate. Technically, this provides a fuller range of application richness and deployment scalability, but there are other concerns such as learning, or how universally the platform is available.
In light of this difference in emphasis, I'm wondering which parts of Surge the author finds baroque. Let us know, Adam.
Another slashdotter also commented on the XWT FAQ's comments on source code vs. binary. I don't know how it works out in XWT, but Curl applets are in source so that they can be compiled to very fast native instructions on the platform they'll run on. Specific client resources can be utilized (e.g., for graphics), which a byte-code-JIT would have a hard time doing unless the byte-code included some pretty darn high-level instructions. Also, source code is much more compact than low-level machine or JVM instructions. Since compilation is much faster than the network, that gives a quicker total time from http-request to execution. If people are worried about protecting their applet code, they can obscure, encode, and compress it. Surge has a pre-parsed delivery option for code that does this.
Re:vs. Curl (Score:1)
Surge can be used in exactly the same way, but it is designed to handle more complicated application logic right on the client.
Just like Curl, XWT includes a turing-complete language interpreter, meaning that you can implement any amount logic you like on the client side. If you absolutely need to use other languages on the client, you can do that too [xwt.org].
I'm wondering which parts of Surge the author finds baroque. Let us know, Adam.
A 1028 page reference and 18 different "int" types, for starters. I dunno, I just don't think things have to be that complicated. A complete, comprehensive technical description of XWT [xwt.org] fits on 15 pages when I print it out.
I don't know how it works out in XWT
XWT also transmits UIs as source (not binary). The JavaScript interpreter I use has the ability to compile JavaScript into Java Bytecodes (which then get JITted into native code), but I've found that because XWT operates at such a high level, all the performance-intensive stuff (layout, rendering, networking) is already running as native code in the XWT Engine, so this feature actually doesn't boost performance that much.
My empirical experiments with this have really changed my thinking on interpreted vs compiled -- if you make high-level primitives available to the interpreted code, and you make sure those primitives are hand-coded in a low level language and extremely well optimized, you really don't need to compile your code. It's the old 80/20 rule all over again.
Re:vs. Curl (Score:1)
I think we're agreeing that developers can do whatever computation they want on an XWT client. As I understand it, there are two ways:
I also agree with Adam that Surge isn't as approachable as it could be. If a Javascript-based UI-architecture starts to slip as the complexity or responsiveness requirements go up, you would think that it should be possible to approach things the other way and use just the parts of Surge you need for doing simple UI stuff? Surge was indeed designed to let simple things be simple. For example, there's an integrated layout and formatting engine that makes it easy to declare how stuff should be organized such that you don't have to write code to handle resizing of windows while avoiding horizontal scroll bars. And you don't have to include type definitions, or write procedure or class definitions.
But as a practical matter, there is a lot there, and it is different enough that I can understand how a time-pressed developer wouldn't want to learn something new. And the "gentle slope" approach isn't perfect. For example, I'd rather see undeclared numbers use decimal or bignum integer representations than fixed size representations. (Although Javascript has the same problem. By the way, Adam, where did you count 18 int types? I count six with two more pseudonyms. Java has five, C eight, and C# nine.) Anyway, the point is that Surge is really more optimized right now more for enterprise-level programmers with big problems then for mass adoption by designers.
So where's the dividing line today? The XWT FAQ mentions that interactive games are probably not appropriate to a Javascript-based UI-server approach. Anything else? Right now, Curl seems to be resonating most with people developing enterprise stuff with a high degree of custom business logic, tight response times, high interactivity, and changing requirements. My personal feeling is that there isn't much like this on the consumer web because there hasn't been a reliable way to develop and deliver it before. The space of simple applications hasn't yet been exhausted, and for these, UI-servers are plenty good enough. Comments?