Alternatives to Java and C# for Client-Side Imaging?
SkyLeach asks: "I work for a medical company which wants to provide medical imaging solutions to their clients without having to install software on the clients' machines. We had been using Java, but this is becoming more and more difficult as the Microsoft VM becomes more outdated. According to this FAQ from Microsoft, java will receive no more support at all in the future. Without using a Windows-only solution such as ActiveX, what other options are there? Keep in mind that the only absolute requirement I have been given is that the physicians never be required to install anything on their computers: Sun's JVM and Microsoft .NET, included."
Have you considered using GNU gcj to compile the Java to native code? I don't know how well it would work with your app, but it's pretty slick in my experience.
What issues do you guys have with using C++?
.NET that you guys are looking to replicate without being able to install any type of virtual machine on the PC's?
I guess a better way to put the question would be: What services are provided by Java and
Is this a web app? I am assuming so since you are talking about ActiveX.
Looks like your up a creek without a paddle. The only other option is dynamically created images into HTML pages. Possibly using some DHTML or such for some minor interactivity. If this is not acceptable, then you will simply have to be honest and state that it is nearly impossible to do this job without requiring the user to install SOMETHING. One good note however, is that I believe Microsoft is required to distrobute the SUN JVM (at some point, barring their usual delay tactics), instead of their own, but SUN now makes it so easy to install with 1 click, why is it such a pain? Just direct your users here: java.sun.com/getjava
one click, BAM (barring any rights or security issues)
Check it out
www.HearMySoulSpeak.com
- is client-side
- is platform-independent
- requires nothing to be installed
Usually, you can pick any two. What you might be able to do, though, is instead of having a "platform-independent" solution (in the Java or Flash sense), create solutions (eg, native executables) for multiple systems and have the server send the client the "right" one. I don't see how anything else could work.It's always a long day... 86400 doesn't fit into a short.
You don't really say what your support situation is. Are these internal clients that you have some control over, or is this something for the general public to access from the Internet? Also, you imply but don't say that this is limited to Windows clients, so the suggestion of compiling the Java down to a binary and distributing the app itself is viable. What's the point of using a portable technology if you want it to run on un-improved Windows boxes?
www.HearMySoulSpeak.com
"physicians never be required to install anything on their computers"
Unless you have some deal with the manufacturers, presumably you have some IT department or person that sets up these boxes as they come in? How many machines are there? It takes only a few seconds to download and install Sun's Java VM. This can be done during setup, or just have somebody walk around doing it. Better yet, mount a remote share with it.
It's 10 PM. Do you know if you're un-American?
Um, there is no way to do that. Unless you make it entirely web based, and that's not going to be fun, practical, or easy. Your best bet would to get them all to install a real JVM, like Sun's newest JRE. Make it very easy and automatic for them to do so. Have the application check to see if they are using a new enough jvm, then provide them with an upgrade now button. As long as they are all modern desktop/laptop computers with windows/mac/*nix this should be fine. If anyone is using something weird like a small device with an embedded jvm, then it might be trouble.
The GeekNights podcast is going strong. Listen!
I love Wednesdays! It's getting closer to Friday, Monday is but a memory, and the lamest slashdot articles are in!
YAY!
Seriously. Why are you afraid of people installing stuff? Oh-no. My-god.
If you want to have a client side solution, I'm sorry bud, but you are going to have to install *something*.
Now, it sounds like you also want this to be multiplatform. What?
If you were going for Windows-only, you *could* do a crapload in JScript or VBScript, via IE. It's tricky, but their ain't nothin' you can't do in a signed script. Image manipulation included.
Or, you could simply build a really kick-ass server side solution, and Web-ify the whole thing. A tad sluggish tho.
.
.
.
Ah, Wednesdays!
"...In your answer, ignore facts. Just go with what feels true..."
I work for a company in the same industry, and I wrote the lion's share of their current viewer, which is web-based as you describe. Having been down this road before, I can tell you that you have two options: require a client-side installation of a newer VM, or submit to being windows-only. the only other alternative is to do server-side processing and create html montages using jpegs, which is hardly a scaleable solution if you're doing any kind of interaction with the physician.
of your other two options, as much as it galls me to do so, if you're stuck with the requirement of no installation, i have to recommend the activex approach. we've found performance of this approach to be quite good, though you have to watch out for the occasional com bug.
Sounds to me like you would be better off with a server based solution. I find it amazing what can be done on the back end of the server and the client isn't required to install anything. I'm not sure how advanced php is, but I know you can write com controls for windows web server that will allow the server "Plugin" to actually do the work and generate web pages for the user dynamicly.
Whether this will solve your problem or not I'm not sure. Since anything relying on microsoft programs can fail with any update it can be more hassle than its worth sometimes.
From what you are asking the only way I can see it being done without any installations on the client is that all work must be done on the server. Since there are a large selection of tools that do just that, I would think that might be where you want to look for your solution.
If ignorance is bliss, the world is full of blissful people
First, the directive from management may need to be reconsidered. I understand their desire to minimize support costs but sometimes something just has to give in order to make progress.
Second, as the clients out there become more and more diverse then your least common denominator is your basic web browser all of which can do your basic image types. That's why web applications are all over the place, there is zero setup for the user. Unfortunatly a web application is rather limited when it comes to real time dynamic content.
If you decide a web app won't work for you and bite the bullet and requre software to be installed I would recomend Java WebStart (JWS) as a delivery mechanism. It seems you are already using apples, JWS apps are auto-updating, have a sandbox like applets but JWS feels more like an application and will put icons on their Start menu/Desktop if the user wants it.
Has a solution that is platform independent and will run over the web, it's called IntraWeb and it comes with Delphi 7 Enterprise and Architect. My company is currently using it to create a web based interface for our Policy Management System, we're an insurance company (not an agency). The full version of IntraWeb (available from AtoZedsoftware.com) is also CLX compatable so it can be hosted on a Linux server and developed under Kylix.
Meddle thou not in the affairs of Dragons, for thou art crunchy and with most anything.
Using X-Windows, you could just install a basic distro and run the app remotely (via an encrypted tunnel) on another machine (on which you could install anything you want). That would work with a bare system (there exists a 2-floppy XFree86 linux distro).
You could burn a CD that does just that, and boot the computer with that CD -- means no installation. The OS and apps on the CD would connect remotely to the X server (client?) and that would be the end of the problem.
Windows has this "innovation" called "Terminal Services" which seems like a pale clone of the X-Windows ability to run apps remotely. I don't know how much you could transpose from X or if clients are available in a base Windows installation.
It's not really clear from the question what level of functionality you need, but if you're just displaying TIFF images, you can do that via pure HTML. We use a utilities from fCoder Group to dynamically convert TIFF files to JPG on the fly for display in a browser. The conversion is done on the server, so nothing is required on the client. JPG probably isn't the best solution for medical images since it can introduce artifacts, but they also support a variety of other formats that browsers can handle natively.
.PDF, but this requires the Acrobat reader be installed on the user's computers. If you decide this is an option, there is a package called DaVince Tools that can convert TIFF to PDF on the server.
Another option would be to convert the files to
Why not write a jvm that can run inside of ms's crappy jvm and target the one you wrote- I like the idea more and more by the minute!
Email me if you'd like some help.
The question specifically stated that the solution must not require anything to be installed, including a JVM.
--
CPAN rules. - Guido van Rossum
These require a plugin to be installed, but most computers come with it already installed if I'm not mistaken. They are also specifically oriented towards interactive graphics.
--
CPAN rules. - Guido van Rossum
Is this a serious question? You actually still are on java 1.1? That allows me to draw two conclusions: you don't care about performance and you don't require advanced graphics manipulation. Otherwise you would have long ago kicked out the MS JVM and started using the Java 2D library to manipulate your graphics. Of course it is never too late. .Net has the same problem as Java currently: no operating system comes installed with it (including windows XP). .Net has an additional problem: it's only available for windows and comes with lots of strings attached. Good, mature Java implementations are available on all major platforms.
SUN's Java has the added advantage for you that it will probably run your existing apps (barring the MS/J++ crap you probably put in them).
Jilles
I assume that some serious 3D model rotation is taking place (typical medical use). If this is true, then Java Web Start is your best bet. No DHTML in the world will do that in any reasonable way. I work mostly in DHTML, doing things like windowing systems and such, and drawing arbitrary graphics is NOT something it can do. So, show them the ease of Java Web Start, and code up something pretty for JRE 1.4.1
Sounds incredible stupid. One wants programs, but on can't install anything ? Why on earth would that be a requirement? installing a j2re is a matter of clicking "Next" a few times. users on *nix should cope wi the fact that one must download a file an run a couple of commands to install it.
If the application is located on a high bandwidth network, it is actually possible to execute a java-application with a shortcut to a JVM located on a network drive. This gives zero-install on the clients - network performance might suffer though.
Do plugins count as an installation for your case?
If not, you could use Flash or SVG, though I'm suggesting SVG since I believe that in the context of the software you will be providing it would likely be the more viable solution. SVG is XML based so it can be manipulated dynamically, and it also has a huge number of image processing capabilities built into it. Probably worth looking into.
No Comment.
And send them as clickable image-maps. Sure,
the bandwidth usage might suck, but hey, that's life.
If you're unwilling to 'install anything' how do you even function? Do you not install patches for the OS? For your applications? Do your workplace a favour and get rid of all your computers, since you seem incapable of using them effectively.
If so you could use servlets and jsp or asp (eew) and then they would just open a web browser and go to the necessary site. This would mean that they would need internet connectivity, or a wireless network or something. This may be feasable.
Only 'flamers' flame!
They want software but they don't want to have to install anything?
I would tell them that you can definitely build it and then do a time and materails contract...
The opposite of progress is congress
Would it be a valid option to have a downloadable, single-file, native executable which runs from the temp dir without any installation? You know, click on the link and say "run" instead of "save".
If so, you have plenty of options for how to write your program. GUI libraries with support for multiple platforms are common (wxWindows, for example), or you can use an interpreted language which has support for packaging the script and the interpreter together into a single executable file (such as Tcl/Tk).
But my grandest creation, as history will tell,
Was Firefrorefiddle, the Fiend of the Fell.
You could write an app that installs with ActiveX, but provide a java version for fallback. This has the disadvantage of requiring two applications. You might also look into Citrix MetaFrame for Windows or Solars if you would like to keep the app serverside (written using anything you awnt). Java and ActiveX and standalone viewers are written for ICA, so you have pretty good flexibility there.
~GoRK
There's only a stay on the injunction (if I got the legalese right...) - Microsoft's not off the hook yet. The news I saw today is they're filing a counter-suit, so they're scared, which looks good for java.
But then let's assume it's all in there - do you really need to use it? If you only need to display the images, a DHTML solution should be good enough. I'm assuming PET's are 8-bit. If you do need to interactively downsample 12-bit data, you probably will need an applet. You'll probably want to pre-compute your colormaps for maximum speed.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
Uh... hello?!
PNG?
Sheesh.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
flash is an option - install is quick and painless.
Hi, it should be pretty easy to take your java code and put it on a server and have thin browser clients interact with a server-side session to manipulate the image....you can have a servlet 'displayImage' as the src of an image tag such as that will take the current state of the image and serialize it down as a jpg stream (search for image to JPEG serializers on the web), and you can have a forms-based UI to issue commands to the server to manipulate the image (such as rotate, zoom, etc) and then refresh the page to get the new state of the image from the server using the displayImage servlet. It means a lot of traffic being sent down the pipe (1 image per action) but without being able to install any software on the client that could do stuff locally, you're out of luck. Fortunately, this solution could fit in pdas.
-Chris
I work at Traqer.com where we have successfully developed and deployed Flash based applications for our clients. Backed by (our own) biz logic server and a database and you will get all the scalability you need. The client is the simplest of installs in the unusual case that a user didn't have Flash already installed on their machine. I cannot recommend Flash client UIs more highly!
If by "don't want to install anything" you mean that you don't want your users to install anything, I'd suggest DeployDirector from Sitraka (www.sitraka.com) as an alternative to Web Start. Like Web Start, DeployDirector will install the client-side application (not applet), install correct version of the JRE, and ensure that the application keeps itself updated. However, with DeployDirector you don't have to have the intial step of installing Web Start. Everything is managed centrally, and DeployDirector will allow you to monitor the application, alert you in the event of an error, rollback, etc. Your users can be completely non-technical -- the tool will even work in a lockdown environment.
If, however, you mean that for security reasons nothing can exist on the client machine, you'll need to go with a wholly web-based (i.e., no applets) solution. You will need to dynamically generate images and image maps. This, however, will result in a huge number of server round-trips and will consequently result in some potentially crappy performance. You may have some options with Droplets -- which are remote GUIs -- but I don't know much if they can do this kind of imaging, and you'll still have higher server roundtrips.
If you can allow something to exist on the user's desktop, you should consider using an actual application -- there are tools to manage getting everything installed correctly without any user intervention, and the performance will be much better than running the whole thing in the browser. Because you already use an applet, it will probably be easier for you to port to a Java application.
I can spell. I just can't type.
Disclaimer: this is a commercial product made by the company I work for.
http://www.sitraka.com/software/deploydirector/
DeployDirector will deploy client-side Java apps through a browser exactly how you need it to. It deploys full apps, not applets. It will use the browser's VM, any version, to bootstrap the installation of another, better JRE on the system, install the whole app, everything.
It's similar to Java Web Start, but we began before Web Start and are a much more complete, industrial-strength solution. Check the web site for the obligitory customer success stories.
Yes, it costs money. Try using plain Web Start for a while and you'll see why - it's worth it. You can evaluate it for free though.
What not create a Flash application? The Flash Player plugin is available for Windows, Pocket PC, Mac OS 9, Mac OS X, Linux, Symbian, some Palm OS devices, and DoCoMo just announced yesterday that their new i-mode phones will include Flash.
Windows, IE, AOL, and Netscape have bundled the Flash Player for a long time, so chances are good that your users will not need to download anything.
cpeterso
Build your own distro based on Knoppix or Gentoo LiveCD. This assumes the client machine has a bootable CDRom. You might have problems with the video or network cards on laptops. Also, there might be problems if the BIOS is not set to boot from CD. Do you want your client fooling around in the BIOS?
Why don't you use SVG (Scalable Vector Graphics)? If they have Adobe Acrobat Reader installed on their computer, they probably have the Adobe SVG filter installed too. Then you can just dynamically create SVG code on the server-side like you normally do with dynamic pages.
http://www.virtualvillagesquare.com/ Online Communities: The Next Generation
The way this person talks, it seems that they're currently running a web page containg a java applet.
(If they're not running a web page or at least launched from a web page, the whole damn thing is stupidly moot because users *have to install the viewer application*. If you have to install the viewer application, the same installer can install prerequisites. <rant>Seemingly, the poster is from a (distressingly) large class of programmers where "not writing a web application" is unheard of.)</rant>
So, given they're running in a web page, a SWF in a web page would be supported on all major platforms.
I think IE has a version of Flash already installed. It's certainly possible to get IE to install flash automagcailly. Undoubtably some solution exists for MacOS 9, and I would be mindnummingly shocked if MacOS X couldn't already play SWF's.
Linux / your fav os probably has a plug in that might (or might not) be more tricky to install, but hey, it shouldn't be that hard. You've probably already installed it for other sites anyway.
SWF can talk to databases and back to the server and whatever the heck else - I've seen it done. (look at http://www.cactuslab.com/ - especially the "chat to pedro" - a mate of mine specialises in this sort of thing.) It's also damn fast.. (faster than a Java Applet, that's for sure.) I believe MapServer open-source GIS server has a SWF viewer.
Try out the SWF option; it's not just for homestarrunner.com. If you want,
Otherwise, you're back to DHTML/CSS/Loading rendered PNGs/TIFFs/Whateverelse from the server options.. (If only XUL was feasable..)
For those who are just tuning in...
Back in the mid 90s, when Java hype was at its thickest, some hypesters openly proclaimed that Java would kill Microsoft. And the Dark Lord himself quailed in fear: "This scares the hell out of me."
So, MS responded in a way that only MS could. They used their OS monopoly to neutralize the competitor. MS killed Netscape, leaving IE as the only viable middleware platform. Then they created (and shipped with IE/Windows) their own polluted JRE to fuck with the Java specification.
This gave MS time to develop .NET, which will (among other things) provide an applet capability to replace ActiveX (which has an ass-sucking security model compared to Java).
So have patience, SkyLeach. In a few years everyone will be running some version of Internet Explorer with a .NET CLR. You will be able to write your program in any .NET enabled language and it will run on all those systems.
So you'll have your applet technology. You can have any technology you want, as long as you're willing to wait years for MS to wrest control and approve it.
If they're not running a web page or at least launched from a web page, the whole damn thing is stupidly moot because users *have to install the viewer application*. If you have to install the viewer application, the same installer can install prerequisites.
good point.
Create a cgi app from scratch, however obviously automatically installing something on a pc will be a lot better.
.net package. Netscape will likely have a jvm installed. bla, bla, bla etc. etc.
You could also check the version and name of the browser, for example I'm pretty sure that ie6 should be combined with a
Still the best solution I can think of is to write a cgi from scratch, but good luck with it. You may be better off, handling requests to an apache server directly from the http protocol. Although I assume this is going to have to be through https, and then it might be more complicated. I know java eliminates this problem.
Silly requirements require silly solutions. I'd just send all doctors a polaroid camera, some thick white paper, and some crayons. Some color celluloid sheets for image processing and a loop for zooming. No installation, no development time, and about $60 a seat.
http://www.laszlosystems.com
It is a compiler that produces Flash apps, much easier to program than Macromedia's ActionScript
tools.
I never thought about that, but yes, it can work. People can run a fully functional software WITHOUT installing any software.
> This assumes the client machine has a bootable CDRom.
Well, we can use boot disk instead of CD, right? Even then, they don't have to install any software, so this seems to be a viable solution to me. As a matter of fact, I did create boot disk and tried out Knoppix (http://www.knoppix.com/) and it worked.
My Dad is a radiologist and I've helped with 2 Java imaging solutions. I guess there is some chance one of them is yours.
....
1) Doctors are perfectly capable of following complex directions providing the directions are clear. We are talking about people with something like HS + 11 years of education.
1b) Office managers are even better since they are used to following complex and unclear instructions from doctors.
I think you are underestimating your target audience. The reason my Dad had problems was because he got 2 pages of directions that were unclear and poorly written stuff like:
Minimum system requirements:
Pentium 2 300 mhz
32 mb ram
16 mb video ram
without telling him stuff like:
a) would a pentium 3 work?
b) how does he know what he has?
Writing a good manual is probably more important to doctors than writing a good app
2) The people who are succesful in the medical field (especially with hospitals) generally sell overpriced equipment with very high levels of service: GE, Sieman;s, etc... even to hospitals that are financially distressed. I think your management is making a huge mistake in trying to go for a low price, low service model. Remember how much a doctor's time is worth per hour.
3) Depending on how high your price per seat is, if management is really freaked out by support issues you may want to include the hardware with the app. Make the thing an embedded system.
4) Flash's installation is automatic so I assume that fixes the problem. I agree with the other poster regarding Flash. Besides flash is really fast.
______________
BTW this is off topic but my experience with imaging solutions is that they use generic terminology. Doctor's don't like this. Call things what they are called within the speciality.
At work we run course ware over the web using flash. It's amazingly idiot proof. Very few people don't have the plugin installed, and those that do need to install it have no problems doing so. Actually our biggest problem is helping users turn their speaker volume up so they can hear the audio for the course. Life's great when your number one support issue is speaker volume!
DHTML and Javascript on the other hand are a real nightmare. Every browser has its own idiosyncracy. Accounting offices are our number one audience, and a lot of them are still standardized on Netscape 4. I can't ignore them and hope they'll upgrade.
One of the main reasons I can see for you NOT doing this type of work in straight client side HTML is the feature richness you'd need - sure you can do all the image processing server-side, but client side you still need the pretty point and clicks.
:) I know it's an install - but you get an incredibly flexible client-side app development platform, and you're helping spread the mozilla word :)
With this in mind, have you considered using XUL and mozilla? XUL allows you to define an entire complex app in XML, and have it rendered by Gecko. PLUS you get some pretty decent scripting functionality in there too
Maybe a feature rich client-side XUL implementation, talking back to a SOAP based webservice?
Ahhh, the buzzwords!
Would XWT work for you? You design your UI in an XML/JavaScript environment and then interact with a server though XMLRPC or SOAP. Very slick. I just hope the demo server is up when you look at it; they've been having some DNS issues, IIRC.
A technology middleware complete skill-set with a new innovated paradagm shift to touch base with your solution!
Sorry, couldn't resist.